オペコード
ナビゲーションに移動
検索に移動
オペコード(opcode)とは、機械語およびアセンブリ言語における命令のことである。 オペコードの語源はオペレーションコード(operation code)の略称だと言われている。
主としてオペコードに続くかたちで指定される、オペコードの演算対象となる値やレジスターをオペランドという。
オペコードのバイト数[編集 | ソースを編集]
x86などのパソコン向けCPUの多くは、原則として8ビットで1バイトであり、機械語の1バイト目をオペコードとする。
これらでは四則演算や条件分岐などの各命令には数字の番号が割り振られており、バイト列(バイト配列)のうち1バイト目をその命令であるとみなす。つまり1バイトで表せる数字は0~255であるため、最大で256個の命令を搭載することができる。
可変長[編集 | ソースを編集]
しかし、命令が増えまくり256個では足りなくなるCPUも多々あり、それらでは1バイト目が特定の数字の場合には2バイトもオペコードとするという事を行っている。
このような形式は主にx86やZ80などのインテルとその派生CPUで採用されている。 また仮想マシンである共通言語ランタイムおよび共通中間言語でも採用されている。
固定長[編集 | ソースを編集]
これとは逆に拡張などあり得ないという前提で、オペコードのサイズ(バイト数)を必要な命令数が収まるバイト数で固定長にしておき、オペコードの抽出や解析に必要な回路を簡略化したものを「バイトコード」と呼ぶ。
このような形式はRISCと呼ばれる種類のCPUに広く採用されており、最近では主にARMなどのCPUで採用されている。また仮想マシンであるJava仮想マシンおよびJavaバイトコードでも採用されている形式である。
関連項目[編集 | ソースを編集]
参考文献[編集 | ソースを編集]