差分

ナビゲーションに移動 検索に移動

オペコード

2,157 バイト追加, 2012年7月6日 (金) 01:41
ページの作成:「'''オペコード'''(opcode)とは、機械語およびアセンブリ言語における命令のことである。 オペコードの語源はオペレー...」
'''オペコード'''(opcode)とは、[[機械語]]および[[アセンブリ言語]]における命令のことである。
オペコードの語源はオペレーションコード(operation code)の略称だと言われている。

主としてオペコードに続くかたちで指定される、オペコードの演算対象となる[[値]]や[[レジスター]]を[[オペランド]]という。

== オペコードのバイト数 ==
[[x86]]などの[[パソコン]]向け[[CPU]]の多くは、原則として[[8ビット]]で[[1バイト]]であり、[[機械語]]の1バイト目をオペコードとする。

これらでは[[四則演算]]や[[条件分岐]]などの各命令には数字の番号が割り振られており、[[バイト]]列(バイト配列)のうち1[[バイト]]目をその命令であるとみなす。つまり1バイトで表せる数字は0~255であるため、最大で256個の命令を搭載することができる。

=== 可変長 ===
しかし、命令が増えまくり256個では足りなくなる[[CPU]]も多々あり、それらでは1バイト目が特定の数字の場合には2バイトもオペコードとするという事を行っている。

このような形式は主に[[x86]]や[[Z80]]などの[[インテル]]とその派生[[CPU]]で採用されている。
また[[仮想マシン]]である[[共通言語ランタイム]]および[[共通中間言語]]でも採用されている。

=== 固定長 ===
これとは逆に拡張などあり得ないという前提で、オペコードのサイズ([[バイト]]数)を必要な命令数が収まるバイト数で固定長にしておき、オペコードの抽出や解析に必要な回路を簡略化したものを「[[バイトコード]]」と呼ぶ。

このような形式は主に[[ARM]]などの[[CPU]]で採用されている。
また[[仮想マシン]]である[[Java仮想マシン]]および[[Javaバイトコード]]でも採用されている。

== 関連項目 ==
* [[オペコード]]
* [[ニーモニック]]
* [[命令セット]]

== 参考文献 ==
<references/>

== 外部リンク ==

{{stub}}
匿名利用者

案内メニュー