Description
Hi, I've run some tests and found three instructions on x86_64 that don't seem to always be decoded properly. I'm using the first basic example in http://www.capstone-engine.org/lang_python.html, except that I replace the CODE string with something else.
with b'\x6a\xb7'
, I get the following result with capstone:
push 0xb7
, but I get pushq $0xffffffffffffffb7
with objdump.
According to AMD's manual, 6A i8 "Push an 8-bit immediate value (sign-extended to 16, 32,
or 64 bits) onto the stack". So I think objdump is right here.
with b'\xf0\x22\xbd\x71\x20\x17\x00'
, I get no result with capstone (nothing is decoded), but objdump decodes that as lock and 0x172071(%rbp),%bh
which looks correct to me.
with b'\xd3\xb6\x6b\x8f\xac\xa0'
, I get the following result with capstone:
sal dword ptr [rsi - 0x5f537095], cl
, but according to AMD's manual, sal can be D3 /4 (but no other), but the string contains D3 /6. Objdump says 'd3' is bad.
I ran that with the latest git commit.