Implement the rest of the conditional jump instructions and hook them into the decoder.

--HG--
extra : convert_revision : 8d1d6abce29371def560e1c3f31dabb4de01366f
This commit is contained in:
Gabe Black 2007-07-20 17:02:39 -07:00
parent 231cc3effb
commit c3669b8925
3 changed files with 142 additions and 38 deletions

View file

@ -214,25 +214,27 @@
0x6: outs_Dx_Xb(); 0x6: outs_Dx_Xb();
0x7: outs_Dx_Xz(); 0x7: outs_Dx_Xz();
} }
0x0E: decode OPCODE_OP_BOTTOM3 { format Inst {
0x0: jo_Jb(); 0x0E: decode OPCODE_OP_BOTTOM3 {
0x1: jno_Jb(); 0x0: JO(Jb);
0x2: jb_Jb(); 0x1: JNO(Jb);
0x3: Inst::JNB(Jb); 0x2: JB(Jb);
0x4: Inst::JZ(Jb); 0x3: JNB(Jb);
0x5: Inst::JNZ(Jb); 0x4: JZ(Jb);
0x6: Inst::JBE(Jb); 0x5: JNZ(Jb);
0x7: Inst::JNBE(Jb); 0x6: JBE(Jb);
} 0x7: JNBE(Jb);
0x0F: decode OPCODE_OP_BOTTOM3 { }
0x0: js_Jb(); 0x0F: decode OPCODE_OP_BOTTOM3 {
0x1: jns_Jb(); 0x0: JS(Jb);
0x2: jp_Jb(); 0x1: JNS(Jb);
0x3: jnp_Jb(); 0x2: JP(Jb);
0x4: jl_Jb(); 0x3: JNP(Jb);
0x5: jnl_Jb(); 0x4: JL(Jb);
0x6: jle_Jb(); 0x5: JNL(Jb);
0x7: Inst::JNLE(Jb); 0x6: JLE(Jb);
0x7: JNLE(Jb);
}
} }
0x10: decode OPCODE_OP_BOTTOM3 { 0x10: decode OPCODE_OP_BOTTOM3 {
//0x0: group1_Eb_Ib(); //0x0: group1_Eb_Ib();

View file

@ -227,25 +227,27 @@
0x6: holder(); 0x6: holder();
0x7: holder(); 0x7: holder();
} }
0x10: decode OPCODE_OP_BOTTOM3 { format Inst {
0x0: jo_Jz(); 0x10: decode OPCODE_OP_BOTTOM3 {
0x1: jno_Jz(); 0x0: JO(Jz);
0x2: jb_Jz(); 0x1: JNO(Jz);
0x3: Inst::JNB(Jz); 0x2: JB(Jz);
0x4: Inst::JZ(Jz); 0x3: JNB(Jz);
0x5: Inst::JNZ(Jz); 0x4: JZ(Jz);
0x6: Inst::JBE(Jz); 0x5: JNZ(Jz);
0x7: Inst::JNBE(Jz); 0x6: JBE(Jz);
} 0x7: JNBE(Jz);
0x11: decode OPCODE_OP_BOTTOM3 { }
0x0: js_Jz(); 0x11: decode OPCODE_OP_BOTTOM3 {
0x1: jns_Jz(); 0x0: JS(Jz);
0x2: jp_Jz(); 0x1: JNS(Jz);
0x3: jnp_Jz(); 0x2: JP(Jz);
0x4: jl_Jz(); 0x3: JNP(Jz);
0x5: jnl_Jz(); 0x4: JL(Jz);
0x6: jle_Jz(); 0x5: JNL(Jz);
0x7: jnle_Jz(); 0x6: JLE(Jz);
0x7: JNLE(Jz);
}
} }
0x12: decode OPCODE_OP_BOTTOM3 { 0x12: decode OPCODE_OP_BOTTOM3 {
0x0: seto_Eb(); 0x0: seto_Eb();

View file

@ -74,6 +74,16 @@ def macroop JNZ_I
wrip t1, t2, flags=(nCZF,) wrip t1, t2, flags=(nCZF,)
}; };
def macroop JB_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(CCF,)
};
def macroop JNB_I def macroop JNB_I
{ {
# Make the default data size of jumps 64 bits in 64 bit mode # Make the default data size of jumps 64 bits in 64 bit mode
@ -104,6 +114,76 @@ def macroop JNBE_I
wrip t1, t2, flags=(nCCvZF,) wrip t1, t2, flags=(nCCvZF,)
}; };
def macroop JS_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(CSF,)
};
def macroop JNS_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(nCSF,)
};
def macroop JP_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(CPF,)
};
def macroop JNP_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(nCPF,)
};
def macroop JL_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(CSxOF,)
};
def macroop JNL_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(nCSxOF,)
};
def macroop JLE_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(CSxOvZF,)
};
def macroop JNLE_I def macroop JNLE_I
{ {
# Make the default data size of jumps 64 bits in 64 bit mode # Make the default data size of jumps 64 bits in 64 bit mode
@ -114,6 +194,26 @@ def macroop JNLE_I
wrip t1, t2, flags=(nCSxOvZF,) wrip t1, t2, flags=(nCSxOvZF,)
}; };
def macroop JO_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(COF,)
};
def macroop JNO_I
{
# Make the default data size of jumps 64 bits in 64 bit mode
.adjust_env oszIn64Override
rdip t1
limm t2, imm
wrip t1, t2, flags=(nCOF,)
};
def macroop JMP_I def macroop JMP_I
{ {
# Make the default data size of jumps 64 bits in 64 bit mode # Make the default data size of jumps 64 bits in 64 bit mode