アセンブラ(英語:Assembler)をわかりやすく言うと、
プログラミング言語を機械語に翻訳するアプリ
のこと。
訛った言い方でアッセンブラとも言う。
また、語尾を伸ばしてアセンブラー(アッセンブラー)とも記載される。
具体的には、人間(プログラマー)とマシン(CPU)との橋渡し的な役割を果たす。
パソコンなどの電子機器のCPUは、オブジェクトコード(いわゆる機械語(マシン語))による命令で動く。
しかし、マシン語は極めて単純な英数字の羅列であり、一般の人間がそれを見ても理解することが非常に難しい。
そこで、人間に理解しやすいプログラム言語で書いたプログラムをマシン語に翻訳すればいいということで、専用のアプリケーションソフトが開発された。
それこそが、アセンブラである。
もちろん、アセンブラを扱うためには、専用のプログラミング言語、すなわちアセンブリ言語を学ぶ必要がある。
余計な手間がかかると思われがちだが、機械語を学ぶよりも、アセンブリ言語を学んだ方が遥かに楽で理解しやすい。
なので、アセンブラを使うためのアセンブリ言語を学んだ方が別のアセンブラへの汎用が利き、時間的にも遥かに効率がいいのである。
アセンブラのアプリケーションソフトウェアとしては、以下のものがメジャーである。
- GNU(グニュー)Assembler (通称:gas)
Linux系OSのコンパイラのバックエンドで使用されるアセンブラ。
Ver.2.5以降では、GNU Binutils※ パッケージの一部分として同梱されている。
(※様々なオブジェクトフォーマットのファイルを扱うプログラミングツールの一種。)
- Microsoft Macro Assembler (通称:MASM)
x86系プロセッサ用のアセンブラ。
現在は最新のVisual C++に同梱されており、単体ではリリースされていない。 - 情報処理技術者試験用アセンブラ CASL (通称:キャッスル)
CCaslII、javaCASL、LinuxCasl、openCASLなどの派生ソフトがある。
ちなみに、アセンブラの逆の機能、マシン語を読み取ってアセンブリ言語のソースコードに翻訳するアプリを逆アセンブラ(ディスアセンブラ)と呼ぶ。
このアプリケーションソフトによって、CPUがどのような命令(プログラム)で動いていたかを知ることが可能になる。
ただし、元のソースコードと全く同じに翻訳できるワケではなく、あくまでも、CPU内で動いていたマシン語を直接翻訳できるだけに過ぎない。
例えば、自分が作ったアッセンブリのプログラムをアッセンブラにかけてCPUで実行し、同時にそれを逆アッセンブラで翻訳しても、元通りの記述にならない。
(CPUから翻訳したソースはそのままアッセンブラで使えるが。)
それは、変数名、シンボル名、改行、スペースなどの冗長な記述は、アセンブラでマシン語に翻訳した際に失われてしまうからだ。
よって、逆アセンブラを使えば、
どんなプログラムで命令を実行していたかが判り、それを応用して別の似たようなプログラムを作成することが可能だが、元のソースプログラムをそのまま複製するには至れない。
関連項目