「オペコード」の版間の差分

削除された内容 追加された内容
CharHigh (会話 | 投稿記録)
編集の要約なし
1行目:
'''オペコード''' ('''operation code''', '''opcode''') とは、[[機械語]]の1個の[[命令 (コンピュータ)|命令]]の部分で、実行する操作(operation)の種類を指定する部分のこと、およびそのコード([[符号]])のことである。数式における[[演算子]]に相当する。命令のもうひとつの主要部分は、操作される対象を指定する'''オペランド'''([[w:Operand被演算子]])である。
 
==命令セットアーキテクチャ==
{{seealso|コンピュータ・アーキテクチャ}}
機械語命令の仕様やフォーマットは(一般的な[[CPU]]や、特化された[[Graphics Processing Unit|GPU]]などといった)当該[[プロセッサ]]の[[命令セット]]アーキテクチャ (instruction set architecture, ISA) 内に設計される。オペコード以外に、命令は通常1つ以上の、操作が処理すべき[[オペランド]](すなわちデータ)に対する指示子を持つ。いくつかの操作は''暗黙的な''オペランドを持つか、全く持たなかったりする。オペコードとオペランドについて、ほぼ固定された構造で少数のバリエーションのみを持つもの(いわゆる[[RISC]])もあれば、[[x86]]のようにより複雑で長さが変化する構造のものもある。<ref name="machine">[http://web.archive.org/web/20080213090055/http://www.atariarchives.org/mlb/introduction.php Machine Language For Beginners - Introduction<!-- Bot generated title -->]</ref>
 
'''オペランド'''は、[[レジスタ (コンピュータ)|レジスタ]]値、[[コールスタック]]値、他の[[記憶装置|メモリ]]値、[[入出力|I/O]]ポートなどである。アーキテクチャによるが、単純な、あるいは複雑な[[アドレッシングモード]]を利用して指定されアクセスされる。'''操作'''の種類には、([[CPUID]]などのような)特別な命令や、[[算術]]、データコピー、[[論理演算]]、そしてプログラム制御([[分岐命令]]など)が含まれる。
 
==アセンブリ言語==
[[アセンブリ言語]]は、命令の[[アセンブリ言語#オペコードのニーモニックと拡張ニーモニック|ニーモニック]]と[[オペランド]]で[[機械語]]を表す[[低水準言語]]である。アセンブリ言語は機械語を正確に制御しながら読みやすさを補強する。現在では、大半のプログラミングは、通常は読み書きを容易にするため[[高水準言語]]を用いて行う。<ref name="tiobe">[http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html TIOBE Software Popularity Index]</ref><ref name=langpop>http://langpop.com/</ref>これらの言語はコンパイルする(機械語に変換する)か、他のコンパイルされたプログラム([[インタプリタ]])により解釈実行する。<ref name="asm">[http://www.swansontec.com/sprogram.htm Introduction to Assembly Language]</ref>
 
==仮想機械==