この記事は、絵でわかる プログラムとは何か(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コースがお勧めです。
日本全国 オンラインレッスン にも対応しています。
知りたいことだけ単発で聞きたい場合は、 オンラインサポート をご利用ください。