From: Bernhard Urban Date: Tue, 8 Jun 2010 11:00:00 +0000 (+0200) Subject: ppc: sub statt subf X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=uebersetzerbau-ss10.git;a=commitdiff_plain;h=4a2b9972dad22d5e44ad97314b280f8aaf80cc8c ppc: sub statt subf --- diff --git a/gesamt_ppc/code.bfe b/gesamt_ppc/code.bfe index d67847a..7fdc466 100644 --- a/gesamt_ppc/code.bfe +++ b/gesamt_ppc/code.bfe @@ -45,7 +45,7 @@ void gen_e_eno(struct treenode *bnode, char *instr) #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 } @@ -56,8 +56,8 @@ void gen_id_eno(struct treenode *bnode) 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) @@ -89,7 +89,7 @@ void gen_e_imm(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 { @@ -97,8 +97,7 @@ void gen_e_imm(struct treenode *bnode, char *instr) 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 } } @@ -331,9 +330,9 @@ expr: O_ARG(expr,expr) # 1 # prep_arg(bnode, 1); 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);