X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=codea%2Fcode.bfe;h=fd78dd2e7309a1ad24f7bd52ee7795fca7bb7135;hb=b82da83a0ad2014c11113818eee6bd5fb5f3445c;hp=362ace594b578293deffcfba9b3bec3db8568bf0;hpb=ca235efbf622798be9c5adb965b37f3be0f5d335;p=uebersetzerbau-ss10.git diff --git a/codea/code.bfe b/codea/code.bfe index 362ace5..fd78dd2 100644 --- a/codea/code.bfe +++ b/codea/code.bfe @@ -69,7 +69,6 @@ void gen_eqless_ee(struct treenode *bnode, char *op) void gen_eqless_ei(struct treenode *bnode, char *op) { printf("\t//gen_eqless_ei\n"); - KIDREG2PARM(0); #if 0 /* TODO */ KIDREG2PARM(1) @@ -82,10 +81,15 @@ void gen_eqless_ei(struct treenode *bnode, char *op) void gen_eqless_ie(struct treenode *bnode, char *op) { printf("\t//gen_eqless_ie\n"); - moveimm(KID_VAL(0), BN_REG); - printf("\tcmp %%%s, %%%s\n", KID_REG(1), BN_REG); + if(strcmp("e", op) == 0) { + printf("\tcmp $%li, %%%s\n", KID_VAL(0), KID_REG(1)); + gen_eqless_footer(bnode, op); + } else { + moveimm(KID_VAL(0), BN_REG); + printf("\tcmp %%%s, %%%s\n", KID_REG(1), BN_REG); - gen_eqless_footer(bnode, op); + gen_eqless_footer(bnode, op); + } } %} @@ -121,7 +125,7 @@ expr: O_LESS(imm,expr) # 6 # gen_eqless_ie(bnode, "l"); expr: O_EQ(expr,expr) # 5 # gen_eqless_ee(bnode, "e"); expr: O_EQ(expr,imm) # 5 # gen_eqless_ei(bnode, "e"); -expr: O_EQ(imm,expr) # 6 # gen_eqless_ie(bnode, "e"); +expr: O_EQ(imm,expr) # 5 # gen_eqless_ie(bnode, "e"); exprno: O_ID # 0 # /* brauchen wir nicht 'zwischenlagern', weil nur gelesen wird */