命令 (コンピュータ)

コンピュータにおける命令（めいれい、）はプロセッサに対する演算の指示である。
CPU等のプロセッサは加算・乗算・データ移動などのシンプルな演算をおこない、それを繰り返すことで複雑なソフトウェアを動作させている。ハードウェアであるプロセッサは事前に定められた演算群に含まれている演算のみ実行できるため、プロセッサを動かすにはそのプロセッサが受け付け可能な演算を実行するよう指示する必要がある。この演算指示がプロセッサの命令である。
命令は演算種類を指定する1つのオペコードと演算対象を指定する0個以上のオペランドからなる。
命令の集まりは命令セットと呼ばれる。
表現.
命令はオペコードとオペランドの組み合わせで表現される。
オペコード.
オペコード（）はプロセッサで実行される操作の種類を指定する符号である。プロセッサが対応する各演算に対して1つのオペコードが割り付けられる。ほとんどの場合オペコードはバイナリ形式であり、そのビット長はプロセッサにより異なる（例: x64 ADD演算 codice_1）。
オペランド.
オペランド（）はプロセッサで実行される操作の対象である。オペランドの内容・個数はオペコードごとに規定される。例えば二項演算であるADD演算であれば2つのオペランドを取るし、遷移先を指定するJUMP命令であれば1つのオペランドを取る。
命令の種類.
通常、加算・減算・乗算・除算の四則演算、ロード・ストア命令、条件分岐命令などからなる。シフト演算・論理演算なども含まれることが多い。CPUによっては、さらに複雑な命令も多数持っている（平方根の逆数を求める命令など）。また、一般に、NOPと呼ばれる「なにもしない」命令も含まれる。これは、VLIW方式を採用しているCPUでは必須の命令である。極めて特殊な例として、未定義の命令を実行したときと同じ効果が得られる命令が定義されているCPUがある(IntelのUD2命令等)。
命令の方式.
命令の方式は、CPUの種類によって大きく異なる。例えば、固定長命令のものと可変長命令のものがある。また、命令セットの設計方針では、CISCとRISCがある。さらに、主記憶メモリのアドレス指定方式に関しても、様々である。
命令の依存関係.
近年のCPUは、パイプライン処理やアウト・オブ・オーダー実行を行うことが多い。こうしたCPUでは、先行命令より後続命令が先に処理を終える可能性があるので、命令の依存関係が問題になる。命令の依存関係は、以下のように分類できる。