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}