Mercurial > hg > CbC > old > device
diff mc-code-mips.c @ 266:86e315702d9e
*** empty log message ***
author | kono |
---|---|
date | Mon, 17 May 2004 04:18:12 +0900 |
parents | b47a106a9bce |
children | e7ab23c992e5 |
line wrap: on
line diff
--- a/mc-code-mips.c Mon May 17 03:21:32 2004 +0900 +++ b/mc-code-mips.c Mon May 17 04:18:12 2004 +0900 @@ -1042,7 +1042,7 @@ if (sign) { return sz==1?"lb":sz==SIZE_OF_SHORT?"lh":"lw"; } else { - return sz==1?"lbu":sz==SIZE_OF_SHORT?"lhu":"lwu"; + return sz==1?"lbu":sz==SIZE_OF_SHORT?"lhu":"lhu"; } } @@ -2383,7 +2383,8 @@ printf("\taddu %s,%s,-%d\n",crn,crn,v); break; case CMP: - printf("\tslt %s,%s,%d\n",crn,crn,v); + printf("\tslt %s,%s,%d\n",crn,crn,v); + cmpreg = creg; break; case BOR: printf("\tori %s,%s,%d\n",crn,crn,v); @@ -2429,6 +2430,7 @@ rn = register_name(reg = get_register()); printf("\tli %s,%d\n",rn,e); printf("\tsltu %s,%s,%s\n",rn,register_name(csreg),rn); + cmpreg=csreg; free_register(reg); } @@ -2861,7 +2863,8 @@ if (chk) return; if (n->dsp != -1) { n->dsp = -1; /* initiallized flag */ - printf(".globl\t%s\n",name); + if (n->sc!=STATIC) + printf(".globl\t%s\n",name); data_mode(name); align(t); printf("%s:\n",name); @@ -3017,7 +3020,7 @@ /* floating point */ -#define set_double(freg) regs[freg]=USING_DREG +#define set_double(freg) if (regs[freg]) {regs[freg]=USING_DREG;} void code_cmp_dregister(int e2,int d)