slide1
Download
Skip this Video
Download Presentation
ARM 處理器

Loading in 2 Seconds...

play fullscreen
1 / 32

ARM 處理器 - PowerPoint PPT Presentation


  • 105 Views
  • Uploaded on

ARM 處理器. 定址方式. 寄存器定址. 直接由暫存器取出值操作 指令中的位址為暫存器編號 例題 : MOV R1,R2 ; R2 -> R1 SUB R0,R1,R2 ; R1 - R2 -> R0. 立即定址. 指令碼是 指令 也是 運算元 取出指令即可做運算 “#”後的值為立即值, 16 進制數值時以“ 0x” 表示 例題 : SUBS R0,R0,#1 ; R0 – 1 -> R0 MOV R0,#0xff00 ; 0xff00 -> R0. 暫存器偏移定址. 進行偏移動作

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' ARM 處理器' - tanner-walton


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

ARM處理器

定址方式

slide2
寄存器定址
  • 直接由暫存器取出值操作
  • 指令中的位址為暫存器編號
  • 例題: MOV R1,R2 ; R2 -> R1

SUB R0,R1,R2 ; R1 - R2 -> R0

slide3
立即定址
  • 指令碼是 指令 也是 運算元
  • 取出指令即可做運算
  • “#”後的值為立即值,16 進制數值時以“0x”表示
  • 例題: SUBS R0,R0,#1 ; R0 – 1 -> R0

MOV R0,#0xff00 ; 0xff00 -> R0

slide4
暫存器偏移定址
  • 進行偏移動作
  • 先 偏移 後 作運算
  • 第2 個運算元在與第1 個運算元結合之前
  • 例題: MOV R0,R2,LSL #3 ;

R2 的值左移3 位,結果放入R0,

即R0 = R2 * 8

slide5
暫存器間接定址
  • 指令中的位址碼為通用暫存器編號
  • 運算元儲存在暫存器指定位址的儲存單元中
  • 例題: LDR R1,[R2] ; 將R2 中的數值作為位址, 取出位址中的資料儲存在R1 中
slide6
基址定址
  • 暫存器的內容與指令中給出的偏移量相加
  • 常用於查表,陣列操作,功能指令暫存器存取等
  • 例題: LDR R2,[R3,#0x0F] ; 將R3 中的數值加0x0F 作為位址, 將此位址的數值儲存在R2 中
slide7
多暫存器定址
  • 一次可以傳多個暫存器值
  • 順序由小到大的順序排列,連續的暫存器可用“-”連接,否則,用“,”分隔書寫
  • 例題: LDMIA R1!,{R2-R7,R12} ; 將R1 中的資料讀到R2-R7, R12, R1 自動加1
slide8
堆疊定址
  • 特定順序進行存取的儲存區
  • 例題: STMFD SP!,{R1-R7,LR} ; 將R1~R7,LR 存入
slide9
區塊複製定址
  • 將資料整段複製
  • 記憶體的某一位置複製到另一位置
  • 例題: STMIA R0!,{R1-R7} ;將R1~R7 的資料儲存到記憶體中,記憶體指標在儲存第一

個值之後增加

slide10
相對定址
  • 指令中的位址碼欄位作為偏移量
  • 兩者相加後得到的位址即為運算元的有效位址
  • 例題: BL ROUTE1 ; 調整到ROUTE1 副程式

BEQ LOOP ; 條件跳躍到LOOP 旗標處

LOOP MOV R2,#2

ROUTE1

slide12
ARM 指令集
  • 指令格式
  • 記憶體存取指令
  • 資料處理指令
  • 跳躍指令
slide13
基本格式
  • 第2 個運算元
  • 條件碼
slide14
第2 個運算元
  • 指令格式

<opcode>{<cond>}{S}<Rd>,<Rn>

{,<opcode2>}

<opcode>是指令助記符號

{<cond>}為指令執行條件

slide15
第2 個運算元
  • 靈活的使用第2 個運算元能提高代碼效率
  • 基本運算元

#immed_8r

Rm

Rm,shift

條件碼

2 immed 8r
第2 個運算元#immed_8r
  • 常數是由一個8 位的常數
  • 例題: ND R1,R2,#0x0F ; R2 與0x0F作運算,結果儲存在R1
slide17
第2 個運算元Rm
  • 算元即為暫存器的數值
  • 例題: SUB R1,R1,R2;R1-R2=>R1
2 rm shift
第2 個運算元Rm,shift
  • 暫存器的移位結果作為運算元
  • RM 值不變
  • ASR #n 算術右移n 位(1≤n≤32)

LSL #n 邏輯左移n 位元(1≤n≤31)

  • 例題: ADD R1,R1,R1,LSL #3; R1=R1*9
slide19
條件碼
  • 相等、不相等(EQ、 NE )
  • 無符號數大於或等於、無符號數小於(CS/HS 、CC/LO )
  • 負數、正數或零(MI 、PL )
  • 溢出、沒有溢出(VS、 VC )
slide20
條件碼
  • 無符號數大於、 無符號數小於或等於(HI、LS )
  • 帶符號數大於或等於、 帶符號數小於(GE、 LT )
  • 帶符號數大於、 帶符號數小於或等於(GT、 LE )
  • 無條件執行(AL )
slide21
條件碼
  • 例題: CMP R0,R1;R0 與R1 比較

ADDHI R0,R0,#1;若R0>R1,則R0=R0+1

ADDLS R1,R1,#1;若R0<=R1,則R1=R1+1

arm ldr
ARM 記憶體存取指令LDR
  • 記憶體中讀取資料放入暫存器
  • 格式: LDR{cond} {T} Rd, <地址> ; 載入指定位址上的資料(字),放入Rd 中
  • 例題: LDR R2,[R5] ;

載入R5 指定位址上的資料(字),

放入R2 中

arm ldm
ARM 記憶體存取指令LDM
  • 為載入多個暫存器
  • 格式:

LDM{cond}<模式> Rn{!},reglist{^}

  • 例題: LDMIA R0!,{R3-R9} ;

載入R0 指向位址上的多字資料,

儲存到R3~R9 中,R0 值更新

arm swp
ARM 記憶體存取指令SWP
  • 將一個記憶體單元(暫存器Rn 中)讀取到一個暫存器Rd 中,同時將另一個暫存器Rm 寫入到該單元中
  • 格式:

SWP{cond}{B} Rd,Rm,[Rn]

B 參數 ;Rd 從記憶體載入到的暫存

器;Rm 儲存到記憶體中

arm swp1
ARM 記憶體存取指令SWP
  • 例題: SWP R1,R1,[R0] ;

將R1 的內容與R0 指向的儲存單元

的內容進行交換

slide27
ARM 資料處理指令
  • 資料傳送指令
  • 算術邏輯運算指令
  • 比較指令
  • 乘法指令
slide28
資料傳送指令
  • MOV、MVN
  • 格式: MOV{cond}{S} Rd,operand2 MVN{cond}{S} Rd,operand2
  • 例題: MOV R0,R1 ;R0=R1MVN R1,R2 ;將R2 取反,結果存到R1
slide29
算術邏輯運算指令
  • ADD、SUB 、RSB 、AND 、ORR
  • 格式: ADD{cond}{S} Rd,Rn,operand2 ORR{cond}{S} Rd,Rn,operand2
  • 例題: ADD R1,R1,R2 ;R1=R1+R2EOR R2,R1,R0 ;R2=R1^R0
slide30
比較指令
  • CMP、CMN、TST、TEQ
  • 格式: CMP{cond} Rn,operand2 TST {cond} Rn,operand2
  • 例題: CMP R1,R2 ;

R1 與R2 比較,設定相關旗標位元TST R0,#0x01 ;

判斷R0 的最低位是否為0

slide31
乘法指令
  • MUL 、MLA
  • 格式: MUL{cond}{S} Rd,Rm,Rs MLA{cond}{S} Rd,Rm,Rs,Rn
  • 例題: MUL R1,R2,R3 ;R1=R2×R3UMLAL R0,R1,R5,R8 ;

(R1,R0)=R5×R8+(R1,R0)

slide32
跳躍指令
  • B(跳躍 )、BL(帶鏈結的跳躍 )、BX(分支與轉換的跳躍 )
  • 格式: B{cond} label
  • 例題: B WAITA ;跳躍到WAITA 標號處BL DELAY ; 副程式使用BX R0 ;跳躍到R0,依據R0 的最低位元

來切換處理器狀態

ad