ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇 Date: 2007/10/23
Overview 基本概念介紹 Exceptions ARM 指令集 Thumb 指令集
基本概念介紹 Architectural inheritance ARM 可見的暫存器 記憶體組織 ARM 操作模式
Architectural inheritance ARM 體系結構採用 Berkeley RISC 設計中的特徵 (1) Load / Store 架構 (2) 固定的32位元指令 (3) 3位址 (3-address) 指令格式 簡單性 採用RISC方法基本原則
ARM 可見的暫存器(1/2)
ARM 可見的暫存器(2/2) CPSR:當前指令暫存器 T: Thumb指令集 I,F:中斷致能 條件碼旗標(N:負數 Z:零 C:進位 V:溢位)
記憶體組織
ARM 操作模式
Exceptions Exceptions Exception的進入 Exception的返回 Exception priorities
Exceptions ARM Exception 可以分為3類 指令執行引起的直接異常 ex. 軟體中斷,未定義指令,預取指中止 指令執行引起的間接異常 ex. 資料中止(Load和Store資料存時記憶體發生故障) 外部產生的與指令流無關的異常 ex. 重置,IRQ,FIQ
Exception的進入(1/2) 處理器將執行下列動作 進入與特定異常相應的操作模式 將引起異常指令的下一到指令的位址保存到新模式的 r14 中 將CPSR的原值保存到新模式的SPSR中 藉由設置CPSR的第7位元來禁止IRQ,若為快速中斷則設置第6位元來禁止快速中斷 將PC強制賦值
Exception的進入(2/2)
Exception的返回 恢復異常發生時的用戶狀態 所有修改過的用戶暫存器必須從處理程式的堆疊中恢復 CPSR必須從相應的SPSR中恢復 PC必須變回到在用戶指令流中相應的指令位址
Exception priorities ARM 優先權如下 重置 資料異常中止 FIQ IRQ 預取指異常中止 SWI,未定義指令
ARM 指令集 資料處理指令 資料傳送指令 控制流程指令 Coprocessor指令 ARM 體系結構總結
資料處理指令(1/5) ARM資料處理指令原則 所有運算元是32位元寬 運算結果為32位元寬放在一個暫存器中 每一個運算元暫存器和結果暫存器都在指令中獨立地指定
資料處理指令(2/5)
資料處理指令(3/5)
資料處理指令(4/5)
資料處理指令(5/5) 算數操作 ex. ADD r0,r1,r2 ; r0=r1 + r2 Bit-wise 邏輯操作 ex. AND r0,r1,r2 ; r0=r1 and r2 暫存器傳送操作 ex. MOV r0,r2 ; r0=r2 Comparison 操作 ex. CMP r1,r2 ; 根據r1-r2的結果設置cc 專門資料處理指令(乘法) ex. MLA r4,r3,r2,r1 ; r4=(r3 x r2 + r1)
資料傳送指令(1/10) 單暫存器 Load 和 Store 指令 Base plus offset 定址 多暫存器資料傳送
資料傳送指令(2/10)
資料傳送指令(3/10)
資料傳送指令(4/10) LDRSH r0,[r1],#2 ;取符號半字元
資料傳送指令(5/10)
資料傳送指令(6/10) 單暫存器 Load 和 Store 指令 ex. LDR r0,[r1] ; r0=men32[r1] Base plus offset 定址 ex. LDR r0,[r1,#4] ; r0=men32[r1+4] 多暫存器資料傳送 ex. LDMIA r1,{r0,r2,r5} ; r0=men32[r1] ; r2=men32[r1+4] ; r5=men32[r1+8]
資料傳送指令(7/10)
資料傳送指令(8/10) MRS r0,CPSR ; 將CPSR傳送到r0
資料傳送指令(9/10)
資料傳送指令(10/10) <field>表示下列情況之一 c: 控制欄位,PSR[7:0] x: 擴展欄位,PSR[15:8] s: 狀態欄位,PSR[23:16] f: 旗標欄位,PSR[31:24] ex. MSR CPRS_f,r0 ; 將r0傳送回CPSR且設置旗標
控制流程指令(1/4)
控制流程指令(2/4) 分歧指令 ex. B LABEL … LABEL … 條件分歧 MOV r0,#0 ; 計數器初始化 LOOP … ADD r0,r0,#1 ; 迴圈計數器加1 CMP r0,#10 ; 與迴圈的限制比較 BNE LOOP ; 如果不相等,則返回 … ; 反則回圈中止
控制流程指令(3/4)
控制流程指令(4/4) BX,BLX指令: 將處理器切換到執行Thumb指令或返回到ARM和 Thumb呼叫程式的機制
Coprocessor指令(1/4) 增加Coprocessor來擴展指令集的機制 “控制流程”還是由ARM負責
Coprocessor指令(2/4)
Coprocessor指令(3/4) “LDC”從記憶體讀取資料裝入Coprocessor暫存器 “STC” Coprocessor暫存器的資料儲存到記憶體
Coprocessor指令(4/4) “MRC” Coprocessor傳送到ARM暫存器 “MCR” ARM暫存器送到Coprocessor
ARM 體系結構總結
Thumb 指令集 Thumb 模式 Thumb programmer’s model Thumb 分歧指令 Thumb 軟體中斷指令
Thumb 模式 進入Thumb模式: 退出Thumb模式: 執行Thumb BX指令返回到ARM指令流 執行BX指令將處理器切換到執行Thumb指令 退出Thumb模式: 執行Thumb BX指令返回到ARM指令流
Thumb programmer’s model(1/2)
Thumb programmer’s model(2/2) Thumb-ARM 相似處 Load-Store結構 支援8,16,32位元 32位元無分段記體 Thumb-ARM 差異處 大多數Thumb指令是無條件執行的 許多Thumb資料處理指令採用2位址格式(目的暫存器跟一個來源暫存器相同) 採用高密度編碼,Thumb指令格是沒有ARM指令格式規則 Thumb exceptions 所有異常發生都回到ARM執行狀態
Thumb 分歧指令
Thumb 軟體中斷指令 將下一條Thumb指令的位址保存到 r14_svc 將CPSR暫存器保存到SPSR_svc 微處理器關閉IRQ,將Thumb位清除並藉由修改CPSR的相關位元進入管理者模式 強制將PC值設置為位址0x08
Thumb 資料處理指令(1/2) ARM 指令集支援單條指令中完成一個”運算元的位移”及一個”ALU操作” Thumb 指令集將”位移操作”和”ALU操作”分離為不同指令
Thumb 資料處理指令(2/2)
Thumb單(多)暫存器資料傳送指令(1/2)
Thumb單(多)暫存器資料傳送指令(2/2)
Thank You !!