insert stackvar sorted

This commit is contained in:
janis 2025-10-31 17:19:19 +01:00
parent da2a298baf
commit d144537c3b
Signed by: janis
SSH key fingerprint: SHA256:bB1qbbqmDXZNT0KKD5c2Dfjg53JGhj7B3CFcLIzSqq8
2 changed files with 17 additions and 13 deletions

View file

@ -6,6 +6,7 @@ extern panic
extern vec_extend extern vec_extend
extern vec_get extern vec_get
extern vec_push extern vec_push
extern vec_insert_sorted
extern vec_init_with extern vec_init_with
global codegen_function global codegen_function
@ -285,7 +286,9 @@ codegen_function:
mov [rsp + 24], rax ; current_stack_size += size_of::<u64> mov [rsp + 24], rax ; current_stack_size += size_of::<u64>
lea rdi, [rsp + 32] ; stack-vars lea rdi, [rsp + 32] ; stack-vars
lea rsi, [rsp + 88] ; &(index, offset) lea rsi, [rsp + 88] ; &(index, offset)
call vec_push mov rdx, stackvar_cmp
mov rcx, 0
call vec_insert_sorted
inc r14 inc r14
jmp .arg_loop jmp .arg_loop
@ -293,9 +296,9 @@ codegen_function:
mov rdi, [rsp] ; ctx mov rdi, [rsp] ; ctx
lea rsi, [rsp + 24] ; &function_ctx lea rsi, [rsp + 24] ; &function_ctx
mov rdx, [rbx + 48] ; AstFunction.body
call codegen_block call codegen_block
; TODO: generate function body ; TODO: generate function body
; push "ret\n" ; push "ret\n"
@ -317,5 +320,6 @@ codegen_function:
;; rdi: ctx ;; rdi: ctx
;; rsi: &function_ctx ;; rsi: &function_ctx
;; rdx: block index
codegen_block: codegen_block:
ret ret

View file

@ -88,15 +88,15 @@ fn main() {
}; };
} }
// print_ast( print_ast(
// b"fn main(a: u32) -> void { b"fn main(a: u32) -> void {
// let y: u32 = a + 4; let y: u32 = a + 4;
// { {
// let y: u32 = 10; let y: u32 = 10;
// } }
// let y: *u32 = &y; let y: *u32 = &y;
// return *y; return *y;
// }", }",
// |ast| unsafe { parse_func(ast) }, |ast| unsafe { parse_func(ast) },
// ); );
} }