windows
未命名视频
在 计算机x86 架构中,JMP(无条件转移)指令有三种主要类型,分别为短跳转、近跳转和远跳转,其分类依据是目标地址的范围和寻址方式:短跳转(Short Jump)操作码为 EB,后跟一个 8 位偏移量,多用于近距离跳转,如循环或条件分支。近跳转(Near Jump)操作码为 E9,后跟一个 32 位相对偏移量,多用于同一代码段内的长距离跳转,而远跳转(Far Jump)的范围更广,为任意地址(跨段跳转),其操作码为 EA,后跟一个 32 位绝对地址和 16 位段选择器,多用于切换代码段(如操作系统内核切换)。换句话说,短跳转范围为-128到+127字节,近跳转范围为-32768到+32767字节,远跳转范围则更大。上述知识点可以很好地帮助我们通过一个跳转距离判断其跳转类型。若跳转0210H字节,因为0210H=528D,超出了短跳转范围但没有超出近跳转,那么它就是近跳转;依此类推,若跳转距离为0020H,因为0020H=32D,在短跳转范围中,那么它就是短跳转;若跳转距离为10000H,因为10000H=65536D,超出了近跳转范围,那么它就是远跳转。