削除された内容 追加された内容
編集の要約なし
あいまい回避
1行目:
#上位の者が下位の者にある事をするように言うこと。
[[コンピュータ]]において、'''命令'''とは[[CPU]]が処理する操作のこと。通常、'''命令操作部'''と複数の'''オペランド'''からなる。
#法規。[[法律]]を実施するため、または法律の委任に基づいて制定される。
 
#コンピューターのコマンドの[[命令 (コンピュータ)|命令]]
==命令の種類==
----
通常、加算・減算・乗算・除算の四則演算、ロード・ストア命令、条件分岐命令などからなる。シフト演算・論理演算なども含まれることが多い。CPUによっては、さらに複雑な命令も多数持っている([[平方根]]の[[逆数]]を求める命令など)。また、一般に、NOPと呼ばれる「なにもしない」命令も含まれる。これは、[[VLIW方式]]を採用しているCPUでは必須の命令である。
''(このページは、[[Wikipedia:曖昧さ回避のためのページ|曖昧さ回避のためのページ]]です。一つの言葉が二つ以上の意味に用いられている場合の水先案内のために、異なる用法を一覧してあります。お探しの用語に一番近い記事を選んで下さい。このページへリンクしているページを見つけたら、リンクを適切な項目に張り替えて下さい。)''
 
 
==命令の方式==
 
命令の方式は、CPUの種類によって大きく異なる。例えば、固定長命令のものと可変長命令のものがある。また、命令セットの設計方針では、[[CISC]]と[[RISC]]がある。さらに、主記憶[[メモリ]]の[[アドレス指定方式]]に関しても、様々である。
 
 
===オペランドの個数による分類===
*0アドレス命令形式
:処理対象のデータが[[スタック]]に格納されているコンピュータで使用される。例えば、加算や乗算などの演算は、スタックの上二つを取り出して演算結果をスタックにプッシュする。よって、命令語は、ADD, MULのように一語で表現できる。
*1アドレス命令形式
:加算や乗算の対象となる二つのデータのうち、少なくとも一方が[[レジスタ(CPU)|レジスタ]]上に存在しなくてはならない命令形式。たとえば、「ADD レジスタA メモリX」(レジスタAの中身とメモリXの中身の和をレジスタAに保存せよ)という命令は書けても、「ADD メモリX メモリY」などとは書けない。演算対象にしたいデータは、一旦、レジスタにロードする必要がある。
*2アドレス命令形式
:演算対象の二つの数値が共にメモリに存在していても、演算できる方式。例えば、「ADD メモリX メモリY」(メモリXの中身とメモリYの中身の和をメモリXに保存せよ)という命令が使える。
*3アドレス命令形式
:2アドレス命令形式に対し、データの保存場所を指定できるようにしたもの。例えば、「ADD メモリX メモリY メモリZ」(メモリYの中身とメモリZの中身の和をメモリXに保存せよ)という命令が使える。
 
 
==命令の依存関係==
近年のCPUは、[[パイプライン処理]]や[[アウト・オブ・オーダー実行]]を行うことが多い。こうしたCPUでは、先行命令より後続命令が先に処理を終える可能性があるので、命令の依存関係が問題になる。命令の依存関係は、以下のように分類できる。
*フロー依存
:前の命令の結果を、後続の命令が使用する場合。
*逆依存
:レジスタに関して、前の命令が読み出した後に、後続の命令が書き込まなくてはならない場合。これは、レジスタの個数が多ければ、後続の命令は別のレジスタに書き込めば問題ない('''レジスタ・リネーミング'''という)。
*出力依存
:レジスタに関して、前の命令と後続命令が結果を同じ場所に書き込む場合。これも、命令の結果を別の場所に書き込めるようにできば問題ない。