Presentation is loading. Please wait.

Presentation is loading. Please wait.

ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇

Similar presentations


Presentation on theme: "ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇"— Presentation transcript:

1 ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇
Date: 2007/10/23

2 Overview 基本概念介紹 Exceptions ARM 指令集 Thumb 指令集

3 基本概念介紹 Architectural inheritance ARM 可見的暫存器 記憶體組織 ARM 操作模式

4 Architectural inheritance
ARM 體系結構採用 Berkeley RISC 設計中的特徵 (1) Load / Store 架構 (2) 固定的32位元指令 (3) 3位址 (3-address) 指令格式 簡單性 採用RISC方法基本原則

5 ARM 可見的暫存器(1/2)

6 ARM 可見的暫存器(2/2) CPSR:當前指令暫存器 T: Thumb指令集 I,F:中斷致能
條件碼旗標(N:負數 Z:零 C:進位 V:溢位)

7 記憶體組織

8 ARM 操作模式

9 Exceptions Exceptions Exception的進入 Exception的返回 Exception priorities

10 Exceptions ARM Exception 可以分為3類 指令執行引起的直接異常 ex. 軟體中斷,未定義指令,預取指中止
指令執行引起的間接異常 ex. 資料中止(Load和Store資料存時記憶體發生故障) 外部產生的與指令流無關的異常 ex. 重置,IRQ,FIQ

11 Exception的進入(1/2) 處理器將執行下列動作 進入與特定異常相應的操作模式
將引起異常指令的下一到指令的位址保存到新模式的 r14 中 將CPSR的原值保存到新模式的SPSR中 藉由設置CPSR的第7位元來禁止IRQ,若為快速中斷則設置第6位元來禁止快速中斷 將PC強制賦值

12 Exception的進入(2/2)

13 Exception的返回 恢復異常發生時的用戶狀態 所有修改過的用戶暫存器必須從處理程式的堆疊中恢復 CPSR必須從相應的SPSR中恢復
PC必須變回到在用戶指令流中相應的指令位址

14 Exception priorities ARM 優先權如下 重置 資料異常中止 FIQ IRQ 預取指異常中止 SWI,未定義指令

15 ARM 指令集 資料處理指令 資料傳送指令 控制流程指令 Coprocessor指令 ARM 體系結構總結

16 資料處理指令(1/5) ARM資料處理指令原則 所有運算元是32位元寬 運算結果為32位元寬放在一個暫存器中
每一個運算元暫存器和結果暫存器都在指令中獨立地指定

17 資料處理指令(2/5)

18 資料處理指令(3/5)

19 資料處理指令(4/5)

20 資料處理指令(5/5) 算數操作 ex. ADD r0,r1,r2 ; r0=r1 + r2 Bit-wise 邏輯操作
ex. AND r0,r1,r ; r0=r1 and r2 暫存器傳送操作 ex. MOV r0,r ; r0=r2 Comparison 操作 ex. CMP r1,r ; 根據r1-r2的結果設置cc 專門資料處理指令(乘法) ex. MLA r4,r3,r2,r1 ; r4=(r3 x r2 + r1)

21 資料傳送指令(1/10) 單暫存器 Load 和 Store 指令 Base plus offset 定址 多暫存器資料傳送

22 資料傳送指令(2/10)

23 資料傳送指令(3/10)

24 資料傳送指令(4/10) LDRSH r0,[r1],# ;取符號半字元

25 資料傳送指令(5/10)

26 資料傳送指令(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]

27 資料傳送指令(7/10)

28 資料傳送指令(8/10) MRS r0,CPSR ; 將CPSR傳送到r0

29 資料傳送指令(9/10)

30 資料傳送指令(10/10) <field>表示下列情況之一 c: 控制欄位,PSR[7:0] x: 擴展欄位,PSR[15:8]
s: 狀態欄位,PSR[23:16] f: 旗標欄位,PSR[31:24] ex. MSR CPRS_f,r ; 將r0傳送回CPSR且設置旗標

31 控制流程指令(1/4)

32 控制流程指令(2/4) 分歧指令 ex. B LABEL … LABEL … 條件分歧 MOV r0,#0 ; 計數器初始化 LOOP …
ADD r0,r0,#1 ; 迴圈計數器加1 CMP r0,# ; 與迴圈的限制比較 BNE LOOP ; 如果不相等,則返回 … ; 反則回圈中止

33 控制流程指令(3/4)

34 控制流程指令(4/4) BX,BLX指令: 將處理器切換到執行Thumb指令或返回到ARM和 Thumb呼叫程式的機制

35 Coprocessor指令(1/4) 增加Coprocessor來擴展指令集的機制
“控制流程”還是由ARM負責

36 Coprocessor指令(2/4)

37 Coprocessor指令(3/4) “LDC”從記憶體讀取資料裝入Coprocessor暫存器
“STC” Coprocessor暫存器的資料儲存到記憶體

38 Coprocessor指令(4/4) “MRC” Coprocessor傳送到ARM暫存器
“MCR” ARM暫存器送到Coprocessor

39 ARM 體系結構總結

40 Thumb 指令集 Thumb 模式 Thumb programmer’s model Thumb 分歧指令 Thumb 軟體中斷指令

41 Thumb 模式 進入Thumb模式: 退出Thumb模式: 執行Thumb BX指令返回到ARM指令流
執行BX指令將處理器切換到執行Thumb指令 退出Thumb模式: 執行Thumb BX指令返回到ARM指令流

42 Thumb programmer’s model(1/2)

43 Thumb programmer’s model(2/2)
Thumb-ARM 相似處 Load-Store結構 支援8,16,32位元 32位元無分段記體 Thumb-ARM 差異處 大多數Thumb指令是無條件執行的 許多Thumb資料處理指令採用2位址格式(目的暫存器跟一個來源暫存器相同) 採用高密度編碼,Thumb指令格是沒有ARM指令格式規則 Thumb exceptions 所有異常發生都回到ARM執行狀態

44 Thumb 分歧指令

45 Thumb 軟體中斷指令 將下一條Thumb指令的位址保存到 r14_svc 將CPSR暫存器保存到SPSR_svc
微處理器關閉IRQ,將Thumb位清除並藉由修改CPSR的相關位元進入管理者模式 強制將PC值設置為位址0x08

46 Thumb 資料處理指令(1/2) ARM 指令集支援單條指令中完成一個”運算元的位移”及一個”ALU操作”
Thumb 指令集將”位移操作”和”ALU操作”分離為不同指令

47 Thumb 資料處理指令(2/2)

48 Thumb單(多)暫存器資料傳送指令(1/2)

49 Thumb單(多)暫存器資料傳送指令(2/2)

50 Thank You !!


Download ppt "ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇"

Similar presentations


Ads by Google