ΤΖΩΤΖΙΟΥ Asked: 2010-10-11 15:18:45 +0800 CST2010-10-11 15:18:45 +0800 CST 2010-10-11 15:18:45 +0800 CST CMOV CPU指令的意义是什么? 772 Ubuntu 10.10已经放弃了对 i586 和更小处理器的支持,以及不支持 CMOV 指令(条件 MOVe,AFAIK)的 i686 处理器。 CMOV 命令有什么特别之处?它甚至flags :在/proc/cpuinfo. 10.10 kernel 2 个回答 Voted Dennis Sheil 2010-10-11T16:38:32+08:002010-10-11T16:38:32+08:00 当使用 gcc 和 -march 标志为 686 架构编译源代码时,gcc 有时会生成包含 CMOV 指令的目标代码。这是因为 CMOV 是 15 年前发布的原始 686 架构附带的指令。 少数声称与 686 兼容的处理器不支持此指令。因此,必须做大量工作来处理少数不支持该标准指令的芯片,该标准指令已经存在超过 15 年,并且无论如何都是原始 686 架构的一部分。Ubuntu 内核团队的时间有限,他们认为不再值得花时间继续支持所谓的 686 兼容处理器,这些处理器在过去 15 年中无法包含该指令,该指令是核心 686 指令集的一部分. CMOV 命令本身并没有什么特别之处,只是它不是 i686 之前的架构(i486、i586 等)中的指令,而且一些据称与 i686 兼容的芯片没有该指令。 Best Answer pkumar 2010-10-14T12:05:11+08:002010-10-14T12:05:11+08:00 CMOV 指令是一个谓词(或条件)移动指令。它将分支和移动指令组合到一个操作码中。 CMOV 指令在编译器优化中很有用,因为它有助于从代码中删除一些条件跳转指令。这在现代超标量处理器中很重要,因为许多指令在运行中并并行执行,而条件跳转指令将使在分支解决之前更难预测是否应该执行代码。
当使用 gcc 和 -march 标志为 686 架构编译源代码时,gcc 有时会生成包含 CMOV 指令的目标代码。这是因为 CMOV 是 15 年前发布的原始 686 架构附带的指令。
少数声称与 686 兼容的处理器不支持此指令。因此,必须做大量工作来处理少数不支持该标准指令的芯片,该标准指令已经存在超过 15 年,并且无论如何都是原始 686 架构的一部分。Ubuntu 内核团队的时间有限,他们认为不再值得花时间继续支持所谓的 686 兼容处理器,这些处理器在过去 15 年中无法包含该指令,该指令是核心 686 指令集的一部分.
CMOV 命令本身并没有什么特别之处,只是它不是 i686 之前的架构(i486、i586 等)中的指令,而且一些据称与 i686 兼容的芯片没有该指令。
CMOV 指令是一个谓词(或条件)移动指令。它将分支和移动指令组合到一个操作码中。
CMOV 指令在编译器优化中很有用,因为它有助于从代码中删除一些条件跳转指令。这在现代超标量处理器中很重要,因为许多指令在运行中并并行执行,而条件跳转指令将使在分支解决之前更难预测是否应该执行代码。