nx_fbench_t3f.nx source
↩ module page · 69 lines · 1735 B
1import "nx_syscalls.nx"
2
3func fb_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
4
5func fb_puts(s: *u8) -> i64 { let n: i64 = fb_slen(s); sys_write(1, s, n); return 0 }
6
7func fb_pdec(n: i64) -> i64 {
8 let buf: *u8 = sys_mmap(32) as *u8
9 if n == 0 { fb_puts("0" as *u8); return 0 }
10 var v: i64 = n
11 var i: i64 = 31
12 while v > 0 {
13 let q: i64 = v / 10
14 let d: i64 = v - q * 10
15 buf[i] = (48 + d) as u8
16 v = q
17 i = i - 1
18 }
19 let o: i64 = i + 1
20 let p: *u8 = buf + o
21 let len: i64 = 31 - i
22 sys_write(1, p, len)
23 return 0
24}
25
26func main(argc: i64, argv: *i64) -> i64 {
27 let src: *u8 = "k1=7;k2=21;bad;k3=14" as *u8
28 let n: i64 = fb_slen(src)
29 var sum: i64 = 0
30 var bad: i64 = 0
31 var heq: i64 = 0
32 var segv: i64 = 0
33 var i: i64 = 0
34 while i < n {
35 let c: i64 = src[i] as i64
36 if c == 59 {
37 if heq == 1 { sum = sum + segv }
38 if heq == 0 { bad = bad + 1 }
39 heq = 0
40 segv = 0
41 }
42 if c != 59 {
43 if c == 61 {
44 heq = 1
45 segv = 0
46 }
47 if c != 61 {
48 if heq == 1 {
49 if c >= 48 {
50 if c <= 57 {
51 let d: i64 = c - 48
52 segv = segv * 10 + d
53 }
54 }
55 }
56 }
57 }
58 i = i + 1
59 }
60 if heq == 1 { sum = sum + segv }
61 if heq == 0 { bad = bad + 1 }
62 fb_puts("FBENCH-T3 sum=" as *u8)
63 fb_pdec(sum)
64 fb_puts(" bad=" as *u8)
65 fb_pdec(bad)
66 fb_puts("\n" as *u8)
67 sys_exit(0)
68 return 0
69}