[英]What is the EBP register pointing to when the main function executes? (Intel x82 architecture)
我知道在函數調用期間,EBP寄存器指向被調用函數壓入堆棧的第一個值。 但是,當第一次調用main函數時,EBP寄存器指向什么? 它是第一個由主函數壓入堆棧的局部變量嗎?
在輸入功能時ebp
指向的位置是不確定的。 函數序言(它是函數的一部分)使ebp
指向堆棧幀,盡管如果不需要序言可以省略,也可以對ebp
做任何其他事情,只要它在返回時恢復值即可。 main
在這方面沒有什么不同。
操作系統初始化main()
之前的ebp
值,因此您需要說出正在使用的操作系統。
談到Linux和libc
,在main()
之前有一個函數稱為_start
。 但是,在_start
之前, ebp
和esp
的位置由Linux內核在分配堆棧時確定。 並且,在大多數情況下,會將默認值添加到偏移量以實現ASLR(地址空間布局隨機化)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.