Собрание Windows Сомнение - x86 - PullRequest
       15

Собрание Windows Сомнение - x86

4 голосов
/ 06 октября 2010

Я создаю программу сборки Windows без каких-либо макросов.Поэтому я скачал программу, которая использовала макросы, и я преобразовал ее в «чистый» ассемблерный код.

Однако здесь я столкнулся с одной проблемой.Есть ярлык @@:, который я не понимаю, а также прыжок 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

Также для PostQuitMessage API я мог бы жестко закодировать адрес памяти (на английском языке WinXP 32bits SP3), но для DefWindowProc он компилируется, но прерывается при выполнении.Кто-нибудь знает почему?

Спасибо за поддержку, ребята.

PS .: Я использую masm32

1 Ответ

4 голосов
/ 06 октября 2010

@@ является анонимным локальным ярлыком.Их может быть много в файле. jne @F означает переход к ближайшему @@ перед текущим местоположением.

...