1. 程式人生 > >ARM在進入main函式之前會做什麼?

ARM在進入main函式之前會做什麼?

首先宣告,#define是在程式啟動程式碼執行之前就會編譯好的。燒錄到晶片中時是已經替換完成的數值;

1、晶片復位,啟動程式碼執行,啟動程式碼進行初級硬體初始化等,比如核心從初始復位地址取指令,開始執行程式,最重要的是設定堆疊指標,如圖

2、初始化0值變數,將對應記憶體初始化為0,這些記憶體對應在程式中的“int i= 0”的變數地址,圖示

3、初始化非零變數,例如“int j = 6;”這樣的語句對應的記憶體應該初始化為6,在啟動程式中,從ROM中的Initializers段複製到對應的記憶體,圖示

最後呼叫main(); 記憶:(啟(啟動程式碼)棧(初始化堆疊)0(0變數到RAM)變(非零變數到RAM))