code wiki / _hdl_build / nx_t_idiv.nx

nx_t_idiv.nx source

↩ module page · 16 lines · 620 B

1// nx_t_idiv.nx -- pinpoint probe: is the nxasm defect in signed div/modulo (idiv)? 2// No loops, no comparisons -- ONLY one divide + one modulo, printed as two chars. 3// Expect "42\n" (42/10=4, 42%10=2). Garbage => nxasm mis-encodes idiv (likely the 4// missing cqo/cqto sign-extend of RAX->RDX before idivq). license_tier: ORIGINAL 5import "nx_syscalls.nx" 6 7func main() -> i64 { 8 let q: i64 = 42 / 10 // expect 4 9 let r: i64 = 42 % 10 // expect 2 10 let buf: *u8 = sys_mmap(8) 11 buf[0] = (48 + q) as u8 12 buf[1] = (48 + r) as u8 13 buf[2] = 10 as u8 14 sys_write(1, buf, 3) 15 sys_exit(0); return 0 16}