找不到来源 initsect.cpp

source not found initsect.cpp

我正在尝试学习 Assembly(MASM x64) 并编写了一个简单的代码。

.code
main proc
mov rax, 1
mov rcx, 2
mov rdx, 0
div rcx
ret 0
main endp
end

现在我开始了一个调试过程以查看它是否有效(因为没有其他方法可以检查是否有效)并且在 div rcx 行调试器开始将我拖到整个过程中名为 exe_common.inl、file_mode.cpp 的文件,返回到 exe_common.inl、matherr.cpp,再次返回到 exe_common.inl、utility.cpp,然后再次返回到 exe_common.inl (那些是什么???????)。那时,有一段预处理器代码

#ifdef _RTC
_RTC_Initialize();
atexit(_RTC_Terminate);
#endif

和 _RTC_Initialize(); (第二行),程序关闭并显示 initsect.cpp not found 消息。这到底是什么意思???? Whosebug 显示关于 'initsect.cpp not found' 的光荣的 0 结果并且 google 也没有帮助。 显然,当带有 ret 的行试图执行时,同样的事情总是发生。我已经删除了 ret 之后的 0,删除了 main proc 和 main endp 之间的所有内容,并删除了 ret 行。总是一样。当 main endp 之前的行试图执行时,无论它是什么,都会发生这种情况。 它甚至可以通过世界上最简单的代码实现:

.code
main proc
ret 0
main endp
end

我正在使用 Microsoft visual studio 2019 和 AMD x64-x86 CPU。

无论您是否有意,您已经将您的程序与 Visual Studio C++ 运行 时代联系起来了。您正在逐步执行的代码执行 C++ 运行time 和 C++ 程序需要正确 运行 的启动初始化。最终,一旦完成,它将调用您的 main 函数,就像您构建 C++ 程序一样。

Ross Ridge 是对的,汇编程序显然将程序与 C 运行时链接在一起。他忘了说的是,我需要通过_START设置一个入口点:为了避免这种情况,感谢大家的帮助(讽刺),特别感谢 Youtube 上的 DFpercush(不讽刺)。