14.3異常與中斷_Thumb指令集程序示例
在上節(jié)視頻里說ARMCPU有兩種狀態(tài)
ARM State 每條指令會占據4byte
Thumb State 每條指令占據2byte
我們說過Thumb指令集并不重要,本節(jié)演示把一個程序使用Thumb指令集來編譯它
使用上一章節(jié)的重定位代碼,打開Makefile和Start.S
Makefile文件?

對于使用Thumb指令集?

改進

對start.S需要修改代碼
原重定位章節(jié)Start.S文件?



使用thumb指令集的Start.S文件?




上傳代碼編譯測試
出現錯誤,如下?

發(fā)現是init,o里sdram_init2使用的了memcpy函數
查看init.c?




文章說沒有什么方法禁用memecpy但是可以修改這些變量
比如說將其修改為靜態(tài)變量,這些數據就會放在數據段中,最終重定位時會把數據類拷貝到對應的arr地址里面去?


拷貝進行實驗
得出bin文件有1.4k左右

查看之前的文件使用ARM指令集是2K左右

查看反匯編代碼?



如果你的flash很小的話可以考慮使用Thumb指令集
燒寫進去看是否可以運行
測試結果沒有任何問題
Thumb指令集后面沒有任何作用,只是簡單作為介紹?
標簽: