2

可能重复:
程序启动时的默认寄存器状态是什么(asm,linux)?

我知道 %esp 和 %eip 应该由操作系统内核设置为正确的值,以便程序可以运行,但其他寄存器包括 %ebp、%eax、%ebx、%ecx、%edx、%esi、%edi。操作系统内核会在程序运行之前初始化它们吗?他们应该有什么价值观?

当程序开始运行时 %esp 应该有什么值?

4

1 回答 1

1

如果您询问 C 程序 - 您不知道,这不关您的事。

对于装配,我也不认为它们具有有意义的价值。
执行所需的信息main——参数计数、参数向量和环境指针——都在堆栈上。

在这篇 Linux Gazette 文章中查看更多信息。

于 2012-05-15T06:45:04.957 回答