/* 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);
}
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");