当程序开始运行时,所有通用寄存器的值是多少?

时间:2012-05-15 06:34:54

标签: c assembly operating-system linux-kernel x86

  

可能重复:
  What is default register state when program launches (asm, linux)?

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

程序开始运行时%esp的值是多少?

1 个答案:

答案 0 :(得分:1)

如果您询问C程序 - 您无法知道,这不是您的业务。

对于集会,我也认为它们没有有意义的价值 执行main所需的信息 - 参数计数,参数向量和环境指针 - 都在堆栈中。

this Linux Gazette article中查看更多信息。