⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simops.c

📁 gdb-6.0 linux 下的调试工具
💻 C
📖 第 1 页 / 共 5 页
字号:
  State.regs[REG_D0 + REG0 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < reg1) || (value < 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));}/* add am,an */void OP_F170 (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 = reg1 + reg2;  State.regs[REG_A0 + REG0 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < reg1) || (value < 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));}/* add imm8, dn */void OP_2800 (insn, extension)     unsigned long insn, extension;{  int z, c, n, v;  unsigned long reg1, imm, value;  reg1 = State.regs[REG_D0 + REG0_8 (insn)];  imm = SEXT8 (insn & 0xff);  value = reg1 + imm;  State.regs[REG_D0 + REG0_8 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < reg1) || (value < 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));}/* add imm16, dn */void OP_FAC00000 (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;  State.regs[REG_D0 + REG0_16 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < reg1) || (value < 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));}/* add imm32,dn */void OP_FCC00000 (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;  State.regs[REG_D0 + REG0_16 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < reg1) || (value < 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));}/* add imm8, an */void OP_2000 (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 = SEXT8 (insn & 0xff);  value = reg1 + imm;  State.regs[REG_A0 + REG0_8 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < reg1) || (value < 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));}/* add imm16, an */void OP_FAD00000 (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 = SEXT16 (insn & 0xffff);  value = reg1 + imm;  State.regs[REG_A0 + REG0_16 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < reg1) || (value < 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));}/* add imm32, an */void OP_FCD00000 (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;  State.regs[REG_A0 + REG0_16 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < reg1) || (value < 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));}/* add imm8, sp */void OP_F8FE00 (insn, extension)     unsigned long insn, extension;{  unsigned long reg1, imm, value;  reg1 = State.regs[REG_SP];  imm = SEXT8 (insn & 0xff);  value = reg1 + imm;  State.regs[REG_SP] = value;}/* add imm16,sp */void OP_FAFE0000 (insn, extension)     unsigned long insn, extension;{  unsigned long reg1, imm, value;  reg1 = State.regs[REG_SP];  imm = SEXT16 (insn & 0xffff);  value = reg1 + imm;  State.regs[REG_SP] = value;}/* add imm32, sp */void OP_FCFE0000 (insn, extension)     unsigned long insn, extension;{  unsigned long reg1, imm, value;  reg1 = State.regs[REG_SP];  imm = ((insn & 0xffff) << 16) + extension;  value = reg1 + imm;  State.regs[REG_SP] = value;}/* addc dm,dn */void OP_F140 (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 = reg1 + reg2 + ((PSW & PSW_C) != 0);  State.regs[REG_D0 + REG0 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < reg1) || (value < 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));}/* sub dm, dn */void OP_F100 (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;  State.regs[REG_D0 + REG0 (insn)] = value;  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));}/* sub dm, an */void OP_F120 (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;  State.regs[REG_A0 + REG0 (insn)] = value;  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));}/* sub am, dn */void OP_F110 (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;  State.regs[REG_D0 + REG0 (insn)] = value;  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));}/* sub am, an */void OP_F130 (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;  State.regs[REG_A0 + REG0 (insn)] = value;  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));}/* sub imm32, dn */void OP_FCC40000 (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;  State.regs[REG_D0 + REG0_16 (insn)] = value;  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));}/* sub imm32, an */void OP_FCD40000 (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;  State.regs[REG_A0 + REG0_16 (insn)] = value;  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));}/* subc dm, dn */void OP_F180 (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 - ((PSW & PSW_C) != 0);  State.regs[REG_D0 + REG0 (insn)] = value;  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));}/* mul dm, dn */void OP_F240 (insn, extension)     unsigned long insn, extension;{  unsigned long long temp;  int n, z;  temp = ((signed64)(signed32)State.regs[REG_D0 + REG0 (insn)]          *  (signed64)(signed32)State.regs[REG_D0 + REG1 (insn)]);  State.regs[REG_D0 + REG0 (insn)] = temp & 0xffffffff;  State.regs[REG_MDR] = (temp & 0xffffffff00000000LL) >> 32;;  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));}/* mulu dm, dn */void OP_F250 (insn, extension)     unsigned long insn, extension;{  unsigned long long temp;  int n, z;  temp = ((unsigned64)State.regs[REG_D0 + REG0 (insn)]          * (unsigned64)State.regs[REG_D0 + REG1 (insn)]);  State.regs[REG_D0 + REG0 (insn)] = temp & 0xffffffff;  State.regs[REG_MDR] = (temp & 0xffffffff00000000LL) >> 32;  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));}/* div dm, dn */void OP_F260 (insn, extension)     unsigned long insn, extension;{  long long temp;  int n, z;  temp = State.regs[REG_MDR];  temp <<= 32;  temp |= State.regs[REG_D0 + REG0 (insn)];  State.regs[REG_MDR] = temp % (long)State.regs[REG_D0 + REG1 (insn)];  temp /= (long)State.regs[REG_D0 + REG1 (insn)];  State.regs[REG_D0 + REG0 (insn)] = temp & 0xffffffff;  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));}/* divu dm, dn */void OP_F270 (insn, extension)     unsigned long insn, extension;{  unsigned long long temp;  int n, z;  temp = State.regs[REG_MDR];  temp <<= 32;  temp |= State.regs[REG_D0 + REG0 (insn)];  State.regs[REG_MDR] = temp % State.regs[REG_D0 + REG1 (insn)];  temp /= State.regs[REG_D0 + REG1 (insn)];  State.regs[REG_D0 + REG0 (insn)] = temp & 0xffffffff;  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));}/* inc dn */void OP_40 (insn, extension)     unsigned long insn, extension;{  int z,n,c,v;  unsigned int value, imm, reg1;  reg1 = State.regs[REG_D0 + REG1 (insn)];  imm = 1;  value = reg1 + imm;  State.regs[REG_D0 + REG1 (insn)] = value;  z = (value == 0);  n = (value & 0x80000000);  c = (value < 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));}/* inc an */void OP_41 (insn, extension)     unsigned long insn, extension;{  State.regs[REG_A0 + REG1 (insn)] += 1;}/* inc4 an */void OP_50 (insn, extension)     unsigned long insn, extension;{  State.regs[REG_A0 + REG0 (insn)] += 4;}/* cmp imm8, dn */void OP_A000 (insn, extension)     unsigned long insn, extension;{  int z, c, n, v;  unsigned long reg1, imm, value;  reg1 = State.regs[REG_D0 + REG0_8 (insn)];  imm = SEXT8 (insn & 0xff);  value = reg1 - imm;  z = (value == 0);  n = (value & 0x80000000);  c = (reg1 < imm);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -