4

我正在构建一个没有任何宏的 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

同样对于PostQuitMessageAPI,我可以硬编码内存地址(在 WinXP 32 位 SP3 英语上),但DefWindowProc它可以编译,但在执行时会中断。有人知道为什么吗?

谢谢各位的支持。

PS.:我正在使用 masm32

4

1 回答 1

4

@@是一个匿名的本地标签。您可以在文件中包含许多它们jne @F意味着跳转到@@当前位置之前最近的位置。

于 2010-10-06T18:50:03.590 回答