最終更新日:2026年9月30日
fe fe-technology computer-architecture cpu
まず結論
命令語は、CPUに実行させる操作を表す情報です。基本的には「何をするか」を示す命令コードと、必要に応じて「何を対象にするか」を示すオペランドの指定で考えます。
命令語 = 命令コード + 必要に応じたオペランドの指定
何をする? 何を対象にする?
命令によってはオペランドを命令中に明示しません。科目Aでは、すべての命令にオペランドが付くとは限らないと押さえます。
直感的な説明
「3番の箱の中身を移す」という指示なら、移すが操作、3番の箱が対象です。一方、「いったん何もしない」という指示なら、対象の箱を指定する必要はありません。
コンピュータの命令語でも、操作の種類と対象の指定を分けて読みます。
| 概念的な命令 | 操作 | 命令中に明示する対象 |
|---|---|---|
ADD R1, R2 |
加算する | R1とR2を指定する |
NOP |
何もしない | なし |
表の ADD R1, R2 は説明用の表記です。レジスタの具体的な使い方はCPUの命令体系によって異なります。NOP は何も処理しない命令の例です。
定義・仕組み
命令コードとオペランド
命令コード(オペコード)は、加算、転送、分岐などの操作を表します。オペランドは、操作の対象となる値やデータです。命令語には、オペランドそのものではなく、使うレジスタや値の置き場所を指定する情報が入る場合もあります。
したがって、命令語の見方は次のようになります。
| 見る部分 | 読み取ること | 例 |
|---|---|---|
| 命令コード | 何をするか | 加算、転送、分岐 |
| オペランドの指定 | どの値・レジスタ・場所を使うか | 即値、レジスタ、主記憶の番地など |
オペランドを命令中に明示しない場合にも、意味は二通りあります。NOP のように操作対象そのものが不要な命令と、スタックを使う演算のように対象が命令の仕様で暗黙に決まる命令です。「命令中に指定しない」と「処理対象が存在しない」を混同しません。
オペランド数とアドレス数
命令体系には、操作対象の指定方法に応じて0アドレス、1アドレス、2アドレスなどの形式があります。ここで数えるのは命令中に明示する対象の指定欄です。必ずしも「主記憶の番地がいくつあるか」ではありません。
例えば、スタック方式の加算命令では、演算に使う二つの値がスタック上にあると決まっていれば、命令中のアドレス指定は0個でも加算できます。0アドレス命令は「計算する値が0個」という意味ではありません。
命令長は設計で決まる
命令長は、命令語を表すビット数です。CPUの命令体系によっては命令長を一定にする設計も、命令によって長さを変える設計もあります。
長い命令ほど命令の種類が必ず多い、とは言えません。ビットを命令コード、対象の指定、値などにどう割り当てるかで表現できる内容が変わるためです。
IPAの基本情報技術者試験シラバスにも、代表的な機械語命令の種類と命令語の構成が学習範囲として示されています。
科目Aでどう出る?
科目Aでは「必ず」「すべて」「命令長が長いほど」といった断定に注意します。次の順で確かめると判断しやすくなります。
| 選択肢での主張 | 判断するポイント |
|---|---|
| すべての命令にオペランドがある | 明示しない命令もあるため断定できない |
| オペランド数は主記憶の番地の数と等しい | レジスタや即値、暗黙の対象もあるため等しいとは限らない |
| 一つのCPUの命令長はすべて等しい | 固定長の設計も可変長の設計もある |
| 命令長が長ければ命令の種類も多い | 命令コードへのビット配分を見なければ決められない |
まず操作の種類を表す部分を見て、次に対象を明示する必要があるかを考えます。命令長と命令の種類は、単純な大小関係に置き換えません。
どんな場面で使う?
命令語の構成は、CPUが機械語命令をどう解読するかを理解する土台になります。CPUの命令実行サイクルでは「命令を取り出す → 解読する → 必要なデータを読む → 実行する」という流れを扱います。このページは、その解読する命令の中身に注目した記事です。
命令で指定された番地やレジスタから、実際に使う値をどう求めるかはアドレス指定方式で整理しています。命令語の欄の役割と、番地から値を求める参照の方法を分けると混乱しにくくなります。
よくある誤解・混同
オペランドがない命令は、何も実行しない?
そうとは限りません。NOP は操作対象が不要ですが、スタックを使う演算では、命令中にオペランドを明示しなくても、暗黙に決まった値を使って計算できます。
オペランドとアドレスは同じ?
オペランドは処理の対象です。対象を指定する情報は、主記憶の番地だけでなく、レジスタや命令中の値の場合もあります。オペランド数=主記憶の番地の数とは決められません。
命令語の構成とアドレス指定方式は同じ?
命令語の構成は「操作と対象の指定がどこにあるか」、アドレス指定方式は「指定された情報から実際に使う値や番地をどう求めるか」を扱います。
まとめ(試験直前用)
- 命令コードは何をするか、オペランドの指定は何を対象にするかを示す
- 命令中にオペランドを明示しない命令もある
- 0アドレスは対象が存在しないという意味ではない
- 命令長は固定長の場合も可変長の場合もある
- 命令の種類は、命令長だけでは決まらない