翻訳と管理のプログラム

アセンブリ

  • このエントリーをはてなブックマークに追加
アセンブリ言語

この記事は、絵でわかる プログラムとは何か(2)~翻訳と管理のプログラム~ の最初に読んでいただくべき記事です。

この記事のポイント

  • 二進数でわかりにくいマシンコードより、もっと分かりやすい英単語に置き換えたオペコードとして、ニーモニックが誕生した。
  • ニーモニックは、そのままではプロセッサで処理できないので、オペランドと合わせてマシンコードに変換するプログラム=アセンブラが作られた。
  • アセンブラによる変換処理をアセンブリと言う。
  • アセンブリ前のプログラムをソースコード、アセンブリ後のプログラムをネイティブコードとも言う。

プログラミングを楽にしよう

ニーモニック

進化した集積回路は、複雑で長いプログラムを簡単に処理できるようになりました。しかし、複雑で長いマシンコードプログラムは、人間にとっては作成するのも解読するのも、より困難になります。これを解決するために、再びオペランドとオペコードを分けて考えることにします。

マシンコード
マシンコードプログラムの一部分の例

まず、データのマシンコード(オペランド)は2進数の数値です。10進数のデータを2進数にしたり、逆に2進数のデータを10進数にしたりは、人間にとってはややこしい作業ですが、機械的にできる作業ですので、自動変換機を作って解決できます。

<変換例>
2進数の01001101 ←(変換機)→ 10進数の77

しかし、論理回路を組み替えるためのマシンコード(オペコード) は、プロセッサの作りによって決まるものなので、 プロセッサの設計者が作成したマシンコード表と照らし合わせなけば、どのコードにどの計算回路が対応しているのか、わかりません。

そこで、論理回路を組み替えるためのマシンコードを、よりわかりやすい人間の言葉(英語)に置き換える試みがされました(1950年代~)。その言葉をニーモニック( mnemonic )と言います。mnemonic はギリシャ語で、“思い出させるもの”という意味です。

ニーモニックの例: 

  • データ入出力: mov移動, push積込, pop取出 など
  • 演算: add加算, sub減算, xor排他和 など
  • ジャンプ: jmp参照 など
  • コール/リターン: call呼出, ret戻す

オペコードとニーモニックは、1対1の対応関係で、相互に変換できるようになっています。

オペコード←変換→ニーモニック

正確には、上の例のような動作命令を表すニーモニック以外に、レジスタ参照などのオペランドに対応するニーモニックも存在します。
(下記「アセンブリ言語によるソースコードの例」を見てください。ebpやespなどがレジスタ参照です。)
よって通常は、動作命令を表すニーモニック単独で1つのオペコードに対応するというよりも、動作命令を表すニーモニックオペランドに対応するニーモニックとの組みの合わせによって、1つのオペコードが対応するようになっています。

アセンブリ

ニーモニックとオペコードとを変換するプログラムも作られました。ただ個々のニーモニックをオペコードに変換するだけよりも、同じ目的のためのニーモニックとデータ を数珠つなぎにし、ひとまとまりのマシンコードプログラムとしてメモリに入れるところまで、自動的にしてくれる変換プログラムにした方が実用的です。

アセンブリ

このようにひとまとまりのマシンコードプログラムを作る処理のことをアセンブリ([名詞]assembly)と言い、アセンブリを自動処理([動詞]assemble)するプログラムアセンブラ(assembler)と言います。

また、マシンコードの元となるプログラムソースコード(source code)と言います。アセンブリのソースコードは、ニーモニックとデータのセットを順序通りにリスト化したものになりますが、その独特の書き方を一つの言語としてとらえて表現したのがアセンブリ言語(assembly language)という呼び名です。

ソースコードに対して、アセンブリされた後のマシンコードプログラムネイティブコード(native code)とも言います。

assemble は「集結」、source は「源泉」、native は「元来」が元の意味です。

この記事のまとめ

二進数でわかりにくいマシンコードを、もっと分かりやすい英単語に置き換えたオペコードニーモニックと言います。ニーモニックで書かれたプログラムは、そのままではプロセッサで処理できないので、オペランドと合わせて、アセンブラで、マシンコードアセンブリしてから、実行します。
アセンブリ前のプログラムをソースコード、アセンブリ後のプログラムをネイティブコードと言います。

次は、オペレーティングシステム に進みましょう。

この記事は、絵でわかる プログラムとは何か(2)~翻訳と管理のプログラム~ の一記事です。

コンピューターのしくみ全体を理解したい場合は、以下の2コースがお勧めです。

日本全国 オンラインレッスン にも対応しています。

知りたいことだけ単発で聞きたい場合は、 オンラインサポート をご利用ください。

記事を検索

コメントを残す

*

CAPTCHA