x86asm: Add vm* and iret[wlq] insns

The no-operand vm* instructions can be interpreted as having a
funny modrm byte, but unlike no-operand OPC_MODRM it's also the
r/m field which selects the insn, not (only) the reg field (aka group),
so we need another insn type.
This commit is contained in:
Michael Matz
2022-07-08 15:05:56 +02:00
parent 2309517066
commit b077bc8ff7
3 changed files with 21 additions and 0 deletions

View File

@@ -30,6 +30,9 @@
DEF_ASM_OP0(int3, 0xcc)
DEF_ASM_OP0(into, 0xce)
DEF_ASM_OP0(iret, 0xcf)
DEF_ASM_OP0(iretw, 0x66cf)
DEF_ASM_OP0(iretl, 0xcf)
DEF_ASM_OP0(iretq, 0x48cf)
DEF_ASM_OP0(rsm, 0x0faa)
DEF_ASM_OP0(hlt, 0xf4)
DEF_ASM_OP0(wait, 0x9b)
@@ -37,6 +40,11 @@
DEF_ASM_OP0(pause, 0xf390)
DEF_ASM_OP0(xlat, 0xd7)
DEF_ASM_OP0L(vmcall, 0xc1, 0, OPC_0F01)
DEF_ASM_OP0L(vmlaunch, 0xc2, 0, OPC_0F01)
DEF_ASM_OP0L(vmresume, 0xc3, 0, OPC_0F01)
DEF_ASM_OP0L(vmxoff, 0xc4, 0, OPC_0F01)
/* strings */
ALT(DEF_ASM_OP0L(cmpsb, 0xa6, 0, OPC_BWLX))
ALT(DEF_ASM_OP0L(scmpb, 0xa6, 0, OPC_BWLX))