mirror of
https://github.com/asmjit/asmjit.git
synced 2025-12-18 04:54:36 +03:00
Fixed signatures of recently added ud0 and ud1 instructions, added two-operand NOP (fixes #217)
This commit is contained in:
@@ -846,18 +846,32 @@ CaseX86M_GPB_MulDiv:
|
|||||||
if (isign3 == ENC_OPS1(None))
|
if (isign3 == ENC_OPS1(None))
|
||||||
goto EmitX86Op;
|
goto EmitX86Op;
|
||||||
|
|
||||||
// Multi-byte NOP instruction "0F 1F /0".
|
// Single operand NOP instruction "0F 1F /0".
|
||||||
opcode = Opcode::k000F00 | 0x1F;
|
opcode = Opcode::k000F00 | 0x1F;
|
||||||
opReg = 0;
|
opReg = 0;
|
||||||
|
|
||||||
if (isign3 == ENC_OPS1(Reg)) {
|
if (isign3 == ENC_OPS1(Reg)) {
|
||||||
opcode.add66hBySize(o0.size());
|
opcode.addPrefixBySize(o0.size());
|
||||||
rbReg = o0.id();
|
rbReg = o0.id();
|
||||||
goto EmitX86R;
|
goto EmitX86R;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isign3 == ENC_OPS1(Mem)) {
|
if (isign3 == ENC_OPS1(Mem)) {
|
||||||
opcode.add66hBySize(o0.size());
|
opcode.addPrefixBySize(o0.size());
|
||||||
|
rmRel = &o0;
|
||||||
|
goto EmitX86M;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Two operand NOP instruction "0F 1F /r".
|
||||||
|
opReg = o1.id();
|
||||||
|
opcode.addPrefixBySize(o1.size());
|
||||||
|
|
||||||
|
if (isign3 == ENC_OPS2(Reg, Reg)) {
|
||||||
|
rbReg = o0.id();
|
||||||
|
goto EmitX86R;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isign3 == ENC_OPS2(Mem, Reg)) {
|
||||||
rmRel = &o0;
|
rmRel = &o0;
|
||||||
goto EmitX86M;
|
goto EmitX86M;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -641,6 +641,8 @@ public:
|
|||||||
ASMJIT_INST_0x(nop, Nop) // ANY
|
ASMJIT_INST_0x(nop, Nop) // ANY
|
||||||
ASMJIT_INST_1x(nop, Nop, Gp) // ANY
|
ASMJIT_INST_1x(nop, Nop, Gp) // ANY
|
||||||
ASMJIT_INST_1x(nop, Nop, Mem) // ANY
|
ASMJIT_INST_1x(nop, Nop, Mem) // ANY
|
||||||
|
ASMJIT_INST_2x(nop, Nop, Gp, Gp) // ANY
|
||||||
|
ASMJIT_INST_2x(nop, Nop, Mem, Gp) // ANY
|
||||||
ASMJIT_INST_1x(not_, Not, Gp) // ANY
|
ASMJIT_INST_1x(not_, Not, Gp) // ANY
|
||||||
ASMJIT_INST_1x(not_, Not, Mem) // ANY
|
ASMJIT_INST_1x(not_, Not, Mem) // ANY
|
||||||
ASMJIT_INST_2x(or_, Or, Gp, Gp) // ANY
|
ASMJIT_INST_2x(or_, Or, Gp, Gp) // ANY
|
||||||
@@ -723,10 +725,10 @@ public:
|
|||||||
ASMJIT_INST_2i(test, Test, Gp, Imm) // ANY
|
ASMJIT_INST_2i(test, Test, Gp, Imm) // ANY
|
||||||
ASMJIT_INST_2x(test, Test, Mem, Gp) // ANY
|
ASMJIT_INST_2x(test, Test, Mem, Gp) // ANY
|
||||||
ASMJIT_INST_2i(test, Test, Mem, Imm) // ANY
|
ASMJIT_INST_2i(test, Test, Mem, Imm) // ANY
|
||||||
ASMJIT_INST_2x(ud0, Ud0, Reg, Reg) // ANY
|
ASMJIT_INST_1x(ud0, Ud0, Reg) // ANY
|
||||||
ASMJIT_INST_2x(ud0, Ud0, Reg, Mem) // ANY
|
ASMJIT_INST_1x(ud0, Ud0, Mem) // ANY
|
||||||
ASMJIT_INST_2x(ud1, Ud1, Reg, Reg) // ANY
|
ASMJIT_INST_1x(ud1, Ud1, Reg) // ANY
|
||||||
ASMJIT_INST_2x(ud1, Ud1, Reg, Mem) // ANY
|
ASMJIT_INST_1x(ud1, Ud1, Mem) // ANY
|
||||||
ASMJIT_INST_0x(ud2, Ud2) // ANY
|
ASMJIT_INST_0x(ud2, Ud2) // ANY
|
||||||
ASMJIT_INST_2x(xadd, Xadd, Gp, Gp) // ANY
|
ASMJIT_INST_2x(xadd, Xadd, Gp, Gp) // ANY
|
||||||
ASMJIT_INST_2x(xadd, Xadd, Mem, Gp) // ANY
|
ASMJIT_INST_2x(xadd, Xadd, Mem, Gp) // ANY
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user