gpt4 book ai didi

winapi - Win32 入口点是否必须保留任何寄存器值(被调用者保存的寄存器)?

转载 作者:行者123 更新时间:2023-12-05 00:14:45 25 4
gpt4 key购买 nike

我正在用 NASM 编写程序,我不想将它与 CRT 链接,因此我将指定入口点(将是 Win32 入口点)。这是程序源代码:

global _myEntryPoint

section .text
_myEntryPoint:
mov eax, 12345

现在这就是我对 Win32 入口点的了解(如果我错了,请纠正我):
  • Win32 入口点不会像正常一样返回值
    函数执行(要退出 Win32 入口点,我必须调用ExitProcess() )。
  • Win32 入口点不接受任何参数。

  • 现在我不知道的是以下内容:
  • Win32 入口点是否必须保留任何寄存器值(被调用者保存的寄存器)?我认为答案是否定的,因为当 Win32 入口点退出时,它会终止进程并且不会将执行返回到期望保留某些寄存器值的函数。
  • 最佳答案

    my answer to the proposed duplicate 中所述,您根本不应该从 Win32 入口点返回,在这种情况下,您显然不需要保留任何寄存器。您的问题措辞含糊不清,表明您担心在调用 ExitProcess 之前晚上需要恢复寄存器。但事实并非如此;调用 ExitProcess不会导致您从入口点返回,it just stops running your code . (另请参阅 here 以获取更新和 this may also be of interest 。)

    如果您忽略该建议并无论如何从入口点返回,那么实际上答案是相同的:您实际上不需要保留任何寄存器。然而,据我所知,这种行为没有被记录在案,所以如果你想保持谨慎,你可以选择严格遵循 stdcall习俗。

    关于winapi - Win32 入口点是否必须保留任何寄存器值(被调用者保存的寄存器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294072/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com