smoke_asm_d4.nx source
↩ module page · 16 lines · 657 B
1// Return raw n (not masked) -- exit code is u8 anyway, but let's
2// see if it matches; also try returning n+100 to detect overflow.
3import "syscalls.nx"
4import "nxasm_v2.nx"
5
6func main() -> i64 {
7 let s: *u8 = ".text\n.globl main\nmain:\naddi sp, sp, -16\nsd ra, 8(sp)\nli a0, 30\nret\n"
8 var sl: i64 = 0
9 while s[sl] != 0 { sl = sl + 1 }
10 let out: *u8 = alloc(64)
11 let n: i64 = assemble(s, sl, out, 64)
12 if n == 16 { return __syscall(93, 50, 0, 0, 0, 0, 0) }
13 if n == 12 { return __syscall(93, 60, 0, 0, 0, 0, 0) }
14 if n < 0 { return __syscall(93, 70, 0, 0, 0, 0, 0) }
15 return __syscall(93, 80, 0, 0, 0, 0, 0)
16}