Mercurial > hg > CbC > old > device
diff mc-code-mips.c @ 583:421be86892b3
ia32 reorganization
author | kono |
---|---|
date | Tue, 17 Jan 2006 23:38:57 +0900 |
parents | dbde3b869a0f |
children | c991b82e6849 |
line wrap: on
line diff
--- a/mc-code-mips.c Mon Jan 16 00:52:56 2006 +0900 +++ b/mc-code-mips.c Tue Jan 17 23:38:57 2006 +0900 @@ -1574,6 +1574,7 @@ default: if (length <0) { if (length > -MAX_COPY_LEN) { + free_register(dreg); dreg = 0; for(;length<=-4;length+=4,offset-=4) emit_copy(from,to,-4,offset-4,0,det); for(;length<=-2;length+=2,offset-=2) @@ -1583,6 +1584,7 @@ break; } } else if (length <=MAX_COPY_LEN) { + free_register(dreg); dreg = 0; for(;length>=4;length-=4,offset+=4) emit_copy(from,to,4,offset,0,det); for(;length>=2;length-=2,offset+=2) @@ -1619,7 +1621,7 @@ // set_ireg(to,1); } } - free_register(dreg); + if (dreg) free_register(dreg); } int @@ -2486,13 +2488,13 @@ void code_assop(int op,int creg, int byte,int sign) { - char *xrn,*crn,*drn; + char *crn,*drn; int xreg; int edx = get_register(); if(!edx) error(-1); // (*creg) op = pop() use_int(creg); - xrn = register_name(xreg = emit_pop(0)); /* pop e3 value */ + xreg = emit_pop(0); /* pop e3 value */ #if 1 set_ireg(edx,0); ld_indexx(byte,0,creg,ireg,sign);