コード例 #1
0
ファイル: neg_Ed_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   cpu.flagOp1 = op1.get32(cpu);
   cpu.flagResult = (-cpu.flagOp1);
   op1.set32(cpu, cpu.flagResult);
   cpu.flagIns = UCodes.NEG32;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #2
0
ファイル: sub_Gd_Ed_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   Reg op1 = cpu.regs[op1Index];
   cpu.flagOp1 = op1.get32();
   cpu.flagOp2 = op2.get32(cpu);
   cpu.flagResult = (cpu.flagOp1 - cpu.flagOp2);
   op1.set32(cpu.flagResult);
   cpu.flagIns = UCodes.SUB32;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #3
0
ファイル: ror_Ed_Ib_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   int shift = immb & (32 - 1);
   int reg0 = op1.get32(cpu);
   int res = (reg0 >>> shift) | (reg0 << (32 - shift));
   op1.set32(cpu, res);
   boolean bit30 = (res & (1 << (32 - 2))) != 0;
   boolean bit31 = (res & (1 << (32 - 1))) != 0;
   if (shift > 0) {
     cpu.cf = bit31;
     cpu.of = bit30 ^ bit31;
     cpu.flagStatus &= NOFCF;
   }
   return Branch.None;
 }
コード例 #4
0
ファイル: shl_Ed_CL_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   int shift = cpu.r_cl.get8() & 0x1f;
   if (shift != 0) {
     if (shift <= 16) {
       cpu.flagStatus = OSZPC;
     } else {
       cpu.flagStatus = SZP;
       cpu.of = false;
       cpu.cf = false;
     }
     cpu.af = false;
     cpu.flagOp1 = op1.get32(cpu);
     cpu.flagOp2 = shift;
     cpu.flagResult = (cpu.flagOp1 << cpu.flagOp2);
     op1.set32(cpu, cpu.flagResult);
     cpu.flagIns = UCodes.SHL32;
   }
   return Branch.None;
 }
コード例 #5
0
ファイル: test_Ed_Id_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   cpu.of = cpu.af = cpu.cf = false;
   cpu.flagResult = (op1.get32(cpu) & immd);
   cpu.flagStatus = SZP;
   return Branch.None;
 }
コード例 #6
0
ファイル: push_Ed_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   cpu.push32(op1.get32(cpu));
   return Branch.None;
 }
コード例 #7
0
ファイル: cmovns_Gd_Ed_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   Reg op1 = cpu.regs[op1Index];
   int tmp = op2.get32(cpu);
   if (!cpu.sf()) op1.set32(tmp);
   return Branch.None;
 }