# XCHG instruction tests # Format: RawBytes;Instructions RawBytes;Instructions # XCHG EAX, reg32 (opcodes 90-97) 90;[{ "Type": "Nop", "Operands": [] }] 91;[{ "Type": "Xchg", "Operands": ["eax", "ecx"] }] 92;[{ "Type": "Xchg", "Operands": ["eax", "edx"] }] 93;[{ "Type": "Xchg", "Operands": ["eax", "ebx"] }] 94;[{ "Type": "Xchg", "Operands": ["eax", "esp"] }] 95;[{ "Type": "Xchg", "Operands": ["eax", "ebp"] }] 96;[{ "Type": "Xchg", "Operands": ["eax", "esi"] }] 97;[{ "Type": "Xchg", "Operands": ["eax", "edi"] }] # XCHG reg32, r/m32 (opcode 87) 87D9;[{ "Type": "Xchg", "Operands": ["ecx", "ebx"] }] 87CA;[{ "Type": "Xchg", "Operands": ["edx", "ecx"] }] # XCHG r/m32, reg32 (opcode 87) - memory operands 874B10;[{ "Type": "Xchg", "Operands": ["dword ptr [ebx+0x10]", "ecx"] }] 8711;[{ "Type": "Xchg", "Operands": ["dword ptr [ecx]", "edx"] }] 8713;[{ "Type": "Xchg", "Operands": ["dword ptr [ebx]", "edx"] }] # XCHG with 16-bit operand size prefix 6687D9;[{ "Type": "Xchg", "Operands": ["ecx", "ebx"] }] 6691;[{ "Type": "Xchg", "Operands": ["eax", "ecx"] }] # XCHG with 8-bit registers (opcode 86) 86D9;[{ "Type": "Xchg", "Operands": ["cl", "bl"] }] 86C3;[{ "Type": "Xchg", "Operands": ["bl", "al"] }] 86C1;[{ "Type": "Xchg", "Operands": ["cl", "al"] }] 86D3;[{ "Type": "Xchg", "Operands": ["bl", "dl"] }] # XCHG r/m8, reg8 (opcode 86) - memory operands 8601;[{ "Type": "Xchg", "Operands": ["byte ptr [ecx]", "al"] }] 8603;[{ "Type": "Xchg", "Operands": ["byte ptr [ebx]", "al"] }]