オペコード
オプトコードは、命令セットの中のどのコンピュータの基本操作を実行するかを識別します。これは、マシンコードを書くときに使用されます。コンピュータに何かをするように指示します。各機械語命令は通常、オペコードとオペランドの両方を持っています。オペコードは文中の動詞のようなもので、オペランドは文中の主語のようなものです。オペランドは通常、メモリやレジストリのアドレスです。
オペコードは、レジスタのフロート加算、レジスタの二項補完加算、レジスタの値をメモリやハードドライブにシフトする、プログラムを停止する、などを含む多くの機能のためにマシンコードで使用されています。現代のコンピュータで採用されている一般的なオペコードは、文字通り何百もあります。
コンピュータのアーキテクチャの性質上、オペコードは2進数の形式をとります。また、マシンコードプログラムを設計したりエミュレートしたりする際に、読み取りやコーディングを容易にするために、オペコードを16進数で表すこともできます(例えば、10100101 = A5)。これらの値は、保存するためにバイナリの等価物に変換されます。最近のオペコードは、少なくとも長さが2つの16進数の文字で、1バイトの記憶領域を占有します。
オペコードはハードウェアに依存しているため、そのオペコードが属するコンピュータによって能力や「値」が異なります。例えば、16 進数で表される STORE のオペコードは、あるマシンでは FA、別のマシンでは 02 となります。あるコンピュータでは利用できないオペコードもあります。一般的に、命令セットの構築には2つのアプローチがあります。縮小命令セット計算機(RISC)は、単純な処理を高速化するために可能なオペコードの数を減らします。複雑な命令セット計算機(CISC)は、複雑な処理を高速化するために、より多くのオペコードを提供します。
オペコードは、プログラマーが直接使用することはほとんどありません。それらが直接メモリにプログラムされているときはいつでも、それが設計されたコンピュータ上で動作することが保証されているだけです。プログラマがアセンブリ言語で書く場合、トランスレータプログラムがプログラム文を一対一で機械語コマンドに変換します。プログラマーは、バイナリ値の代わりに各オペコードのニーモニックを覚えておくだけでよい。あるいは、第4世代のような高レベルのプログラミング言語を使用することもでき、第1世代に到達するまで第3世代に変換されます。ここから、個々のコンピュータは、プログラムファイルが読み込まれるたびに、プログラムをマシンコードに変換します。このようにして、プログラムはより多くの種類のコンピュータで動作することができます。
質問と回答
Q:オペコードとは何ですか?
A:オペコードとは、命令セット内のどの基本的なコンピュータ操作を実行すべきかを特定する2進数のことです。機械語を書くときに使用され、コンピュータに何をすべきかを指示します。
Q: オペランドとは何ですか?
A: オペランドとは、機械語命令の中でオペコードに付随するメモリやレジストリのアドレスのことです。オペコードが動詞のような役割を果たすのに対し、オペランドは文の主語のように考えることができる。
Q: 現代のコンピュータには、どれくらいの数の一般的なオペコードが使われているのですか?
A:現代のコンピュータには、何百もの一般的なオペコードが採用されています。
Q: オペコードはどのように表現されるのですか?
A: オペコードは、2進数または16進数で表現されます。
Q: 最近のオペコードの長さはどのくらいですか?
A:最近のオペコードは、少なくとも2文字の16進数で、1バイトの記憶領域を占有しています。
Q: RISCとCISCとは何ですか?
A: RISC(Reduced Instruction Set Computing)は、単純な処理を高速化するために可能なオペコードを少なくし、CISC(Complex Instruction Set Computing)は、複雑な処理を高速化するために可能なオペコードを多くしています。
Q: プログラマは通常、どのようにオペコードを使うのですか?
A:プログラマーは、コンピュータ固有の命令セットをメモリに直接書き込むことはほとんどなく、アセンブリ言語や高級プログラミング言語を使ってプログラムを書き、プログラムファイルを読むたびにマシンコードに変換して、複数の種類のコンピュータで動作するようにします。