我知道 %esp 和 %eip 应该由操作系统内核设置为正确的值,以便程序可以运行,但其他寄存器包括 %ebp、%eax、%ebx、%ecx、%edx、%esi、%edi。操作系统内核会在程序运行之前初始化它们吗?他们应该有什么价值观?
当程序开始运行时 %esp 应该有什么值?
我知道 %esp 和 %eip 应该由操作系统内核设置为正确的值,以便程序可以运行,但其他寄存器包括 %ebp、%eax、%ebx、%ecx、%edx、%esi、%edi。操作系统内核会在程序运行之前初始化它们吗?他们应该有什么价值观?
当程序开始运行时 %esp 应该有什么值?
如果您询问 C 程序 - 您不知道,这不关您的事。
对于装配,我也不认为它们具有有意义的价值。
执行所需的信息main
——参数计数、参数向量和环境指针——都在堆栈上。
在这篇 Linux Gazette 文章中查看更多信息。