code wiki / (root) / nx_fbench_t3f.nx

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}