code wiki / (root) / smoke_nxc_pipeline11.nx

smoke_nxc_pipeline11.nx source

↩ module page · 20 lines · 706 B

1// Just lex+parse, no opt/regalloc/emit, then write_elf. 2import "syscalls.nx" 3import "types.nx" 4import "lex_kinds.nx" 5import "outbuf.nx" 6import "ir.nx" 7import "lex.nx" 8import "parse.nx" 9import "elf_writer.nx" 10 11func main() -> i64 { 12 let demo: *u8 = "func main() -> i64 { return __syscall(93, 30, 0, 0, 0, 0, 0) }" 13 let toks: *Tok = lex_source(demo, 4096) 14 let m: *Module = parse_module(toks, 0 as *Module) 15 let fresh_code: *u8 = sys_mmap(64) 16 fresh_code[0] = 0x67; fresh_code[1] = 0x80; fresh_code[2] = 0; fresh_code[3] = 0 17 let n: i64 = write_elf(fresh_code, 4, 2) 18 if n < 0 { return __syscall(93, 50, 0, 0, 0, 0, 0) } 19 return __syscall(93, 42, 0, 0, 0, 0, 0) 20}