2014-01-07 49 views

回答

2

體系結構版本管理基本指令集,寄存器等,因此任何「v7」代碼都可以在任何v7體系結構上運行(注意到v7-M僅支持Thumb指令集) - 但如果它使用任何特定於v7的指令,則可能與v6和更早版本不兼容。

但是,有許多可選的架構擴展可能會或可能不會出現在任何給定的實現上,例如浮點,NEON,安全擴展等。任何依賴這些擴展的可移植代碼都應該檢查在嘗試使用可能不存在並可能導致異常的功能之前先讀取標準系統寄存器的功能。例如,A15具有虛擬化擴展和A9沒有的大型物理地址擴展。

基礎架構中還有一些特性被定義爲實現定義的,例如ACTLR(輔助控制寄存器),它通常用於公開內核微架構的細節(例如控制位以啓用/禁用分支預測器)。這些內容的含義和用途甚至可以在覈心的不同修訂之間有所不同,但通常是大多數人不需要甚至看它們的低級別事情。

0

如果有的話,差異是微妙的。編寫適用於多種ARM體系結構的程序集不太難。真正的問題是,外圍設備等核心外的內容在供應商​​和產品之間非常顯着,所以在廣泛添加兩個數字端口的情況下,您對這些數字的處理方式最終會有所不同。

ARM在記錄這些事情方面做得很好。 ARM arm架構參考手冊(Arm arm)和trms技術參考手冊之間。無論誰擁有指令集詳細信息,都會記錄每條指令或每條指令的形式,哪些架構支持該指令。然後,您可以選擇您感興趣的所有變體支持的指令。

相關問題