📄 simops.c
字号:
v = ((reg1 & 0x80000000) != (imm & 0x80000000) && (reg1 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* cmp dm, dn */void OP_A0 (insn, extension) unsigned long insn, extension;{ int z, c, n, v; unsigned long reg1, reg2, value; reg1 = State.regs[REG_D0 + REG1 (insn)]; reg2 = State.regs[REG_D0 + REG0 (insn)]; value = reg2 - reg1; z = (value == 0); n = (value & 0x80000000); c = (reg1 > reg2); v = ((reg2 & 0x80000000) != (reg1 & 0x80000000) && (reg2 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* cmp dm, an */void OP_F1A0 (insn, extension) unsigned long insn, extension;{ int z, c, n, v; unsigned long reg1, reg2, value; reg1 = State.regs[REG_D0 + REG1 (insn)]; reg2 = State.regs[REG_A0 + REG0 (insn)]; value = reg2 - reg1; z = (value == 0); n = (value & 0x80000000); c = (reg1 > reg2); v = ((reg2 & 0x80000000) != (reg1 & 0x80000000) && (reg2 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* cmp am, dn */void OP_F190 (insn, extension) unsigned long insn, extension;{ int z, c, n, v; unsigned long reg1, reg2, value; reg1 = State.regs[REG_A0 + REG1 (insn)]; reg2 = State.regs[REG_D0 + REG0 (insn)]; value = reg2 - reg1; z = (value == 0); n = (value & 0x80000000); c = (reg1 > reg2); v = ((reg2 & 0x80000000) != (reg1 & 0x80000000) && (reg2 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* cmp imm8, an */void OP_B000 (insn, extension) unsigned long insn, extension;{ int z, c, n, v; unsigned long reg1, imm, value; reg1 = State.regs[REG_A0 + REG0_8 (insn)]; imm = insn & 0xff; value = reg1 - imm; z = (value == 0); n = (value & 0x80000000); c = (reg1 < imm); v = ((reg1 & 0x80000000) != (imm & 0x80000000) && (reg1 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* cmp am, an */void OP_B0 (insn, extension) unsigned long insn, extension;{ int z, c, n, v; unsigned long reg1, reg2, value; reg1 = State.regs[REG_A0 + REG1 (insn)]; reg2 = State.regs[REG_A0 + REG0 (insn)]; value = reg2 - reg1; z = (value == 0); n = (value & 0x80000000); c = (reg1 > reg2); v = ((reg2 & 0x80000000) != (reg1 & 0x80000000) && (reg2 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* cmp imm16, dn */void OP_FAC80000 (insn, extension) unsigned long insn, extension;{ int z, c, n, v; unsigned long reg1, imm, value; reg1 = State.regs[REG_D0 + REG0_16 (insn)]; imm = SEXT16 (insn & 0xffff); value = reg1 - imm; z = (value == 0); n = (value & 0x80000000); c = (reg1 < imm); v = ((reg1 & 0x80000000) != (imm & 0x80000000) && (reg1 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* cmp imm32, dn */void OP_FCC80000 (insn, extension) unsigned long insn, extension;{ int z, c, n, v; unsigned long reg1, imm, value; reg1 = State.regs[REG_D0 + REG0_16 (insn)]; imm = ((insn & 0xffff) << 16) + extension; value = reg1 - imm; z = (value == 0); n = (value & 0x80000000); c = (reg1 < imm); v = ((reg1 & 0x80000000) != (imm & 0x80000000) && (reg1 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* cmp imm16, an */void OP_FAD80000 (insn, extension) unsigned long insn, extension;{ int z, c, n, v; unsigned long reg1, imm, value; reg1 = State.regs[REG_A0 + REG0_16 (insn)]; imm = insn & 0xffff; value = reg1 - imm; z = (value == 0); n = (value & 0x80000000); c = (reg1 < imm); v = ((reg1 & 0x80000000) != (imm & 0x80000000) && (reg1 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* cmp imm32, an */void OP_FCD80000 (insn, extension) unsigned long insn, extension;{ int z, c, n, v; unsigned long reg1, imm, value; reg1 = State.regs[REG_A0 + REG0_16 (insn)]; imm = ((insn & 0xffff) << 16) + extension; value = reg1 - imm; z = (value == 0); n = (value & 0x80000000); c = (reg1 < imm); v = ((reg1 & 0x80000000) != (imm & 0x80000000) && (reg1 & 0x80000000) != (value & 0x80000000)); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0) | (c ? PSW_C : 0) | (v ? PSW_V : 0));}/* and dm, dn */void OP_F200 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0 (insn)] &= State.regs[REG_D0 + REG1 (insn)]; z = (State.regs[REG_D0 + REG0 (insn)] == 0); n = (State.regs[REG_D0 + REG0 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* and imm8, dn */void OP_F8E000 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0_8 (insn)] &= (insn & 0xff); z = (State.regs[REG_D0 + REG0_8 (insn)] == 0); n = (State.regs[REG_D0 + REG0_8 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* and imm16, dn */void OP_FAE00000 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0_16 (insn)] &= (insn & 0xffff); z = (State.regs[REG_D0 + REG0_16 (insn)] == 0); n = (State.regs[REG_D0 + REG0_16 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* and imm32, dn */void OP_FCE00000 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0_16 (insn)] &= ((insn & 0xffff) << 16) + extension; z = (State.regs[REG_D0 + REG0_16 (insn)] == 0); n = (State.regs[REG_D0 + REG0_16 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* and imm16, psw */void OP_FAFC0000 (insn, extension) unsigned long insn, extension;{ PSW &= (insn & 0xffff);}/* or dm, dn*/void OP_F210 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0 (insn)] |= State.regs[REG_D0 + REG1 (insn)]; z = (State.regs[REG_D0 + REG0 (insn)] == 0); n = (State.regs[REG_D0 + REG0 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* or imm8, dn */void OP_F8E400 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0_8 (insn)] |= insn & 0xff; z = (State.regs[REG_D0 + REG0_8 (insn)] == 0); n = (State.regs[REG_D0 + REG0_8 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* or imm16, dn*/void OP_FAE40000 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0_16 (insn)] |= insn & 0xffff; z = (State.regs[REG_D0 + REG0_16 (insn)] == 0); n = (State.regs[REG_D0 + REG0_16 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* or imm32, dn */void OP_FCE40000 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0_16 (insn)] |= ((insn & 0xffff) << 16) + extension; z = (State.regs[REG_D0 + REG0_16 (insn)] == 0); n = (State.regs[REG_D0 + REG0_16 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* or imm16,psw */void OP_FAFD0000 (insn, extension) unsigned long insn, extension;{ PSW |= (insn & 0xffff);}/* xor dm, dn */void OP_F220 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0 (insn)] ^= State.regs[REG_D0 + REG1 (insn)]; z = (State.regs[REG_D0 + REG0 (insn)] == 0); n = (State.regs[REG_D0 + REG0 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* xor imm16, dn */void OP_FAE80000 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0_16 (insn)] ^= insn & 0xffff; z = (State.regs[REG_D0 + REG0_16 (insn)] == 0); n = (State.regs[REG_D0 + REG0_16 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* xor imm32, dn */void OP_FCE80000 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0_16 (insn)] ^= ((insn & 0xffff) << 16) + extension; z = (State.regs[REG_D0 + REG0_16 (insn)] == 0); n = (State.regs[REG_D0 + REG0_16 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* not dn */void OP_F230 (insn, extension) unsigned long insn, extension;{ int n, z; State.regs[REG_D0 + REG0 (insn)] = ~State.regs[REG_D0 + REG0 (insn)]; z = (State.regs[REG_D0 + REG0 (insn)] == 0); n = (State.regs[REG_D0 + REG0 (insn)] & 0x80000000) != 0; PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= ((z ? PSW_Z : 0) | (n ? PSW_N : 0));}/* btst imm8, dn */void OP_F8EC00 (insn, extension) unsigned long insn, extension;{ unsigned long temp; int z, n; temp = State.regs[REG_D0 + REG0_8 (insn)]; temp &= (insn & 0xff); n = (temp & 0x80000000) != 0; z = (temp == 0); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= (z ? PSW_Z : 0) | (n ? PSW_N : 0);}/* btst imm16, dn */void OP_FAEC0000 (insn, extension) unsigned long insn, extension;{ unsigned long temp; int z, n; temp = State.regs[REG_D0 + REG0_16 (insn)]; temp &= (insn & 0xffff); n = (temp & 0x80000000) != 0; z = (temp == 0); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= (z ? PSW_Z : 0) | (n ? PSW_N : 0);}/* btst imm32, dn */void OP_FCEC0000 (insn, extension) unsigned long insn, extension;{ unsigned long temp; int z, n; temp = State.regs[REG_D0 + REG0_16 (insn)]; temp &= ((insn & 0xffff) << 16) + extension; n = (temp & 0x80000000) != 0; z = (temp == 0); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= (z ? PSW_Z : 0) | (n ? PSW_N : 0);}/* btst imm8,(abs32) */void OP_FE020000 (insn, extension) unsigned long insn, extension;{ unsigned long temp; int n, z; temp = load_byte (((insn & 0xffff) << 16) | (extension >> 8)); temp &= (extension & 0xff); n = (temp & 0x80000000) != 0; z = (temp == 0); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= (z ? PSW_Z : 0) | (n ? PSW_N : 0);}/* btst imm8,(d8,an) */void OP_FAF80000 (insn, extension) unsigned long insn, extension;{ unsigned long temp; int n, z; temp = load_byte ((State.regs[REG_A0 + REG0_16 (insn)] + SEXT8 ((insn & 0xff00) >> 8))); temp &= (insn & 0xff); n = (temp & 0x80000000) != 0; z = (temp == 0); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= (z ? PSW_Z : 0) | (n ? PSW_N : 0);}/* bset dm, (an) */void OP_F080 (insn, extension) unsigned long insn, extension;{ unsigned long temp; int z; temp = load_byte (State.regs[REG_A0 + REG0 (insn)]); z = (temp & State.regs[REG_D0 + REG1 (insn)]) == 0; temp |= State.regs[REG_D0 + REG1 (insn)]; store_byte (State.regs[REG_A0 + REG0 (insn)], temp); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= (z ? PSW_Z : 0);}/* bset imm8, (abs32) */void OP_FE000000 (insn, extension) unsigned long insn, extension;{ unsigned long temp; int z; temp = load_byte (((insn & 0xffff) << 16 | (extension >> 8))); z = (temp & (extension & 0xff)) == 0; temp |= (extension & 0xff); store_byte ((((insn & 0xffff) << 16) | (extension >> 8)), temp); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= (z ? PSW_Z : 0);}/* bset imm8,(d8,an) */void OP_FAF00000 (insn, extension) unsigned long insn, extension;{ unsigned long temp; int z; temp = load_byte ((State.regs[REG_A0 + REG0_16 (insn)] + SEXT8 ((insn & 0xff00) >> 8))); z = (temp & (insn & 0xff)) == 0; temp |= (insn & 0xff); store_byte ((State.regs[REG_A0 + REG0_16 (insn)] + SEXT8 ((insn & 0xff00) >> 8)), temp); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= (z ? PSW_Z : 0);}/* bclr dm, (an) */void OP_F090 (insn, extension) unsigned long insn, extension;{ unsigned long temp; int z; temp = load_byte (State.regs[REG_A0 + REG0 (insn)]); z = (temp & State.regs[REG_D0 + REG1 (insn)]) == 0; temp = temp & ~State.regs[REG_D0 + REG1 (insn)]; store_byte (State.regs[REG_A0 + REG0 (insn)], temp); PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V); PSW |= (z ? PSW_Z : 0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -