歴史
FASM
FASM ( フラット アセンブラー )は、x86プロセッサー用のアセンブラーです。 IA-32およびx86-64コンピューターアーキテクチャでIntelスタイルのアセンブリ言語をサポートします。高速、サイズの最適化、オペレーティングシステム(OS)の移植性、およびマクロ機能を主張しています。これは低レベルのアセンブラーであり、意図的にごく少数のコマンドラインオプションを使用します。無料のオープンソースソフトウェアです。
FASMのすべてのバージョンは、次のいずれかを直接出力できます:フラット「raw」バイナリ(DOS COM実行可能ファイルまたはSYSドライバーとしても使用可能)、オブジェクト:実行可能およびリンク可能形式(ELF)または共通オブジェクトファイル形式(COFF)(クラシックまたはMS固有)、またはMZ、ELF、またはPortable Executable(PE)形式のいずれかの実行可能ファイル(WDMドライバーを含む、カスタムMZ DOSスタブが可能)。 ARMアーキテクチャ(FASMARM)を対象とした非公式の移植版も存在します。
歴史
プロジェクトは、その時点で、トマシュGrysztar、別名Privalovによって1999年にポーランドからの数学の学部学生を開始しました。 2000年3月に公開されました。FASMは完全にアセンブリ言語で記述されており、完全なソースが付属しています。自己ホスト型であり、バージョン0.90(1999年5月4日)以来、自らを組み立てることができました。
FASMはもともと16ビットのフラットリアルモードでのみ実行されていました。 32ビットのサポートが追加され、オプションのDPMIサポートが追加されました。フラットな32ビットアドレス指定が可能なオペレーティングシステムに簡単に移植できるように書かれています。 Windowsに移植され、次にLinuxに移植されました。
設計
FASMは、MASMまたはTASMほど多くの高レベルのステートメントをサポートしていません。不足しているステートメントをカスタマイズまたは作成できる構文機能とマクロを提供します。そのメモリアドレス構文は、TASMの理想モードとNASMに似ています。ブラケットは、両方のアセンブラーと同様にメモリオペランドを示すために使用されますが、NASMのように、サイズはブラケットの外側に配置されます。
FASMはマルチパスアセンブラーです。広範なコードサイズの最適化を行い、制約のない前方参照を可能にします。異常なFASM構造は、コードのどこかで使用される場合にのみプロシージャを定義します。ほとんどの言語では、オブジェクトごとにリンカによって実行されます。
FASMは「同じソース、同じ出力」の原則に基づいています。結果のファイルの内容はコマンドラインの影響を受けません。このようなアプローチにより、FASMソースは、多くのアセンブリプロジェクトでしばしば発生する問題をコンパイルすることから節約されます。一方、個別にコンパイルされた複数のソースファイルまたは混合言語プロジェクトで構成されるプロジェクトを維持することは難しくなります。ただし、この問題を軽減するFAと呼ばれるWin32ラッパーが存在します。 FASMプロジェクトは、リンクステージなしで1つのソースファイルから実行可能ファイルに直接ビルドできます。
IDE
John Foundによって開始されたインターネットコミュニティ支援プロジェクトであるFreshは、FASMの統合開発環境です。 Freshは現在、Microsoft WindowsおよびLinuxをサポートしています。
つかいます
FASMで記述されたオペレーティングシステム:
- DexOS – Craig BamfordとDexOSコミュニティによる
- MenuetOS – Ville Turijanmaaによる32ビットおよび64ビットGUIオペレーティングシステム
- KolibriOS
FASMをバックエンドとして使用するコンパイラ:
- PureBasic
- 高レベルアセンブリ(HLA)
- ブリッツマックス