ppc: field expressions (alle codea_abgabe_*.0 laufen jetzt durch)
authorBernhard Urban <lewurm@gmail.com>
Tue, 8 Jun 2010 14:45:11 +0000 (16:45 +0200)
committerBernhard Urban <lewurm@gmail.com>
Wed, 9 Jun 2010 18:35:49 +0000 (20:35 +0200)
gesamt_ppc/chelper.c
gesamt_ppc/code.bfe

index 84ef5bac03d3f6215bc5a3758a2782aec2163058..e12653b418cfc7fcabe214a7ff4d622d35ff739a 100644 (file)
@@ -50,7 +50,7 @@ void move(char *src, char *dst)
 void moveimm(long imm, char *dst)
 {
        /* TODO: 32 bits... */
-       printf("\taddi %s,0,%d\n", dst, imm);
+       printf("\tli %s,%d\n", dst, imm);
 }
 
 char *next_reg(char *s, int params)
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);