Windows 程序集疑问 - x86

发布于 2024-09-26 08:52:33 字数 762 浏览 4 评论 0原文

我正在构建一个没有任何宏的 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 32 位 SP3 英语上),但对于 DefWindowProc 它可以编译,但在执行时会中断。有人知道为什么吗?

感谢大家的支持。

PS:我使用的是masm32

I'm building a Windows Assembly program without any macro. So I downloaded a program that was using macros, and I'm converting this into "pure" assembly code.

However I'm facing one issue here. There's a label @@: that I don't understand, and also a jump jne @F that I didn't get it. What are these 2 symbols?

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

Also for PostQuitMessage API I could hard-code the memory address (on WinXP 32bits SP3 english), but for DefWindowProc it compiles, but it breaks when executing. Does someone know why?

Thanks for support guys.

PS.: I'm using masm32

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怂人 2024-10-03 08:52:33

@@ 是一个匿名本地标签。文件中可以有很多这样的内容 jne @F 表示跳转到当前位置之前最近的 @@

The @@ is an anonymous local label. You could have many of them in the file The jne @F means jump to the nearest @@ ahead of the current location.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文