Open Watcomアセンブラ

X86アセンブラ
Open Watcomアセンブラ
原作者Open Watcomアセンブラ
オペレーティング·システムx86 ベースの PC 用の DOSMicrosoft Windowsx86 ベースの PC 用のLinux 、 x86 ベースの PC 用のOS/2 、 x86 ベースの PC 用のFreeBSD 。
入手可能な英語
タイプx86 アセンブラ
Webサイトwww.openwatcom.com

Open Watcom AssemblerWASM)は、Watcom C / C ++コンパイラとWatcom FORTRAN 77に見られるWatcom Assemblerに基づいて、Watcomによって作成されたx86アセンブラです。 [1] [2] [3] 32ビットおよび64ビットのJWASMプロジェクトでさらなる開発が行われており、[4] Microsoftのアセンブラの構文により近くなっています[5]

PowerPCAlpha AXPMIPS用の実験的なアセンブラが存在する[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

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の両方で使用できます。v2.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月にJWASMのバージョン2.12preで開発を一時停止(というか、連絡が取れなくなった)しましたが、現在はGitHubでプロジェクトを継続しており、[10]最新(2024年6月)のバージョンは2.18です。また、Masm32フォーラム[11]の他のメンバーがJaphethの中断したところから開発を再開しました。

HJワズム

HJWasmは、このWASMの第2次開発継続を開始したMasm32フォーラムメンバーHabranにちなんで、接頭辞Hを付加したものです。バージョン2.13preは2016年に最初に発表されました。[12]新機能には以下が含まれます。

  • 説明書:
  • SIMD:
  • MMX : MOVD を補足するために、2.13 で MOVQ が追加されました。
  • 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は2.13でMOVDを補完するために追加されました。残りの命令は2.16で追加されました。
  • 乱数ジェネレーター: RDRAND、RDSEED が 2.13 で追加されました。
  • 半精度変換: F16C (VCVTPH2PS、VCVTPS2PH) が 2.13 で追加されました。
  • Intel MPX : 2.31 で追加されました。
  • レジスタ: RIP、ZMM レジスタは 2.13 で追加されました。
  • 2.25 で OO 言語拡張が追加されました。

ハスム

HASMは、バージョン2.33からHJWASMの改名版です。この名称は、MASMフォーラムのディスカッションスレッドで当初代替名称が提案されたことを受けて使用されました。HASMという名称は、フォーラムメンバーのhabranが返信#6 [13]で提案し、返信#33のディスカッションスレッドの最後に最終的に採用されました。[14] HASMのリリースサイクルでは、既知の機能の追加はありません。

UASM

この名前は、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 ビット SIMD のサポート: 2.42 で追加され、型によるインライン宣言は 2.43.1/.2 で追加されました。
  • 2.46.8 で、戻り値の型に対する typedef チェーンのサポートが追加されました。
  • 2.47 で追加された m512 組み込み型。
  • コンソールの色分け: 2.43.1 / .2 で Windows、OSX、Linux 用に追加されました。
  • 関数呼び出し: 2.46 で C スタイルの関数呼び出しが追加されました。

参考文献

  1. ^ Randall Hyde. 「WASM: The Open Watcom Assembler」. 2012年3月2日時点のオリジナルよりアーカイブ2017年9月11日閲覧。
  2. ^ 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日閲覧
  3. ^ GoogleブックスのLeiterman p482
  4. ^ JWASM、WASMをベースにした32/64ビットアセンブラ。構文はMASMに似ている。2014年10月10日アーカイブ
  5. ^ Fog, Agner (2009)、「アセンブリ言語におけるサブルーチンの最適化」(PDF) (2009-09-26 ed.)、p. 13
  6. ^ ab Open Watcomウェブサイト: アセンブラ Archived 2006-07-15 at the Wayback Machine
  7. ^ OpenWatcom: [永久リンク切れ]「[アセンブラによって]リストファイルは生成されません。wdis(Open Watcom逆アセンブラ)は非常に優れた機能を備えているため、完全なリストを生成するのは労力の無駄になる可能性があります。ただし、MASMのように内部シンボルテーブルのダンプを生成することは、特に診断目的において非常に役立ちます。」
  8. ^ Open Watcomウェブサイト: 逆アセンブラー Archived 2006-07-15 at the Wayback Machine
  9. ^ 1996 年の「WALK32」は、次の主なコンポーネントで構成されています。
    • W32Link と呼ばれるフル機能の PE (Portable Executable) ファイル リンカー。
    • Win32 定数、型、および構造体の定義を含むメイン インクルード ファイル。
    • アプリケーションと DLL の起動ソース コードを含む別のインクルード ファイル。
    • セグメントおよび PE セクション管理マクロ。
    • Unicode サポートに関連するマクロ。
    • いくつかのデモ アプリケーションと DLL。
    • さまざまな目的のためのプログラミングユーティリティのコレクション。walk32_1.zip 内の walk32.doc
  10. ^ GitHub/バロン・フォン・リーデゼル/JWasm
  11. ^ UASMアセンブラ開発
  12. ^ HJWasmリリース
  13. ^ 新しい名前?(スレッドページ1)
  14. ^ 新しい名前?(スレッド3ページ目)
  15. ^ UASM (2.33)
  16. ^ UASM 2.33 リリース
  17. ^ UASM 変更ログ
  • WASMアセンブラwiki
  • JWasm
  • Terraspace ltd ページ: HJWASM、Hasm、UASM
Retrieved from "https://en.wikipedia.org/w/index.php?title=Open_Watcom_Assembler&oldid=1305608276"