nx_smoke_asm_test23.nx source
↩ module page · 42 lines · 1186 B
1// smoke_asm_test23.nx -- print emitted bytes.
2
3// nx_safety_envelope:
4// intended_use: AUTO_APPLIED -- primitive-specific tuning queued
5// sil_target: SIL1
6// evidence: [bulk_applied_2026-05-16, see-file-comment-for-detail]
7// verdict: NOT_YET_EVALUATED
8
9import "nx_syscalls.nx"
10import "nxasm_v2.nx"
11
12func main() -> i64 {
13 let s: *u8 = ".text\n.globl main\nmain:\naddi sp, sp, -16\nsd ra, 8(sp)\nli a0, 30\nret\n"
14 var sl: i64 = 0
15 while s[sl] != 0 { sl = sl + 1 }
16
17 let out: *u8 = alloc(128)
18 let n: i64 = assemble(s, sl, out, 128)
19
20 // Print "n=N bytes:" then each byte in hex.
21 let buf: *u8 = alloc(256)
22 buf[0] = 0x6E // 'n'
23 buf[1] = 0x3D // '='
24 buf[2] = 0x30 + (n / 10)
25 buf[3] = 0x30 + (n % 10)
26 buf[4] = 0x0A // '\n'
27 sys_write(1, buf, 5)
28
29 let hex: *u8 = "0123456789ABCDEF"
30 var i: i64 = 0
31 while i < n {
32 let b: i64 = out[i]
33 buf[0] = hex[(b >> 4) & 0xF]
34 buf[1] = hex[b & 0xF]
35 buf[2] = 0x20 // ' '
36 sys_write(1, buf, 3)
37 i = i + 1
38 }
39 buf[0] = 0x0A
40 sys_write(1, buf, 1)
41 return __syscall(93, 0, 0, 0, 0, 0, 0)
42}