Ton*_*ony 2 c x86 assembly intel
我只是看一下我在C中编写的一个简单exe的.text部分,我只想弄清楚一些x86操作码的结构.
从我一直在阅读的内容来看,似乎0xe9是相对跳转(JMP)的单字节操作码,但是我不确定其余的字节实际上是如何构成跳转地址的.
我正在使用超级在线反汇编程序ODA来反汇编我的程序,这就是显示的内容:
.text:0x00411005 e936210000 jmp 0x00413140
Run Code Online (Sandbox Code Playgroud)
因此0xe9是JMP指令,因为这是一个32位可执行文件,我假设接下来的四个字节将成为跳转的地址,但是我不确定它们是如何实际构造的.
如果有人能帮助他发光,我会很感激.
谢谢
int*_*jay 11
这是一个相对跳转,意味着目标是相对于下一条指令给出的.
该指令位于地址0x411005并占用5个字节,因此下一条指令位于地址0x41100a.跳转的相对量(编码为little-endian,即字节从最低有效位存储到最高有效位)是0x2136.所以跳转的目的地是0x41100a + 0x2136 = 0x413140.