x86 - Why does 0xE1 0x4F disassemble to different instructions in LLVM and NDISASM? -
in bash shell:
$ echo "0xe1 0x4f" | llvm-mc-3.2 -disassemble -triple i386 .section __text,__text,regular,pure_instructions loope 79 $ echo -n "\xe1\x4f" | ndisasm -b 32 - 00000000 e14f loope 0x51
but 0x51 81 in decimal.
it should disassemble as
loope *+79
that is, loop branch relative forward 79 bytes. in ndisasm case, instruction @ address 0 (so next instruction, relative branch computed off, address 2), computes target (absolute) address you: 2+79 = 81 (0x51)
Comments
Post a Comment