私は探していたマズムUbuntu用のコンパイラです。開発ツールはすべてUbuntuに移行しました。現在MASMのクラスを受講しており、MASMコンパイラがどうしても必要です。YouTubeの動画ほとんどの場合、DOS エミュレータが使用され、そこに MASM コンパイラがインストールされます。私はこのようなものを見るのがあまり好きではありません。
私が探しているのは次のものです:
理想的には、プログラムのトラブルシューティングを行うためのログがいくつかあると便利です。
グラフィカル ユーザー インターフェイスはプラスですが、必要ありません。
コンパイラは Windows のエミュレーションではない方がよいでしょう (WineHQ を使用する必要はありません)。
現在、私は Sublime Text を MASM パッケージとともに使用しているため、IDE は必要ありませんが、お持ちのソリューションが IDE である場合は、Visual Studio の軽量な代替品などでも問題ありません。
このような状況では、どのような MASM コンパイラが適しているでしょうか?
答え1
Google ページには多くの代替案がリストされており、また、なぜ jwasm がこれらよりも優れているのかが示されています。以下は Google コード ページからの直接コピーなので、適切な提案が得られ、代替プログラムが見つかります。どれが自分に合っているかを判断するには、それらを試してみる必要があります。JWasm は Linux で動作しますが、他のすべては動作しない可能性があります。
ジェイワスム
特徴
- 無料。
- 出力形式 Intel OMF、MS Coff (32 ビットおよび 64 ビット)、Elf (32 ビットおよび 64 ビット)、Bin、および DOS MZ のネイティブ サポート。
- コンパイル済みの JWasm バイナリは、DOS、Windows、Linux で利用できます。OS/2 および FreeBSD の場合は、makefile が提供されます。
- SSE4.2までの命令がサポートされています。
- JWasm は C で書かれています。ソースは移植可能で、Open Watcom、MS VC、GCC などでテスト済みです。
- JWasm のソース コードは Sybase Open Watcom Public License に基づいてリリースされており、商用および非商用を問わず無料で使用できます。
他のアセンブラと比較して
マズム
- JWasm は無料で、人工的なライセンス制限がなく、あらゆる OS 用のバイナリを作成するために使用できます。
- JWasm はオープンソースなので、煩わしい MASM のバグは忘れてください...
- より多くの出力形式がサポートされます (Bin、ELF)。
- オプションで非常に小さなオブジェクトモジュールを作成することもできます
- レジスタベースの呼び出し規約など、Open Watcomのサポートが強化されました。
- JWasm は Masm よりも高速です。
TASM
- JWasm は利用可能です。TASM は合法的に利用できません。また、TASM のクローンのような LZASM は、IDEAL モードのみを認識します。
- JWasm は STRUCT と UNION を完全にサポートしています。TASM にはこの領域で重大な制限とバグがあります。
- JWasm は事実上すべての MASM v6 機能 (PROTO、INVOKE、hll ディレクティブなど) をサポートしていますが、そのほとんどは TASM では理解できません。
- JWasm は SSE4 までの命令をサポートしていますが、TASM は遅れています。
ポアズム
- JWasmはオープンソースです
- JWasmはさらにOMF、ELF、バイナリ形式での出力もサポートしています。
- JWasm は 16 ビットおよびセグメント化されたメモリ モデルをサポートします。POASM は FLAT のみを認識します。
- JWasm は MASM のマクロ実装と互換性があります。POASM は互換性がありません。
- POASM にはリスト ファイルを作成する機能がありません。
ワス
- JWasm のマクロ機能は Wasm のものよりはるかに優れています。
- JWasm は Masm v6 構文を完全にサポートしています。Wasm では、Masm v6 で追加された機能のほとんどが欠落しています。
- OMF の他に、JWasm は COFF、ELF、バイナリ出力形式をサポートしています。JWasm は 64 ビットをサポートしています。
答え2
jwasm は POSIX ベースの呼び出し規約 (System V のようなシステム) をサポートしていないことを指摘しておくことが重要だと思います。そのため、パラメーター付きの proto/procs などの機能を使用する場合は、それらのパラメーターが C/C++ コンパイラーによってレジスターを介して渡されますが、jwasm は適切なレジスターではなくスタックをパラメーターとして使用するため、64 ビット アーキテクチャーでは通常のようにパラメーター名を使用できないことに注意してください。