CMOV CPU 指令有何意义?

CMOV CPU 指令有何意义?

Ubuntu 10.10已放弃对 i586 和更低型号处理器的支持,以及不支持 CMOV 指令 (据我所知,是条件 MOVe) 的 i686 处理器。

CMOV 命令有什么特别之处?它甚至在flags :行中有一个自己的标志/proc/cpuinfo

答案1

CMOV 指令是一条预测(或条件)移动指令。它将分支和移动指令合并为一个操作码。

CMOV 指令在编译器优化中非常有用,因为它有助于从代码中删除一些条件跳转指令。这在现代超标量处理器中非常重要,因为许多指令都在运行中并并行执行,而条件跳转指令会使在分支解析之前更难预测是否应该执行代码。

答案2

当使用 gcc 和 -march 标志为 686 架构编译源代码时,gcc 有时会生成包含 CMOV 指令的目标代码。这是因为 CMOV 是 15 年前发布的原始 686 架构附带的指令。

一些声称兼容 686 的处理器并不支持该指令。因此,必须做大量工作来处理不支持该标准指令的少数芯片,该指令已存在超过 15 年,并且无论如何都是原始 686 架构的一部分。Ubuntu 内核团队的时间有限,他们决定不再值得花时间继续支持所谓的 686 兼容处理器,因为这些处理器在过去 15 年中一直无法包含该指令,而该指令是核心 686 指令集的一部分。

CMOV 命令本身没有什么特别之处,只是它不是 i686 之前的架构(i486、i586 等)中的指令,并且一些据称兼容 i686 的芯片没有该指令。

相关内容