长跳和短跳的区别(x86)
Difference between long and short jump (x86)
我读到当地址中的相对跳转小于124时要使用短跳转,否则应使用长跳转。
x86 上两种类型的跳转在 CPU/性能 中执行的操作有何不同?
实际上有三种JMP
指令;短、近、远(长)。
短JMP
是您所指的相对JMP
。它被编码为两个字节;实际 JMP
和字节数 +/- 相对于当前 IP。
近跳转允许您在当前 "segment"(使用实模式术语)或在 CS 选择器中当前选定的内存区域内跳转。
long 或 Far JMP
还包含一个选择器(或实模式下的段)
你可以自己查一下时间。与时间相关的最大差异是由完成 JMP
.
必须读取的不同字节数引起的
我读到当地址中的相对跳转小于124时要使用短跳转,否则应使用长跳转。
x86 上两种类型的跳转在 CPU/性能 中执行的操作有何不同?
实际上有三种JMP
指令;短、近、远(长)。
短JMP
是您所指的相对JMP
。它被编码为两个字节;实际 JMP
和字节数 +/- 相对于当前 IP。
近跳转允许您在当前 "segment"(使用实模式术语)或在 CS 选择器中当前选定的内存区域内跳转。
long 或 Far JMP
还包含一个选择器(或实模式下的段)
你可以自己查一下时间。与时间相关的最大差异是由完成 JMP
.