aboutsummaryrefslogtreecommitdiffhomepage
path: root/codegen.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-08-17 08:58:51 +0900
committernsfisis <nsfisis@gmail.com>2025-08-17 09:16:16 +0900
commitd90a9c83a253b71e7731a44657f998a361a41b97 (patch)
tree5be19d1ef62b8273d101cce51638c3cda8713974 /codegen.c
parent41705febbd65aff0e2ef5967f7a9d7c65a0de339 (diff)
downloadducc-d90a9c83a253b71e7731a44657f998a361a41b97.tar.gz
ducc-d90a9c83a253b71e7731a44657f998a361a41b97.tar.zst
ducc-d90a9c83a253b71e7731a44657f998a361a41b97.zip
refactor: replace String with char*
Diffstat (limited to 'codegen.c')
-rw-r--r--codegen.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/codegen.c b/codegen.c
index f71d74a..4fdfe46 100644
--- a/codegen.c
+++ b/codegen.c
@@ -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));
}
}