プログラミング言語「アセンブリ」

アセンブリ
用途プログラミング
実行アセンブル
日本語
対応環境
入手さまざま

数だけで表される機械語を 人間に分かりやすい記号に置き換えて、プログラムを作るときに役立つ いくつかの機能を追加したものです。また、機械語は機械にとって読みやすい 「バイナリ形式」ですが、アセンブリのファイルは人間に読みやすい「テキスト形式」で 扱えるので、一般のテキストエディタで簡単に修正できます。

アセンブリは、当初、数で表される機械語の命令を文字で指定できるように したいという考えから生まれました。例えば、「6 + 2」を機械語で 次のように表すとします。

25 6 2

この場合、「次の 2 つの数を足せ」というのが (機械語の) 命令です。 この 3 つの数字をバイナリ形式で保存すれば、機械語プログラムの完成です。 しかし、これでは「足し算は 25」というように機械語の命令を覚えなければなりません。

そこでアセンブリでは 25 という機械語の命令に "add" といった名前を つけます ("add" は「足す」という意味の英単語です)。すると、 さきほどの足し算プログラムは次のように書けます。

add 6 2

これなら一目で「6 と 2 を足す」と意味が分かりますし、 「足し算は "add"」と覚えるのは「足し算は 25」よりはずっと楽でしょう。

もっとも、このようにアセンブリ言語で書いたプログラムは、 もはや数だけで構成される機械語ではなくなっていますから、そのままではコンピュータで 読み取って直接に実行することはできません、そこでアセンブリのプログラムから 機械語プログラムへの変換を行ってから実行することになります。 ただ、この変換は難しくはありません。さきほどの例で言えば、 "and" を 25 に戻せばいいだけです。

この変換作業 (アセンブルといいます) は、機械語とアセンブリの対応表があれば 手作業で行うこと (ハンドアセンブル) も可能です。とはいっても、地道な作業なので 誰でも楽しめるとはいえませんし、規模の大きなプログラムでは 膨大な時間と労力がかかります。そこで、自動的に変換するプログラム (アセンブラ) が 使われます。「機械語でプログラミングする」といった場合にも、アセンブリでの プログラミングを指すのが普通です。

変換プログラムであるアセンブラは、時代が進むとどんどん改良されていきました。 対応表に従って変換するだけでなく、プログラムでよく使う「言い回し」を 登録して、新しいアセンブリ命令 (機械語命令ではありません) を定義できる 「マクロ」や、アセンブリプログラムの一部をアセンブル時には無視させる 「コメント」といった機能が追加されました。

アセンブリは機械語の「コンピュータの種類ごとに違う」という特徴を 受け継いでいます。アセンブラごとの機能の違いもありますから、そういう意味では やはり「学んでも報われない言語」かもしれません。しかし、機械語に非常に近いレベルで プログラムが作成できるアセンブリでは、他の多くのプログラミング言語に つきまとう実行時の効率の低さを避けることができます。プログラミング言語の 種類やプログラム作成者のウデ、実行する内容にもよりますが、 別のプログラミング言語で書かれていたプログラムをアセンブリで作り直したら 数倍から数十倍も効率がよくなったという例も決して珍しくありません。

とはいえ、アセンブリでソフトウェア全体を作成するのが大変であることには 変わりなく、「全体としては C 言語で作り、とくに効率が重要な部分を アセンブリで作る」といったように、他の言語と組み合わせて使われることが 多いようです。

アセンブリ関連の主なサイト

このほかにもご存知の方は、ご一報ください



Presented by 夏鰯 <sardine@toyfish.net>