} else
gins(ATST, &n1, N);
a = optoas(o, t);
- patch(gbranch(optoas(o, t), t), to);
+ patch(gbranch(a, t), to);
regfree(&n1);
}
o1 |= (p->from.reg<<16);
o1 |= (p->to.reg<<12);
break;
-
case 90: /* tst reg */
- o1 = oprrr(AMOVW, p->scond);
- o1 |= p->from.reg | (p->from.reg<<12);
- o1 |= 1 << 20; // SBIT
+ o1 = oprrr(ACMP+AEND, p->scond);
+ o1 |= p->from.reg<<16;
break;
}
return o | (0xe<<24) | (0x0<<20) | (0xb<<8) | (1<<4);
case AMOVFW+AEND: // copy FtoW
return o | (0xe<<24) | (0x1<<20) | (0xb<<8) | (1<<4);
+ case ACMP+AEND: // cmp imm
+ return o | (0x3<<24) | (0x5<<20);
}
diag("bad rrr %d", a);
prasm(curp);