トップQs
タイムライン
チャット
視点

GNUアセンブラ

ウィキペディアから

Remove ads

GNUアセンブラ(グヌーアセンブラ、: GNU assembler; GAS) はGNUプロジェクトによって開発されているアセンブラである。GNUコンパイラコレクションのデフォルトのバックエンドとして使用されており、GNUオペレーティングシステムLinuxカーネルのコンパイルにも使われる。Ver.2.5以降はGNU Binutilsパッケージの一部分である[2]

概要 開発元, 最新版 ...

Gasの実行ファイル名は as であり、Unix系システムでの標準的なアセンブラの実行ファイル名である。GASはクロスプラットフォームであり、様々なコンピュータ・アーキテクチャ上で動き、またそれらを対象にアセンブルすることができる。GNU General Public Licenseでライセンスされた自由ソフトウェアである。

Remove ads

歴史

GASの最初のバージョンは1986年から1987年にリリースされた[3]。これはディーン・エルスナー(Dean Elsner)によって書かれ、VAXアーキテクチャをサポートしていた[3]

一般的な構文

GASはサポートするアーキテクチャすべてで使用可能な一般構文を持つ。一般構文にはアセンブラ指示文やコメントも含まれる。デフォルトの構文はAT&A記法である。

ディレクティブ

GASはピリオドで始まるキーワードである、C言語プリプロセッサに似たアセンブラ指示文(疑似命令)を使用する。ほとんどのアセンブラ指示文はすべてのアーキテクチャを対象に使用できるが、一部機種依存のものもある[4]

バージョン2.10以降では、.intel_syntaxディレクティブを使用することでIntel記法を使用できる[5][6][7]

コメント

GASは2つのコメント形式をサポートしている。

複数行

Gasは、C言語と同様の「/*」「*/」で囲まれる複行コメントを実装している[8]

    movl %eax,%edx /* ここはコメント
                      改行の入った
                      説明文 */

単一行

単一行コメントには、アセンブル対象のアーキテクチャに応じていくつかの異なる形式がある。

Remove ads

記法

批判の一つに、x86x86-64といったアーキテクチャ上で一般的なインテル記法ではなく、AT&T記法を使用することが挙げられる。mov などの命令の引数の順番が逆になっている。

しかし、バージョン2.10[9]から追加された.intel_syntaxディレクティブにより、インテル記法もサポートされた[10][11]

利用

GNUアセンブラは、人気のコンパイラスイートであるGCCのバックエンドとして、オープンソースソフトウェア自由ソフトウェアのコンパイルに広く使用されている。GASは、他のGNUソフトウェアと組み合わせてLinuxオペレーティングシステム上のアセンブラとしてよく使用される。GASの修正されたバージョンは、macOS開発ツールパッケージにも含まれている。

プログラム例

IA-32上のLinux用の標準的な「Hello, world!」プログラムは以下のように実装される。

.global	_start  

.text  
_start:  
	movl  $4, %eax   # 4("write"システムコールのコード)-> EAXレジスタ  
	movl  $1, %ebx   # 1(標準出力のファイルディスクリプタ)-> EBX(システムコールの第1引数)  
	movl  $msg, %ecx # msg文字列の32ビットアドレス -> ECX(第2引数)  
	movl  $len, %edx # msg文字列の長さ -> EDX(第3引数)  
	int   $0x80      # 0x80(128)で割り込みを発生させ、カーネルのシステムコール処理を呼び出す  

	movl  $1, %eax   # 1("exit")-> EAX  
	movl  $0, %ebx   # 0(成功終了)-> EBX  
	int   $0x80      # 前述の通り  

.data  
msg:  
	.ascii  "Hello, world!\n" # インラインのASCII文字列  
	len =   . - msg           # (現在のアドレス - msgの開始アドレス)をシンボル"len"に代入
Remove ads

出典

関連項目

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads