aboutsummaryrefslogtreecommitdiffhomepage
path: root/codegen.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-07-29 19:39:22 +0900
committernsfisis <nsfisis@gmail.com>2025-08-15 10:04:39 +0900
commit144875f4687e8cfa77f8b1b7e5ff8790f8f5b684 (patch)
treeb32cb589dd4e7837e12852d2a59b20b9d0cacd69 /codegen.c
parent412854c38e1dd79f59b48d5e43ab16c86e587145 (diff)
downloadducc-144875f4687e8cfa77f8b1b7e5ff8790f8f5b684.tar.gz
ducc-144875f4687e8cfa77f8b1b7e5ff8790f8f5b684.tar.zst
ducc-144875f4687e8cfa77f8b1b7e5ff8790f8f5b684.zip
feat: properly calculate stack offset of local variables
Diffstat (limited to 'codegen.c')
-rw-r--r--codegen.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/codegen.c b/codegen.c
index 234b4e5..0a90602 100644
--- a/codegen.c
+++ b/codegen.c
@@ -268,9 +268,8 @@ void codegen_func_call(CodeGen* g, AstNode* ast) {
}
void codegen_lvar(CodeGen* g, AstNode* ast, GenMode gen_mode) {
- int offset = 8 + ast->node_idx * 8;
printf(" mov rax, rbp\n");
- printf(" sub rax, %d\n", offset);
+ printf(" sub rax, %d\n", ast->node_stack_offset);
printf(" push rax\n");
if (gen_mode == GenMode_rval) {
codegen_lval2rval(ast->ty);