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

📄 simops.c

📁 这个是LINUX下的GDB调度工具的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF	   | PSW_ZX | PSW_NX | PSW_CX | PSW_VX);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0)	  | (zx ? PSW_ZX : 0) | (nx ? PSW_NX : 0)	  | (cx ? PSW_CX : 0) | (vx ? PSW_VX : 0));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | ( n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0));}/* cmp an, dm */void OP_F2E0 (insn, extension)     unsigned long insn, extension;{  int z, c, n, v, zx, cx, nx, vx;  unsigned long reg1, reg2, value;  reg1 = TRUNC (State.regs[REG_A0 + REG1 (insn)]);  reg2 = TRUNC (State.regs[REG_D0 + REG0 (insn)]);  value = TRUNC (reg2 - reg1);  z = ((value & 0xffff) == 0);  zx = (value == 0);  n = (value & 0x8000);  nx = (value & 0x800000);  c = ((reg1 & 0xffff) > (reg2 & 0xffff));  cx = (reg1 > reg2);  v = ((reg2 & 0x8000) != (reg1 & 0x8000)       && (reg2 & 0x8000) != (value & 0x8000));  vx = ((reg2 & 0x800000) != (reg1 & 0x800000)        && (reg2 & 0x800000) != (value & 0x800000));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF	   | PSW_ZX | PSW_NX | PSW_CX | PSW_VX);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0)	  | (zx ? PSW_ZX : 0) | (nx ? PSW_NX : 0)	  | (cx ? PSW_CX : 0) | (vx ? PSW_VX : 0));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | ( n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0));}/* cmp an, am */void OP_F260 (insn, extension)     unsigned long insn, extension;{  int z, c, n, v, zx, cx, nx, vx;  unsigned long reg1, reg2, value;  reg1 = TRUNC (State.regs[REG_A0 + REG1 (insn)]);  reg2 = TRUNC (State.regs[REG_A0 + REG0 (insn)]);  value = TRUNC (reg2 - reg1);  z = ((value & 0xffff) == 0);  zx = (value == 0);  n = (value & 0x8000);  nx = (value & 0x800000);  c = ((reg1 & 0xffff) > (reg2 & 0xffff));  cx = (reg1 > reg2);  v = ((reg2 & 0x8000) != (reg1 & 0x8000)       && (reg2 & 0x8000) != (value & 0x8000));  vx = ((reg2 & 0x800000) != (reg1 & 0x800000)        && (reg2 & 0x800000) != (value & 0x800000));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF	   | PSW_ZX | PSW_NX | PSW_CX | PSW_VX);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0)	  | (zx ? PSW_ZX : 0) | (nx ? PSW_NX : 0)	  | (cx ? PSW_CX : 0) | (vx ? PSW_VX : 0));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | ( n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0));}/* cmp imm16, dn */void OP_F7480000 (insn, extension)     unsigned long insn, extension;{  int z, c, n, v, zx, cx, nx, vx;  unsigned long reg1, imm, value;  reg1 = TRUNC (State.regs[REG_D0 + REG0_16 (insn)]);  imm = TRUNC (SEXT16 (insn & 0xffff));  value = TRUNC (reg1 - imm);  z = ((value & 0xffff) == 0);  zx = (value == 0);  n = (value & 0x8000);  nx = (value & 0x800000);  c = ((reg1 & 0xffff) < (imm & 0xffff));  cx = (reg1 < imm);  v = ((reg1 & 0x8000) != (imm & 0x8000)       && (reg1 & 0x8000) != (value & 0x8000));  vx = ((reg1 & 0x800000) != (imm & 0x800000)        && (reg1 & 0x800000) != (value & 0x800000));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF	   | PSW_ZX | PSW_NX | PSW_CX | PSW_VX);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0)	  | (zx ? PSW_ZX : 0) | (nx ? PSW_NX : 0)	  | (cx ? PSW_CX : 0) | (vx ? PSW_VX : 0));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | ( n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0));}/* cmp imm24, dn */void OP_F4780000 (insn, extension)     unsigned long insn, extension;{  int z, c, n, v, zx, cx, nx, vx;  unsigned long reg1, imm, value;  reg1 = TRUNC (State.regs[REG_D0 + REG0_16 (insn)]);  imm = TRUNC (((insn & 0xffff) << 8) + extension);  value = TRUNC (reg1 - imm);  z = ((value & 0xffff) == 0);  zx = (value == 0);  n = (value & 0x8000);  nx = (value & 0x800000);  c = ((reg1 & 0xffff) < (imm & 0xffff));  cx = (reg1 < imm);  v = ((reg1 & 0x8000) != (imm & 0x8000)       && (reg1 & 0x8000) != (value & 0x8000));  vx = ((reg1 & 0x800000) != (imm & 0x800000)        && (reg1 & 0x800000) != (value & 0x800000));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF	   | PSW_ZX | PSW_NX | PSW_CX | PSW_VX);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0)	  | (zx ? PSW_ZX : 0) | (nx ? PSW_NX : 0)	  | (cx ? PSW_CX : 0) | (vx ? PSW_VX : 0));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | ( n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0));}/* cmp imm16, an */void OP_EC0000 (insn, extension)     unsigned long insn, extension;{  int z, c, n, v, zx, cx, nx, vx;  unsigned long reg1, imm, value;  reg1 = TRUNC (State.regs[REG_A0 + REG0_16 (insn)]);  imm = TRUNC (insn & 0xffff);  value = TRUNC (reg1 - imm);  z = ((value & 0xffff) == 0);  zx = (value == 0);  n = (value & 0x8000);  nx = (value & 0x800000);  c = ((reg1 & 0xffff) < (imm & 0xffff));  cx = (reg1 < imm);  v = ((reg1 & 0x8000) != (imm & 0x8000)       && (reg1 & 0x8000) != (value & 0x8000));  vx = ((reg1 & 0x800000) != (imm & 0x800000)        && (reg1 & 0x800000) != (value & 0x800000));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF	   | PSW_ZX | PSW_NX | PSW_CX | PSW_VX);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0)	  | (zx ? PSW_ZX : 0) | (nx ? PSW_NX : 0)	  | (cx ? PSW_CX : 0) | (vx ? PSW_VX : 0));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | ( n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0));}/* cmp imm24, an */void OP_F47C0000 (insn, extension)     unsigned long insn, extension;{  int z, c, n, v, zx, cx, nx, vx;  unsigned long reg1, imm, value;  reg1 = TRUNC (State.regs[REG_A0 + REG0_16 (insn)]);  imm = TRUNC (((insn & 0xffff) << 8) + extension);  value = TRUNC (reg1 - imm);  z = ((value & 0xffff) == 0);  zx = (value == 0);  n = (value & 0x8000);  nx = (value & 0x800000);  c = ((reg1 & 0xffff) < (imm & 0xffff));  cx = (reg1 < imm);  v = ((reg1 & 0x8000) != (imm & 0x8000)       && (reg1 & 0x8000) != (value & 0x8000));  vx = ((reg1 & 0x800000) != (imm & 0x800000)        && (reg1 & 0x800000) != (value & 0x800000));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF	   | PSW_ZX | PSW_NX | PSW_CX | PSW_VX);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0)	  | (zx ? PSW_ZX : 0) | (nx ? PSW_NX : 0)	  | (cx ? PSW_CX : 0) | (vx ? PSW_VX : 0));  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | ( n ? PSW_NF : 0)	  | (c ? PSW_CF : 0) | (v ? PSW_VF : 0));}/* and dn, dm */void OP_F300 (insn, extension)     unsigned long insn, extension;{  int n, z;  unsigned long temp;  temp = State.regs[REG_D0 + REG0 (insn)] & State.regs[REG_D0 + REG1 (insn)];  temp &= 0xffff;  State.regs[REG_D0 + REG0 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0));}/* and imm8, dn */void OP_F50000 (insn, extension)     unsigned long insn, extension;{  int n, z;  unsigned long temp;  temp = State.regs[REG_D0 + REG0_8 (insn)] & (insn & 0xff);  temp &= 0xffff;  State.regs[REG_D0 + REG0_8 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0_8 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0_8 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0_8 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0));}/* and imm16, dn */void OP_F7000000 (insn, extension)     unsigned long insn, extension;{  int n, z;  unsigned long temp;  temp = State.regs[REG_D0 + REG0_16 (insn)] & (insn & 0xffff);  temp &= 0xffff;  State.regs[REG_D0 + REG0_16 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0_16 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0_16 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0_16 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0));}/* and imm16, psw */void OP_F7100000 (insn, extension)     unsigned long insn, extension;{  PSW &= (insn & 0xffff);}/* or dn, dm */void OP_F310 (insn, extension)     unsigned long insn, extension;{  int n, z;  unsigned long temp;  temp = State.regs[REG_D0 + REG0 (insn)] | State.regs[REG_D0 + REG1 (insn)];  temp &= 0xffff;  State.regs[REG_D0 + REG0 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0));}/* or imm8, dn */void OP_F50800 (insn, extension)     unsigned long insn, extension;{  int n, z;  unsigned long temp;  temp = State.regs[REG_D0 + REG0_8 (insn)] | (insn & 0xff);  temp &= 0xffff;  State.regs[REG_D0 + REG0_8 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0_8 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0_8 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0_8 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0));}/* or imm16, dn */void OP_F7400000 (insn, extension)     unsigned long insn, extension;{  int n, z;  unsigned long temp;  temp = State.regs[REG_D0 + REG0_16 (insn)] | (insn & 0xffff);  temp &= 0xffff;  State.regs[REG_D0 + REG0_16 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0_16 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0_16 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0_16 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0));}/* or imm16, psw */void OP_F7140000 (insn, extension)     unsigned long insn, extension;{  PSW |= (insn & 0xffff);}/* xor dn, dm */void OP_F320 (insn, extension)     unsigned long insn, extension;{  int n, z;  unsigned long temp;  temp = State.regs[REG_D0 + REG0 (insn)] ^ State.regs[REG_D0 + REG1 (insn)];  temp &= 0xffff;  State.regs[REG_D0 + REG0 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0));}/* xor imm16, dn */void OP_F74C0000 (insn, extension)     unsigned long insn, extension;{  int n, z;  unsigned long temp;  temp = State.regs[REG_D0 + REG0_16 (insn)] ^ (insn & 0xffff);  temp &= 0xffff;  State.regs[REG_D0 + REG0_16 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0_16 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0_16 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0_16 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0));}/* not dn */void OP_F3E4 (insn, extension)     unsigned long insn, extension;{  int n, z;  unsigned long temp;  temp = ~State.regs[REG_D0 + REG0 (insn)];  temp &= 0xffff;  State.regs[REG_D0 + REG0 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0));}/* asr dn */void OP_F338 (insn, extension)     unsigned long insn, extension;{  long temp;  int z, n, c, high;  temp = State.regs[REG_D0 + REG0 (insn)] & 0xffff;  c = temp & 1;  high = temp & 0x8000;  temp >>= 1;  temp |= high;  temp &= 0xffff;  State.regs[REG_D0 + REG0 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0) | (c ? PSW_CF : 0));}/* lsr dn */void OP_F33C (insn, extension)     unsigned long insn, extension;{  int z, n, c;  long temp;  temp = State.regs[REG_D0 + REG0 (insn)] & 0xffff;  c = temp & 1;  temp >>= 1;  temp &= 0xffff;  State.regs[REG_D0 + REG0 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0 (insn)] |= temp;  z = (State.regs[REG_D0 + REG0 (insn)] & 0xffff) == 0;  n = (State.regs[REG_D0 + REG0 (insn)] & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0) | (c ? PSW_CF : 0));}/* ror dn */void OP_F334 (insn, extension)     unsigned long insn, extension;{  unsigned long value;  int c,n,z;  value = State.regs[REG_D0 + REG0 (insn)] & 0xffff;  c = (value & 0x1);  value >>= 1;  value |= (PSW & PSW_CF ? 0x8000 : 0);  value &= 0xffff;  State.regs[REG_D0 + REG0 (insn)] &= ~0xffff;  State.regs[REG_D0 + REG0 (insn)] |= value;  z = (value == 0);  n = (value & 0x8000) != 0;  PSW &= ~(PSW_ZF | PSW_NF | PSW_CF | PSW_VF);  PSW |= ((z ? PSW_ZF : 0) | (n ? PSW_NF : 0) | (c ? PSW_CF : 0));}/* rol dn */void OP_F330 (insn, extension)     unsigned long insn, extension;{  unsigned long value;  int c,n,z;  value = State.regs[REG_D0 + REG0 (insn)] & 0xffff;  c = (value & 0x8000) ? 1 : 0;

⌨️ 快捷键说明

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