assembly - 长跳和短跳的区别(x86)

标签 assembly x86 cpu instructions machine-instruction

我读到,当地址中的相对跳转小于 124 时,应使用短跳转,否则应使用长跳转。

x86 上两种类型的跳转在 CPU 执行操作/性能方面有什么区别?

最佳答案

实际上有三种类型的JMP指令;短、​​近、远(长)。

JMP 是您引用的相对JMP。它被编码为两个字节;实际的 JMP 和相对于当前 IP 的字节数 +/-。

近跳转允许您在当前“段”(使用实模式术语)或 CS 选择器中当前选定的内存区域内跳转。

长或远JMP还包括一个选择器(或实模式下的段)

您可以自行查找时间。与时间相关的最大差异是由完成 JMP 必须读取的字节数不同引起的。

关于assembly - 长跳和短跳的区别(x86),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29315917/

相关文章:

optimization - 快速饱和并在ARM asm中移动两个半字

linux - assembly 说明的含义

c++ - 这段代码的瓶颈在哪里?

process - CPU 如何空闲(或运行低于 100%)?

memory-management - 兆字 (MW) 是什么意思?

javascript - 内联执行生成的汇编程序

assembly - 为什么 x86 int 寄存器的数量是 8 个?

assembly - Skylake 在一个周期内可以执行多少个 1 字节的 NOP

assembly - 按功能分类的 x86 指令引用

Python - 等待没有高CPU使用率的条件