code wiki / (root) / nx_x86_64_call_test.nx

nx_x86_64_call_test.nx

buildroot/runtime/nx_x86_64_call_test.nx

2676 B82 linesdepth 4pulls 5 transitivereach 0 importersview sourcekind gate/prooftopic x86
docsdependenciesstructsconstsfunctions

about

nx_x86_64_call_test.nx -- session 5 smoke for call / return. Builds a program with two functions: func writer(): write(1, "K", 1) ; emits 'K' to stdout (side effect) return 7 ; returns 7 in rax func main(): call writer ; rax = 7 after return rax += 0x30 ; rax = 0x37 ('7') write(1, &rax_byte, 1) ; emits '7' ret 0 Expected stdout: "K7" (hex 4B 37) -- proves: - call dispatches to writer - writer's write side effect happens - writer's return value (7) propagates via rax - main consumes the return value and uses it

dependencies 3 imports · 0 importers

syscalls.nx nx_outbuf.nx nx_x86_64.nx nx_x86_64_call_test.nx

imports: syscalls.nxnx_outbuf.nxnx_x86_64.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main out_new sys_mmap out_str out_char x86_emit_function_start x86_emit_section_text out_str ↻ out_str ↻ out_char ↻ x86_emit_label out_str ↻ out_char ↻ x86_emit_call_label out_str ↻ out_char ↻ x86_emit_movabsq out_str ↻ out_i64 out_char ↻ sys_mmap ↻ out_char ↻ x86_emit_syscall out_str ↻ x86_emit_function_end out_str ↻ out_char ↻ x86_emit_prologue x86_round_up_16 out_str ↻ out_i64 ↻ x86_emit_leaq_rip out_str ↻ out_char ↻ x86_emit_epilogue out_str ↻ x86_emit_addq_rr out_str ↻ out_char ↻ x86_emit_store_byte

structs

none

consts

none

functions

25func main() -> i64