天天看點

arm編譯後指令定位位址分析(編譯順序和運作順序)

指定了程式編譯的起始連結位址0x87800000,那麼編譯時候就按照順序編譯出機器碼。在前面的代碼先編譯,是以定位位址也靠前。可以看出,Reset_Handler函數在32行開始,是以編譯的值就不是0x87800000,而是靠後了87800020。但是Reset_Handler函數運作是最靠前的(上電運作的第一個函數,看我這篇文章arm cortex-A中斷基本知識和通用彙編中斷服務函數模闆(必讀!!!)),是以隻需要在第一行跳轉給它即可。這當然是不能同時在前面啦,前面又要放中斷向量表,那就沒法放Reset_Handler函數的具體實作的機器碼了嘛~

也就是說編譯順序,和運作順序是不一樣的。下面是cortex-a核心處理器過程,一目了然。

arm編譯後指令定位位址分析(編譯順序和運作順序)
arm編譯後指令定位位址分析(編譯順序和運作順序)

繼續閱讀