检查汇编指令的存储方式

时间:2016-04-11 17:13:50

标签: assembly gdb

我希望更新特定地址的汇编指令。为了做到这一点,我反汇编了一个C函数,以便查看汇编指令的存储方式,具体看下面的说明:

0x088...     jmp     0x88465002

(gdb) x /2b 0x088
0x088...  <main+20>  0xeb  0x15

我发现指令是以字节为单位编码的,例如JMP编码为0xEB。但是,为什么JMP的位置存储为0x15?这是因为我们在堆栈中跳0x15个字节(即0x15是偏移量)?

谢谢 -

1 个答案:

答案 0 :(得分:3)

0xEB是x86上短相对跳转的操作码。 Short表示8位有符号位移。是0x15是相对于当前指令计数器值的位移(因此该地址的下一个指令的地址),接下来是0x15 = 21个字节。