削除された内容 追加された内容
CharHigh (会話 | 投稿記録)
m編集の要約なし
とりあえずざっと
4行目:
}}
 
[[計算機科学]]において、'''オペコード''' ('''operation code''', '''opcode''') とは、実行される操作を指定する、[[機械語]]の1個の[[命令 (コンピュータ)|命令]]の分で、実行する操作(operation)の種類を指定する部分のこと、およびそのコード([[符号]])のことである。数式における[[演算子]]に相当する。命令のもうひとつの主要部分は、操作される対象を指定する'''オペランド'''([[w:Operand]])である。
 
==命令セットアーキテクチャ==
==ISA==
{{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>
 
==仮想機械==
==ソフトウェア命令セット==
オペコードは、ハードウェアデバイスよりもむしろだけでなく、ソフトウェアインタで実装されたいわゆる[[仮想機械#リタ向けロセス仮想機械|仮想機械]]や[[抽象機械]]もオペコードは存在する。具体的には、いわゆる[[バイトコード]]やその他の[[中間表現から見出せられ]]の中にある。命令セットに基づいたこれらのソフトウェアコードは、大部分のしばしば相当するハードウェア互換よりもわずかに高い水準の[[データ型]]と操作を使用すおこなう命令セットに基づいているが、それでも類似のラインに沿って構築される。例としては、[[Java仮想マシン]] (JVM) により解釈される[[:en:Java class file|Javaクラスファイル]]に見出せられるバイトコード、[[Emacs]]のコンパイルされた[[LISP]]コード向けの[[Emacs|GNU EmacsLisp]]で利用されるバイトコード、.NET [[共通中間言語]] (CIL) 、そして多くの他のコードが含まれる。<ref name="bytecode">[http://www.pcmag.com/encyclopedia_term/0,2542,t=bytecode&i=39108,00.asp bytecode Definition<!-- Bot generated title -->]</ref>
 
==関連項目==