王爽<<汇编语言>>第 3 版 关于 jmp short 和 jmp near ptr 的区别
warning:
这篇文章距离上次修改已过707天,其中的内容可能已经有所变动。
jmp short 标号 === (ip)=(ip)+8 位位移
8 位位移的意思是, 下图中的EB0A 的0A 就是 8 位长度表示的位移数据, 表示向后跳 10 个字节
2024-06-28T06:57:40.pngjmp near ptr 标号 === (ip)=(ip)+16 位位移
我原以为 16 位位移是按 2 个字节一跳, 我还想那要是要跳 17 个字节怎么办?
16 位位移的意思是, 下图中的 E92201 中的 2201 就是 16 位长度表示的位移数据, 表示向后跳 290 个字节
2024-06-28T07:00:28.png如果用 jmp near ptr 替代 jmp short 呢, 编译器会编译出一条 NOP 的指令
2024-06-28T07:03:57.png