From be9027fc4d97ced5cd5c2286da4fd99d387ee657 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Tue, 8 Jun 2010 17:34:25 +0200 Subject: [PATCH] ppc: ersten zwei codeb testfaelle gehen (assign) --- gesamt_ppc/chelper.c | 2 +- gesamt_ppc/code.bfe | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gesamt_ppc/chelper.c b/gesamt_ppc/chelper.c index e12653b..94d3f91 100644 --- a/gesamt_ppc/chelper.c +++ b/gesamt_ppc/chelper.c @@ -43,7 +43,7 @@ void move(char *src, char *dst) { if(src == (char*) NULL) return; if(strcmp(src,dst) != 0) { - printf("\tmr %s, %s\n", dst, src); + printf("\tmr %s,%s\n", dst, src); } } diff --git a/gesamt_ppc/code.bfe b/gesamt_ppc/code.bfe index 0006382..384314e 100644 --- a/gesamt_ppc/code.bfe +++ b/gesamt_ppc/code.bfe @@ -86,7 +86,7 @@ void gen_e_imm(struct treenode *bnode, char *instr) if(KID_VAL(1) == 1 && strcmp(KID_REG(0), BN_REG) == 0) { printf("\t#multiplikation mit 1 wegoptimiert\n"); } else { - printf("\tmullw $%d, %%%s, %%%s\n", KID_VAL(1), KID_REG(0), BN_REG); + printf("\tmulli %s,%s,%d\n", BN_REG, KID_REG(0), KID_VAL(1)); } } else { if(strcmp(instr, "sub") == 0 && KID_VAL(1) == 0) { @@ -123,7 +123,7 @@ void gen_imm_eno(struct treenode *bnode, char *instr) if(KID_VAL(0) == 1 && strcmp(KID_REG(1), BN_REG) == 0) { printf("\t#multiplikation mit 1 wegoptimiert\n"); } else { - printf("\tmullw $%d, %%%s, %%%s\n", KID_VAL(0), KID_REG(1), BN_REG); + printf("\tmulli %s,%s,%d\n", BN_REG, KID_REG(1), KID_VAL(0)); } } else { /* addq */ printf("\taddq $%d, %%%s\n", KID_VAL(0), BN_REG); @@ -215,6 +215,7 @@ void gen_subspecial(struct treenode *bnode, short e) void assign_var(struct treenode *bnode) { + printf("\t#assign_var\n"); KIDREG2PARM(1); if (strcmp(bnode->kids[0]->kids[0]->name, bnode->kids[1]->name) != 0) { KIDKIDREG2PARM(0,0); @@ -304,15 +305,15 @@ void gen_sub_field(struct treenode *bnode) %% -begin: ret # 0 # printf("\n"); +begin: ret # 0 # begin: assign # 0 # begin: ifstat # 0 # begin: args # 0 # -assign: O_ASSIGN(expr, O_ID) # 1 # KIDREG2PARM(1); printf("\tmovq %%%s, %%%s\n", BN_REG, KID_REG(1)); -assign: O_ASSIGN(imm, O_ID) # 1 # KIDREG2PARM(1); printf("\tmovq $%d, %%%s\n", KID_VAL(0), KID_REG(1)); -assign: O_ASSIGN(O_ID, O_ID) # 1 # KIDREG2PARM(1); KIDREG2PARM(0); printf("\tmovq %%%s, %%%s\n", KID_REG(0), KID_REG(1)); +assign: O_ASSIGN(expr, O_ID) # 1 # KIDREG2PARM(1); printf("\tmr %s,%s\n", KID_REG(1), BN_REG); +assign: O_ASSIGN(imm, O_ID) # 1 # KIDREG2PARM(1); printf("\tli %s,%d\n", KID_REG(1), KID_VAL(0)); +assign: O_ASSIGN(O_ID, O_ID) # 1 # KIDREG2PARM(1); KIDREG2PARM(0); printf("\tmr %s,%s\n", KID_REG(1), KID_REG(0)); assign: O_ASSIGN(O_SUB(O_ID,O_NUM), O_ID) # 1 # assign_var(bnode); -- 2.25.1