見出し画像

機械語、アセンブラ、C言語……組み込み設計で使われるプログラミング言語  ~USE Inc.的技術用語解説 vol.4

組み込み設計から完成品開発までこなすモノづくり企業、株式会社ユー・エス・イー(USE Inc.)。組み込みやマイコン、ソフト開発においての専門的な技術用語を解説します。


CPUが理解できる「マシン語(機械語)」とそれに近い「アセンブリ言語」

組み込み機器は、内蔵されたマイコンがプログラムを実行することによって動作を制御し、目的とした機能を果たすようになっているのはご存じの通りです。そのプログラムはマイコンに内蔵されたCPUが理解することができる「マシン語(機械語)」と呼ばれるデータや情報を0と1の2進数で表現したバイナリ形式の命令コードで記述されています。

ただ、0と1のみが並んだマシン語を読み書きするというのは不可能と言っていいほどの難易度。そのため、他のプログラミング言語を使用してプログラムを作成し、それをマシン語に変換したものをCPUに実行させるという形をとることがほとんどです。

アセンブリ言語(アセンブラ)ではマシン語の命令をニーモニックと呼ばれるアルファベットや記号で表現します。マシン語に近い言語ですが、より人間に理解しやすくなっています。例えば、マシン語では「00110000 01100001」といったバイナリコードで表現される命令が、アセンブリ言語では「MOV AL, 61h」といった英単語や数字を元にした文字列や記号で表現されます。0と1が並んだマシン語よりも幾分理解しやすくなってはいますが、CPUやコンピュータ全般の仕組みに関する知識は必要です。アセンブリ言語とマシン語は、相互に関連しており、アセンブリ言語は機械語の理解や記述をより容易にするための中間の言語として使用されます。

アセンブリ言語によって記述されたプログラムは、アセンブラと呼ばれるプログラムを用いてマシン語に変換することで、実際にCPUに実行させる形を取ります。アセンブリ言語で記述されたコードを解釈し、対応するマシン語のバイナリコードを生成するのがアセンブラの役割というわけです。


「MOVE」「ADD」「COMPARE」等、アセンブリ言語では元になった英単語が推測できる形でプログラムの内容が表記される部分も多いためバイナリ形式よりも理解しやすい。

主流は人間が理解しやすく便利な「C言語」

人間にとっては理解しにくい「低級(低水準)プログラム言語」に分類されるマシン語(とそれに対応したアセンブリ言語)は、コードの記述が非常に煩雑で手間がかかる部分があります。そのため、プログラムの開発には人間が理解しやすい形でコードを記述できる「高級(高水準)プログラム言語」が一般的に使用されます。

高級プログラム言語を使用することで可読性は向上し、プログラムの開発がも容易で効率的になります。これらの高級プログラム言語で作成されたプログラムもそのままではCPUは理解できず命令を実行させることはできないため、マシン語に変換してコンピューターに実行させるという形をとります。

「C言語」は、プログラマーにとって相対的に抽象的で読み書きが容易で理解しやすい形で記述できる高級プログラム言語の一つ。C言語は手続き型プログラム言語であり、手続き(関数)を用いてプログラムのロジックを記述します。

ソフトウェアの可搬性(移植性)とは、ある環境やプラットフォームから別の環境やプラットフォームに、比較的容易に移植できる性質を指します。C言語はその可搬性の高さを持っていることも特徴で、システムプログラミングからアプリケーション開発、組み込みシステムまで、さまざまな領域で広く利用されています。

C言語のプログラムはコンパイラと呼ばれるプログラムによって機械語に変換(コンパイル)を行い、生成された実行可能ファイル(バイナリファイル)をCPUで実行させます。コンパイルによって機械語に変換されたC言語で記述されたプログラムは、実行速度が高く効率的です。

USE.Incの組み込み開発でも、現在はC言語が使用されることがほとんどです。ただ、今もごく限られた状況ではありますがデータ保存領域の確保や、実行速度を求めてアセンブリ言語が選択されるケースもあり、まったく使われないというわけではありません。


USE Inc. お問合せ先
https://www.use-inc.co.jp/contact/

USE Inc. 採用情報 \プログラミング言語を習得したいエンジニア募集中/
https://www.use-inc.co.jp/recruit/

この記事が気に入ったらサポートをしてみませんか?