我只是看一下我用C编写的一个简单exe的.text部分,我只想弄清楚一些x86操作码的结构。
从我一直在阅读的内容来看,似乎0xe9是相对跳转(JMP)的单字节操作码,但是我不确定其余字节实际上是如何形成跳转地址的。
我正在使用超级在线反汇编程序ODA来反汇编我的程序,这就是显示的内容:
.text:0x00411005 e936210000 jmp 0x00413140
所以0xe9是JMP指令,因为这是一个32位可执行文件,我假设接下来的四个字节将成为跳转的地址,但是我有点不确定它们是怎样的实际上是结构化的。
如果有人可以帮助照亮他,我会很感激。
由于
答案 0 :(得分:11)
这是一个相对跳跃,意味着目的地是相对于下一条指令给出的。
该指令位于地址0x411005并占用5个字节,因此下一条指令位于地址0x41100a。跳转的相对量(编码为小端,即字节从最低有效到最高有效)是0x2136。所以跳转的目的地是0x41100a + 0x2136 = 0x413140。