基于ARM9:Thumb指令系統(tǒng)和ARM指令系統(tǒng)
1.首先說(shuō)說(shuō)是什么?
是指令集。
是ARM體系結(jié)構(gòu)為了兼容數(shù)據(jù)總線寬度為16位的應(yīng)用系統(tǒng)而產(chǎn)生的;
是ARM指令集的自指令集,每個(gè)Thumb指令在ARM指令集中都有對(duì)應(yīng)的指令;
2.分析Thumb指令和ARM指令時(shí)間效率和空間效率關(guān)系如下:
–Thumd代碼所需的存儲(chǔ)空間約為ARM代碼的60%~70%
–Thumb代碼使用的指令數(shù)要比ARM代碼多約30%~40%;
使用32位存儲(chǔ)器,ARM代碼比Thumb代碼快約40%
使用16位存儲(chǔ)器,Thumb代碼比ARM指令快約40%~50%
與ARM代碼相比較,使用Thumb代碼,存儲(chǔ)器的功耗會(huì)降低約30%
在程序程序設(shè)計(jì)時(shí),若對(duì)系統(tǒng)性能要求比較高,則要使用ARM代碼;若多成本和功耗要求較高,則使用Thumb代碼;但是要ARM指令和Thumb指令混合使用,則效果最好,各自發(fā)揮優(yōu)勢(shì);
3.Thumb狀態(tài)下的特點(diǎn):
(1)不能直接訪問(wèn)多有的寄存器,可以訪問(wèn)R0~R7,寄存器R8~R12只能通過(guò)MOV,ADD或CMP指令來(lái)訪問(wèn);CMP指令和所有操作R0~R7的數(shù)據(jù)處理指令都會(huì)影響CPSR中的條件標(biāo)志位;
(2)不能直接訪問(wèn)CPSR 和SPSR,必須先切換到ARM狀態(tài)下,再使用MSR和MRS來(lái)實(shí)現(xiàn)。
(3)沒有協(xié)處理器指令,也要必須先切換到ARM狀態(tài)下;