X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gesamt_ppc%2Fcode.bfe;h=000638201c2356002ff89b988ab1404fb61eaa74;hb=61464f024c073b5aed5ed55e0eb29bd4bf10ae9e;hp=e62637603b1a20796398e77a4ada1d113851c545;hpb=41b58f7412731cc4e7e27043e0d118aa328f3db7;p=uebersetzerbau-ss10.git diff --git a/gesamt_ppc/code.bfe b/gesamt_ppc/code.bfe index e626376..0006382 100644 --- a/gesamt_ppc/code.bfe +++ b/gesamt_ppc/code.bfe @@ -210,7 +210,7 @@ void gen_subspecial(struct treenode *bnode, short e) printf("\tsubf %%%s, %%%s\n", KIDKID_REG(1,0), BN_REG); } if(e) KIDKIDREG2PARM(1,1); - printf("\taddq %%%s, %%%s\n", KIDKID_REG(1,1), BN_REG); + printf("\tadd %s,%s,%s\n", BN_REG, BN_REG, KIDKID_REG(1,1)); } void assign_var(struct treenode *bnode) @@ -397,7 +397,7 @@ expr: O_EQ(O_EQ(expr,O_NULL),O_NULL) # 3 # gen_eqless(bnode, "ne", 1, 0, 1); expr: O_EQ(O_EQ(O_EQ(expr,O_NULL),O_NULL),O_NULL) # 3 # gen_eqless(bnode, "e", 1, 0, 2); -expr: O_FIELD(expr) # 1 # printf("\t/* field(expr)*/\n"); KIDREG2PARM(0); printf("\tmovq %d(%%%s), %%%s\n", bnode->soffset * 8, KID_REG(0), BN_REG); +expr: O_FIELD(expr) # 1 # printf("\t/* field(expr)*/\n"); KIDREG2PARM(0); printf("\tlwz %s, %d(%s)\n", BN_REG, bnode->soffset * 4, KID_REG(0)); expr: O_FIELD(imm) # 1 # printf("\t/* field(imm)*/\n"); printf("\tmovq %d, %%%s\n", KID_VAL(0) + (bnode->soffset * 8), BN_REG);