说我在NASM中有以下代码:
global _main
section .text
_main:
mov ebx, 12345
mov ecx, 678910
ret
汇编此代码后,我想将生成的目标文件与CRT链接。
现在,我的计划的入口点为mainCRTStartup
,mainCRTStartup
将致电_main
。
现在我有以下两个问题:
_main
的调用约定是什么(我相信它是cdecl
,但我不确定。)_main
实现为另一个cdecl
函数吗?也就是说,当输入_main
时,我应该将ebp
寄存器的值压入堆栈,并且在离开_main
时,是否应该从堆栈中弹出ebp
值进入ebp
寄存器,还应该保留cdecl
调用约定指定的寄存器吗?我问这个问题的原因是因为我看过的例子只发出ret
中的_main
指令(就像我在我的例子中所做的那样)而没有做我提到的其他事情。
请注意,我使用的是VC ++链接器。