|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ ー : [ちょうおん] (n) long vowel mark (usually only used in katakana) 機械語(きかいご)またはマシン語()とは、コンピュータのCPUで直接実行される一連の命令である。一つ一つの命令が行う仕事は極めて限定されており、CPUのレジスタやメモリ上のデータを、ワードなどの単位で転送するか、単純に転送するだけでなく演算装置を通すことで何らかの演算などの加工をするか、プログラム自身の実行順を制御する分岐命令などである。性能を上げるため「制御装置」「実行ユニット」といったように切り分けられていることもある。コンピュータを「腑分け」してゆくと最終的に辿り着く、CPUが直接実行しているプログラムは、そのような一連の命令である。 バイナリの機械語(アセンブリ言語ではない)が、プログラミング言語の中で最も低水準な言語と言え、原始的でハードウェアに依存するプログラミング言語であるとされることもある。バイナリエディタなどで直接に機械語プログラムを書くことは可能だが、細かい制御ビットを確認して十六進表現にしたり、相対アドレスを管理しながらコードを書くのは非常に骨の折れる作業であり、ミスが生じる可能性も高い。それゆえ、今日では、特殊な場合(たとえばPentium F00F バグを起こさせるためのコードは、不正なコードとしてアセンブラには拒否されるかもしれない)を除き、機械語コードでも、アセンブラの定数機能などを使って「楽に」書くのが普通である。 現在では、実際に使用されるほぼ全てのプログラムが、高水準言語やアセンブリ言語で書かれ、コンパイラやアセンブラによって、機械語にコンパイル(あるいはアセンブル)されている。なお、インタプリタは内部で少しずつ機械語を生成しながら実行するもの、という誤解は、「通訳」という便宜的な表現に基づいて間違った想像をしたものかと思われ、非常によく広まっていて、ネットはおろか書籍などにもまことしやかに書かれているが、誤りである。動的コンパイルと呼ばれる技術により、高速化のためにそのような動作をするインタプリタも一部にはあることは確かだが、インタプリタが全てそのようであるわけではない。 プロセス仮想機械や抽象機械などの命令が機械語と呼ばれることもある。 == 概要 == プロセッサは主記憶装置にある機械語で書かれたプログラムを読み取り、解析、実行、出力することで処理を行っている。すべてのプログラミング言語で書かれたプログラムは、最終的にこの機械語で実行される。機械語でのプログラミングには、機械語とほぼ1対1に対応するニーモニックを用いたアセンブリ言語を使うのが一般的である。アセンブリ言語で書かれたプログラムを機械語にする(コンパイルする)ことをアセンブル(する)と言い、その処理系をアセンブラと言う。アセンブラによるアセンブルに対し、人力によるアセンブルをハンドアセンブルという。 機械語を利用する理由は、以前は次のようなものであった。 *アセンブラが存在しないか高価なため購入できない、クロスアセンブラであるため別のコンピュータが必要、など *コンピュータの性能が低いうえにBASICインタプリタしか備えていないなどで、必要な性能を得るため *コンパイラの研究が途上で高性能なコードが生成されないため 今日では、機械語を使わずとも十分なほどコンピュータは高性能になり、またコンパイラの研究も進んでよくできたコンパイラであれば場合によっては人より高性能なコードを生成するようになった。このため、機械語を直接扱うのは、コンパイラがまだ対応していない新機能などを使う場合、アセンブラを作ったりする場合、プロセッサのバグに当たった場合、コアダンプを解析する場合、諸事情などで逆アセンブルなどリバースエンジニアリングをおこなう場合、などに限られてきている。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「機械語(きかいご)またはマシン語()とは、コンピュータのCPUで直接実行される一連の命令である。一つ一つの命令が行う仕事は極めて限定されており、CPUのレジスタやメモリ上のデータを、ワードなどの単位で転送するか、単純に転送するだけでなく演算装置を通すことで何らかの演算などの加工をするか、プログラム自身の実行順を制御する分岐命令などである。性能を上げるため「制御装置」「実行ユニット」といったように切り分けられていることもある。コンピュータを「腑分け」してゆくと最終的に辿り着く、CPUが直接実行しているプログラムは、そのような一連の命令である。バイナリの機械語(アセンブリ言語ではない)が、プログラミング言語の中で最も低水準な言語と言え、原始的でハードウェアに依存するプログラミング言語であるとされることもある。バイナリエディタなどで直接に機械語プログラムを書くことは可能だが、細かい制御ビットを確認して十六進表現にしたり、相対アドレスを管理しながらコードを書くのは非常に骨の折れる作業であり、ミスが生じる可能性も高い。それゆえ、今日では、特殊な場合(たとえばPentium F00F バグを起こさせるためのコードは、不正なコードとしてアセンブラには拒否されるかもしれない)を除き、機械語コードでも、アセンブラの定数機能などを使って「楽に」書くのが普通である。現在では、実際に使用されるほぼ全てのプログラムが、高水準言語やアセンブリ言語で書かれ、コンパイラやアセンブラによって、機械語にコンパイル(あるいはアセンブル)されている。なお、インタプリタは内部で少しずつ機械語を生成しながら実行するもの、という誤解は、「通訳」という便宜的な表現に基づいて間違った想像をしたものかと思われ、非常によく広まっていて、ネットはおろか書籍などにもまことしやかに書かれているが、誤りである。動的コンパイルと呼ばれる技術により、高速化のためにそのような動作をするインタプリタも一部にはあることは確かだが、インタプリタが全てそのようであるわけではない。プロセス仮想機械や抽象機械などの命令が機械語と呼ばれることもある。== 概要 ==プロセッサは主記憶装置にある機械語で書かれたプログラムを読み取り、解析、実行、出力することで処理を行っている。すべてのプログラミング言語で書かれたプログラムは、最終的にこの機械語で実行される。機械語でのプログラミングには、機械語とほぼ1対1に対応するニーモニックを用いたアセンブリ言語を使うのが一般的である。アセンブリ言語で書かれたプログラムを機械語にする(コンパイルする)ことをアセンブル(する)と言い、その処理系をアセンブラと言う。アセンブラによるアセンブルに対し、人力によるアセンブルをハンドアセンブルという。機械語を利用する理由は、以前は次のようなものであった。*アセンブラが存在しないか高価なため購入できない、クロスアセンブラであるため別のコンピュータが必要、など*コンピュータの性能が低いうえにBASICインタプリタしか備えていないなどで、必要な性能を得るため*コンパイラの研究が途上で高性能なコードが生成されないため今日では、機械語を使わずとも十分なほどコンピュータは高性能になり、またコンパイラの研究も進んでよくできたコンパイラであれば場合によっては人より高性能なコードを生成するようになった。このため、機械語を直接扱うのは、コンパイラがまだ対応していない新機能などを使う場合、アセンブラを作ったりする場合、プロセッサのバグに当たった場合、コアダンプを解析する場合、諸事情などで逆アセンブルなどリバースエンジニアリングをおこなう場合、などに限られてきている。」の詳細全文を読む スポンサード リンク
|