| 原作者 | サイモン・タサム、ジュリアン・ホール |
|---|---|
| 開発者 | H. ピーター アンビン、チャン ソク ペ、ジム ククナス、フランク B. コトラー、キリル ゴルチュノフ |
| 初回リリース | 1996年10月 |
| 安定版リリース | 2.16.03 [1]
/ 2024年4月17日 |
| リポジトリ |
|
| 書かれた | アセンブリ、C [2] |
| オペレーティング·システム | Unix 系、Windows、OS/2、MS-DOS |
| 利用可能 | 英語 |
| タイプ | x86 アセンブラ |
| ライセンス | BSD 2節 |
| Webサイト | ホームページ |
Netwide Assembler ( NASM ) は、Intel x86アーキテクチャ用のアセンブラおよび逆アセンブラです。16ビット、32 ビット( IA-32 )、64 ビット( x86-64 ) のプログラムの作成に使用できます。Linuxおよびx86 チップ用の最も人気のあるアセンブラの 1 つと考えられています。[3]
もともとはSimon TathamがJulian Hallの協力を得て書いたものです。2016年現在、 H. Peter Anvin[update]が率いる小規模なチームによってメンテナンスされています。[4]これは、簡易型(2条項) BSDライセンスの条件に基づいてリリースされたオープンソースソフトウェアです。[5]
特徴
NASMはCOFF、OMF、a.out、ELF(実行可能およびリンク可能形式)、 Mach-O、バイナリファイル(.bin、バイナリディスクイメージ、オペレーティングシステムのコンパイルに使用される)など、いくつかのバイナリ形式を出力できますが、位置独立コードはELFオブジェクトファイルでのみサポートされています。また、RDOFFと呼ばれる独自のバイナリ形式もあります。[6]
多様な出力形式により、プログラムを事実上あらゆるx86オペレーティングシステム(OS)に再ターゲットすることができます。また、ブートローダ、読み取り専用メモリ(ROM)イメージ、およびOS開発のさまざまな側面の書き込みに使用できるフラットバイナリファイルも作成できます。[6] PowerPCやSPARCなどのx86以外のプラットフォームでもクロスアセンブラとして実行できますが、これらのマシンで使用できるプログラムを生成することはできません。
NASMはAT&T構文の代わりにIntelアセンブリ構文の変形を使用します。[7]また、 MASMや互換アセンブラで使用されるセグメントオーバーライドの自動生成(および関連するASSUMEディレクティブ)などの機能も回避します。[6]
発達
NASMバージョン0.90は1996年10月にリリースされました。[5]
バージョン2.00は2007年11月28日にリリースされ、x86-64拡張機能のサポートが追加されました。[4]開発バージョンはSourceForge.netにアップロードされていませんが、プロジェクトのWebページからバイナリスナップショットを入手してGitHubにチェックインしています。
2009 年 7 月、バージョン 2.07 の時点で、NASM は Simplified (2-clause) BSD ライセンスの下でリリースされました。以前はLGPLの下でライセンスされていたため、 New BSD Licenseの下で完全に書き直された Yasm の開発につながりました。Yasm は NASM よりも早く x86-64 のサポートを提供しました。また、GNU アセンブラ構文のサポートも追加されました。
RDOFF
再配置可能な動的オブジェクト ファイル形式 (RDOFF) は、開発者が NASM のオブジェクト ファイル出力機能の整合性をテストするために使用されます。これは NASM の内部構造に大きく基づいており、[8]基本的には出力ドライバ関数呼び出しのシリアル化を含むヘッダーと、それに続く実行可能コードまたはデータを含むセクションの配列で構成されます。リンカーやローダーなど、この形式を使用するためのツールは、NASM ディストリビューションに含まれています。
1996年10月にバージョン0.90がリリースされるまで、NASMはフラット形式の実行可能ファイル(DOS COMファイルなど)の出力のみをサポートしていました。バージョン0.90では、Simon Tathamがオブジェクトファイル出力インターフェースと、16ビットコード専用のDOS .OBJファイルのサポートを追加しました。[9]
そのため、NASMには32ビットのオブジェクト形式がありませんでした。この不足を補うため、またオブジェクトファイルインターフェースを学ぶための練習として、開発者のJulian HallはRDOFFの最初のバージョンを作成し、NASMバージョン0.91でリリースしました。[9]
この最初のバージョン以来、RDOFFフォーマットには1つの大きなアップデートがあり、各ヘッダーレコードにレコード長インジケータが追加され、[10]プログラムが認識できないフォーマットのレコードをスキップできるようになり、複数のセグメントがサポートされました。RDOFF1では、テキスト、データ、bss(初期化されていないデータを含む)の3つのセグメントのみがサポートされていました。 [8]
RDOFF形式は強く推奨されておらず、NASM 2.15.04以降では無効になっています。[11]
参照
参考文献
- ^ “リリース 2.16.03”. 2024年4月17日. 2024年4月23日閲覧。
- ^ 「NASM、Netwideアセンブラー」。GitHub。2021年10月25日。
- ^ Ram Narayan. 「Linux アセンブラ: GAS と NASM の比較」IBM。2013 年 10 月 3 日時点のオリジナルからのアーカイブ。Linux
で最も人気のある 2 つのアセンブラ、GNU アセンブラ (GAS) と Netwide アセンブラ (NASM)
- ^ ab 「The Netwide Assembler」 。2008年6 月 27 日閲覧。
- ^ ab 「NASMバージョン履歴」。2019年8月3日閲覧。
- ^ abc 「NASMマニュアル」。2009年2月23日時点のオリジナルよりアーカイブ。2009年8月15日閲覧。
- ^ Randall Hyde . 「NASM: The Netwide Assembler」。2010年9月12日時点のオリジナルよりアーカイブ。 2008年6月27日閲覧。
- ^ ab 「NASMマニュアルCh.6」。2008年6月27日閲覧。
- ^ ab "NASM CVS". 2008年6月8日. 2008年6月27日閲覧。
- ^ "V1-V2.txt". 2002年12月4日. 2008年6月27日閲覧。
- ^ 「再配置可能な動的オブジェクト ファイル形式 (非推奨)」。
さらに読む
- ジェフ・ダンテマン (2000)。アセンブリ言語ステップバイステップ。J Wiley and Sons。ISBN 0-471-37523-3。
外部リンク
- 公式サイト
- SourceForgeの Netwide アセンブラ
- Win32 および BeOS 用の特別版。
- IBMにおけるGASとNASMの比較
- 「Netwideアセンブラ」。Freecode 。: アセンブラNASMとGASのソースフォーマット間のコンバータ
