This article at Wikipedia

機械語

機械語きかいご)またはマシン語とは、CPUが理解できるプログラミング言語のこと。初期のコンピュータでは機械語しか存在せず、プログラムを組むと言うことは、この機械語を直接入力することであった。

CPUと機械語

CPUは、主記憶(メモリ)にある機械語で書かれたプログラムを読み取り、解析、実行、出力することで処理を行っている。全てのプログラミング言語で書かれたプログラムは、最終的に、この機械語に翻訳されないと実行することが出来ない。

一概に機械語といっても、CPUの種類によって仕様が異なるので、あるプログラムが CPU Aで実行できたからといって、CPU Bでも実行できるとは限らない。仮に、CPU Cが CPU Aの仕様で書かれた機械語のプログラムを完全に実行できた場合、CPU Cは CPU Aと互換性がある、といえる。

ペンティアム系列とPowerPC系列の双方で動くプログラムが存在しないのは、これらのCPUの仕様に互換性が無いからである。例え同じ系列だとしても、新しい世代のCPUの為に作ったプログラムは古い世代のCPUでは動かないこともある。プログラムの互換性については、オペレーティングシステムにも関連することである。

機械語とアセンブリ言語

ファイルシステムが存在するコンピュータでは、この機械語で書かれた実行可能なプログラム(オブジェクトコード)を収めたファイルを、オブジェクトファイル(実行可能なバイナリファイル)と呼ぶ。このファイルの中身を、2進数を4bitずつ16進数に変換して表示すると、かろうじて認識が出来る状態になる。この状態でプログラムの内容が分かるような人は、まずいないが、特定のCPUについて、0と1の羅列を全て諳んじているという猛者も存在する。

現在は人が機械語を扱うことは、汎用機組み込みシステムでのダンプ解析のような特殊な状況以外ではまずなく、仮に機械語でのプログラムが必要な場合は、機械語とほぼ1対1に対応するニーモニック・コードを用いたアセンブリ言語を使うのが一般的である。

また、機械語を解読する場合には、オブジェクトファイルを読み込んで、対応するニモニックとラベルを出力する逆アセンブラが利用される。

互換性がない理由

CPUの種類によって機械語に互換性がないのにはさまざまな理由あるが、代表的なもに以下のようなものがある。

• CPUが理解できる命令の種類や数が異なる(CISCRISC) • 命令の長さが異なる(CISCとRISCとでは長さが異なることがある。また、同じアーキテクチャでも、命令のビット数の違いも影響する) • 命令部の命令番号が一致しない • 同じ処理を行う命令でも処理結果が異なる • 演算方法が異なる(レジスタ - レジスタ間演算やメモリ - レジスタ間演算の違い。RISCでは後者の演算ができない) • データの記録方法が異なる(ビッグエンディアンリトルエンディアン) • 実行形式のバイナリファイルの記録形式が異なる(CFM CarbonMach-O Carbon

機械語の構成

CPUの種類によって機械語に互換性はないとはいえ、機械語がどのように構成されているかは大体決まっている。

• 命令部(オペレーションコード、あるいはオペコード

CPUに処理をさせるための命令の番号を記録している。機械語に互換性がないのは、主にこの番号が一致しないことに由来する。
• アドレス部(オペランド
情報として利用するデータが格納されているメモリアドレス、あるいはジャンプ命令でのジャンプ先、演算結果を記録すべき場所、場合によってはデータそのものを記録している。CPUや命令によって長さが異なる場合がある。オペランドの数に合わせて、0アドレス方式、1アドレス方式、2アドレス方式、3アドレス方式がある。0アドレス方式はオペレーションコードだけで、オペランドは存在しない。
• データ部
プログラム内部で利用するデータが記録されている部分。命令にオペランドがあるとここまでジャンプしてデータを取得/記録していく。通常はプログラムの下端に存在する。

コード例

情報処理技術者試験による仮想コンピュータCOMETにおける機械語の例を以下に挙げる。なお、この機械語コードは16進数表現であり、2バイト単位で区切ってある。

アドレス機械語CASL
8000


800C
800D
7001 0000 7002 0000
1210 800D 1220 800C
F000 0002 7120 7110
000C
0048 0065 006C 006C
006F 0020 0077 006F
0072 006C 0064 0021



LEN
TEXT
OUT


DC
DC
TEXT,LEN


12
'Hello world!'

関連項目

低級言語リンカコンパイラアセンブラ


この記事はスタブ(書きかけ)です。この記事を加筆して下さる協力者を求めています。




This article is from Wikipedia, the Free Encyclopedia. All text is available under the terms of the GNU Free Documentation License.


社会 • 社会政治経済産業交通教育歴史福祉医療環境環境問題市民活動平和軍事 • 芸術と文化 • 芸術文化言語宗教遊び趣味伝統芸能文学音楽美術演劇映画アニメ漫画建築スポーツゲームギャンブル食文化ファッションマスメディア出版新聞放送テレビラジオ • 世界 • 世界アジアアフリカオセアニア北アメリカ南アメリカヨーロッパ • 日本 • 日本北海道東北関東中部近畿中国四国九州沖縄 • 学問 • 学問文学哲学倫理学心理学社会学法学経済学数学物理学化学生物学地球科学医学工学 • 自然 • 自然宇宙元素気象災害海洋生物植物動物鉱物 • 技術 • 技術コンピュータネットワークエレクトロニクスバイオテクノロジー • 資料 • 索引年表365日地図世界各国関係記事人名一覧一覧の一覧