在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
但是0x51是十进制的81。
答案 0 :(得分:4)
它应该真的反汇编为
loope *+79
也就是说,循环分支相对前进79个字节。现在在ndisasm情况下,指令位于地址0(所以下一条指令,即相对分支计算出来的是地址2),因此它为你计算目标(绝对)地址:2 + 79 = 81 (0x51)