code wiki / (root) / nx_fbench_t3s.nx

nx_fbench_t3s.nx source

↩ module page · 45 lines · 1397 B

1// nx_fbench_t3s.nx -- T3 rewritten ON the sovereign stdlib (nx_lib_std): the language-growth 2// half of the forge loop. Same task as nx_fbench_t3b (120 lines, 4 redefined helpers) -- 3// this version keeps ONLY task logic. Expected: FBENCH-T3 sum=42 bad=1 4// license_tier: ORIGINAL expect_exit: 0 5import "nx_syscalls.nx" 6import "nx_lib_std.nx" 7 8func main(argc: i64, argv: *i64) -> i64 { 9 let data: *u8 = "k1=7;k2=21;bad;k3=14" as *u8 10 let seg: *u8 = sys_mmap(256) as *u8 11 var sum: i64 = 0 12 var bad: i64 = 0 13 var i: i64 = 0 14 var start: i64 = 0 15 var done: i64 = 0 16 while done == 0 { 17 let b: i64 = data[i] as i64 18 var atend: i64 = 0 19 if b == 59 { atend = 1 } 20 if b == 0 { atend = 1 } 21 if atend == 1 { 22 let n: i64 = i - start 23 let src: *u8 = data + start 24 std_memcpy(seg, src, n) 25 seg[n] = 0 as u8 26 let e: i64 = std_find(seg, 61) 27 if e < 0 { bad = bad + 1 } else { 28 let o: i64 = e + 1 29 let vp: *u8 = seg + o 30 let v: i64 = std_atoi(vp) 31 sum = sum + v 32 } 33 start = i + 1 34 } 35 if b == 0 { done = 1 } 36 i = i + 1 37 } 38 std_puts("FBENCH-T3 sum=" as *u8) 39 std_pdec(sum) 40 std_puts(" bad=" as *u8) 41 std_pdec(bad) 42 std_puts("\n" as *u8) 43 sys_exit(0) 44 return 0 45}