code wiki / (root) / riscv_test.nx

riscv_test.nx source

↩ module page · 31 lines · 800 B

1// riscv_test.nx -- self-test for riscv.nx. 2 3import "syscalls.nx" 4import "types.nx" 5import "ir.nx" 6import "riscv.nx" 7 8func main() -> i64 { 9 let m_raw: *u8 = sys_mmap(256) 10 let m: *Module = m_raw as *Module 11 m.name = "rv_test" as *u8 12 m.functions = 0 as *Function 13 m.n_functions = 0 14 15 let f: *Function = ir_function_new(m, "main" as *u8, 4, ir_type_i64()) 16 let b: *BasicBlock = ir_block_new(f) 17 let c42: i64 = ir_const_i64(f, 42) 18 emit_return_instr(b, c42) 19 20 let locs_raw: *u8 = sys_mmap(256) 21 let locs: *ValueLoc = locs_raw as *ValueLoc 22 23 let o: *OutBuf = out_new(4096) 24 emit_function(f, locs, o, "main", 16, 8, 0, 0) 25 26 let buf: *u8 = o.buf 27 if buf[0] != 0x0A { return 1 } 28 if buf[1] != 0x20 { return 2 } 29 30 return 0 31}