Dom*_*ter 16 x86 assembly disassembly
"简短"在这段代码中意味着什么?
JE SHORT 00013FB8
Run Code Online (Sandbox Code Playgroud)
Nec*_*lis 16
短跳(和接近调用)是目标在同一模块中的跳转(它们是模块内,但是可以从某些黑客获得模块间变体),它们最常见的是127字节的相对位移(它们改变了流量)从指令的地址向前或向后执行,但是有16位变体提供32k字节.你真的不需要担心它,它真的是超级信息,但英特尔开发人员手册(第2a卷和第2b卷,特别是2a)将涵盖血淋淋的细节
使用与当前汇编指令的相对偏移量可以实现短跳转。对于x86/32位,这是一条2字节的指令,其中第一个字节总是EB,为短跳转,第二个字节是当前要跳转的指令前后的字节数。第二个字节是一个有符号的8 位数字,因此 x86 上最远的短跳转距离 +/-127 个字节。任何超过 +/-127 字节的距离都是一个长跳转E9,并且必须使用完整的 32 位地址;产生一个 5 字节的指令。
如果您要内联修补汇编代码,请记住这一点很重要。
前任。
EB 0将跳转到短跳转后的操作码,而不是代码行本身。
前任。
EB 7F是跳得最远的。