コード例 #1
0
ファイル: cmp_o16_rAX_Iw.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   cpu.flagOp1 = cpu.r_eax.get16();
   cpu.flagOp2 = immw;
   cpu.flagResult = (short) (cpu.flagOp1 - cpu.flagOp2);
   cpu.flagIns = UCodes.SUB16;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #2
0
ファイル: cmp_Eb_Ib_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   cpu.flagOp1 = (byte) op1.get8(cpu);
   cpu.flagOp2 = (byte) immb;
   cpu.flagResult = (byte) (cpu.flagOp1 - cpu.flagOp2);
   cpu.flagIns = UCodes.SUB8;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #3
0
ファイル: cmp_o32_rAX_Id.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   cpu.flagOp1 = cpu.r_eax.get32();
   cpu.flagOp2 = immd;
   cpu.flagResult = (cpu.flagOp1 - cpu.flagOp2);
   cpu.flagIns = UCodes.SUB32;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #4
0
ファイル: sub_Ew_Iw_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   cpu.flagOp1 = (short) op1.get16(cpu);
   cpu.flagOp2 = (short) immw;
   cpu.flagResult = (short) (cpu.flagOp1 - cpu.flagOp2);
   op1.set16(cpu, (short) cpu.flagResult);
   cpu.flagIns = UCodes.SUB16;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #5
0
ファイル: sub_Ed_Ib_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   cpu.flagOp1 = op1.get32(cpu);
   cpu.flagOp2 = immb;
   cpu.flagResult = (cpu.flagOp1 - cpu.flagOp2);
   op1.set32(cpu, cpu.flagResult);
   cpu.flagIns = UCodes.SUB32;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #6
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;
 }
コード例 #7
0
ファイル: sbb_Eb_Gb_mem.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   Reg op2 = cpu.regs[op2Index];
   int add = (cpu.cf() ? 1 : 0);
   cpu.flagOp1 = op1.get8(cpu);
   cpu.flagOp2 = op2.get8();
   cpu.flagResult = (byte) (cpu.flagOp1 - (cpu.flagOp2 + add));
   op1.set8(cpu, (byte) cpu.flagResult);
   cpu.flagIns = UCodes.SBB8;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #8
0
ファイル: add_Eb_Gb.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   Reg op1 = cpu.regs[op1Index];
   Reg op2 = cpu.regs[op2Index];
   cpu.flagOp1 = (byte) op1.get8();
   cpu.flagOp2 = (byte) op2.get8();
   cpu.flagResult = (byte) (cpu.flagOp1 + cpu.flagOp2);
   op1.set8((byte) cpu.flagResult);
   cpu.flagIns = UCodes.ADD8;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #9
0
ファイル: adc_Gb_Eb.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   Reg op1 = cpu.regs[op1Index];
   Reg op2 = cpu.regs[op2Index];
   boolean incf = cpu.cf();
   cpu.flagOp1 = op1.get8();
   cpu.flagOp2 = op2.get8();
   cpu.flagResult = (byte) (cpu.flagOp1 + cpu.flagOp2 + (incf ? 1 : 0));
   op1.set8((byte) cpu.flagResult);
   cpu.flagIns = UCodes.ADC8;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #10
0
ファイル: adc_Ew_Ib.java プロジェクト: agimat/JPC
 public Branch execute(Processor cpu) {
   Reg op1 = cpu.regs[op1Index];
   boolean incf =
       Processor.getCarryFlag(
           cpu.flagStatus, cpu.cf, cpu.flagOp1, cpu.flagOp2, cpu.flagResult, cpu.flagIns);
   cpu.flagOp1 = op1.get16();
   cpu.flagOp2 = immb;
   cpu.flagResult = (short) (cpu.flagOp1 + cpu.flagOp2 + (incf ? 1 : 0));
   op1.set16((short) cpu.flagResult);
   cpu.flagIns = UCodes.ADC16;
   cpu.flagStatus = OSZAPC;
   return Branch.None;
 }
コード例 #11
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;
 }