跳转指令后的十六进制数如何转换为内存地址?

问题描述 投票:1回答:1

我在我的代码反汇编中有这个:

我看到跳转指令代码E9,但是E9之后的数字如何转换成显示的内存地址?

pointers assembly x86-64 memory-address
1个回答
3
投票

指令中的字节是一个偏移量,它被添加到下一条指令的地址以获取目标地址。

7 Vfbdbadd 1 OPY + AB = 125钟情7 VVS 0659毛毯4

有关跳转编码的其他信息

与指令中的目标相近的跳转始终使用相对于下一条指令的地址的有符号偏移进行编码。在32位或64位模式下,偏移量可以是8位或32位。 (在16位模式下,它可以是8位或16位。具有8位偏移的近跳变也称为短跳。)间接近跳转将目标地址放在寄存器或存储器位置;目的地是绝对的(要加载到[ER] IP中的值)。

远程跳转可以在指令中或在存储器位置具有目的地;目的地具有CS和[ER] IP值。

有关更多详细信息,请参阅x86指令参考,例如Intel SDM,第2卷.https://software.intel.com/en-us/articles/intel-sdm

© www.soinside.com 2019 - 2024. All rights reserved.