ピクシブ百科事典は2024年5月28日付でプライバシーポリシーを改定しました。改訂履歴

アセンブラ

あせんぶら

アセンブリ言語で記述されたソースコードをコンピュータが実行できるように変換するソフトウェア(コンパイラ)。
目次 [非表示]

曖昧さ回避編集


この記事ではコンピュータ用語の「アセンブラ」および「アセンブリ言語」を中心に、関連する概念である「機械語」や「逆アセンブラ」を含めて解説する。


アセンブリ言語とアセンブラ編集

アセンブリ言語は、CPU等のハードウェアを直接制御する「機械語」(後述)と、1対1で対応するプログラム言語。今日(こんにち)一般的に用いられる高級言語に対し、低級言語というカテゴリに分類される。これをコンピュータが直接解釈・実行できる「オブジェクトコード」に変換するのが「アセンブラ」である。


歴史編集

コンピュータの性能が低かった昔は、限られたハードウェアから少しでも性能を引き出すためにアセンブラがよく使われ、アセンブリ言語で書いたソースコードを見ながら機械語を手作業で打ち込む(ハンドアセンブル)ことすらあった。


黎明期のパソコンBASIC言語を標準搭載していたが、機能が限られている上に動作が遅かったので、ハードウェアを直接弄れる(画面操作やI/O直接操作などの独自拡張が行われたBASICもあったが)アセンブラが重宝された。「インラインアセンブラ」といってBASICにアセンブリ言語を混ぜて書くことができる処理系もあった。


しかし、ハードウェアの高性能化とプログラムの複雑化によって、アセンブリ言語ではコーディングが煩雑になる(後述)という欠点が目立つようになり、使われる範囲が狭まっていった。


現在編集

今日のCPUは、機械語自体が高級言語前提に設計されている事も多く、パソコンや大規模システムの開発ではアセンブリ言語はまず使われない。しかし、組み込みシステムの世界では過去の資産の保守をする必要もあり、過去より大分狭まっているとはいえまだアセンブラの知識が求められる局面がある(C言語やC++はインラインアセンブラにも対応している)。基本情報技術者試験でもプログラミングの問題でアセンブラの選択ができる(出題されるのはCOMETⅡという仮想マイクロプロセッサの仕様に基づいたCASLⅡという言語である)。また、CPUの挙動を深く理解したいPCユーザー向けに、現在でもx86x64のアセンブラの入門書が出ている。


GPUなどCPU以外のマイクロプロセッサも機械語を持つが、多くはその仕様を公開しておらず(API経由での利用が前提で、開発者がハードウェアを直接触れないようにしている)、アセンブリ言語でのコーディング自体ができない。ただし、NVIDIAはハードウェアを抽象化した擬似アセンブラPTXを提供している。


長所編集

  1. 高級言語で書かれたプログラムと比べて(上手に組めば)動作が速い。
  2. 高級言語で書かれたプログラムと比べて(上手く組めば)実行コードが小さい。
  3. ハードウェアの直接的な挙動が理解し易い。

1.と2.は高級言語前提に設計されたチップにはあてはまらない場合もある。

短所編集

  1. ハードウェアごとに命令体系が異なり、互換性が無い。
  2. 基本的に1つの命令語では単純な動作しか出来ない。簡単な処理でも、複数の命令文を組み合わせる必要がある。
  3. 可読性が低い。ハードウェアの仕様を深く理解していない人間にはコードを読んでも理解が困難であり、後の保守のために丁寧なコメントを残しておく必要性は、高級言語以上に高い。

機械語編集

ハードウェアに対する命令を16進数で記述したもの。16進数は、さらに2進数であるオブジェクトコードに対応し、最終的に電圧の高低に対応する。機械(主にCPU)は、入力電圧を基準値と比べ、出力電圧を変化させる事で、プログラムに沿った処理を実行する。つまりアセンブラとは、電圧の高低そのものを「2進数→16進数→英単語」の順に、単純に置き換えたものと言える。


逆アセンブラ編集

オブジェクトコードをアセンブリ言語に変換するソフトウェア。ソースコードが公開されていないプログラムの解析などに用いられる。


関連タグ編集

プログラミング言語 プログラム CPU プログラマ ソフトウェア

関連記事

親記事

プログラミング言語 ぷろぐらみんぐげんご

兄弟記事

pixivに投稿されたイラスト pixivでイラストを見る

このタグがついたpixivの作品閲覧データ 総閲覧数: 900

コメント

問題を報告

0/3000

編集可能な部分に問題がある場合について 記事本文などに問題がある場合、ご自身での調整をお願いいたします。
問題のある行動が繰り返される場合、対象ユーザーのプロフィールページ内の「問題を報告」からご連絡ください。

報告を送信しました

見出し単位で編集できるようになりました