📄 outco68.c
字号:
val = 0x108 + (ins->oper2->preg << 9);
if (ins->length == 4)
val |= 0x40;
val |= ins->oper1->preg;
PUTWORD(p, val);
PUTWORD(p, ins->oper1->offset->v.i);
}
}
break;
case op_moveq:
PUTWORD(p, 0x7000 + (ins->oper2->preg << 9) + (ins->oper1->offset
->v.i &255));
break;
case op_muls:
putmuldiv(0, 0xc1c0, 0x4c00, 0x0800, ins, p);
break;
case op_mulu:
putmuldiv(0, 0xc0c0, 0x4c00, 0x0000, ins, p);
break;
case op_nbcd:
PUTWORD(p, 0x4800);
putam(ins->length, ins, ins->oper1, p);
break;
case op_neg:
PUTWORD(p, 0x4400 + (ins->length / 2 << 6));
putam(ins->length, ins, ins->oper1, p);
break;
case op_negx:
PUTWORD(p, 0x4000 + (ins->length / 2 << 6));
putam(ins->length, ins, ins->oper1, p);
break;
case op_nop:
PUTWORD(p, 0x4e71);
break;
case op_not:
PUTWORD(p, 0x4600 + (ins->length / 2 << 6));
putam(ins->length, ins, ins->oper1, p);
break;
case op_or:
putmath(0x8000, ins, p);
break;
case op_ori:
if (ins->oper2->mode == am_sr)
{
PUTWORD(p, 0x7c)PUTWORD(p, ins->oper1->offset->v.i);
}
else if (ins->oper2->mode == am_ccr)
{
PUTWORD(p, 0x03c)PUTWORD(p, ins->oper1->offset->v.i &255);
}
else
putmathimm(0, ins, p);
break;
case op_pack:
putpack(0x8140, ins, p);
break;
case op_pea:
PUTWORD(p, 0x4840);
putam(ins->length, ins, ins->oper1, p);
break;
case op_rol:
putshift(0xe118, ins, p);
break;
case op_ror:
putshift(0xe018, ins, p);
break;
case op_roxl:
putshift(0xe110, ins, p);
break;
case op_roxr:
putshift(0xe010, ins, p);
break;
case op_rtd:
PUTWORD(p, 0x4e74);
PUTWORD(p, ins->oper1->offset->v.i);
break;
case op_rtr:
PUTWORD(p, 0x4e77);
break;
case op_rts:
PUTWORD(p, 0x4e75);
break;
case op_sbcd:
putdecimal(0x8100, ins, p);
break;
case op_st:
PUTWORD(p, 0x50c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_seq:
PUTWORD(p, 0x57c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_spl:
PUTWORD(p, 0x5ac0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_smi:
PUTWORD(p, 0x5bc0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_scc:
PUTWORD(p, 0x54c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_scs:
PUTWORD(p, 0x55c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_sne:
PUTWORD(p, 0x56c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_slt:
PUTWORD(p, 0x5dc0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_sle:
PUTWORD(p, 0x5fc0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_sgt:
PUTWORD(p, 0x5ec0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_sge:
PUTWORD(p, 0x5cc0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_shi:
PUTWORD(p, 0x52c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_shs:
PUTWORD(p, 0x54c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_slo:
PUTWORD(p, 0x55c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_sls:
PUTWORD(p, 0x53c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_svc:
PUTWORD(p, 0x58c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_svs:
PUTWORD(p, 0x59c0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_sub:
putmath(0x9000, ins, p);
break;
case op_suba:
PUTWORD(p, 0x90C0 + (ins->oper2->preg << 9) + ((ins->length == 4 ?
1 : 0) << 8));
putam(ins->length, ins, ins->oper1, p);
break;
case op_subi:
putmathimm(0x400, ins, p);
break;
case op_subq:
PUTWORD(p, 0x5100 + ((ins->length / 2) << 6) + (((ins->oper1
->offset->v.i) &7) << 9));
putam(ins->length, ins, ins->oper2, p);
break;
case op_subx:
putaddx(0x9100, ins, p);
break;
case op_swap:
PUTWORD(p, 0x4840 + ins->oper1->preg);
break;
case op_tas:
PUTWORD(p, 0x4ac0);
putam(ins->length, ins, ins->oper1, p);
break;
case op_trap:
PUTWORD(p, 0x4e40 + (ins->oper1->offset->v.i &7));
break;
case op_trapv:
PUTWORD(p, 0x4e76);
break;
case op_trapt:
puttrapcc(ins, 0x50f8, p);
break;
case op_trapeq:
puttrapcc(ins, 0x57f8, p);
break;
case op_trappl:
puttrapcc(ins, 0x5af8, p);
break;
case op_trapmi:
puttrapcc(ins, 0x5bf8, p);
break;
case op_trapcc:
puttrapcc(ins, 0x54f8, p);
break;
case op_trapcs:
puttrapcc(ins, 0x55f8, p);
break;
case op_trapne:
puttrapcc(ins, 0x56f8, p);
break;
case op_traplt:
puttrapcc(ins, 0x5df8, p);
break;
case op_traple:
puttrapcc(ins, 0x5ff8, p);
break;
case op_trapgt:
puttrapcc(ins, 0x5ef8, p);
break;
case op_trapge:
puttrapcc(ins, 0x5cf8, p);
break;
case op_traphi:
puttrapcc(ins, 0x52f8, p);
break;
case op_traphs:
puttrapcc(ins, 0x54f8, p);
break;
case op_traplo:
puttrapcc(ins, 0x55f8, p);
break;
case op_trapls:
puttrapcc(ins, 0x53f8, p);
break;
case op_trapvc:
puttrapcc(ins, 0x58f8, p);
break;
case op_trapvs:
puttrapcc(ins, 0x59f8, p);
break;
case op_tst:
PUTWORD(p, 0x4A00 + (ins->length / 2 << 6));
putam(ins->length, ins, ins->oper1, p);
break;
case op_unlk:
PUTWORD(p, 0x4E58 + ins->oper1->preg);
break;
case op_unpk:
putpack(0x8180, ins, p);
break;
case op_fmove:
if (ins->oper1->mode == am_fpsr)
{
PUTWORD(p, 0xf000 + (fpcop << 9));
PUTWORD(p, 0xa000 + (2 << 10));
putam(ins->length, ins, ins->oper2, p);
}
else if (ins->oper1->mode == am_fpcr)
{
PUTWORD(p, 0xf000 + (fpcop << 9));
PUTWORD(p, 0xa000 + (4 << 10));
putam(ins->length, ins, ins->oper2, p);
}
else if (ins->oper2->mode == am_fpsr)
{
PUTWORD(p, 0xf000 + (fpcop << 9));
PUTWORD(p, 0x8000 + (2 << 10));
putam(ins->length, ins, ins->oper1, p);
}
else if (ins->oper2->mode == am_fpcr)
{
PUTWORD(p, 0xf000 + (fpcop << 9));
PUTWORD(p, 0x8000 + (4 << 10));
putam(ins->length, ins, ins->oper1, p);
}
else if (ins->oper2->mode == am_freg)
{
putfloat(0, ins->length, ins, ins->oper1, ins->oper2, p);
}
else
{
int val = 0x6000 + (ins->oper1->preg << 7);
val |= fsize(ins->length);
PUTWORD(p, 0xe200 + (fpcop << 10));
PUTWORD(p, val);
putam(ins->length, ins, ins->oper2, p);
}
break;
case op_fmovem:
{
int val = 0xc000;
PUTWORD(p, 0xf000 + (fpcop << 9));
if (ins->oper1->mode == am_fmask)
{
val |= 0x3000;
val |= revmskf((short)ins->oper1->offset);
PUTWORD(p, val);
putam(ins->length, ins, ins->oper2, p);
}
else
{
val |= revmskf((short)ins->oper2->offset) | 0x1000;
PUTWORD(p, val);
putam(ins->length, ins, ins->oper1, p);
}
}
break;
case op_fmovecr:
PUTWORD(p, 0xf000 + (fpcop << 9));
PUTWORD(p, 0x5c00 + (ins->oper2->preg << 7) + (ins->oper1->offset
->v.i &0x7f));
break;
case op_fnop:
PUTWORD(p, 0xf080 + (fpcop << 9));
PUTWORD(p, 0);
break;
case op_fadd:
putfloat(0x22, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fsub:
putfloat(0x28, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fmul:
putfloat(0x23, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fdiv:
putfloat(0x20, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fmod:
putfloat(0x21, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fcmp:
putfloat(0x38, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_ftst:
putfloat(0x3a, ins->length, ins, 0, ins->oper1, p);
break;
case op_fneg:
putfloat(0x1a, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fabs:
putfloat(0x18, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_facos:
putfloat(0x1c, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fasin:
putfloat(0xc, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fatan:
putfloat(0xa, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fatanh:
putfloat(0xb, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fcos:
putfloat(0x1d, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fcosh:
putfloat(0x19, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fetox:
putfloat(0x10, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fetoxm1:
putfloat(0x8, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fgetexp:
putfloat(0x1e, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fgetman:
putfloat(0x1f, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fint:
putfloat(0x1, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fintrz:
putfloat(0x3, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_flog10:
putfloat(0x15, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_flog2:
putfloat(0x16, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_flogn:
putfloat(0x14, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_flognp1:
putfloat(0x6, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_frem:
putfloat(0x25, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fscale:
putfloat(0x26, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fsgldiv:
putfloat(0x24, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fsglmul:
putfloat(0x27, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fsin:
putfloat(0xe, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fsincos:
putfsincos(ins, p);
break;
case op_fsinh:
putfloat(0x2, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fsqrt:
putfloat(0x4, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_ftan:
putfloat(0xf, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_ftanh:
putfloat(0x9, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_ftentox:
putfloat(0x12, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_ftwotox:
putfloat(0x11, ins->length, ins, ins->oper1, ins->oper2, p);
break;
case op_fsave:
PUTWORD(p, 0xf100 + (fpcop << 9));
putam(ins->length, ins, ins->oper1, p);
break;
case op_frestore:
PUTWORD(p, 0xf140 + (fpcop << 9));
putam(ins->length, ins, ins->oper1, p);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -