code wiki / (root) / nx_fbench_t1b.nx

nx_fbench_t1b.nx source

↩ module page · 62 lines · 1186 B

1import "nx_syscalls.nx" 2 3func fb_slen(s: *u8) -> i64 { 4 var n: i64 = 0 5 while s[n] != (0 as u8) { n = n + 1 } 6 return n 7} 8 9func fb_puts(s: *u8) -> i64 { 10 let n: i64 = fb_slen(s) 11 sys_write(1, s, n) 12 return 0 13} 14 15func fb_pdec(n: i64) -> i64 { 16 let buf: *u8 = sys_mmap(32) as *u8 17 if n == 0 { fb_puts("0" as *u8); return 0 } 18 var v: i64 = n 19 var i: i64 = 31 20 while v > 0 { 21 let q: i64 = v / 10 22 let d: i64 = v - q * 10 23 buf[i] = (48 + d) as u8 24 v = q 25 i = i - 1 26 } 27 let o: i64 = i + 1 28 let p: *u8 = buf + o 29 let len: i64 = 31 - i 30 sys_write(1, p, len) 31 return 0 32} 33 34func main(argc: i64, argv: *i64) -> i64 { 35 fb_puts("FBENCH-T1 fib10=" as *u8) 36 37 var fib_prev: i64 = 1 38 var fib_curr: i64 = 1 39 var i: i64 = 3 40 while i <= 10 { 41 let fib_next: i64 = fib_prev + fib_curr 42 fib_prev = fib_curr 43 fib_curr = fib_next 44 i = i + 1 45 } 46 47 fb_pdec(fib_curr) 48 fb_puts(" sum100=" as *u8) 49 50 var sum: i64 = 0 51 var j: i64 = 1 52 while j <= 100 { 53 sum = sum + j 54 j = j + 1 55 } 56 57 fb_pdec(sum) 58 fb_puts("\n" as *u8) 59 60 sys_exit(0) 61 return 0 62}