ARM的啟動代碼為什么要用匯編語言

       在ARM中講到ARM的啟動代碼必須有匯編語言寫成 , 一直不是很了解 。 書上給的原因是
C語言不具備上電立即運行的條件:
全局變量沒有初始化、系統堆棧沒有初始化等 。
【ARM的啟動代碼為什么要用匯編語言】那單片機的C語言怎么就不要啟動代碼?(keil帶有啟動代碼 , 但是處理不好會出錯 , 一般不用也沒事)
看來還是和編譯器有關 , 今天看到了一個比較信服的答案 。
編譯器在編譯C語言時 , 會在前加一段固定的代碼**.O文件 , 他是編譯器自帶的一個文件 ,
即C語言執行的第一條指令不是C語言的main入口函數中 , 而是**.O中指令 。
指令初始化后調用MAIN函數入口 , 但是并不能直接運行 , 我們必須寫一段代碼來取代他 。
所以我們經常能看到一些超簡單的啟動代碼:
AREA |DATA|,CODE,READONLY
ENTRY
ldr r13, =0