ppc: field expressions (alle codea_abgabe_*.0 laufen jetzt durch)
[uebersetzerbau-ss10.git] / gesamt_ppc / code.bfe
index e62637603b1a20796398e77a4ada1d113851c545..000638201c2356002ff89b988ab1404fb61eaa74 100644 (file)
@@ -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);