From 61464f024c073b5aed5ed55e0eb29bd4bf10ae9e Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Tue, 8 Jun 2010 16:45:11 +0200 Subject: [PATCH] ppc: field expressions (alle codea_abgabe_*.0 laufen jetzt durch) --- gesamt_ppc/chelper.c | 2 +- gesamt_ppc/code.bfe | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gesamt_ppc/chelper.c b/gesamt_ppc/chelper.c index 84ef5ba..e12653b 100644 --- a/gesamt_ppc/chelper.c +++ b/gesamt_ppc/chelper.c @@ -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) 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); -- 2.25.1