簡體   English   中英

當主要功能執行時,EBP寄存器指向什么? (Intel x82體系結構)

[英]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之前, ebpesp的位置由Linux內核在分配堆棧時確定。 並且,在大多數情況下,會將默認值添加到偏移量以實現ASLR(地址空間布局隨機化)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM