diff --git a/src/generator.py b/src/generator.py index c18896f8..e6a331e9 100644 --- a/src/generator.py +++ b/src/generator.py @@ -498,21 +498,32 @@ def generate_mem_operand(self, spec: OperandSpec, _: Instruction) -> Operand: return MemoryOperand(address_reg, spec.width, spec.src, spec.dest) def generate_imm_operand(self, spec: OperandSpec, _: Instruction) -> Operand: + # generate bitmask + if spec.values and spec.values[0] == "bitmask": + # FIXME: this implementation always returns the same bitmask + # make it random + value = str(pow(2, spec.width) - 2) + return ImmediateOperand(value, spec.width) + + # generate from a predefined range if spec.values: - if spec.values[0] == "bitmask": - # FIXME: this implementation always returns the same bitmask - # make it random - value = str(pow(2, spec.width) - 2) - else: - assert "[" in spec.values[0], spec.values - range_ = spec.values[0][1:-1].split("-") - if range_[0] == "": - range_ = range_[1:] - range_[0] = "-" + range_[0] - assert len(range_) == 2 - value = str(random.randint(int(range_[0]), int(range_[1]))) + assert "[" in spec.values[0], spec.values + range_ = spec.values[0][1:-1].split("-") + if range_[0] == "": + range_ = range_[1:] + range_[0] = "-" + range_[0] + assert len(range_) == 2 + value = str(random.randint(int(range_[0]), int(range_[1]))) + ImmediateOperand(value, spec.width) + + # generate from width + if spec.signed: + range_min = pow(2, spec.width - 1) * -1 + range_max = pow(2, spec.width - 1) - 1 else: - value = str(random.randint(pow(2, spec.width - 1) * -1, pow(2, spec.width - 1) - 1)) + range_min = 0 + range_max = pow(2, spec.width) - 1 + value = str(random.randint(range_min, range_max)) return ImmediateOperand(value, spec.width) def generate_label_operand(self, spec: OperandSpec, parent: Instruction) -> Operand: diff --git a/src/interfaces.py b/src/interfaces.py index ab7e8299..a0278c5a 100644 --- a/src/interfaces.py +++ b/src/interfaces.py @@ -37,6 +37,7 @@ class OperandSpec: values: List[str] type: OT width: int + signed: bool = True src: bool dest: bool diff --git a/src/isa_loader.py b/src/isa_loader.py index 9f328090..dfeff75d 100644 --- a/src/isa_loader.py +++ b/src/isa_loader.py @@ -56,6 +56,7 @@ def parse_operand(self, op: Dict, parent: InstructionSpec) -> OperandSpec: op_values = sorted(op_values) spec = OperandSpec(op_values, op_type, op["src"], op["dest"]) spec.width = op["width"] + spec.signed = op.get("signed", True) if op_type == OT.MEM: parent.has_mem_operand = True diff --git a/src/x86/get_spec.py b/src/x86/get_spec.py index 118ab661..40327e1d 100755 --- a/src/x86/get_spec.py +++ b/src/x86/get_spec.py @@ -13,6 +13,7 @@ class OperandSpec: values: List[str] type_: str width: int + signed: bool = True comment: str src: bool = False dest: bool = False @@ -217,6 +218,8 @@ def parse_imm_operand(op): spec.src = True spec.dest = False spec.width = int(op.attrib.get('width')) + if op.attrib.get('s', '1') == '0': + spec.signed = False return spec @staticmethod @@ -304,7 +307,7 @@ def __init__(self, extensions: List[str], out_file: str) -> None: def run(self): subprocess.run( "wget " - "https://github.com/microsoft/sca-fuzzer/releases/download/v1.2/x86_instructions.xml", + "https://github.com/microsoft/sca-fuzzer/releases/download/v1.2.4/x86_instructions.xml", shell=True, check=True) diff --git a/src/x86/tests/min_x86.json b/src/x86/tests/min_x86.json index f9ccd493..9f6cf0a5 100644 --- a/src/x86/tests/min_x86.json +++ b/src/x86/tests/min_x86.json @@ -575,330 +575,6 @@ {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} ] }, - {"name": "BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "REG", "values": ["AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"], "src": true, "dest": false, "width": 16} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 32}, - {"type_": "REG", "values": ["EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"], "src": true, "dest": false, "width": 32} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 64}, - {"type_": "REG", "values": ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"], "src": true, "dest": false, "width": 64} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"], "src": true, "dest": true, "width": 16}, - {"type_": "REG", "values": ["AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"], "src": true, "dest": false, "width": 16} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"], "src": true, "dest": true, "width": 32}, - {"type_": "REG", "values": ["EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"], "src": true, "dest": false, "width": 32} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"], "src": true, "dest": true, "width": 64}, - {"type_": "REG", "values": ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"], "src": true, "dest": false, "width": 64} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 32}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 32}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 64}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 64}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "REG", "values": ["AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"], "src": true, "dest": false, "width": 16} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 32}, - {"type_": "REG", "values": ["EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"], "src": true, "dest": false, "width": 32} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTC", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 64}, - {"type_": "REG", "values": ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"], "src": true, "dest": false, "width": 64} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 32}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 32}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 64}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 64}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"], "src": true, "dest": true, "width": 16}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"], "src": true, "dest": true, "width": 16}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"], "src": true, "dest": true, "width": 32}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"], "src": true, "dest": true, "width": 32}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"], "src": true, "dest": true, "width": 64}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"], "src": true, "dest": true, "width": 64}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "REG", "values": ["AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"], "src": true, "dest": false, "width": 16} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 32}, - {"type_": "REG", "values": ["EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"], "src": true, "dest": false, "width": 32} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 64}, - {"type_": "REG", "values": ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"], "src": true, "dest": false, "width": 64} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"], "src": true, "dest": true, "width": 16}, - {"type_": "REG", "values": ["AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R8W", "R9W", "R10W", "R11W", "R12W", "R13W", "R14W", "R15W"], "src": true, "dest": false, "width": 16} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"], "src": true, "dest": true, "width": 32}, - {"type_": "REG", "values": ["EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R8D", "R9D", "R10D", "R11D", "R12D", "R13D", "R14D", "R15D"], "src": true, "dest": false, "width": 32} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTR", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "REG", "values": ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"], "src": true, "dest": true, "width": 64}, - {"type_": "REG", "values": ["RAX", "RCX", "RDX", "RBX", "RSP", "RBP", "RSI", "RDI", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"], "src": true, "dest": false, "width": 64} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "BTS", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTS", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, - {"name": "LOCK BTS", "category": "BASE-BITBYTE", "control_flow": false, - "operands": [ - {"type_": "MEM", "values": [], "src": true, "dest": true, "width": 16}, - {"type_": "IMM", "values": [], "src": true, "dest": false, "width": 8} - ], - "implicit_operands": [ - {"type_": "FLAGS", "values": ["w", "undef", "undef", "", "undef", "", "", "", "undef"], "src": false, "dest": false, "width": 0} - ] - }, {"name": "CALL", "category": "BASE-CALL", "control_flow": true, "operands": [ {"type_": "MEM", "values": [], "src": true, "dest": false, "width": 64}