ウィンドウのアセンブリを学習しようとしていますが、2 つのアセンブラがあることがわかります。
masm : https://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
masm32 : http://masm32.com/index.htm
これらは同等ですか?Windows のアセンブリを学習するには、どれを選択すればよいですか?
ウィンドウのアセンブリを学習しようとしていますが、2 つのアセンブラがあることがわかります。
masm : https://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
masm32 : http://masm32.com/index.htm
これらは同等ですか?Windows のアセンブリを学習するには、どれを選択すればよいですか?
どちらも MASM (どうやら) で、バージョンが違うだけです。私は通常、公式 (MS) リンクを使用します。MASM は現在、Windows SDK の一部でもあります。インストールするとML.exe
、ディレクトリに含まれbin
ます。
アセンブリ言語を学ぶためだけに使用している場合は、使用する MASM バージョンに大きな違いはありません。新しいバージョンの MASMML64.exe
では、x86 命令セットに追加されるにつれて、64 ビット ( ) および新しい命令のサポートが追加されますが、それだけです。異なるアセンブラ間の主な違いは、異なる方言です。x86 アセンブリ言語には、MASM 構文、NASM 構文、および Unix スタイルのas
構文の 3 つの主な方言があります (以前は Borland TASM もありましたが、現在はほとんど使われていません)。MASM、NASM、および YASM はすべて同じ命令名とレジスタ名を使用しますが、いくつかの規則 ( dword ptr [blah]
vs.dword [blah]
など) がわずかに異なり、マクロ言語もまったく異なります。MASM には、.if
/ .endif
、invoke
など、他のアセンブラには存在しません。それが利点であるかどうかは好みの問題です。個人的には NASM スタイルの構文の方が規則的であり、マクロ プリプロセッサを使用する方が便利だと思うので好みですが、それは好みの問題です。
as
は別問題です。Intel のマニュアルに記載されているものとはまったく異なる構文と命令名を使用しています。これは、ほとんどの Unix バリアント (および GCC などのその環境に由来するコンパイラーでも) のデフォルトですが、基本的にその環境以外では使用されません。現在のバージョンの GNUas
は Intel 構文もサポートしているため、構文の違いのほとんどはなくなりますがas
、一般的には、主にコンパイラのバックエンド アセンブラーとして意図されており、本格的なマクロ アセンブラーではありません。 MASM または NASM/YASM。
joni が言ったように、MASM32 は完全な SDK です。エディター、いくつかのヘルプ ファイル、および基本的に MASM 言語でコーディングするために必要なすべてのものが含まれています。また、MASM32 には実際にバージョン 8 の MASM が含まれていることにも注意してください。あなたは何も見逃していません。個人的にはパッケージとして MASM32 をお勧めします。これにより、MASM の開始がはるかに簡単になりますが、最初からすべてを実行し、元の MASM アセンブラーだけを使用して、そこから理解することができます。