4

マクロなしでWindowsアセンブリプログラムを作成しています。そこで、マクロを使用していたプログラムをダウンロードし、これを「純粋な」アセンブリコードに変換しています。

しかし、私はここで1つの問題に直面しています。わからないレーベル@@:と、わからなかったジャンプjne @Fがあります。これらの2つのシンボルは何ですか?

MyWndProc:

    push ebp
    mov ebp, esp

    cmp DWORD PTR [ebp+12], 2 ;WM_DESTROY=2
    jne @F
      push ecx
      push NULL
      mov dword ptr ecx, 7e42ca5ah ;address of PostQuitMessage
      call ecx
      pop ecx
    @@:

    push DWORD PTR [ebp+20]
    push DWORD PTR [ebp+16]
    push DWORD PTR [ebp+12]
    push DWORD PTR [ebp+8]
    call DefWindowProc
    ;mov dword ptr edx, 7e42c17eh
    ;call edx

    leave
    ret 16

また、PostQuitMessageAPIの場合、メモリアドレスをハードコーディングすることもできます(WinXP 32ビットSP3英語の場合)が、DefWindowProcコンパイルするため、実行時に壊れます。誰かが理由を知っていますか?

サポート担当者に感謝します。

PS:私はmasm32を使用しています

4

1 に答える 1

4

@@匿名のローカル ラベルです。ファイルにそれらの多くを含めることができます。これは、現在の場所よりも前のjne @F最も近い場所にジャンプすることを意味します。@@

于 2010-10-06T18:50:03.590 に答える