| 開発者 | エリック・アイザックソン |
|---|---|
| 安定版リリース | 4.05 / 2000年1月14日 |
| オペレーティング·システム | MS-DOS |
| プラットフォーム | 86 の |
| タイプ | アセンブラ |
| ライセンス | 独自 |
| Webサイト | eji.com/a86 |
A86はMS-DOS用のアセンブラで、 Intel x86ファミリのマイクロプロセッサ用の 16 ビット コードを生成します。Eric Isaacson によって作成され、 1986 年 6 月にシェアウェアとしてリリースされました。アセンブラは 1 つの 32K 実行ファイルに収められており、標準リンカで使用するためのCOM ファイルまたはオブジェクト ファイルを直接生成できます。デバッガD86が付属しています。[1] [2]アセンブリの速度が主なセールス ポイントであり、Isaacson は A86 がPentium II以上で 1 秒あたり 100,000 行のソースをアセンブルできると主張しました。[3] Isaacson は 1990 年代半ばにA386とD386の形で32 ビットサポートを追加しました。[1] [2]これらはシェアウェアとして配布されたのではなく、A86 を登録したユーザに提供されました。
A86 と A386 は、予想される x86 構文をサポートしていますが、Microsoft Macro Assemblerやその他の同世代のアセンブラーが依存する、、、などのディレクティブを必要としません。A86 と A386 には、 他のアセンブラーと互換性のないマクロとローカル ラベルのカスタム構文があります。また、より簡潔なソース コードを可能にするさまざまな構文の調整もあります。
ASSUMESEGMENTPROC
A86ファミリーの製品はMicrosoft Windowsに移植されたことはないが、A386で作成されたオブジェクトファイルをWindowsリンカーで使用することは可能である。 [4]アセンブラは64ビットコードをサポートしていない。
A86特有の機能
1 文字の後に 1 つ以上の数字が続くラベルはローカルであり、必要に応じて再定義できます。各定義は前の定義を置き換えます。マニュアルでは、通常のコードにはL1through を使用し、マクロではthrough を使用することを推奨しています。ローカル ラベルへの分岐は後方であると想定されますが、ラベル参照の前に大なり記号 (例) を付けることで前方分岐を指定できます。
L9M1M9>L2
ゼロで始まる数字は、"0x"や"$"などの接頭辞は使用せず、 などの16進数で表します。末尾の"K"はキビバイトを示します。[5]は16*1024または16384と同じです。
00FF 16K
複数のレジスタを同じソース ラインにプッシュまたはポップできます。3つのオペランドpush eax, edx, ebpごとに 1 つの命令を生成します。
単一の命令を条件付きで実行するための省略形があります。if z mov ax,bx条件付き分岐とそれに続く移動の 2 つの命令を出力します。
retが条件分岐のラベルとして指定されている場合、8 ビットの分岐範囲内の戻り命令が自動的にターゲットになります (例: jz ret)。
マクロは、同時代のアセンブラとは異なる構文を使用します。
コードフィンガープリント
アセンブラは、機能的に同等である特定の命令エンコーディングを使用するように設計されているが、これらを組み合わせると、実行ファイルに埋め込まれた指紋が作成されます。これは、マニュアルの法的用語のセクションで説明されています。指紋により、コードがA86でアセンブルされたかどうかを確認したり、アセンブラの登録バージョンと未登録バージョンを区別したりすることができます。この分析には、ソースコードへのアクセスが必要です。[6]
参考文献
- ^ ab Isaacson, Eric (2008). 「A86/A386 アセンブラと D86/D386 デバッガ」。2008 年 7 月 2 日時点のオリジナルよりアーカイブ。2008 年 7 月 2日閲覧。
- ^ ab Randall Hyde. 「Which Assembler is the Best?」。2008年5月15日時点のオリジナルよりアーカイブ。2008年5月18日閲覧。
- ^ アイザックソン、エリック (2006)。「A86/A386 と D86/D386 の機能」。
- ^ アイザックソン、エリック (2006)。「A386 と Win32 プログラミング」。
- ^ Hague, James (2008 年 7 月 20 日)。「キロバイト定数、普及していないシンプルで美しいアイデア」。21世紀のプログラミング。
- ^ El-Khalil, Rakan; Keromyti, Angelos D. (2004). 「Hydan: プログラムバイナリ内の情報の隠蔽」(PDF)。Lopez, Javier、Qing, Sihan、Okamoto, Eiji (編)。情報通信セキュリティ: 第 6 回国際会議、ICICS 2004、スペイン、マラガ、2004 年 10 月 27 ~ 29 日: 議事録。Lecture Notes in Computer Science。第 3269 巻。Springer。p . 190。ISBN 3-540-23563-9。
