code wiki / (root) / nx_smoke_asm_d6.nx

nx_smoke_asm_d6.nx source

↩ module page · 64 lines · 2048 B

1// Drive the assembler with a manually-built byte buffer, to rule 2// out any string-literal escape weirdness in NishiLang. 3 4// nx_safety_envelope: 5// intended_use: AUTO_APPLIED -- primitive-specific tuning queued 6// sil_target: SIL1 7// evidence: [bulk_applied_2026-05-16, see-file-comment-for-detail] 8// verdict: NOT_YET_EVALUATED 9 10import "nx_syscalls.nx" 11import "nxasm_v2.nx" 12 13func main() -> i64 { 14 let buf: *u8 = alloc(128) 15 var p: i64 = 0 16 17 // ".text\n" 18 buf[p] = 0x2E; p = p + 1 // . 19 buf[p] = 0x74; p = p + 1 // t 20 buf[p] = 0x65; p = p + 1 // e 21 buf[p] = 0x78; p = p + 1 // x 22 buf[p] = 0x74; p = p + 1 // t 23 buf[p] = 0x0A; p = p + 1 // \n 24 25 // ".globl main\n" 26 buf[p] = 0x2E; p = p + 1 // . 27 buf[p] = 0x67; p = p + 1 // g 28 buf[p] = 0x6C; p = p + 1 // l 29 buf[p] = 0x6F; p = p + 1 // o 30 buf[p] = 0x62; p = p + 1 // b (note: ".globl" = .,g,l,o,b,l in different order — typo!) 31 buf[p] = 0x6C; p = p + 1 // l 32 buf[p] = 0x20; p = p + 1 // space 33 buf[p] = 0x6D; p = p + 1 // m 34 buf[p] = 0x61; p = p + 1 // a 35 buf[p] = 0x69; p = p + 1 // i 36 buf[p] = 0x6E; p = p + 1 // n 37 buf[p] = 0x0A; p = p + 1 // \n 38 39 // "main:\n" 40 buf[p] = 0x6D; p = p + 1 41 buf[p] = 0x61; p = p + 1 42 buf[p] = 0x69; p = p + 1 43 buf[p] = 0x6E; p = p + 1 44 buf[p] = 0x3A; p = p + 1 45 buf[p] = 0x0A; p = p + 1 46 47 // "addi sp, sp, -16\n" -- copy from a literal 48 let a1: *u8 = "addi sp, sp, -16\n" 49 var k: i64 = 0 50 while a1[k] != 0 { buf[p] = a1[k]; p = p + 1; k = k + 1 } 51 let a2: *u8 = "sd ra, 8(sp)\n" 52 k = 0 53 while a2[k] != 0 { buf[p] = a2[k]; p = p + 1; k = k + 1 } 54 let a3: *u8 = "li a0, 30\n" 55 k = 0 56 while a3[k] != 0 { buf[p] = a3[k]; p = p + 1; k = k + 1 } 57 let a4: *u8 = "ret\n" 58 k = 0 59 while a4[k] != 0 { buf[p] = a4[k]; p = p + 1; k = k + 1 } 60 61 let out: *u8 = alloc(64) 62 let n: i64 = assemble(buf, p, out, 64) 63 return __syscall(93, n & 0xFF, 0, 0, 0, 0, 0) 64}