在ARM中講到ARM的啟動代碼必須有匯編語言寫成 , 一直不是很了解 。 書上給的原因是
C語言不具備上電立即運行的條件:
全局變量沒有初始化、系統堆棧沒有初始化等 。
【ARM的啟動代碼為什么要用匯編語言】那單片機的C語言怎么就不要啟動代碼?(keil帶有啟動代碼 , 但是處理不好會出錯 , 一般不用也沒事)
看來還是和編譯器有關 , 今天看到了一個比較信服的答案 。
編譯器在編譯C語言時 , 會在前加一段固定的代碼**.O文件 , 他是編譯器自帶的一個文件 ,
即C語言執行的第一條指令不是C語言的main入口函數中 , 而是**.O中指令 。
指令初始化后調用MAIN函數入口 , 但是并不能直接運行 , 我們必須寫一段代碼來取代他 。
所以我們經常能看到一些超簡單的啟動代碼:
AREA |DATA|,CODE,READONLY
ENTRY
ldr r13, =0
- LED顯示屏套件質量得以保證的幾大因素
- 電解電容
- 智慧人都會用的水果養生法
- 普通水果的神奇功效:橙子能減輕皺紋
- 女追男聊天開場白 矜持的女生可以這樣開場
- 人長的不帥該如何追女孩子?內心的豐富會掩蓋外表的缺陷
- 戀愛紀念日如何過 做些有意義的事情
- 初次談戀愛如何找話題?音樂旅行是不錯的選擇
- 內向的男生喜歡什么禮物 或許是一塊貼心的手表?
- 與女生網聊的開場白 多種開場白任你選擇
