main函数执行时EBP寄存器指向什么? (英特尔 x82 架构)

What is the EBP register pointing to when the main function executes? (Intel x82 architecture)

我知道在函数调用期间,EBP 寄存器指向被调用函数压入堆栈的第一个值。但是在第一次调用main函数的时候,EBP寄存器指向什么呢?是不是main函数第一个压入栈的局部变量?

未定义 ebp 指向函数何时进入。函数序言(它是函数的一部分)使 ebp 指向堆栈帧,尽管如果不需要序言可以省略,或者可以用 ebp 做任何其他事情,只要它恢复值回来的时候。 main这点也不一样。

main()之前的ebp的值是由操作系统初始化的,所以你需要说一下你用的是什么OS。

关于Linux和libc,在main()之前有一个函数叫做_start。但是,在_start之前,ebpesp的位置是由Linux内核在分配堆栈时决定的。而且,大多数时候,默认值被添加到偏移量以实现 ASLR(地址-Space 布局随机化)。