diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-08-17 08:58:51 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-17 09:16:16 +0900 |
| commit | d90a9c83a253b71e7731a44657f998a361a41b97 (patch) | |
| tree | 5be19d1ef62b8273d101cce51638c3cda8713974 /codegen.c | |
| parent | 41705febbd65aff0e2ef5967f7a9d7c65a0de339 (diff) | |
| download | ducc-d90a9c83a253b71e7731a44657f998a361a41b97.tar.gz ducc-d90a9c83a253b71e7731a44657f998a361a41b97.tar.zst ducc-d90a9c83a253b71e7731a44657f998a361a41b97.zip | |
refactor: replace String with char*
Diffstat (limited to 'codegen.c')
| -rw-r--r-- | codegen.c | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -295,9 +295,9 @@ void codegen_assign_expr(CodeGen* g, AstNode* ast) { } void codegen_func_call(CodeGen* g, AstNode* ast) { - String* func_name = &ast->name; + const char* func_name = ast->name; - if (string_equals_cstr(func_name, "va_start")) { + if (strcmp(func_name, "va_start") == 0) { printf(" # va_start BEGIN\n"); for (int i = 0; i < 6; ++i) { printf(" mov rax, %s\n", param_reg(i)); @@ -337,7 +337,7 @@ void codegen_func_call(CodeGen* g, AstNode* ast) { printf(" mov rax, 0\n"); printf(" sub rsp, 8\n"); - printf(" call %.*s\n", func_name->len, func_name->data); + printf(" call %s\n", func_name); printf(" add rsp, 8\n"); printf(" push rax\n"); @@ -345,7 +345,7 @@ void codegen_func_call(CodeGen* g, AstNode* ast) { printf(".Laligned%d:\n", label); printf(" mov rax, 0\n"); - printf(" call %.*s\n", func_name->len, func_name->data); + printf(" call %s\n", func_name); printf(" push rax\n"); printf(".Lend%d:\n", label); @@ -361,7 +361,7 @@ void codegen_lvar(CodeGen* g, AstNode* ast, GenMode gen_mode) { } void codegen_gvar(CodeGen* g, AstNode* ast, GenMode gen_mode) { - printf(" lea rax, %.*s[rip]\n", ast->name.len, ast->name.data); + printf(" lea rax, %s[rip]\n", ast->name); printf(" push rax\n"); if (gen_mode == GenMode_rval) { codegen_lval2rval(ast->ty); @@ -536,11 +536,11 @@ void codegen_stmt(CodeGen* g, AstNode* ast) { } void codegen_func(CodeGen* g, AstNode* ast) { - printf("%.*s:\n", ast->name.len, ast->name.data); + printf("%s:\n", ast->name); codegen_func_prologue(g, ast); codegen_stmt(g, ast->node_body); - if (string_equals_cstr(&ast->name, "main")) { + if (strcmp(ast->name, "main") == 0) { // C99: 5.1.2.2.3 printf(" mov rax, 0\n"); } @@ -569,15 +569,15 @@ void codegen(Program* prog) { AstNode* var = prog->vars->node_items + i; if (var->node_expr) { if (var->ty->kind == TypeKind_char) - printf(" %.*s: .byte %d\n", var->name.len, var->name.data, var->node_expr->node_int_value); + printf(" %s: .byte %d\n", var->name, var->node_expr->node_int_value); else if (var->ty->kind == TypeKind_short) - printf(" %.*s: .word %d\n", var->name.len, var->name.data, var->node_expr->node_int_value); + printf(" %s: .word %d\n", var->name, var->node_expr->node_int_value); else if (var->ty->kind == TypeKind_int) - printf(" %.*s: .int %d\n", var->name.len, var->name.data, var->node_expr->node_int_value); + printf(" %s: .int %d\n", var->name, var->node_expr->node_int_value); else unimplemented(); } else { - printf(" %.*s: .zero %d\n", var->name.len, var->name.data, type_sizeof(var->ty)); + printf(" %s: .zero %d\n", var->name, type_sizeof(var->ty)); } } |
