汇编语言中“短”跳是什么意思?

时间:2011-04-22 16:59:51

标签: assembly x86 disassembly

此代码中的“SHORT”是什么意思?

JE SHORT 00013FB8

4 个答案:

答案 0 :(得分:14)

短跳(和接近调用)是目标在同一模块中的跳转(它们是模块内的,但是可以从某些黑客获得模块间变体),它们最常见的是127字节的相对位移(它们从指令的地址向前或向后改变执行流程,但是有16位变体提供32k字节。你真的不需要担心它,它真的是超级信息,但英特尔开发人员手册(第2a卷和第2b卷,特别是2a)将涵盖血淋淋的细节

答案 1 :(得分:1)

这意味着它不会跳得很远。取决于反汇编程序,之后的数字将是它跳转到的地址或相对偏移量,它告诉你下一条指令和跳转目标之间有多少字节。

答案 2 :(得分:1)

可以使用相对于当前汇编指令的相对偏移量来实现短跳转。对于x86 / 32位,这是2个字节的指令,其中第一个字节始终为EB(用于短跳转),第二个字节为 之前或之后的字节数 当前要跳转的指令。第二个字节是一个带符号 8位数字,因此x86上最远的短跳转距离为+/- 127个字节。超出+/- 127字节的地方都是跳E9,并且必须使用完整的32位地址;产生一条5字节的指令。

如果要内联修补程序汇编代码,请记住这一点。

例如 EB 0会在短暂跳转后跳转到操作码,而不是代码行本身。

例如 EB 7F是跳得最远的地方。

答案 3 :(得分:-3)

短跳是在PC启动时,这意味着2字节长的汇编指令告诉处理器在BIOS中跳转地址100h以开始启动。