2021.10.07ブログ
マシン語、アセンブリ言語、そして高級言語へ
皆様、こんにちは。代表の小林です。今まで何回かに分けてコンピュータについて解説記事を書いています。(コンピュータは0、1で計算をする?、コンピュータで扱うデータ、コンピュータで扱う色情報、コンピュータで数値をどうやって表す?、コンピュータで扱う文字情報)今回は、マシン語とアセンブリ言語、そして高級言語について書いていきます。
マシン語
マシン語というのは、その名の通り機械の言葉という意味です。英語では、machine language といいます。コンピュータが読み取るプログラムそのもののことをマシン語と呼びます。コンピュータの命令や計算させるためのデータなどを0と1の並びで表現しこれを記述していきます。初期の頃のプログラミング言語は、人間がマシン語を直接書くという時代がありました。コンピュータに読み取らせるために、0と1のデータの並びを一つずつ間違えることなく書かなくてはならず、大変労力のいる作業でした。
アセンブリ言語
そこで生まれたのがアセンブリ言語(Assembly language)です。これはコンピュータのマシン語の命令に対して、一対一で名前を割り当てて、その名前を使って記述する方法です。名前のことをニーモニックと呼んでいます。例えば、足し算であれば ADD、掛け算であればMULなどと行った具合に名前をつけます。そして、レジスタ1にあるデータと、レジスタ2にあるデータを足し算し、レジスタ1に書き戻すといった処理を、
ADD R1, R2, R1
といった感じで書き表すわけです。これをアセンブラと呼ばれるアセンブリ言語からマシン語に変換するソフトウェアを使って変換することで人間が0,1の数字とにらめっこしなくてもプログラムを作ることができるようになりました。アセンブラができる前は、アセンブリ言語から手で変換していました。ハンドアセンブリなどと呼んでいました。
高級言語
アセンブリ言語の登場で0,1のにらめっこからは開放されたのですが、実はCPUごとにマシン語が異なっているため、マシンが変わるとプログラムを1から書き直さなければならないという重大な問題が起きていました。マシンを新しくして速いマシンで仕事ができて幸せになると思いきや、プログラムを書き直さないと動かない、なんてこともしばしばあったのです。この問題を解決するために、マシンに依存しない言語で書きたいという欲求が生まれてきました。ここで開発されたのが高級言語(High level language)です。Fortran や C など今でも使われる言語が開発され、これを使ってプログラムを作ることができるようになりました。この高級言語をアセンブリ言語に変換するのがコンパイラです。みなさんがプログラムを作るときに、コンパイラを使うといきなりマシン語の実行形式が出来上がりますが、裏側では、アセンブリ言語に変換し、それをマシン語に変換して作るというフローを経ています。これでプログラムを書く効率が飛躍的に上がり、CPU間の差異を(あまり)気にしなくても良くなったというわけです。
まとめ
今回は、プログラミング言語につながる、マシン語、アセンブリ言語、高級言語について書いてみました。裏側の仕組みを知っておくと、動作をイメージしやすくなるので理解しておくと良いと思います。ご参考にしてください。
プログラミングを学ぶなら「ドクターコード」
ドクターコードはタイムレスエデュケーションが提供しているオンラインプログラミング学習サービスです。初めての方でもプログラミングの学習がいつでもできます。サイト内で質問は無制限にでき、添削問題でスキルアップ間違いなしです。ぜひお試しください。