新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > GNU ARM匯編--(三)ARM處理器的基本原則

        GNU ARM匯編--(三)ARM處理器的基本原則

        作者: 時間:2016-11-26 來源:網絡 收藏

        除了user模式,其它模式都可以通過直接寫cpsr的模式位來改變處理器模式.當然,在異常或者中斷到來時,硬件會自動切換模式.下類異常和中斷會引起模式切換:

        reset,irq,fiq,swi,data abort,prefetch abort和undefined instruction.

        處理器模式:

        需要注意的是:通過直接寫cpsr來改變模式的方法不會將cpsr拷貝到spsr.只有在異常或中斷發生時cpsr的值才會保存.

        當ARM核上電時,處于svc特權模式.從特權模式開始是有用的:初始化代碼完全控制cpsr來建立其他模式的堆棧.

        cpsr中的bit T是表明指令簇用的是ARM指令集還是thumb指令集.T為1表示thumb指令集,T為0表示ARM指令集.

        ARM指令集和thumb指令集的特性:

        中斷屏蔽位:

        中斷屏蔽位用來屏蔽處理器的特殊中斷請求.在ARM核中有兩種級別的中斷請求:irq和fiq.

        cpsr中的中斷屏蔽位是第7位和第6位(I和F),當I或F設為1時irq或fiq就被屏蔽了.

        condtion flags:

        condition flags可以被比較操作和帶S后綴的ALU操作來更新.

        條件執行:

        條件執行控制指令是否被ARM核執行.處理器會比較指令的條件屬性和cpsr中的condition flags,如果匹配,該指令執行;否則該指令被忽略.

        流水線:

        RISC處理器用流水線機制來執行指令.ARM流水線中的指令只有在完全通過執行階段才被處理.

        上面這張圖標明了流水線的使用和程序計數器pc.在執行階段,pc總是指向該指令地址加上8字節.也就是說pc總是指向當前指令的下下條指令.當用pc來計算

        相對偏移量時這點是很重要的,并且它也是所有流水線的特征.

        異常 中斷和向量表

        當異常或中斷發生時,處理器會將pc指向一個特殊的內存地址.該地址所在的地址范圍稱為向量表.向量表的入口是跳轉指令,跳轉到專門處理某個異常或中斷的

        子程序.

        存儲器映射地址0x00000000是為向量表預留的.在某些處理器中向量表可以放在更高的地址,從0xffff0000開始.linux等操作系統可以利用這個特性.

        當異常或者中斷發生時,處理器掛起正常的處理然后從向量表中加載指令.每個向量表的入口都包含指向特殊處理例程的跳轉指令.

        reset向量是處理器上電后執行的第一條指令,這條指令跳轉到初始化代碼處.

        undefined instruction向量是當處理器不能對指令譯碼時使用的.

        software interrupt向量執行SWI指令時使用的.SWI可以用來系統調用的實現.

        prefetch abort向量發生在當沒有訪問權限的條件下試圖獲取該地址的指令時,異常發生在譯碼階段.

        data abort向量與prefetch abort類似,只不過是訪問數據發生的異常.

        interrupt request向量被外部硬件用來中斷處理器的正常執行.只有在cpsr的相應位為0時才能發生.

        fast interrupt request向量與irq類似,是為要求更短的中斷響應時間的硬件保留的.只有在cpsr的相應位為0時才能發生.


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 克拉玛依市| 贡山| 鄯善县| 昌黎县| 辉县市| 宁武县| 新绛县| 西和县| 右玉县| 花垣县| 邮箱| 定西市| 富顺县| 泸西县| 库伦旗| 新和县| 辰溪县| 德令哈市| 沈阳市| 新建县| 新田县| 葵青区| 阿克陶县| 长岛县| 隆子县| 湖南省| 绥中县| 宜兰市| 西乌| 祁门县| 中江县| 清新县| 东乌珠穆沁旗| 莒南县| 项城市| 荆州市| 榆林市| 肥西县| 岳西县| 黄石市| 那曲县|