From d144537c3bd905552c1d6551b017801e46d6c577 Mon Sep 17 00:00:00 2001 From: janis Date: Fri, 31 Oct 2025 17:19:19 +0100 Subject: [PATCH] insert stackvar sorted --- lang/src/codegen.asm | 8 ++++++-- lang/tests/codegen.rs | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/lang/src/codegen.asm b/lang/src/codegen.asm index 597e42f..e74a7e7 100644 --- a/lang/src/codegen.asm +++ b/lang/src/codegen.asm @@ -6,6 +6,7 @@ extern panic extern vec_extend extern vec_get extern vec_push +extern vec_insert_sorted extern vec_init_with global codegen_function @@ -285,7 +286,9 @@ codegen_function: mov [rsp + 24], rax ; current_stack_size += size_of:: lea rdi, [rsp + 32] ; stack-vars lea rsi, [rsp + 88] ; &(index, offset) - call vec_push + mov rdx, stackvar_cmp + mov rcx, 0 + call vec_insert_sorted inc r14 jmp .arg_loop @@ -293,9 +296,9 @@ codegen_function: mov rdi, [rsp] ; ctx lea rsi, [rsp + 24] ; &function_ctx + mov rdx, [rbx + 48] ; AstFunction.body call codegen_block - ; TODO: generate function body ; push "ret\n" @@ -317,5 +320,6 @@ codegen_function: ;; rdi: ctx ;; rsi: &function_ctx +;; rdx: block index codegen_block: ret diff --git a/lang/tests/codegen.rs b/lang/tests/codegen.rs index bb21698..6a6468b 100644 --- a/lang/tests/codegen.rs +++ b/lang/tests/codegen.rs @@ -88,15 +88,15 @@ fn main() { }; } - // print_ast( - // b"fn main(a: u32) -> void { - // let y: u32 = a + 4; - // { - // let y: u32 = 10; - // } - // let y: *u32 = &y; - // return *y; - // }", - // |ast| unsafe { parse_func(ast) }, - // ); + print_ast( + b"fn main(a: u32) -> void { + let y: u32 = a + 4; + { + let y: u32 = 10; + } + let y: *u32 = &y; + return *y; + }", + |ast| unsafe { parse_func(ast) }, + ); }