gpt4 book ai didi

c - main 的 ret 指令在哪里

转载 作者:太空狗 更新时间:2023-10-29 16:05:36 24 4
gpt4 key购买 nike

我在“从头开始编程”一书中了解了汇编 (x86) 的全局工作原理。在本书中,每个程序都以退出中断调用结束。

但是,在C编译的程序中,我发现程序以ret结尾。这假设有一个地址要弹出,这将导致程序结束。

所以我的问题是:这个地址是什么? (那里的代码是什么?)

最佳答案

您通过跳转到该标签,要求OS将控制权传递给程序的start_start函数来启动您的程序你的代码。在 C 程序中,start 函数来自 C 库,并且(正如其他人之前已经说过的那样)进行一些特定于平台的环境初始化。然后 start 函数调用您的 ma​​in 并且控件是您的。从 ma​​in 返回后,它会将控制权交还给 C 库,正确终止程序并执行特定于平台的系统调用 以将控制权交还给 操作系统

所以地址 main pops 是来自 C 库的标签。如果你想检查它,它应该在 stdlib.h (cstdlib) 中,你会看到它调用 exit 进行清理。

它的作用是在程序终止或线程终止(C++11)时销毁静态对象(当然是C++)。在 C 语言中,它只是关闭流、刷新缓冲区、调用 atexit 函数并执行系统调用

我希望这就是您寻求的答案。

关于c - main 的 ret 指令在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47336142/

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