code wiki / (root) / _premortem3_shtest.nx

_premortem3_shtest.nx source

↩ module page · 23 lines · 770 B

1import "nx_syscalls.nx" 2func _emit(v: i64) -> i64 { 3 let b: *u8 = sys_mmap(28); var n: i64 = v; var neg: i64 = 0 4 if n < 0 { neg = 1; n = 0 - n } 5 let t2: *u8 = sys_mmap(28); var t: i64 = 0 6 if n == 0 { t2[0] = 48; t = 1 } 7 while n > 0 { t2[t] = 48 + (n % 10); n = n / 10; t = t + 1 } 8 if neg == 1 { t2[t] = 45; t = t + 1 } 9 var i: i64 = 0; while i < t { b[i] = t2[t - 1 - i]; i = i + 1 } 10 b[t] = 32; sys_write(1, b, t + 1); return 0 11} 12func _nl() -> i64 { let z: *u8 = sys_mmap(2); z[0] = 10; sys_write(1, z, 1); return 0 } 13func main() -> i64 { 14 let one: i64 = 1 15 _emit(one << 64) 16 _emit(one << 65) 17 let neg: i64 = 0 - 1 18 _emit(neg >> 1) 19 let big: i64 = 0 - 4294967296 20 _emit(big >> 64) 21 _nl() 22 sys_exit(0); return 0 23}