From 9a4381b459f69d6fec4112c99c8e9c3e441a9c06 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 3 May 2025 15:10:07 +0900 Subject: refactor --- main.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 6fea014..3c33310 100644 --- a/main.c +++ b/main.c @@ -553,44 +553,37 @@ void gen_binary_expr(CODEGEN* g, AST* ast) { printf(" pop rax\n"); if (ast->op == TK_PLUS) { printf(" add rax, rdi\n"); - printf(" push rax\n"); } else if (ast->op == TK_MINUS) { printf(" sub rax, rdi\n"); - printf(" push rax\n"); } else if (ast->op == TK_STAR) { printf(" imul rax, rdi\n"); - printf(" push rax\n"); } else if (ast->op == TK_SLASH) { printf(" cqo\n"); printf(" idiv rdi\n"); - printf(" push rax\n"); } else if (ast->op == TK_PERCENT) { printf(" cqo\n"); printf(" idiv rdi\n"); - printf(" push rdx\n"); + printf(" mov rax, rdx\n"); } else if (ast->op == TK_EQ) { printf(" cmp rax, rdi\n"); printf(" sete al\n"); printf(" movzb rax, al\n"); - printf(" push rax\n"); } else if (ast->op == TK_NE) { printf(" cmp rax, rdi\n"); printf(" setne al\n"); printf(" movzb rax, al\n"); - printf(" push rax\n"); } else if (ast->op == TK_LT) { printf(" cmp rax, rdi\n"); printf(" setl al\n"); printf(" movzb rax, al\n"); - printf(" push rax\n"); } else if (ast->op == TK_LE) { printf(" cmp rax, rdi\n"); printf(" setle al\n"); printf(" movzb rax, al\n"); - printf(" push rax\n"); } else { fatal_error("gen_binary_expr: unknown op"); } + printf(" push rax\n"); } void gen_expr(CODEGEN* g, AST* ast) { -- cgit v1.2.3-70-g09d2