資源描述:
《教你如何學(xué)習(xí)ARM設(shè)計--32 位操作》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、32位操作這里的許多信息取自ARM匯編器手冊。我現(xiàn)在沒有32位處理器,就只能信任文檔了...這個文檔中表述的UMUL和UMLA只能在32bit模式下進(jìn)行是錯誤的。如果你的處理器(比如:StrongARM)可以這么做,則它可以在32bit或26bit下工作... ARM2和ARM3有一個32位數(shù)據(jù)總線和一個26位地址總線。在以后版本的ARM上,數(shù)據(jù)總線和地址總二者都是完全的32位寬。這解釋了為什么一個“32位處理器”被稱為26位。數(shù)據(jù)寬度和指令/字大小是32位,并總是這樣,但地址總線只是24位。因為PC總是字對齊的,一個地址中的低兩位總是零,所以在ARM2/ARM3處
2、理器上這些位持有處理器模式設(shè)置。盡管實際上只使用了24位,PC的有效寬度仍是26位。在老機(jī)器上這沒有問題。4Mb內(nèi)存是基準(zhǔn)的。一些人升級到8Mb、和16Mb是理論上的限制。(Somepeopleupgradedto8Mb,and16Mbwasthetheoreticallimit.)但是RiscPC使用一個26位程序計數(shù)器是不可能的,因為RiscPC允許安裝258Mb內(nèi)存,而26位只允許你尋址到%11111111111111111111111100(或67108860字節(jié),或64Mb)。這附帶的解釋了對應(yīng)用任務(wù)的28Mb大小限制;就是希望系統(tǒng)與老的RISCOSAPI
3、相容。盡管這個匯編器站點的某些部分覆蓋了32位模式(比如運行在SVC32下的一個簡要的例子!),但多數(shù)部分是關(guān)于26位模式操作的,這是為了與RISCOS的當(dāng)前可獲得的版本相兼容(就是RISCOS2到RISCOS4);我注意到部分例子不適用于32位。RiscPC、Mico、RiscStation、A7000等都有能力運行完全的32位操作系統(tǒng);實際上ARMLinux就是這樣的一個操作系統(tǒng)。RISCOS不是,因為RISCOS需要,至少一個時期,保持與現(xiàn)存版本的兼容。這是個古老的兩分問題(dichotomy),有一個嶄新的完全32位版本的RISCOS版本是美妙的,但當(dāng)你發(fā)現(xiàn)
4、許多你的現(xiàn)存軟件不能繼續(xù)運行(somuchasload)就不那么美妙了!RISCOS不是完全的26位。一些處理程序(handler)需要工作在32位模式下;限制它的是金錢(就是說,誰為完全轉(zhuǎn)換RISCOS付錢;誰為用來重建它們的代碼的開發(fā)工具付錢(PD在RISCOS上是強(qiáng)壯的))和必要性(就是說,很多人使用Impression而CC不再與我們同在;Impression好象不能在更新的RISCOS上工作,所以如果人們需要的軟件將不能工作,那么他們不會認(rèn)為有升級的必要)。為什么這如此重要?新的ARM處理器將不支持26位操作。盡管做了一些融合(ARM6、ARM7、Stro
5、ngARM),但氣數(shù)就要盡了。你可以增加一個26/32位系統(tǒng)的復(fù)雜性,或者只用32位而得到更簡單、更小的處理器。我們要么隨波逐流,要么被甩下...所以我們別無選擇。32位體系A(chǔ)RM體系在ARM6系列中進(jìn)行了重大變更。下面我將描述26位和32位操作行為的不同之處。在ARM6中,程序計數(shù)器被擴(kuò)展到完整的32位。結(jié)果是:·PSR從PC中分離到自己的寄存器CPSR(當(dāng)前的程序狀態(tài)寄存器)中?!ぴ诟淖兲幚砥髂J降臅r候,不再與PC一起保存PSR;現(xiàn)在是每個有特權(quán)的模式都有一個額外的寄存器-SPSR(保存的程序狀態(tài)寄存器)-用來持有前面模式的PSR。·增加了使用這些新寄存器的指令
6、。除了允許PC使用完全的32位之外,還有進(jìn)一步的變更,就是給PSR增加了額外的有特權(quán)的模式。這些模式用于處理未定義指令和異常終止例外:·未定義指令、異常終止、和超級用戶不再共享同一個模式。去掉了在早期ARM上存在的對超級用戶的那些限制?!ぴ贏RM6系列(和以后的其他兼容芯片)中通過設(shè)置片上某個控制寄存器來確定這些特征的可獲得性。可以選擇三個處理器配置中的一個:o26位程序和數(shù)據(jù)空間,這個配置強(qiáng)制ARM在26位地址空間中進(jìn)行操作。在這個配置中只能獲得四個26位模式(參照處理器模式描述);不可能選擇任何32位模式。在所有當(dāng)前的ARM6和7系列上復(fù)位(reset)時被設(shè)置
7、為這個模式。o26位程序空間和32位數(shù)據(jù)空間。除了禁止地址例外來允許數(shù)據(jù)傳送操作訪問完整的32位地址空間之外,與26位程序和地址空間配置相同。o32位程序和數(shù)據(jù)空間。這個配置把地址空間擴(kuò)展成32位,并介入了對處理器模型的重大變更。在這個配置中你可以選擇任何26位和32位處理器模式(參見下面的處理器模式)。?在配置成32位程序和數(shù)據(jù)空間的時候,ARM6和ARM7系列支持十個有所重疊的處理器操作模式:·用戶模式:正常的程序執(zhí)行狀態(tài);或User26模式:一個26位版本。·FIQ模式:設(shè)計來支持一個數(shù)據(jù)傳送或通道處理;或FIQ26模式:一個26位版本?!RQ模式:用于