1 1 main函式執行之前的過程

2021-06-05 12:11:26 字數 567 閱讀 4304

從開機到main函式的執行分三步完成:(1)啟動bios,在記憶體中載入實模式下的中斷向量表和終端服務程式

(2)從啟動盤載入作業系統程式到記憶體

(3)為執行32的main函式做過渡工作

這篇部落格先將第一步。

我們都知道cpu只能執行記憶體中的程式,但是記憶體中得內容是斷電即消失的。那麼開機後,空空如也的記憶體

最終是怎麼管理起整個硬體的呢?

第乙個執行的**肯定不是軟體來載入到記憶體中的,只能硬體實現。intel cpu硬體邏輯設計為在加電的瞬間

恰好,這就是bios的入口位址(bios的位址範圍是0xfe000~0xfffff),而bios是快閃儲存器晶元做的rom,上

面是有**的,這樣就可以執行bios程式了。

bios程式短小精深(8kb),這裡不深究,只說明它完成的功能。通過bios

(1)在記憶體的0x00000~0x003ff構建中斷向量表(256項)

(2)在記憶體的0x00400~0x004ff構建bios資料區

(3)在記憶體的0xe05b(約56kb)處開始載入8k左右的中斷服務程式

這些**就是作業系統打下江山的資本啦。

main函式執行之前

main函式是我們的主程式入口函式。那麼在執行main函式之前我們的程式幫我們做了些什麼了?實際上在我們的系統裝載程式之後,首先執行的 並不是main的第一行,而是某些特別的 這些 會準備好main函式需要的環境,並且負責呼叫main函式,這時候才可以在main了寫各種業務 1 設定棧指標。2 初始...

main函式之前會執行什麼?

我們 file name test00.c int main int argc,char argv cc test00.c o test.exe 會生成 test.exe cc test00.c nostdlib o test.exe undefined symbol start 也就是說 1.編譯...

main函式之前還能執行程式?

在了解這個之前,我們首先要知道 四區的概念 堆區和棧區顯然都是在程式執行後進行的,所以它們都是在main後面。因此就需要從全域性區和 區入手,區顯然不行,因此只剩下全域性區了。結果也就是可以定義全域性物件或者變數。定義全域性物件或者變數 全域性變數 當定義全域性變數a的時候,就會呼叫show函式,因...