On x86 (32 bits mode), disassembling the opcodes 66 53 66 5B, binary ninja outputs the following disassembly:
00000000 6653 push bx {var_4}
00000002 665b pop bx
which is correct; however, the lifted IL is not :
0 @ 00000000 push(zx.d(bx))
1 @ 00000002 bx = pop.w
Indeed, it should read instead :
0 @ 00000000 push(bx) // OperandSize == 16
1 @ 00000002 bx = pop.w
The 0x66 prefix is correctly interpreted for the pop operation (since it operates on 16 bits), but not forthe push operation.
Binary Ninja Version: 3.0.3280-dev Personal, 8291c569
Platform: Windows 10 Version 2009
On x86 (32 bits mode), disassembling the opcodes 66 53 66 5B, binary ninja outputs the following disassembly:
which is correct; however, the lifted IL is not :
Indeed, it should read instead :
The 0x66 prefix is correctly interpreted for the
popoperation (since it operates on 16 bits), but not forthepushoperation.Binary Ninja Version: 3.0.3280-dev Personal, 8291c569
Platform: Windows 10 Version 2009