-
- 素材大小:
- 2.50 MB
- 素材授權(quán):
- 免費下載
- 素材格式:
- .ppt
- 素材上傳:
- ppt
- 上傳時間:
- 2018-03-16
- 素材編號:
- 183491
- 素材類別:
- 儀器設(shè)備PPT
-
素材預(yù)覽
這是一個關(guān)于arm整套介紹ppt課件,包括了ARM7TDMI(-S)指令系統(tǒng),ARM處理器尋址方式,ARM指令系統(tǒng)概述,ARM匯編語言程序設(shè)計,ARM-Thumb交互工作等內(nèi)容。第3章 ARM7TDMI(-S)指令尋址方式 3.1 ARM7TDMI(-S)指令系統(tǒng)簡介 3.1 ARM7TDMI(-S)指令系統(tǒng) ARM指令集與Thumb指令集的關(guān)系 指令格式 ARM指令集——指令格式 指令格式 ARM指令集——第2個操作數(shù) 3.2 ARM處理器尋址方式尋址方式分類 3.2 ARM處理器尋址方式尋址方式分類——立即尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器間接尋址 3.2 ARM處理器尋址方式尋址方式分類——基址尋址 3.2 ARM處理器尋址方式尋址方式分類——基址尋址 3.2 ARM處理器尋址方式尋址方式分類——相對尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址,歡迎點擊下載arm整套介紹ppt課件。
arm整套介紹ppt課件是由紅軟PPT免費下載網(wǎng)推薦的一款儀器設(shè)備PPT類型的PowerPoint.
第3章 ARM7TDMI(-S)指令尋址方式 3.1 ARM7TDMI(-S)指令系統(tǒng)簡介 3.1 ARM7TDMI(-S)指令系統(tǒng) ARM指令集與Thumb指令集的關(guān)系 指令格式 ARM指令集——指令格式 指令格式 ARM指令集——第2個操作數(shù) 3.2 ARM處理器尋址方式尋址方式分類 3.2 ARM處理器尋址方式尋址方式分類——立即尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器間接尋址 3.2 ARM處理器尋址方式尋址方式分類——基址尋址 3.2 ARM處理器尋址方式尋址方式分類——基址尋址 3.2 ARM處理器尋址方式尋址方式分類——相對尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址 3.2 ARM處理器尋址方式尋址方式分類——寄存器移位尋址 3.2 尋址方式移位尋址 3.2 ARM處理器尋址方式尋址方式分類——堆棧尋址 3.2 ARM處理器尋址方式尋址方式分類——堆棧尋址 3.2 ARM處理器尋址方式尋址方式分類——堆棧尋址 3.2 ARM處理器尋址方式尋址方式分類——堆棧尋址 3.2 ARM處理器尋址方式尋址方式分類——堆棧尋址 3.2 ARM處理器尋址方式尋址方式分類——多寄存器尋址 3.2 ARM處理器尋址方式尋址方式分類——多寄存器尋址 3.2 ARM處理器尋址方式尋址方式分類——多寄存器尋址 簡單的ARM程序 簡單的ARM程序 4.1 指令格式 ARM指令集——指令格式 4.1 指令格式 ARM指令集——第2個操作數(shù) 4.1 指令格式 ARM指令集——第2個操作數(shù) 4.1 指令格式 ARM指令集——第2個操作數(shù) 4.1 指令格式 ARM指令集——第2個操作數(shù) 4.1 指令格式 ARM指令集——第2個操作數(shù) 4.1 指令格式 ARM指令集——第2個操作數(shù) 4.1 指令格式 ARM指令集——第2個操作數(shù) 4.2 條件碼 ARM指令集——條件碼 4.2 條件碼 ARM指令集——條件碼 ARM指令 ARM指令的種類: 存儲器訪問指令 數(shù)據(jù)處理指令 乘法指令 ARM分支指令 協(xié)處理器指令 雜項指令 偽指令 4.3 存儲器加載/存儲指令 ARM指令集——存儲器加載/存儲指令 4.4 ARM數(shù)據(jù)處理指令 ARM指令集——ARM數(shù)據(jù)處理指令 4.5 乘法指令 ARM指令集——乘法指令 4.6 分支指令 ARM指令集——分支指令 4.7 協(xié)處理器指令 ARM指令集——協(xié)處理器指令 SWI指令產(chǎn)生軟件中斷時,處理器將執(zhí)行如下操作: 將SWI指令的下一條指令地址保存到R14_svc. 將CPSR保存到SPSR_svc中. 將CPSR[4:0]設(shè)置為0b10011,進入管理模式,并將CPSR[7]置為1,以禁止IRQ。將PC設(shè)置為0x08,從該處開始執(zhí)行指令。 軟件中斷處理完畢,通過以下指令返回: MOVS PC,R14_svc 第5章 ARM匯編語言程序設(shè)計 ARM匯編語言語句格式 ARM匯編語言的語句格式: {symbol}{instruction|directive|pseudo-instruction}{comment} 5.1.ARM匯編語言的偽操作 、宏指令和偽指令 5.1.ARM匯編語言的偽操作 、宏指令和偽指令 5.1.ARM匯編語言的偽操作 、宏指令和偽指令 5.1.ARM匯編語言的偽操作 、宏指令和偽指令 ARM匯編語言偽指令 ARM偽指令 ADS編譯環(huán)境下的ARM偽操作和宏指令 變量定義舉例 GBLA arithmetic ;聲明一個全局的算術(shù)變量 arithmatic SETA 0xEF ;向該變量賦值 SPACE arithmetic ;使用該變量 GBLL logical ;聲明一個全局的邏輯變量 logical SETL {TRUE} ;向該變量賦值 局部變量定義舉例 MACRO ;聲明一個宏 $ label message $ a ;宏的原型,宏的名稱為 ;message,有一個參數(shù)$ a LCLS string ;聲明一個局部串變量string String SETS “error” ;向該變量賦值 $ label ;代碼 INFO 0,”string”:CC: : STR: $ a ;使用該串變量 MEND ;宏定義結(jié)束 MAP 8192 consta FIELD 4 constb FIELD 4 x FIELD 8 y FIELD 8 string FIELD 16 MACRO {$label} macroname {$parameter} … 。缓甏a MEND 局部變量定義舉例 MACRO ;聲明一個宏 $ label message $ a ;宏的原型,宏的名稱為 ;message,有一個參數(shù)$ a LCLS string ;聲明一個局部串變量string String SETS “error” ;向該變量賦值 $ label ;代碼 INFO 0,”string”:CC: : STR: $ a ;使用該串變量 MEND ;宏定義結(jié)束 GNU編譯環(huán)境下的ARM偽操作與宏指令 ARM匯編程序?qū)嵗⒁?ADS編譯環(huán)境下的匯編代碼與GNU編譯環(huán)境下(Embest IDE內(nèi)部集成GNU的開發(fā)工具)有較多不同點,主要是符號及偽操作的不同. 5.2 ARM匯編語言語句格式 ARM匯編中的文件格式: 5.2 ARM匯編語言語句格式 ARM匯編語言語句格式: 5.2 ARM匯編語言語句格式 ARM匯編語言的語句格式: 注意: ● 在ARM 匯編語言中,各個指令、偽指令及偽操作的助記符可全部用大寫字母,也可全部用小寫字母,但不能在一個助記符中既有大寫字母又有小寫字母. ● 源程序中,在語句之間適當(dāng)?shù)夭迦肟招校商岣咴创a的可讀性. ● 如果一條語句很長,為了提高可讀性,可使用”\”將該長語句分成若干行來寫,在”\”之后不能再有其他字符,包括空格和制表符. 5.2 ARM匯編語言語句格式 ARM匯編語言中的符號 5.2 ARM匯編語言語句格式 ARM匯編語言中的符號----變量 5.2 ARM匯編語言語句格式 ARM匯編語言中的符號----數(shù)字常量 5.2 ARM匯編語言語句格式 ARM匯編語言中的符號----標(biāo)號 5.2 ARM匯編語言語句格式 ARM匯編語言中的符號----局部標(biāo)號 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式----字符串表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式----字符串表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式----字符串表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式----字符串表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---字符串表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---字符串表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---字符串表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---字符串表達式 局部變量定義舉例 MACRO ;聲明一個宏 $ label message $ a ;宏的原型,宏的名稱為;message,有一個參數(shù)$ a LCLS string ;聲明一個局部串變量string String SETS “error” ;向該變量賦值 $ label ;代碼 INFO 0,”string”:CC: : STR: $ a ;使用該串變量 MEND ;宏定義結(jié)束 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---數(shù)字表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---數(shù)字表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---數(shù)字表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---數(shù)字表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---數(shù)字表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---數(shù)字表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式---基于寄存器和基于PC的表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式----邏輯表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式----邏輯表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式----邏輯表達式 5.2 ARM匯編語言語句格式 ARM匯編語言中的表達式----其他操作符 5.2 ARM匯編語言語句格式以ADS編譯器下匯編語言程序設(shè)計的格式為例,來說明ARM匯編語言程序的基本格式. 5.2 ARM匯編語言語句格式 5.2 ARM匯編語言程序格式 5.2 ARM匯編語言語句格式 5.3 ARM匯編語言編程的重點 ARM數(shù)據(jù)處理操作 5.3 ARM匯編語言編程的重點 ARM數(shù)據(jù)處理操作 5.3 ARM匯編語言編程的重點 ARM數(shù)據(jù)處理操作 5.3 ARM匯編語言編程的重點 設(shè)置條件碼 5.3 ARM匯編語言編程的重點 設(shè)置條件碼 5.3 ARM匯編語言編程的重點 設(shè)置條件碼 CMP R0,R1 CMPEQ R2,R3 ADDEQ R4,R4,#1 ;If((a==b)&&(c==d)) e++ 5.3 ARM匯編語言編程的重點 設(shè)置條件碼 5.3 ARM匯編語言編程的重點 設(shè)置條件碼 5.3 ARM匯編語言編程的重點 匯編語言子程序調(diào)用及返回 5.3 ARM匯編語言編程的重點 匯編語言子程序調(diào)用及返回 5.3 ARM匯編語言編程的重點 匯編語言子程序調(diào)用及返回 5.3 ARM匯編語言編程的重點 跳轉(zhuǎn)表 5.3 ARM匯編語言編程的重點 跳轉(zhuǎn)表 5.3 ARM匯編語言編程的重點 跳轉(zhuǎn)表 5.3 ARM匯編語言編程的重點 ARM與Thumb 之間的狀態(tài)轉(zhuǎn)換及函數(shù)的互相調(diào)用 ARM匯編程序?qū)嵗?在ADS與GNU編譯環(huán)境下的簡單ARM指令程序 AREA Block,CODE,READONLY NUM EQU 20 ENTRY LDR R0,=src LDR R1,=dst MOV R2,#NUM MOV SP,#0x400 Bcopy MOVS R3,R2,LSR#3 BEQ Cword STMFD SP!,{R4-R11} Ocopy LDMIA R0!,{R4-R11} STMIA R1!,{R4-R11} SUBS R3,R3,#1 BNE Ocopy LDMFD SP!,{R4-R11} Cword ANDS R2,R2,#7 BEQ Stop Wcopy LDR R3,[R0],#4 STR R3,[R1],#4 SUBS R2,R2,#1 BNE Wcopy Stop MOV R0,#0x18 LDR R1,=0x20026 SWI 0x123456 AREA Bdata,DATA,READWRITE src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4 dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 END 第6章 ARM-Thumb交互工作 6.1 Thumb指令集 Thumb指令集 簡單的Thumb程序 6.1 Thumb 指令集 Thumb指令集與ARM指令集的區(qū)別 6.1 Thumb指令集 Thumb存儲器訪問指令 5.1 ARM匯編語言偽指令 Thumb存儲器訪問指令 6.1 Thumb指令 Thumb存儲器訪問指令 6.1 Thumb指令 Thumb存儲器訪問指令 6.1 Thumb指令 Thumb數(shù)據(jù)處理指令 5.1 ARM匯編語言偽指令 Thumb數(shù)據(jù)處理指令——數(shù)據(jù)傳送指令 5.1 ARM匯編語言偽指令 Thumb數(shù)據(jù)處理指令——算術(shù)邏輯運算指令 5.1 ARM匯編語言偽指令 Thumb分支指令 6.2 ARM-Thumb交互工作 ARM與Thumb 之間的狀態(tài)轉(zhuǎn)換及函數(shù)的互相調(diào)用 6.2 ARM-Thumb交互工作 ARM與Thumb 之間的狀態(tài)轉(zhuǎn)換及函數(shù)的互相調(diào)用 6.2 ARM-Thumb交互工作 ARM與Thumb 之間的狀態(tài)轉(zhuǎn)換及函數(shù)的互相調(diào)用 6.2 ARM-Thumb交互工作 ARM與Thumb 之間的狀態(tài)轉(zhuǎn)換及函數(shù)的互相調(diào)用 6.2 ARM-Thumb交互工作 ARM與Thumb 之間的狀態(tài)轉(zhuǎn)換及函數(shù)的互相調(diào)用 6.4 交互子程序和Veneer 調(diào)用者程序和被調(diào)用程序均在一個源程序中,可進行交互工作,如若兩種狀態(tài)下的程序位于不同的文件中,能否進行交互工作呢?答案是肯定的,只要程序編寫過程中遵守ARM和Thumb過程調(diào)用標(biāo)準ATPCS(ARM and Thumb Procedure Call Standards),程序間就可以進行交互工作.此時需要設(shè)置相應(yīng)的編譯選項,使編譯器按照ATPCS規(guī)則編譯程序,ARM連接器在檢測到ARM和Thumb混和編程的時候,會自動產(chǎn)生并插入一個稱為偽裝(veneer)的小代碼段,用來根據(jù)程序需要完成ARM - Thumb狀態(tài)的切換。 6.4 交互子程序和Veneer 交互編譯選項這個編譯選項就是-apcs/interwork。通過使用-apcs/interwork編譯項,可以強制在子程序返回時使用BX LR指令而非MOV PC, LR指令。例:兩個處于不同狀態(tài)的匯編程序間的交互工作。 6.4 交互子程序和Veneer 我們可以通過下面的操作完成兩文件間的交互工作: armasm arm.s armasm thumb.s –apcs/interwork armlink arm.o thumb.o 通常在編譯程序時,我們應(yīng)盡量選用-apcs/interwork選項。-apcs/interwork編譯器選項可以保證所有的ARM和Thumb 、C或C++編譯器編譯的模塊能夠在各種處理器狀態(tài)間相互調(diào)用: tcc -apcs /interwork armcc -apcs /interwork tcpp -apcs /interwork armcpp -apcs /interwork 在interwork選項下編譯的代碼模塊會比原Thumb或ARM代碼模塊大一些,例如對Thumb程序,典型的會增加約2%的容量。因此沒有必要對所有的程序進行交互編譯,只對那些包含交互子程序調(diào)用的程序進行交互編譯即可。 6.4 交互子程序和Veneer Veneer 所謂Veneer是由連接器自動生成并插入到匯編程序的一小段代碼。通常在下面兩種情況下,連接器會生成Veneer:(1)被調(diào)用程序包含狀態(tài)切換; (2)被調(diào)用程序的地址超出了調(diào)用指令的尋址范圍。連接時,連接器先找到veneer,再連接需調(diào)用的程序。根據(jù)被調(diào)用程序的狀態(tài),以及其與調(diào)用者間距離的遠近,Veneer包含三種狀態(tài):長、短以及內(nèi)嵌。由此可見,Veneer的使用會增加代碼的長度。如果調(diào)用者在距離相距不遠的空間內(nèi)多次調(diào)用相同的程序,則連接器會盡量使用相同的Veneer,而非生成新的Veneer,從而在一定程度上減小了代碼量。為了使Veneer盡量的減少占用空間,我們可以采取以下兩種措施: (1)盡量使關(guān)聯(lián)的程序的存儲空間靠近; (2)較少狀態(tài)切換。 6.4 交互子程序和Veneer 利用Veneer,在滿足下列規(guī)則的條件下,可以方便的進行C和C++以及匯編語言程序間的交互工作: (1)調(diào)用者程序的編寫可不考慮交互工作的問題,對于匯編語言編寫的程序使用BL指令進行程序調(diào)用。 (2)若被調(diào)用程序為C語言程序,使用-apcs /interwork選項進行編譯;若被調(diào)用程序為匯編語言程序,設(shè)置其INTERWORK屬性并用BX lr返回。 在Embest IDE集成開發(fā)環(huán)境中,對于交互工作的編譯設(shè)置起來更為簡單,只需根據(jù)情況,在屬性設(shè)置界面的assembler對話框中選中“make the assembled code as supporting interworking”或在complier對話框中選中“ARM interworking”或“Thumb interworking”即可。 6.3 ARM v5T擴展 ARM的體系結(jié)構(gòu)大致可以分為5個主要的版本:ARM v1T、 ARM v2T 、 ARM v3T 、 ARM v4T 、 ARM v5T 前面介紹的ARM7TDMI-S處理器內(nèi)核使用的是ARM v4T 版本, ARM v5T版本的ARM體系結(jié)構(gòu)中增加了額外的對交互工作的支持,除BX指令外,增加了BLX指令,另外LDR,LDM及POP指令也可以進行程序狀態(tài)的切換. 6.3 ARM v5T擴展 ARM的體系結(jié)構(gòu)大致可以分為5個主要的版本:ARM v1T、 ARM v2T 、 ARM v3T 、 ARM v4T 、 ARM v5T 前面介紹的ARM7TDMI-S處理器內(nèi)核使用的是ARM v4T 版本, ARM v5T版本的ARM體系結(jié)構(gòu)中增加了額外的對交互工作的支持,除BX指令外,增加了BLX指令,另外LDR,LDM及POP指令也可以進行程序狀態(tài)的切換.