ARM微處理器格式_第1頁
ARM微處理器格式_第2頁
ARM微處理器格式_第3頁
ARM微處理器格式_第4頁
ARM微處理器格式_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

上講知識回顧異常6種異常響應過程及返回方法;

本講學習內(nèi)容1、ARM指令系統(tǒng)版本(了解)2、ARM微處理器格式3、ARM微處理器指令的尋址方式4、6種異常響應過程及返回方法;第三章ARM指令系統(tǒng)本章學習要求:◆要求了解指令系統(tǒng)的格式◆掌握ARM微處理器指令的尋址方式◆掌握一些常用的ARM指令的使用方法

3.1ARM指令系統(tǒng)版本

ARM公司從最初的開發(fā)到現(xiàn)在,ARM指令集結構有了巨大的改進,并在不斷完善和發(fā)展。為了清楚地表達每個ARM內(nèi)核所使用的指令集,ARM公司定義了一系列的指令集體系結構版本,以vx表示某種版本。(V1,V2,V3,V4,V5,V6)

指令系統(tǒng)概念

指令:是規(guī)定計算機進行某種操作的命令。

指令系統(tǒng):計算機能夠執(zhí)行的各種指令的集合。3.2ARM微處理器指令格式1)所有指令都是32位的。(1)大多數(shù)指令都在單周期內(nèi)完成。(2)所有指令都可以條件執(zhí)行。(3)ARM指令為load/store類型。(4)基本指令僅36條,分成五類。(5)有9種尋址方式。(6)指令集可以通過協(xié)處理器擴展。1.ARM指令特點

2)ARM指令是加載/存儲(Load/Store)型:指令集僅能處理寄存器中的數(shù)據(jù),處理結果都要放回寄存器中對系統(tǒng)存儲器的訪問則需要通過專門的加載/存儲指令來完成。

3)ARM指令可以分為五大類: 數(shù)據(jù)處理指令、存儲器訪問指令、分支指令、協(xié)處理器指令、雜項指令。

4)ARM指令有9種尋址方式:寄存器尋址、立即尋址、寄存器偏移尋址、寄存器間接尋址、基址尋址、堆棧尋址、多寄存器尋址、塊拷貝尋址、相對尋址。2.ARM指令格式

1)ARM處理器是基于RISC原理設計的.2)具有32位ARM指令集和16位Thumb指令集3)ARM指令集效率高,但是代碼密度低4)Thumb指令集具有更好的代碼密度,卻仍然保持ARM的大多數(shù)性能上的優(yōu)勢,它是ARM指令集的子集。

5)所有ARM指令都是可以有條件執(zhí)行的,而Thumb指令僅有一條指令具備條件執(zhí)行功能。

6)ARM程序和Thumb程序可相互調(diào)用,相互之間的狀態(tài)切換開銷幾乎為零。ARM指令字長為固定的32位。一條典型的ARM指令編碼格式如下:ARM指令的語法格式如下:<opcode>{<cond>}{S}<Rd>,<Rn>{,<opcode2>}其中,符號“<>”內(nèi)的項是必須的,符號“{}”內(nèi)的項是可選的。<opcode>是指令操作碼,是必須的,如ADDS,SUBNES等。{<cond>}為指令執(zhí)行條件碼,是可選的,如EQ,NE等,如果不寫則使用默認條件AL(無條件執(zhí)行)。S為是否影響CPSR寄存器的值,書寫時影響CPSR,否則不影響。Rd為目標寄存器編碼。Rn為第一個操作數(shù)的寄存器編碼。operand2為第二個操作數(shù)。Arm指令中,操作碼(opcode)、目的操作數(shù)(Rd)、源操作數(shù)1(Rn)是必須的字段。

條件碼(cond)、符號位標記(s)源操作數(shù)2(oprand2)是可選的。

其中Rd和Rn必須是寄存器,因此Arm的“立即數(shù)”只能存儲在oprand2。3.ARM指令條件碼當處理器工作在ARM狀態(tài)時,幾乎所有的指令都根據(jù)CPSR中條件碼的狀態(tài)和指令的條件域有條件地執(zhí)行。當指令的執(zhí)行條件滿足時,指令被執(zhí)行,否則被忽略。

每一條ARM指令包含4位的條件碼,位于指令的最高4位[31:28]。條件碼共有16種,每種條件碼可用兩個字符表示,這兩個字符可以加在指令助記符后面和指令同時使用。如:跳轉指令B可以加上后綴EQ變?yōu)锽EQ表示“相等則跳轉”,即當CPSR中的Z標志置位時發(fā)生跳轉。對于Thumb指令集,只有B指令具有條件碼執(zhí)行功能,此指令條件碼同表3.3.1,但如果為無條件執(zhí)行時,條件碼助記符“AL”不能在指令中書寫。尋址方式定義:處理器根據(jù)指令中給出的地址/信息,尋找操作數(shù)/物理地址的方式。ARM指令系統(tǒng)的尋址方式分為9種,有的分為7種的等,下面介紹7種尋址方式:3.3ARM指令的主要尋址方式1.立即尋址(立即數(shù)尋址)

定義:操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù)。這個操作數(shù)被稱為立即數(shù),對應的尋址方式也就叫做立即尋址。

ADDR0,R0,#1

R0←R0+1

MOV R0 ,#0x3f ;R0←#0x3f

注意:

書寫立即數(shù)時,要求以“?!睘榍熬Y。 十六進制數(shù),#后加0x或&,如#0x3f,#&3f.

二進制數(shù), #后加0b,如#0b1011

十進制數(shù), #后加0d或缺省,如#0d678,#789

在指令格式中,第二個操作數(shù)有12位:因此有效立即數(shù)immediate可以表示成:

<immediate>=immed_8循環(huán)右移(2×rot) 4bit移位值(0-15)乘于2,得到一個范圍在0-30,步長為2的移位值。 因此,將ARM中的立即數(shù)稱為8位位圖。

記住一條準則:“最后8位移動偶數(shù)位”得到立即數(shù)。Immed_8rot……1211870ShifterRORimmediate

用12位第二操作數(shù)來表示一個32位立即數(shù)時,采用的是將8位數(shù)通過移位的方式來實現(xiàn)的。

12bit空間中,低8字節(jié)存儲8位位圖,高4字節(jié)存儲循環(huán)右移的次數(shù)。4字節(jié)只能表示24=16種移動次數(shù),但是由于常數(shù)表達式定義中,移位限定為偶數(shù)次,因此這4個字節(jié)剛好能表示0、2、4、6、8…32位16個數(shù)字!AND

R1,R2,#0xff

當處理器處理這條指令的第二操作數(shù)0xff時,因為0xff為8位二進制數(shù),所以處理器就將其直接放進8位“基本”數(shù)中,而4位“移位”數(shù)則為0.AND

R1,R2,#0x104

當處理器處理這條指令的第二操作數(shù)0x104時,因為此時0x104已經(jīng)超過了8位二進制數(shù),所以處理器就要將其“改造”一下,我們先把0x104轉換成二進制0000

0000

0000

0000

0000

0001

0000

0100,我們可以看到,這個數(shù)是0000

0000

0000

0000

0000

0000

0100

0001通過循環(huán)右移30位得到的。思考:AND

R1,R2,#0xff000000

2.寄存器尋址寄存器尋址——利用寄存器中的數(shù)值作為操作數(shù)。(這種尋址方式是各類微處理器經(jīng)常采用的一種方式,也是一種執(zhí)行效率較高的尋址方式。)兩種具體形式:寄存器尋址、寄存器移位尋址。一、寄存器尋址如指令:

ADD R0,R1,R2 ;R0←R1+R2

二、寄存器移位尋址

1)寄存器移位尋址 當?shù)诙僮鲾?shù)為寄存器型時,在執(zhí)行寄存器尋址操作時,也可以對第二操作數(shù)寄存器進行移位,此時第二操作數(shù)形式為: MOVRd,Rn,Rm,{<shift>}其中:Rm稱為第二操作數(shù)寄存器

<shift>用來指定移位類型和移位位數(shù),有兩種形式:

5位立即數(shù) (其值小于32)寄存器(用Rs表示) (其值小于32) 在指令執(zhí)行時將寄存器移位后的內(nèi)容作為第二操作數(shù)參與運算。例如指令:

ADDR3,R2,R1,LSR#2

;R3←R2+(R1右移2位) ADDR3,R2,R1,LSRR0

;R3←R2+(R1右移R0位)

2)第二操作數(shù)移位方式

共有6種移位方式:—LSL邏輯左移 —LSR邏輯右移—ASL算術左移 —ASR算術右移—ROR循環(huán)右移 —RRX帶擴展的循環(huán)右移(1)LSL:邏輯左移,空出的最低有效位用0填充。03100(2)LSR:邏輯右移,空出的最高有效位用0填充。310SUBR3,R2,R1,LSL#2;R3←R2-(R1左移2位)SUBR3,R2,R1,LSRR0;R3←R2-(R1右移R0位)0

(3)ASL:算術左移,由于左移空出的有效位用0填充,因此它與LSL同義。

(4)ASR:算術右移

(ArithmeticShiftRight)。算術移位的對象是帶符號數(shù),移位過程中必須保持操作數(shù)的符號不變。如果源操作數(shù)是正數(shù),空出的最高有效位用0填充,如果是負數(shù)用1填充。ADDR3,R2,R1,ASL#2

;R3←R2+(R1左移2位)SUBR3,R2,R1,ASRR3

;R3←R2-(R1算術右移R3位)

300(5)ROR:循環(huán)右移(RotateRight),移出的字的最低有效位依次填入空出的最高有效位。

31

0

(6)RRX:帶進位位的循環(huán)右移(RotateRightExtended)。將寄存器的內(nèi)容循環(huán)右移1位,空位用原來C標志位填充。

310

CSUBR3,R2,R1,ROR#2

;R3←R2+(R1循環(huán)右移2位)SUBR3,R2,R1,RRXR0

;R3←R2-(R1帶進位位循環(huán)右移R0位)3)第二操作數(shù)的移位位數(shù)

移位位數(shù)可以用立即數(shù)方式或者寄存器方式給出,其值均小于32,應為0---31。如下所示:ADDR3,R2,R1,LSR#2;R3

R2+(R1右移2位)ADDR3,R2,R1,LSRR4;R3

R2+(R1右移R4位) 寄存器R1的內(nèi)容分別邏輯右移2位、R4位

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論