代码之家  ›  专栏  ›  技术社区  ›  Nathan Osman

JE能跳多远有限制吗?

  •  2
  • Nathan Osman  · 技术社区  · 14 年前

    我在某处听说x86指令集中的条件跳转指令被限制为256字节。(换句话说,跳转不能超过256字节。)

    这是真的吗?我一直在写涉及JMP指令的逻辑来解决这个问题。有必要吗?

    2 回复  |  直到 5 年前
        1
  •  8
  •   caf    14 年前

    IA32支持8位、16位和32位条件相对跳转。x86\u 64支持8位和32位条件相对跳转。看到了吗 Intel's Software Developer's Manuals .


    在实模式(和虚8086模式)下,条件跳转 限于+/-127的偏移量。

        2
  •  0
  •   Scott Wisniewski    14 年前

    另一个答案的一个小附录(在其他方面是正确的):

    你的跳跃永远不会“超出范围”。特定的编码,以及使用32位、16位或8位偏移量进行任何相对跳转的决定,将由汇编程序进行。这通常称为“指令选择”。在任何情况下,给定“eip”的任何32位值,总有一些32位有符号位移,当添加到“eip”时,将等于任意32位地址。

    8位和16位形式的“jump/cc”只允许您在指令流中使用更少的字节来完成这项工作。