第2章ARM體系結(jié)構(gòu)_第1頁(yè)
第2章ARM體系結(jié)構(gòu)_第2頁(yè)
第2章ARM體系結(jié)構(gòu)_第3頁(yè)
第2章ARM體系結(jié)構(gòu)_第4頁(yè)
第2章ARM體系結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第2章章 ARM體系結(jié)構(gòu)體系結(jié)構(gòu)黃智偉 第二章2.1 ARM體系結(jié)構(gòu)簡(jiǎn)介體系結(jié)構(gòu)簡(jiǎn)介 ARM(Advanced RISC Machines)微處理器 公司1991年成立于英國(guó)劍橋 ARM微處理器芯片 采用RISC架構(gòu)的ARM微處理器一般具有如下特點(diǎn): 支持Thumb(16位)/ARM(32位)雙指令集 指令執(zhí)行采用3級(jí)流水線/5級(jí)流水線技術(shù) 帶有指令Cache和數(shù)據(jù)Cache 支持大端格式和小端格式兩種方法存儲(chǔ)字?jǐn)?shù)據(jù) 支持Byte(字節(jié),8位)、Halfword(半字,16位)和Word(字,32位)三種數(shù)據(jù)類型 7種處理器模式:用戶、快中斷、中斷、管理、中止、系統(tǒng)和未定義 通過JTAG來仿

2、真調(diào)試ARM體系結(jié)構(gòu)芯片 具有片上總線AMBA采用RISC架構(gòu)的ARM微處理器一般具有如下特點(diǎn)(續(xù)) 采用存儲(chǔ)器映像I/O的方式,即把I/O端口地址作為特殊的存儲(chǔ)器地址; 具有協(xié)處理器接口。ARM允許接16個(gè)協(xié)處理器 采用了降低電源電壓,可工作在3.0V以下 體積小、低成本、高性能。ARM體系結(jié)構(gòu) ARM微處理器包括ARM7、ARM9、ARM9E、ARM10E、SecurCore、以及Intel的StrongARM、XScale和其它廠商基于ARM體系結(jié)構(gòu)的處理器。 32位ALU、 31個(gè)32位通用寄存器及 6位狀態(tài)寄存器 328位乘法器 3232位桶形移位寄存器2.2 ARM微處理器結(jié)構(gòu)微處

3、理器結(jié)構(gòu)2.2.1ARM7微處理器(略)2.2.2 ARM9微處理器 ARM9系列微處理器包含ARM920T、ARM922T和ARM940T 采用5級(jí)整數(shù)流水線 提供1.1MIPS/MHz的哈佛結(jié)構(gòu)。 支持?jǐn)?shù)據(jù)Cache和指令Cache。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA總線接口。 全性能的MMU,支持Windows CE、Linux、Palm OS等多種主流嵌入式操作系統(tǒng)。 MPU支持實(shí)時(shí)操作系統(tǒng)。ARM920T內(nèi)核結(jié)構(gòu)ARM9系列的主要應(yīng)用 無(wú)線通信設(shè)備 儀器儀表 安全系統(tǒng) 機(jī)頂盒 高端打印機(jī) 數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī) 典型產(chǎn)品如Samsung公司的

4、S3C2410A。2.2.3 ARM9E微處理器 2.2.4 ARM10E微處理器2.2.5 SecurCore微處理器 2.2.6 StrongARM微處理器2.2.7 XScale微處理器 。略 2.3 ARM微處理器的寄存器結(jié)構(gòu) ARM處理器共有37個(gè)寄存器,被分為若干個(gè)組 31個(gè)通用寄存器,包括程序計(jì)數(shù)器(PC指針),均為32位的寄存器。 6個(gè)狀態(tài)寄存器,用以標(biāo)識(shí)CPU的工作狀態(tài)及程序的運(yùn)行狀態(tài),均為32位。2.3.1 處理器運(yùn)行模式 ARM微處理器支持7種運(yùn)行模式 usr(用戶模式):ARM處理器正常程序執(zhí)行模式。 fiq(快速中斷模式):用于高速數(shù)據(jù)傳輸或通道處理 irq(外部中斷

5、模式):用于通用的中斷處理 svc(管理模式):操作系統(tǒng)使用的保護(hù)模式 abt (數(shù)據(jù)訪問終止模式): 當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式 sys(系統(tǒng)模式): 運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。 und(未定義指令中止模式):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式。CPU的工作模式 非用戶模式: 除用戶模式以外,其余的所有6種模式稱之為非用戶模式,或特權(quán)模式(Privileged Modes); 異常模式:除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式(Exception Modes),常用于處理中斷或異常,以及需要訪問受保護(hù)的系統(tǒng)資源等情況。 ARM處理器在每一種處理器模式下均有一組相應(yīng)的寄存器與之對(duì)應(yīng)。

6、可訪問的寄存器包括15個(gè)通用寄存器(R0R14)、一至二個(gè)狀態(tài)寄存器和程序計(jì)數(shù)器。2.3.2 處理器工作狀態(tài) 工作狀態(tài) 32位ARM工作狀態(tài) 在32位ARM狀態(tài)下執(zhí)行字對(duì)齊的ARM指令 16位Thumb工作狀態(tài) 在16位Thumb狀態(tài)下執(zhí)行半字對(duì)齊的Thumb指令。 當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為1時(shí),執(zhí)行BX指令進(jìn)入Thumb狀態(tài)。 當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為0時(shí),執(zhí)行BX指令進(jìn)入ARM狀態(tài) ARM處理器在兩種工作狀態(tài)之間可以切換,切換不影響處理器的模式或寄存器的內(nèi)容。2.3.3 ARM處理器的寄存器組織 每種處理器模式使用不同的寄存器組。其中15個(gè)通用寄存器(R0R14)、1或2個(gè)

7、狀態(tài)寄存器和程序計(jì)數(shù)器是通用的。 通用寄存器通用寄存器 通用寄存器(R0R15) 不分組寄存器R0R7 不分組寄存器R0R7是真正的通用寄存器,可以工作在所有的處理器模式下,沒有隱含的特殊用途。 分組寄存器R8R14: 寄存器R8Rl2可分為兩組物理寄存器。 用于FIQ模式,訪問R8_fiqR12_fiq 用于除FIQ以外的其他模式。訪問R8_usrR12_usr 通用寄存器通用寄存器 分組寄存器R8R14: 寄存器R8Rl2可分為兩組物理寄存器。 用于FIQ模式,訪問R8_fiqR12_fiq 用于除FIQ以外的其他模式。訪問R8_usrR12_usr 寄存器R12Rl4可分為6組物理寄存器

8、,對(duì)應(yīng)不同的工作模式 寄存器R13通常用作堆棧指針,稱作SP。每種異常模式都有自己的分組R13。 寄存器R14用作子程序鏈接寄存器,也稱為鏈接寄存器LK (Link Register)。 通用寄存器通用寄存器 不分組寄存器R0R7 分組寄存器R8R14: 程序計(jì)數(shù)器R15:(PC) 在ARM狀態(tài),位1:0為0,位31:2保存PC。 在Thumb狀態(tài),位0為0,位31:1保存PC。 采用了多級(jí)流水線技術(shù),PC總是指向當(dāng)前指令的下兩條指令的地址 程序狀態(tài)寄存器程序狀態(tài)寄存器 寄存器R16用作程序狀態(tài)寄存器CPSR(Current Program Status Register,當(dāng)前程序狀態(tài)寄存器)

9、 包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其他狀態(tài)和控制信息 每種異常模式都有一個(gè)程序狀態(tài)保存寄存器SPSR(Saved Program Status Register)。當(dāng)異常出現(xiàn),SPSR用于保留CPSR的狀態(tài)。程序狀態(tài)寄存器CPSR和SPSR的格式如下 條件碼標(biāo)志 N、Z、C、V(Negative、Zero、Carry、oVerflow)均為條件碼標(biāo)志位(Condition Code Flags) 內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變 條件碼標(biāo)志的通常含義如下: N:如果結(jié)果是帶符號(hào)二進(jìn)制補(bǔ)碼,那么,若結(jié)果為負(fù)數(shù),則N=1;若結(jié)果為正數(shù)或0,則N0。 Z:若指令的結(jié)果為0,則置1(通

10、常表示比較的結(jié)果為“相等”),否則置0。 C:溢出位。可用如下4種方法之一設(shè)置: 一加法(包括比較指令CMN)。若加法產(chǎn)生進(jìn)位(即無(wú)符號(hào)溢出),則C置1;否則置0。 一減法(包括比較指令CMP)。若減法產(chǎn)生借位(即無(wú)符號(hào)溢出),則C置0;否則置1。 一對(duì)于結(jié)合移位操作的非加法減法指令,C置為移出值的最后1位。 一對(duì)于其他非加法減法指令,C通常不改變。 V:可用如下兩種方法設(shè)置,即 一對(duì)于加法或減法指令,當(dāng)發(fā)生帶符號(hào)溢出時(shí),V置1,認(rèn)為操作數(shù)和結(jié)果是補(bǔ)碼形式的帶符號(hào)整數(shù)。 一對(duì)于非加法減法指令,V通常不改變。 控制位 程序狀態(tài)寄存器PSR(Program Status Register)的最低8

11、位I、F、T和M4:0用作控制位。當(dāng)異常出現(xiàn)時(shí)改變控制位。處理器在特權(quán)模式下時(shí)也可由軟件改變。 中斷禁止位 I:置1,則禁止IRQ中斷; F:置1,則禁止FIQ中斷。 T位 T=0 指示ARM執(zhí)行; T=1 指示Thumb執(zhí)行。 模式控制位 M4、M3、M2、Ml和M0(M4:0)是模式位,決定處理器的工作模式,如表2.3.1所列。M4:0模式控制位 其他位 程序狀態(tài)寄存器的其他位保留,用做以后的擴(kuò)展。2.3.4 Thumb狀態(tài)的寄存器集 Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下的寄存器集的子集。程序員可以直接訪問8個(gè)通用寄存器(R0R7)、PC、SP、LR和CPSR。每一種特權(quán)模式都有一組S

12、P、LR和SPSR。 Thumb狀態(tài)R0R7與ARM狀態(tài)R0R7是一致的。 Thumb狀態(tài)CPSR和SPSR與ARM的狀態(tài)CPSR和SPSR是一致的。 Thumb狀態(tài)SP映射到ARM狀態(tài)R13。 Thumb狀態(tài)LR映射到ARM狀態(tài)R14。 Thumb狀態(tài)PC映射到ARM狀態(tài)PC(R15)。Thumb狀態(tài)下寄存器組織2.4 ARM微處理器的異常處理微處理器的異常處理 異常:在一個(gè)正常的程序流程執(zhí)行過程中,由內(nèi)部或外部源產(chǎn)生的一個(gè)事件使正常的程序產(chǎn)生暫時(shí)的停止,稱之為異常。2.4.1 ARM體系結(jié)構(gòu)的異常類型 ARM體系結(jié)構(gòu)支持7種類型的異常 異常出現(xiàn)后,強(qiáng)制從異常類型對(duì)應(yīng)的固定存儲(chǔ)器地址開始執(zhí)行

13、程序。這些固定的地址稱為異常向量(Exception Vectors)。ARM體系結(jié)構(gòu)的異常類型2.4.2 異常類型的含義(1)復(fù)位處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常(2)未定義指令異常當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常(3)軟件中斷異常(SoftWare Interrupt,SWI)軟件中斷異常由執(zhí)行SWI指令產(chǎn)生(4)指令預(yù)取中止若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問(5)數(shù)據(jù)中止(數(shù)據(jù)訪問存儲(chǔ)器中止)若處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當(dāng)前指令訪問(6)外部中斷請(qǐng)求(IRQ)異常當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的I

14、位為0時(shí),產(chǎn)生IRQ異常。(7)快速中斷請(qǐng)求(FIQ)異常當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且CPSR中的F位為0時(shí),產(chǎn)生FIQ異常。2.4.3 異常的響應(yīng)過程 當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作: 將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時(shí)能從正確的位置重新開始執(zhí)行。 將CPSR狀態(tài)傳送到相應(yīng)的SPSR中。 根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。 強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,跳轉(zhuǎn)到相應(yīng)的異常處理程序。還可以設(shè)置中斷禁止位,以禁止中斷發(fā)生。 如果異常發(fā)生時(shí),處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入PC時(shí),處理器自動(dòng)切換到A

15、RM狀態(tài)。 異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回: 將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。 將SPSR內(nèi)容送回CPSR中。 若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。 可以認(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開始執(zhí)行的,因此復(fù)位異常處理程序不需要返回。2.4.4 應(yīng)用程序中的異常處理 當(dāng)ARM處理器發(fā)生異常時(shí),程序計(jì)數(shù)器PC會(huì)被強(qiáng)制設(shè)置為對(duì)應(yīng)的異常向量,從而跳轉(zhuǎn)到異常處理程序,當(dāng)異常處理完成以后,返回到主程序繼續(xù)執(zhí)行。2.5 ARM的存儲(chǔ)器結(jié)構(gòu) 地址空間地址空間 ARM體系結(jié)構(gòu)使用232個(gè)字節(jié)的單一、線性地址空間。 地址范圍為02321。 存儲(chǔ)器格式存儲(chǔ)

16、器格式 字對(duì)齊 半字對(duì)齊 ARM存儲(chǔ)系統(tǒng)可以使用小端存儲(chǔ)或者大端存儲(chǔ)兩種方法 存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器結(jié)構(gòu) 帶有指令Cache和數(shù)據(jù)Cache 存儲(chǔ)器映射存儲(chǔ)器映射I/O ARM系統(tǒng)使用存儲(chǔ)器映射I/O2.6 ARM微處理器指令系統(tǒng)2.6.1 基本尋址方式ARM處理器有9 種基本尋址方式。1寄存器尋址寄存器尋址操作數(shù)的值在寄存器中,指令中的地址碼字段給出的是寄存器編號(hào),寄存器的內(nèi)容是操作數(shù),指令執(zhí)行時(shí)直接取出寄存器值操作。例如指令:MOV R1,R2 ;R1R2 SUB R0,R1,R2 ;R0R1- R22立即尋址立即尋址在立即尋址指令中數(shù)據(jù)就包含在指令當(dāng)中,立即尋址指令的操作碼字段后面的地址碼部分

17、就是操作數(shù)本身,取出指令也就取出了可以立即使用的操作數(shù)(也稱為立即數(shù))。立即數(shù)要以“”為前綴,表示16進(jìn)制數(shù)值時(shí)以“0 x”表示。例如指令:ADD R0,R0,#1 ;R0R0 + 1MOV R0,#0 xff00 ;R00 xff003寄存器移位尋址寄存器移位尋址寄存器移位尋址是ARM指令集特有的尋址方式。第2個(gè)寄存器操作數(shù)在與第1個(gè)操作數(shù)結(jié)合之前,先進(jìn)行移位操作。例如指令:MOV R0,R2,LSL #3 ;R2的值左移3位,結(jié)果放入R0,即R0=R2 * 8ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相與操作,結(jié)果放入R1LSL:邏輯左移(Logical S

18、hift Left),寄存器中字的低端空出的位補(bǔ)0。4寄存器間接尋址寄存器間接尋址指令中的地址碼給出的是一個(gè)通用寄存器編號(hào),所需要的操作數(shù)保存在寄存器指定地址的存儲(chǔ)單元中,即寄存器為操作數(shù)的地址指針,操作數(shù)存放在存儲(chǔ)器中。例如指令 :LDR R0,R1 ;R0R1(將R1中的數(shù)值作為地址,取出此地址中的數(shù)據(jù)保存在R0中)STR R0,R1 ;R1 R05變址尋址變址尋址 變址尋址是將基址寄存器的內(nèi)容與指令中給出的偏移量相加,形成操作數(shù)的有效地址,變址尋址用于訪問基址附近的存儲(chǔ)單元,常用于查表,數(shù)組操作,功能部件寄存器訪問等。 例如指令:LDR R2,R3,#4 ;R2R3 + 4(將R3中的數(shù)

19、值加4作為地址,取出此地址的數(shù)值保存在R2 中)STR R1,R0,#-2 ;R0-2 R1(將R0中的數(shù)值減2 作為地址,把R1中的內(nèi)容保存到此地址位置)6多寄存器尋址多寄存器尋址采用多寄存器尋址方式,一條指令可以完成多個(gè)寄存器值的傳送,這種尋址方式用一條指令最多可以完成16個(gè)寄存器值的傳送。 例如指令: LDMIA R0,R1,R2,R3,R5 ;R1R0 ;R2R0 + 4 ;R3R3 + 8 ;R4R3 + 12 7堆棧尋址堆棧尋址堆棧是一種數(shù)據(jù)結(jié)構(gòu),堆棧是特定順序進(jìn)行存取的存儲(chǔ)區(qū),操作順序分為“后進(jìn)先出”和“先進(jìn)后出”。8塊復(fù)制尋址塊復(fù)制尋址塊復(fù)制尋址用于把一塊從存儲(chǔ)器的某一位置復(fù)制

20、到另一位置,是一個(gè)多寄存器傳送指令。例如指令:STMIA R0!,R1-R7 ;將R1R7的數(shù)據(jù)保存到存儲(chǔ)器中,存儲(chǔ)器指針在保存第一個(gè)值之后增加,增長(zhǎng)方向?yàn)橄蛏显鲩L(zhǎng)。STMDA R0!,R1-R7 ;將R1R7的數(shù)據(jù)保存到存儲(chǔ)器中,存儲(chǔ)器指針在保存第一個(gè)值之后增加,增長(zhǎng)方向?yàn)橄蛳略鲩L(zhǎng)。9相對(duì)尋址相對(duì)尋址相對(duì)尋址是變址尋址的一種變通,由程序計(jì)數(shù)器PC提供基準(zhǔn)地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數(shù)的有效地址。例如指令: BL ROUTE1 ;調(diào)用到ROUTE1子程序 BEQ LOOP ;條件跳轉(zhuǎn)到LOOP標(biāo)號(hào)處 LOOP MOV R2,#2 ROUTE1 2.6.2 A

21、RM 指令集1指令格式指令格式 基本格式 S , opcode 指令助記符,如LDR,STR等 cond 執(zhí)行條件,如EQ,NE等 S 是否影響CPSR 寄存器的值,書寫時(shí)影響CPSR,否則不影響 Rd 目標(biāo)寄存器 Rn 第一個(gè)操作數(shù)的寄存器ARM條件碼 ARM 存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令 ARM微處理器支持加載/存儲(chǔ)指令 ARM的加載/存儲(chǔ)指令是可以實(shí)現(xiàn)字、半字、,無(wú)符/有符字節(jié)操作; 批量加載/存儲(chǔ)指令可實(shí)現(xiàn)一條指令加載/存儲(chǔ)多個(gè)寄存器的內(nèi)容; SWP指令是一條寄存器和存儲(chǔ)器內(nèi)容交換的指令。 ARM處理器是程序空間、RAM空間及IO映射空間統(tǒng)一編址 對(duì)外圍IO、程序數(shù)據(jù)的訪問均要通過加載

22、/存儲(chǔ)指令進(jìn)行。ARM 存儲(chǔ)訪問指令表數(shù)據(jù)處理指令表 ARM 跳轉(zhuǎn)指令跳轉(zhuǎn)指令 B(跳轉(zhuǎn)指令) B指令的格式為: B條件 目標(biāo)地址 B指令是最簡(jiǎn)單的跳轉(zhuǎn)指令。一旦遇到一個(gè)B指令,ARM處理器將立即跳轉(zhuǎn)到給定的目標(biāo)地址,從那里繼續(xù)執(zhí)行。注意存儲(chǔ)在跳轉(zhuǎn) BL(帶返回的跳轉(zhuǎn)指令) BL指令的格式為: BL條件 目標(biāo)地址 BL是另一個(gè)跳轉(zhuǎn)指令,但跳轉(zhuǎn)之前,會(huì)在寄存器R14中保存PC的當(dāng)前內(nèi)容 BLX(帶返回和狀態(tài)切換的跳轉(zhuǎn)指令) BLX指令的格式為: BLX 目標(biāo)地址 BX(帶狀態(tài)切換的跳轉(zhuǎn)指令) BX指令的格式為: BX條件 目標(biāo)地址BX指令跳轉(zhuǎn)到指令中所指定的目標(biāo)地址,目標(biāo)地址處的指令既可以是AR

23、M指令,也可以是Thumb指令。ARM 雜項(xiàng)指令雜項(xiàng)指令異常產(chǎn)生指令 ARM微處理器所支持的異常指令有如下兩條: SWI(軟件中斷指令) SWI指令的格式為: SWI條件 24位的立即數(shù) BKPT(斷點(diǎn)中斷指令) BKPT指令的格式為: BKPT 16位的立即數(shù) 程序狀態(tài)寄存器訪問指令 MRS(程序狀態(tài)寄存器到通用寄存器的數(shù)據(jù)傳送指令) MRS指令的格式為: MRS條件 通用寄存器,程序狀態(tài)寄存器(CPSR或SPSR) MRS指令用于將程序狀態(tài)寄存器的內(nèi)容傳送到通用寄存器中。 MSR(通用寄存器到程序狀態(tài)寄存器的數(shù)據(jù)傳送指令) MSR指令的格式為: MSR條件 程序狀態(tài)寄存器(CPSR或SPS

24、R)_,操作數(shù) MSR指令用于將操作數(shù)的內(nèi)容傳送到程序狀態(tài)寄存器的特定域中l(wèi)ARM 偽指令偽指令Example: C assignments C: (example2-2)x = (a + b) c; Assembler:ADR r4,a; get address for aLDR r0,r4; get value of aADR r4,b; get address for b, reusing r4LDR r1,r4; get value of bADD r3,r0,r1; compute a+bADR r4,c; get address for cLDR r2,r4; get value

25、of c SUB r3,r3,r2; complete computation of xADR r4,x; get address for xSTR r3,r4; store value of xExample: C assignment C (example2-3)y = a*(b+c); Assembler:ADR r4,b ; get address for bLDR r0,r4 ; get value of bADR r4,c ; get address for cLDR r1,r4 ; get value of cADD r2,r0,r1 ; compute partial resu

26、ltADR r4,a ; get address for aLDR r0,r4 ; get value of a MUL r3,r2,r0 ; compute final value for yADR r4,y ; get address for ySTR r3,r4 ; store yExample: C assignment C: (example2-4)z = (a 2) | (b & 15); Assembler:ADR r4,a ; get address for aLDR r0,r4 ; get value of aMOV r0,r0,LSL #2 ; perform shiftA

27、DR r4,b ; get address for bLDR r1,r4 ; get value of bAND r1,r1,#15 ; perform ANDORR r1,r0,r1 ; perform OR 匯編語(yǔ)言的語(yǔ)句格式ARM(Thumb)匯編語(yǔ)言的語(yǔ)句格式為:標(biāo)號(hào)標(biāo)號(hào) 指令或偽指令指令或偽指令 ;注釋;注釋標(biāo)號(hào)必須從一行的行頭開始標(biāo)號(hào)必須從一行的行頭開始,并且符號(hào)中不能包含空格。指令不能從一行的行頭開始指令不能從一行的行頭開始,即在一行語(yǔ)句中,指令的前面必須有空格或者標(biāo)號(hào)。在匯編語(yǔ)言程序設(shè)計(jì)中,每一條指令的助記符可以全部用大寫、或全部用小寫,但不允許在一條指令中大、小寫混用。寄存器

28、可以大寫或小寫。偽指令有些必須在一行的開頭頂格書寫,另外一些必須留有空格。注釋以分號(hào)“;”開頭,到行末結(jié)束。如果一條語(yǔ)句太長(zhǎng),可將該長(zhǎng)語(yǔ)句分為若干行來書寫,在行的末尾用“”表示下一行與本行為同一條語(yǔ)句。在源程序中,語(yǔ)句之間可以插入空行,增強(qiáng)可讀性。Ads中編寫程序的一般格式AREA init,CODE,READONLY ENTRYstart mov r0, #0 xaamov R1, #0 x1add r2, r0,r1stopmov R0,#0 x18ldr r1,=0 x20026swi 0 x123456 endexamplez = (a b) x = 5; y = c + d; els

29、e x = c - d;compute and test conditionADR r4,aLDR r0,r4ADR r4,bLDR r1,r4CMP r0,r1BLE fblock; true blockMOV r0,#5ADR r4,xSTR r0,r4ADR r4,cLDR r0,r4ADR r4,dLDR r1,r4ADD r0,r0,r1ADR r4,ySTR r0,r4B after; false blockfblock ADR r4,cLDR r0,r4ADR r4,dLDR r1,r4SUB r0,r0,r1ADR r4,xSTR r0,r4after .2.7 ARM微處理器的接口2.7.1 ARM協(xié)處理器接口 在邏輯上,ARM可以擴(kuò)展16個(gè)(CP15CP0)協(xié)處理器, 其中:CP15作為系統(tǒng)控制,CP14作為調(diào)試控制器,CP74作為用戶控制器,CP138和CP30保留。 每個(gè)協(xié)處理器可有16個(gè)寄存器。例如MMU和保護(hù)單元的系統(tǒng)控制都采用CP15協(xié)處理器;JTAG調(diào)試中的協(xié)處理器為CP14,即調(diào)試通信通道DCC(Debug Communication Channel)。2.7.2 ARM AMBA接口 ARM處理器內(nèi)核可以通過先進(jìn)的微控制器總線架構(gòu)AMBA(Advanced Microcontroll

溫馨提示

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

評(píng)論

0/150

提交評(píng)論