#else
KIDREG2PARM(0);
KIDREG2PARM(1);
- printf("\t%s %s,%s,%s\n", instr, BN_REG, KID_REG(1), KID_REG(0));
+ printf("\t%s %s,%s,%s\n", instr, BN_REG, KID_REG(0), KID_REG(1));
#endif
}
KIDKIDREG2PARM(1,1);
KIDREG2PARM(0);
move(KID_REG(0), BN_REG);
- printf("\tsubf %%%s, %%%s\n", KIDKID_REG(1,1), BN_REG);
- printf("\tsubf %%%s, %%%s\n", KIDKID_REG(1,0), BN_REG);
+ printf("\tsub %%%s, %%%s\n", KIDKID_REG(1,1), BN_REG);
+ printf("\tsub %%%s, %%%s\n", KIDKID_REG(1,0), BN_REG);
}
void gen_e_field(struct treenode *bnode, char *instr)
printf("\timulq $%d, %%%s, %%%s\n", KID_VAL(1), KID_REG(0), BN_REG);
}
} else {
- if(strcmp(instr, "subf") == 0 && KID_VAL(1) == 0) {
+ if(strcmp(instr, "sub") == 0 && KID_VAL(1) == 0) {
printf("\t#subtraktion mit 0 wegoptimiert\n");
move(KID_REG(0), BN_REG);
} else {
move(KID_REG(0), BN_REG);
printf("\t%s $%d, %%%s\n", instr, KID_VAL(1), BN_REG);
#else
- /* subf only */
- printf("\taddi %s,%s,%d\n", BN_REG, KID_REG(0), -1*KID_VAL(1));
+ printf("\t%si %s,%s,%d\n", instr, BN_REG, KID_REG(0), KID_VAL(1));
#endif
}
}
expr: O_ARG(O_ID,expr) # 1 # prep_arg(bnode, 0);
expr: O_NOTHING # 0 #
-expr: O_SUB(expr,expr) # 2 # gen_e_eno(bnode, "subf");
-expr: O_SUB(expr,O_FIELD(expr)) # 2 # gen_e_field(bnode, "subf");
-expr: O_SUB(expr,imm) # 1 # gen_e_imm(bnode, "subf");
+expr: O_SUB(expr,expr) # 2 # gen_e_eno(bnode, "sub");
+expr: O_SUB(expr,O_FIELD(expr)) # 2 # gen_e_field(bnode, "sub");
+expr: O_SUB(expr,imm) # 1 # gen_e_imm(bnode, "sub");
expr: O_SUB(expr,O_SUB(O_ID,expr)) # 2 # gen_subspecial(bnode, 0);
expr: O_SUB(expr,O_SUB(imm,expr)) # 2 # gen_subspecial(bnode, 1);