| FASM | |
|---|---|
提供された例のスクリーンショット | |
| 開発者 | トマシュ・グリシュタル |
| 初回リリース | 2000年3月 (2000-03) |
| 安定版リリース | |
| リポジトリ | |
| 書かれた | 組み立て |
| オペレーティング·システム | Unix 系、Linux、Windowsと IDE、MS-DOSと IDE、OpenBSDなど、MenuetOS、KolibriOS、OctaOS、 DexOS と IDE、SkyOS、Solar_OS |
| プラットフォーム | x86、x86-64 |
| タイプ | アセンブラ |
| ライセンス | 弱いコピーレフト条項を持つ簡易BSD |
| Webサイト | フラットアセンブラー |
FASM(フラットアセンブラ)は、x86プロセッサ用のアセンブラです。IA -32およびx86-64コンピュータアーキテクチャ上でIntelスタイルのアセンブリ言語をサポートしています。高速性、サイズ最適化、オペレーティングシステム(OS)への移植性、マクロ機能を備えています。[ 2 ] [ 3 ] FASMは低レベルアセンブラであり[ 3 ] 、意図的にコマンドラインオプションを非常に少なくしています。無料のオープンソースソフトウェアです。
FASMの全バージョンは、以下のいずれかを直接出力できます。フラットな「生の」バイナリ(MS-DOS COM実行ファイルまたはSYSドライバとしても使用可能)、オブジェクト:実行可能およびリンク可能形式(ELF)または共通オブジェクトファイル形式(COFF)(従来型またはMS固有)、あるいはMZ、ELF、またはポータブル実行可能形式(PE)の実行ファイル(WDMドライバを含む、カスタムMZ DOSスタブも可能)。ARMアーキテクチャを対象とした非公式移植版も存在します。[ 4 ]
このプロジェクトは、1999年にポーランド出身の数学学部生だったTomasz Grysztar(別名Privalov)によって開始されました。2000年3月に公開されました。[ 5 ] [ 6 ] FASMは完全にアセンブリ言語で記述されており、完全なソースコードが付属しています。バージョン0.90(1999年5月4日)以降、セルフホスティングが可能で、自己アセンブルが可能です。
FASMは当初、16ビットのフラットリアルモードで動作していました。32ビットサポートが追加され、その後オプションでDPMIサポートが追加されました。フラットな32ビットアドレス指定を持つあらゆるオペレーティングシステムに容易に移植できるように設計されており、Windows、そしてLinuxにも移植されました。
FASMはMASMやTASMほど多くの高水準文をサポートしていない。[ 3 ]構文機能とマクロが提供されており、不足している文をカスタマイズしたり作成したりすることができる。[ 5 ]メモリアドレス指定構文はTASMの理想モードやNASMに似ている。両方のアセンブラと同様に括弧はメモリオペランドを示すために使用されるが、そのサイズはNASMと同様に括弧の外側に置かれる。[ 7 ]
FASMはマルチパスアセンブラです。コードサイズの最適化を徹底的に行い、制約のない前方参照を可能にします。[ 3 ] [ 7 ] FASMの珍しい構造の一つは、コード内のどこかで使用されている場合にのみ手続きを定義することです。これは、ほとんどの言語ではリンカー によってオブジェクトごとに実行されます。
FASMは「同一ソース、同一出力」の原則に基づいています。つまり、結果ファイルの内容はコマンドラインの影響を受けません。[ 7 ]このアプローチにより、FASMソースは多くのアセンブリプロジェクトでよく見られるコンパイルの問題から解放されます。一方で、複数の別々にコンパイルされたソースファイルや混合言語プロジェクトで構成されるプロジェクトの保守は困難になります。しかし、この問題を軽減するFAと呼ばれるWin32ラッパーが存在します。[ 8 ] FASMプロジェクトは、リンク段階なしで1つのソースファイルから直接実行ファイルにビルドできます。[ 3 ]
Freshはジョン・ファウンドが始めたプロジェクトで、WindowsとLinux上で動作するFASMの統合開発環境です。 [ 9 ]
FASM で記述されたオペレーティング システム:
FASM をバックエンドとして使用するコンパイラ: