code wiki / (root) / nx_fbench_t1f.nx

nx_fbench_t1f.nx source

↩ module page · 59 lines · 1232 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 fb_fib(n: i64) -> i64 { 27 var a: i64 = 1 28 var b: i64 = 1 29 var i: i64 = 3 30 while i <= n { 31 let c: i64 = a + b 32 a = b 33 b = c 34 i = i + 1 35 } 36 return b 37} 38 39func fb_sum_to(n: i64) -> i64 { 40 var s: i64 = 0 41 var i: i64 = 1 42 while i <= n { 43 s = s + i 44 i = i + 1 45 } 46 return s 47} 48 49func main(argc: i64, argv: *i64) -> i64 { 50 fb_puts("FBENCH-T1 fib10=" as *u8) 51 let f: i64 = fb_fib(10) 52 fb_pdec(f) 53 fb_puts(" sum100=" as *u8) 54 let t: i64 = fb_sum_to(100) 55 fb_pdec(t) 56 fb_puts("\n" as *u8) 57 sys_exit(0) 58 return 0 59}