| 原作者 | Watcomアセンブラを開く |
|---|---|
| オペレーティング·システム | x86 ベースの PC 用の DOS、Microsoft Windows、x86 ベースの PC 用のLinux 、 x86 ベースの PC 用のOS/2 、 x86 ベースの PC 用のFreeBSD 。 |
| 利用可能 | 英語 |
| タイプ | x86 アセンブラ |
| Webサイト | ホームページ |
Open Watcom AssemblerまたはWASMは、 Watcom C/C++コンパイラとWatcom FORTRAN 77に搭載されているWatcom Assemblerをベースにした、Watcomが開発したx86アセンブラです。 [1] [2] [3]現在、 Microsoftのアセンブラの構文により近い32ビットおよび64ビットのJWASMプロジェクトでさらなる開発が行われています。[4 ]
PowerPC、Alpha AXP、MIPS用の実験的なアセンブラが存在する。[6]
技術的な詳細
アセンブラ
- 出力形式のネイティブサポート Intel OMF出力形式
- Intel x86 (Pentium MMX、Pentium III-4、3DNow!、SSE、SSE2) 命令セットをサポートします。
- Microsoftマクロアセンブラ(MASM)5および6の構文をサポートします(不完全)。[6]
逆アセンブラ
関連する Watcom逆アセンブラwdisがあります。アセンブラにはリスト機能がありません。代わりに、リストを生成するためにwdisを使用することが推奨されます。[7] wdis は、OMF、COFF、ELF オブジェクト ファイルと PE および ELF 実行可能ファイルを読み取ることができます。MMX、3DNow!、SSE、SSE2、SSE3 を含む 16 ビットおよび 32 ビットの x86 命令セットをサポートしています。PowerPC、Alpha AXP、MIPS、SPARC V8命令セットのサポートも組み込まれています。[8]
WASMフォーク
ジェイワスム
JWasm は、Japheth によって開発された Wasm のフォークであり、以下の機能を備えています。
- 出力形式 Intel OMF (16/32 ビット)、MS Coff (32 ビットおよび 64 ビット)、Elf (32 ビットおよび 64 ビット)、Bin、および DOS MZ のネイティブ サポート。
- コンパイル済みの JWasm バイナリは、DOS、Windows、Linux で利用できます。OS/2 および FreeBSD の場合は、makefile が提供されます。
- Intel x86 (8086、80186、80286、80386、80486、Pentium、Pentium Pro)、SIMD (MMX、3DNow!、SSE、SSE2、SSE3、SSSE3、SSE4.1/2 (Jwasm 以降)、AVX (JWasm 2.06 以降)、VMX ( Intel VT-x、AMD SVM、後者は既に実装されていますが、現在まだ非アクティブ) 拡張機能 (JWasm 2.09 以降) を備えた x86-64 命令セットをサポートします。
- JWasm は C で書かれています。ソースは移植可能で、Open Watcom、MS VC、GCC などでテスト済みです。
- Windowsでは、JWasmはWin32IncとMasm32の両方で使用できます。バージョン2.01以降では、Sven B. SchreiberのSBS WALK32 Win32アセンブリ言語キット[9]でも動作します。
- C ヘッダー ファイルは、Japheth 専用の h2incX を使用して JWasm のインクルード ファイルに変換できます。
- JWasm のソース コードは Sybase Open Watcom Public License に基づいてリリースされており、商用および非商用を問わず無料で使用できます。
- Microsoft マクロ アセンブラ 6 構文、すべての MASM 8 命令セットを完全にサポートします。
Japhethは2014年1月にバージョン2.12preでJWASMの開発を一時停止(というか連絡が取れなくなった)しましたが、現在はGitHubでプロジェクトを継続しており、[10]現在の(2024年6月)バージョンは2.18です。また、Masm32フォーラム[11]の他の人たちも、Japhethが中断したところから引き継ぎました。
翻訳
HJWasmは、この2回目のWASM開発継続を開始したMasm32フォーラムメンバーHabranにちなんで接頭辞Hを追加したものです。バージョン2.13preは2016年に最初に発表されました。[12]新機能には以下が含まれます。
- 説明書:
- SIMD:
- MMX : MOVQ は、MOVD を補足するために 2.13 で追加されました。
- AVX2 : VGATHERDPD、VGATHERQPD、VGATHERDPS、VGATHERQPS、VPGATHERDD、VPGATHERQD、VPGATHERDQ、VPGATHERQQ、VEX エンコードされた汎用命令が 2.13 で追加されました。残りの命令は 2.16 で追加されました。
- AVX-512 : VCMPxxPD、VCMPxxPS、VCMPxxSD、VCMPxxPD、VCMPxxSS、AVX-512F セット、EVEX エンコード命令は 2.13 で追加されました。VMOVQ は MOVD を補足するために 2.13 で追加されました。残りの命令は 2.16 で追加されました。
- レジスタ: RIP、ZMM レジスタは 2.13 で追加されました。
- 2.25 で OO 言語拡張が追加されました。
ハスム
HASM は、バージョン 2.33 から HJWASM の名前が変更されたバージョンです。この名前は、当初代替名を提案した MASM フォーラムのディスカッション スレッドに続いて使用されました。HASM という名前は、フォーラム メンバーの habran が返信 #6 で提案し、[13]、返信 #33 のディスカッション スレッドの最後に確定しました。[14] HASM のリリース サイクルでは、既知の機能は追加されません。
アメリカ合衆国
この名前は、Terraspace ltdの製品ページのバージョン2.33(2017年5月20日付け)で実際に使用されていましたが、[15]バージョン2.34で初めて発表されました。[16] HJWASMの変更点は次のとおりです。[17]
- 命令セット: RDPID は 2.38 で追加されました。
- AVX-512 : VAESDEC が 2.38 で追加されました
- データ転送: MOVBE は 2.47 で追加されました。MOVABS は 2.48 で追加されました。
- Intel ADX : ADCX、ADOX は 2.38 で追加されました
- Intel MPX : 2.34 で BND プレフィックスのサポートが追加されました。2.40 では JCXZ 命令グループから BND プレフィックスが削除されました。
- CLMUL 命令セット: 2.46.8 で追加され、CLMUL の疑似命令形式が含まれます。
- ハッシュ: SHA 命令セットが 2.46.8 で追加されました。
- スーパーバイザー モード アクセス防止: CLAC は 2.38 で追加されました。
- 永続メモリ拡張: CLFLUSHOPT が 2.38 で追加されました。
- アドレッシングモード: 64ビット絶対即値 (2.37)
- 識別されたタイプ
- レコード タイプ: 2.41 ではレジスタと最大 32 ビットのレコード フィールドを完全にサポートします。
- 128 ビットのサポート: 2.42 で追加され、2.43.1 / .2 で追加された型のインライン宣言。
- 戻り値の型に対する typedef チェーンのサポートが 2.46.8 で追加されました。
- 2.47 で追加された m512 組み込み型。
- コンソールの色分け: 2.43.1 / .2 で Windows、OSX、Linux 用に追加されました。
- 関数呼び出し: 2.46 で C スタイルの関数呼び出しが追加されました。
参考文献
- ^ Randall Hyde. 「WASM: The Open Watcom Assembler」。2012年3月2日時点のオリジナルよりアーカイブ。2017年9月11日閲覧。
{{cite web}}: CS1 maint: bot: original URL status unknown (link) - ^ Leiterman, James (2005). 「MASM vs. NASM vs. TASM vs. WASM」. 32/64 ビット 80x86 アセンブリ言語アーキテクチャ。Wordware Publishing, Inc. p. 481. ISBN 978-1-59822-002-5. 2010年2月1日閲覧。
- ^ Google ブックスの Leiterman p482
- ^ JWASM、WASM をベースにした 32/64 ビット アセンブラ。構文はMASMに似ています。2014 年 10 月 10 日アーカイブ
- ^ Fog, Agner (2009)、アセンブリ言語でのサブルーチンの最適化(PDF) (2009-09-26 ed.)、p. 13
- ^ ab Open Watcom ウェブサイト: アセンブラ 2006-07-15 にWayback Machineにアーカイブ
- ^ OpenWatcom: 「[アセンブラによって] リスト ファイルは生成されません。wdis (Open Watcom 逆アセンブラ) は非常に優れた機能を備えているため、完全なリストを作成するのは労力の無駄になる可能性があります。ただし、特に診断目的では、MASM のように内部シンボル テーブルのダンプを作成すると非常に役立ちます。」
- ^ Open Watcom ウェブサイト: 逆アセンブラ 2006-07-15 にWayback Machineでアーカイブ
- ^ 1996 年の「WALK32」は、次の主要コンポーネントで構成されています。
- W32Link と呼ばれるフル機能の PE (Portable Executable) ファイル リンカー。
- Win32 定数、型、および構造体の定義を含むメイン インクルード ファイル。
- アプリケーションと DLL の起動ソース コードを含む別のインクルード ファイル。
- セグメントおよび PE セクション管理マクロ。
- Unicode サポートに関連するマクロ。
- いくつかのデモ アプリケーションと DLL。
- さまざまな目的のためのプログラミング ユーティリティのコレクション。walk32_1.zip 内の walk32.doc
- ^ GitHub/バロン・フォン・リーデゼル/JWasm
- ^ UASMアセンブラ開発
- ^ HJWasmリリース
- ^ 新しい名前?(スレッドページ 1)
- ^ 新しい名前?(スレッドページ3)
- ^ UASM(2.33)
- ^ UASM 2.33 リリース
- ^ UASM 変更ログ
外部リンク
- WASM アセンブラ wiki
- ジェイワスム
- テラスペース株式会社のページ: HJWASM、Hasm、UASM
