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}