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}