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}