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)
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)
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);