Disallow LOCK prefix for non-lockable instructions

This commit is contained in:
Alexis Engelke
2019-02-24 09:26:23 +01:00
parent 89d6b5a5a7
commit b2b29239b1
3 changed files with 75 additions and 67 deletions

View File

@@ -37,6 +37,7 @@ InstrFlags = bitstruct("InstrFlags", [
"gp_size_def64:1",
"gp_instr_width:1",
"gp_fixed_operand_size:3",
"lock:1",
])
assert InstrFlags._encode_size <= 32
@@ -113,6 +114,7 @@ class InstrDesc(namedtuple("InstrDesc", "mnemonic,flags,encoding")):
if "SIZE_8" in desc[6:]: flags.gp_size_8 = 1
if "INSTR_WIDTH" in desc[6:]: flags.gp_instr_width = 1
if "IMM_8" in desc[6:]: flags.imm_byte = 1
if "LOCK" in desc[6:]: flags.lock = 1
return cls(desc[5], frozenset(desc[6:]), flags._encode())
def encode(self, mnemonics_lut):