web-dev-qa-db-ja.com

CMOV CPU命令の意味は何ですか?

buntu 10.1 は、CMOV命令をサポートしないi686プロセッサー(条件付きMOVe、AFAIK)とともに、i586以下のプロセッサーのサポートを終了しました。

CMOVコマンドの特別な点は何ですか? flags :/proc/cpuinfo行にも独自のフラグがあります。

6

CMOV命令は、述語(または条件付き)移動命令です。分岐と移動命令を1つのオペコードに結合します。

CMOV命令は、コードから条件付きジャンプ命令の一部を削除するのに役立つため、コンパイラの最適化に役立ちます。これは現代のスーパースカラープロセッサでは重要です。多くの命令が並行して実行され、条件付きジャンプ命令により、分岐が解決されるまでコードを実行するかどうかを予測するのが難しくなるためです。

5
pkumar

Gccおよび-marchフラグを使用して686アーキテクチャ用のソースコードをコンパイルすると、gccはCMOV命令を含むオブジェクトコードを生成することがあります。これは、CMOVが15年前にリリースされた元の686アーキテクチャに付属する命令であったためです。

686互換性があると主張する少数のプロセッサは、この命令をサポートしていません。したがって、15年以上にわたって存在し、元の​​686アーキテクチャの一部であるこの標準命令をサポートしていない少数のチップを処理するには、多くの作業を行う必要があります。 Ubuntuカーネルチームの時間は限られているため、過去15年間にわたってコア686命令セットの一部であるこの命令を含めることができなかった686互換のプロセッサをサポートし続けることはもはや価値がないと判断しました。 。

CMOVコマンド自体について特に特別なことはありません。i686以前のアーキテクチャ(i486、i586など)の命令ではなかったこと、およびi686互換チップと思われる一部の命令には命令がないことを除きます。

5
Dennis Sheil