What does “short” jump mean in assembly language?

前端 未结 4 1490
有刺的猬
有刺的猬 2020-12-31 04:43

What does the \"SHORT\" mean in this code?

JE SHORT 00013FB8
4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-31 04:53

    A short jump can be achieved using a relative offset from the current assembly instruction. For x86/32-bit, this is a 2 byte instruction, where the first byte is always EB, for short jump, and the second byte is the number of bytes before or after the current instruction to jump. The second byte is a signed 8-bit number, so the the furthest short jump on x86 is +/-127 bytes away. Anything past +/-127 bytes away is a long jump, E9, and must use the full 32-bit address; resulting in a 5 byte instruction.

    This is important to keep in mind if you are inline patching assembly code.

    ex. EB 0 would jump to the opcode following the short jump, not the line of code itself.

    ex. EB 7F is the furthest jump down.

提交回复
热议问题