1 / 32

ARM 處理器

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. 暫存器偏移定址. 進行偏移動作

Download Presentation

ARM 處理器

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ARM處理器 定址方式

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

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

  4. 暫存器偏移定址 • 進行偏移動作 • 先 偏移 後 作運算 • 第2 個運算元在與第1 個運算元結合之前 • 例題: MOV R0,R2,LSL #3 ; R2 的值左移3 位,結果放入R0, 即R0 = R2 * 8

  5. 暫存器間接定址 • 指令中的位址碼為通用暫存器編號 • 運算元儲存在暫存器指定位址的儲存單元中 • 例題: LDR R1,[R2] ; 將R2 中的數值作為位址, 取出位址中的資料儲存在R1 中

  6. 基址定址 • 暫存器的內容與指令中給出的偏移量相加 • 常用於查表,陣列操作,功能指令暫存器存取等 • 例題: LDR R2,[R3,#0x0F] ; 將R3 中的數值加0x0F 作為位址, 將此位址的數值儲存在R2 中

  7. 多暫存器定址 • 一次可以傳多個暫存器值 • 順序由小到大的順序排列,連續的暫存器可用“-”連接,否則,用“,”分隔書寫 • 例題: LDMIA R1!,{R2-R7,R12} ; 將R1 中的資料讀到R2-R7, R12, R1 自動加1

  8. 堆疊定址 • 特定順序進行存取的儲存區 • 例題: STMFD SP!,{R1-R7,LR} ; 將R1~R7,LR 存入

  9. 區塊複製定址 • 將資料整段複製 • 記憶體的某一位置複製到另一位置 • 例題: STMIA R0!,{R1-R7} ;將R1~R7 的資料儲存到記憶體中,記憶體指標在儲存第一 個值之後增加

  10. 相對定址 • 指令中的位址碼欄位作為偏移量 • 兩者相加後得到的位址即為運算元的有效位址 • 例題: BL ROUTE1 ; 調整到ROUTE1 副程式 BEQ LOOP ; 條件跳躍到LOOP 旗標處 … LOOP MOV R2,#2 … ROUTE1

  11. ARM 指令集

  12. ARM 指令集 • 指令格式 • 記憶體存取指令 • 資料處理指令 • 跳躍指令

  13. 基本格式 • 第2 個運算元 • 條件碼

  14. 第2 個運算元 • 指令格式 <opcode>{<cond>}{S}<Rd>,<Rn> {,<opcode2>} <opcode>是指令助記符號 {<cond>}為指令執行條件

  15. 第2 個運算元 • 靈活的使用第2 個運算元能提高代碼效率 • 基本運算元 #immed_8r Rm Rm,shift 條件碼

  16. 第2 個運算元#immed_8r • 常數是由一個8 位的常數 • 例題: ND R1,R2,#0x0F ; R2 與0x0F作運算,結果儲存在R1

  17. 第2 個運算元Rm • 算元即為暫存器的數值 • 例題: SUB R1,R1,R2;R1-R2=>R1

  18. 第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

  19. 條件碼 • 相等、不相等(EQ、 NE ) • 無符號數大於或等於、無符號數小於(CS/HS 、CC/LO ) • 負數、正數或零(MI 、PL ) • 溢出、沒有溢出(VS、 VC )

  20. 條件碼 • 無符號數大於、 無符號數小於或等於(HI、LS ) • 帶符號數大於或等於、 帶符號數小於(GE、 LT ) • 帶符號數大於、 帶符號數小於或等於(GT、 LE ) • 無條件執行(AL )

  21. 條件碼 • 例題: CMP R0,R1;R0 與R1 比較 ADDHI R0,R0,#1;若R0>R1,則R0=R0+1 ADDLS R1,R1,#1;若R0<=R1,則R1=R1+1

  22. ARM 記憶體存取指令 • LDR • LDM • SWP

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

  24. ARM 記憶體存取指令LDM • 為載入多個暫存器 • 格式: LDM{cond}<模式> Rn{!},reglist{^} • 例題: LDMIA R0!,{R3-R9} ; 載入R0 指向位址上的多字資料, 儲存到R3~R9 中,R0 值更新

  25. ARM 記憶體存取指令SWP • 將一個記憶體單元(暫存器Rn 中)讀取到一個暫存器Rd 中,同時將另一個暫存器Rm 寫入到該單元中 • 格式: SWP{cond}{B} Rd,Rm,[Rn] B 參數 ;Rd 從記憶體載入到的暫存 器;Rm 儲存到記憶體中

  26. ARM 記憶體存取指令SWP • 例題: SWP R1,R1,[R0] ; 將R1 的內容與R0 指向的儲存單元 的內容進行交換

  27. ARM 資料處理指令 • 資料傳送指令 • 算術邏輯運算指令 • 比較指令 • 乘法指令

  28. 資料傳送指令 • MOV、MVN • 格式: MOV{cond}{S} Rd,operand2 MVN{cond}{S} Rd,operand2 • 例題: MOV R0,R1 ;R0=R1MVN R1,R2 ;將R2 取反,結果存到R1

  29. 算術邏輯運算指令 • 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

  30. 比較指令 • CMP、CMN、TST、TEQ • 格式: CMP{cond} Rn,operand2 TST {cond} Rn,operand2 • 例題: CMP R1,R2 ; R1 與R2 比較,設定相關旗標位元TST R0,#0x01 ; 判斷R0 的最低位是否為0

  31. 乘法指令 • 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)

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

More Related