From e7a9612251a3dc8e447d4cc4ad2f9ef49f13a783 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Mon, 17 May 2010 15:01:42 +0200 Subject: [PATCH] codea: bug mit addq regel gefixt --- codea/code.bfe | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/codea/code.bfe b/codea/code.bfe index 708bbe7..6ae2bfb 100644 --- a/codea/code.bfe +++ b/codea/code.bfe @@ -48,7 +48,9 @@ void gen_imm_eno(struct treenode *bnode, char *instr) /* man kann sich ein move der konstante bei der multiplikation ersparen */ if(strcmp(instr, "imulq") == 0) { printf("\timulq $%d, %%%s, %%%s\n", KID_VAL(0), KID_REG(1), BN_REG); - } else { + } else if(strcmp(instr, "addq") == 0) { + printf("\taddq $%d, %%%s\n", KID_VAL(0), BN_REG); + } else { /* subq */ moveimm(KID_VAL(0), BN_REG); printf("\t%s %%%s, %%%s\n", instr, KID_REG(1), BN_REG); } @@ -97,7 +99,8 @@ expr: O_SUB(expr,imm) # 2 # gen_e_imm(bnode, "subq"); expr: O_SUB(imm,expr) # 2 # gen_imm_eno(bnode, "subq"); expr: O_ADD(expr,expr) # 1 # gen_e_eno(bnode, "addq"); -expr: O_ADD(imm,expr) # 2 # gen_e_imm(bnode, "addq"); +expr: O_ADD(expr,imm) # 2 # gen_e_imm(bnode, "addq"); +expr: O_ADD(imm,expr) # 2 # gen_imm_eno(bnode, "addq"); expr: O_MUL(expr,expr) # 1 # gen_e_eno(bnode, "imulq"); expr: O_MUL(expr,imm) # 1 # gen_e_imm(bnode, "imulq"); -- 2.25.1