私はアセンブリ言語に比較的慣れていません。ML64とMASM32を使用してHelloWorldアプリケーションを作成する方法を説明するチュートリアルをたくさん見つけましたが、プログラムの詳細を説明しているチュートリアルはありません。たとえば、私がオンラインで見つけてコンパイルした以下の例を見てください(64ビット):
main proc
sub rsp, 68h ; space for 4 arguments + 16byte aligned stack
xor r9d, r9d ; 4. argument: r9d = uType = 0
lea r8, [caption] ; 3. argument: r8 = caption
lea rdx, [text] ; 2. argument: edx = window text
xor rcx, rcx ; 1. argument: rcx = hWnd = NULL
call MessageBoxA
xor ecx, ecx ; ecx = exit code
call ExitProcess
main endp
end
私はこれをフォローすることができます。汎用レジスタとセグメントレジスタがあることは理解していますが、どちらを使用するかをどのように決定しますか。たとえば、「r8」にr9ではなくキャプションが含まれているのはなぜですか。WinAPIのアセンブリリファレンスはありますか?これが基本的な質問だと思います。これは64ビットの例を使用した一般的な質問であるため、MASM32タグを選択しました。