Skip to content

x86_64 decoding issues #936

Open
Open
@roptat

Description

@roptat

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions