《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實(shí)踐》課件第5章_第1頁
《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實(shí)踐》課件第5章_第2頁
《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實(shí)踐》課件第5章_第3頁
《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實(shí)踐》課件第5章_第4頁
《基于ARM9的嵌入式Linux系統(tǒng)開發(fā)原理與實(shí)踐》課件第5章_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章ARM處理器5.1ARM處理器概述5.2ARM微處理器結(jié)構(gòu)5.3ARM編程模型5.4ARM指令集5.5ARM匯編程序設(shè)計(jì)本章小結(jié)

5.1ARM處理器概述

5.1.1ARM

1991年ARM(Advanced

RISC

Machines)公司成立于英國(guó)劍橋,主要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。目前,采用ARM技術(shù)知識(shí)產(chǎn)權(quán)(IP)核的微處理器,即通常所說的ARM微處理器,已遍及工業(yè)控制、消費(fèi)類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無線系統(tǒng)等各類產(chǎn)品市場(chǎng)。圖5-1ARM的業(yè)務(wù)模型5.1.2ARM微處理器的應(yīng)用領(lǐng)域及特點(diǎn)

1.?ARM微處理器的應(yīng)用領(lǐng)域

(1)工業(yè)控制領(lǐng)域。

(2)無線通信領(lǐng)域。

(3)網(wǎng)絡(luò)應(yīng)用。

(4)消費(fèi)類電子產(chǎn)品。

(5)成像和安全產(chǎn)品。

2.?ARM微處理器的特點(diǎn)

采用RISC架構(gòu)的ARM微處理器一般具有如下特點(diǎn):

①體積小、低功耗、低成本、高性能;

②支持Thumb(16位)/ARM(32位)雙指令集,能很好地兼容8位/16位器件;

③大量使用寄存器,指令執(zhí)行速度更快;

④大多數(shù)數(shù)據(jù)操作都在寄存器中完成;

⑤尋址方式靈活簡(jiǎn)單,執(zhí)行效率高;

⑥指令長(zhǎng)度固定。5.1.3ARM微處理器版本及系列

1.?ARM微處理器版本

1)版本1(過時(shí))

2)版本2(過時(shí))

3)版本3

4)版本4

5)版本5

6)版本6

2.?ARM微處理器系列

1)?ARM7系列微處理器

①具有嵌入式ICE-RT邏輯,調(diào)試開發(fā)方便;

②極低的功耗,適合對(duì)功耗要求較高的應(yīng)用,如便攜式產(chǎn)品;

③能夠提供0.9MIPS/MHz的三級(jí)流水線結(jié)構(gòu);

④代碼密度高并兼容16位的Thumb指令集;

⑤對(duì)操作系統(tǒng)的支持廣泛,包括Windows

CE、Linux、Palm

OS等。

2)?ARM9系列微處理器

①?5級(jí)整數(shù)流水線,指令執(zhí)行效率更高;

②提供1.1MIPS/MHz的哈佛結(jié)構(gòu);

③支持32位ARM指令集和16位Thumb指令集;

④支持32位的高速AMBA總線接口;

⑤全性能的MMU,支持Windows

CE、Linux、Palm

OS等多種主流嵌入式操作系統(tǒng);

⑥?MPU支持實(shí)時(shí)操作系統(tǒng);

⑦支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。

3)?ARM9E系列微處理器

①支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合;

②5級(jí)整數(shù)流水線,指令執(zhí)行效率更高;

③支持32位ARM指令集和16位Thumb指令集;

④支持32位的高速AMBA總線接口;

⑤支持VFP9浮點(diǎn)處理協(xié)處理器;

⑥全性能的MMU,支持Windows

CE、Linux、Palm

OS等多種主流嵌入式操作系統(tǒng);

⑦M(jìn)PU支持實(shí)時(shí)操作系統(tǒng);

⑧支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力;

⑨主頻最高可達(dá)300MIPS。

4)?ARM10E系列微處理器

①支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合;

②6級(jí)整數(shù)流水線,指令執(zhí)行效率更高;

③支持32位ARM指令集和16位Thumb指令集;

④支持32位的高速AMBA總線接口;

⑤支持VFP10浮點(diǎn)處理協(xié)處理器;

⑥全性能的MMU,支持Windows

CE、Linux、Palm

OS等多種主流嵌入式操作系統(tǒng);

⑦支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力;

⑧主頻最高可達(dá)400MIPS;

⑨內(nèi)嵌并行讀/寫操作部件。

5)?SecurCore系列微處理器

其系統(tǒng)安全方面具有如下的特點(diǎn):

①帶有靈活的保護(hù)單元,以確保操作系統(tǒng)和應(yīng)用數(shù)據(jù)的安全;

②采用軟內(nèi)核技術(shù),防止外部對(duì)其進(jìn)行掃描探測(cè);

③可集成用戶自己的安全特性和其他協(xié)處理器。

6)?StrongARM系列微處理器

Inter

StrongARM

SA-1100處理器是采用ARM體系結(jié)構(gòu)高度集成的32位RISC微處理器。它融合了Inter公司的設(shè)計(jì)和處理技術(shù)以及ARM體系結(jié)構(gòu)的電源效率,采用在軟件上兼容ARMv4體系結(jié)構(gòu),同時(shí)具有Intel技術(shù)優(yōu)點(diǎn)的體系結(jié)構(gòu)。

7)?Xscale處理器

Xscale

處理器是基于ARMv5TE體系結(jié)構(gòu)的解決方案,是一款全性能、高性價(jià)比、低功耗的處理器。它支持16位的Thumb指令和DSP指令集,已使用在數(shù)字移動(dòng)電話、個(gè)人數(shù)字助理和網(wǎng)絡(luò)產(chǎn)品等場(chǎng)合。Xscale

處理器是Inter目前主要推廣的一款A(yù)RM微處理器。

5.2ARM微處理器結(jié)構(gòu)

5.2.1RISC體系結(jié)構(gòu)

到目前為止,RISC體系結(jié)構(gòu)也還沒有嚴(yán)格的定義,一般認(rèn)為,RISC體系結(jié)構(gòu)應(yīng)具有如下特點(diǎn):

①采用固定長(zhǎng)度的指令格式,指令歸整、簡(jiǎn)單,基本尋址方式有2~3種;

②使用單周期指令,便于流水線操作執(zhí)行;

③大量使用寄存器,數(shù)據(jù)處理指令只對(duì)寄存器進(jìn)行操作,只有加載/

存儲(chǔ)指令可以訪問存儲(chǔ)器,以提高指令的執(zhí)行效率。除此以外,ARM體系結(jié)構(gòu)還采用了一些特別的技術(shù)(在保證高性能的前提下盡量縮小芯片的面積,并降低功耗):

①所有的指令都可根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率;

②可用加載/存儲(chǔ)指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率;

③可在一條數(shù)據(jù)處理指令中同時(shí)完成邏輯處理和移位處理;

④在循環(huán)處理中使用地址的自動(dòng)增減來提高運(yùn)行效率。5.2.2ARM微處理器的寄存器結(jié)構(gòu)

ARM微處理器共有37個(gè)寄存器,被分為若干個(gè)組(BANK),這些寄存器包括:

①?31個(gè)通用寄存器,包括程序計(jì)數(shù)器(PC指針),均為32位的寄存器;

②?6個(gè)狀態(tài)寄存器,用以標(biāo)識(shí)CPU的工作狀態(tài)及程序的運(yùn)行狀態(tài),均為32位,目前只使用了其中的一部分。5.2.3ARM微處理器的指令結(jié)構(gòu)

ARM微處理器在較新的體系結(jié)構(gòu)中支持兩種指令集:ARM指令集和Thumb指令集。其中,ARM指令為32位的長(zhǎng)度,Thumb指令為16位長(zhǎng)度。Thumb指令集為ARM指令集的功能子集,但與等價(jià)的ARM代碼相比較,可節(jié)省30%~40%以上的存儲(chǔ)空間,同時(shí)具備32位代碼的所有優(yōu)點(diǎn)。

5.3ARM編程模型

所謂ARM編程模型,就是決定ARM程序組織形式的硬件架構(gòu)。

ARM編程模型主要有以下幾點(diǎn):

①ARM微處理器的工作狀態(tài);

②ARM微處理器的流水線技術(shù);

③ARM體系結(jié)構(gòu)的存儲(chǔ)器模式;

④ARM微處理器的數(shù)據(jù)和指令類型;

⑤ARM體系結(jié)構(gòu)的處理器工作模式;

⑥ARM體系結(jié)構(gòu)的寄存器組織;

⑦ARM微處理器的異常。5.3.1處理器的工作狀態(tài)

從編程的角度看ARM微處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換。

(1)?ARM狀態(tài),此時(shí)處理器執(zhí)行32位的字對(duì)齊的ARM指令;

(2)?Thumb狀態(tài),此時(shí)處理器執(zhí)行16位的、半字對(duì)齊的Thumb指令。5.3.2流水線技術(shù)

對(duì)于一段程序的執(zhí)行時(shí)間可用下面的表達(dá)式來表示:圖5-2ARM7單周期指令3級(jí)流水線圖5-3ARM7多周期指令3級(jí)流水線阻塞實(shí)例5.3.3存儲(chǔ)器模式

ARM體系結(jié)構(gòu)將存儲(chǔ)器看作是從零地址開始的字節(jié)的線性組合。從零字節(jié)到三字節(jié)放置第一個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),從第四個(gè)字節(jié)到第七個(gè)字節(jié)放置第二個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),依次排列。作為32位的微處理器,ARM體系結(jié)構(gòu)所支持的最大尋址空間為4GB。5.3.4數(shù)據(jù)和指令類型

ARM微處理器的指令長(zhǎng)度可以是32位的(在ARM狀態(tài)下),也可以是16位的(在Thumb狀態(tài)下)。5.3.5處理器工作模式

ARM微處理器支持7種運(yùn)行模式,也正因?yàn)檫@7種運(yùn)行模式的不同,使得ARM微處理器能夠嵌入操作系統(tǒng)成為可能,這7種運(yùn)行模式如下:

①用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài);

②快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理;

③外部中斷模式(irq):用于通用的中斷處理;

④管理模式(svc):操作系統(tǒng)使用的保護(hù)模式;⑤數(shù)據(jù)訪問終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù);

⑥系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù);

⑦未定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。5.3.6寄存器組織

1.?ARM狀態(tài)下的寄存器組織

1)通用寄存器

通用寄存器包括R0~R15,可以分為3類。

(1)未分組寄存器R0~R7。

在所有的運(yùn)行模式下,未分組寄存器都指向同一個(gè)物理寄存器,它們未被系統(tǒng)用作特殊的用途,因此,在中斷或異常處理進(jìn)行運(yùn)行模式轉(zhuǎn)換時(shí),由于不同的處理器運(yùn)行模式均使用相同的物理寄存器,可能會(huì)造成寄存器中數(shù)據(jù)的破壞,這一點(diǎn)在進(jìn)行程序設(shè)計(jì)時(shí)應(yīng)引起注意。

(2)分組寄存器R8~R14。

對(duì)于分組寄存器,它們每一次所訪問的物理寄存器與處理器當(dāng)前的運(yùn)行模式有關(guān)。

(3)程序計(jì)數(shù)器PC(R15)。

寄存器R15用作程序計(jì)數(shù)器(PC)。在ARM狀態(tài)下,位[1:0]為0,位[31:2]用于保存PC;在Thumb狀態(tài)下,位[0]為0,位[31:1]用于保存PC;雖然程序計(jì)數(shù)器也可以用作通用寄存器,但是有一些指令在使用程序計(jì)數(shù)器時(shí)有一些特殊限制,若不注意,執(zhí)行的結(jié)果將是不可預(yù)料的。

2)寄存器R16

寄存器R16用作CPSR(CurrentProgramStatusRegister,當(dāng)前程序狀態(tài)寄存器),CPSR可在任何運(yùn)行模式下被訪問,它包括條件標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志位,以及其他一些相關(guān)的控制和狀態(tài)位。

2.?Thumb狀態(tài)下的寄存器組織

Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的一個(gè)子集,程序可以直接訪問8個(gè)通用寄存器(R7~R0)、程序計(jì)數(shù)器(PC)、堆棧指針(SP)、連接寄存器(LR)和CPSR。同時(shí),在每一種特權(quán)模式下都有一組SP、LR和SPSR。表5-2給出了Thumb狀態(tài)下的寄存器組織。圖5-4Thumb狀態(tài)下的寄存器組織與ARM狀態(tài)下的寄存器組織的關(guān)系

3.程序狀態(tài)寄存器

ARM體系結(jié)構(gòu)包含1個(gè)當(dāng)前程序狀態(tài)寄存器(CPSR)和5個(gè)備份的程序狀態(tài)寄存器(SPSRs)。備份的程序狀態(tài)寄存器用來進(jìn)行異常處理,其功能如下:

①保存ALU中的當(dāng)前操作信息;

②控制允許和禁止中斷;

③設(shè)置處理器的運(yùn)行模式。圖5-5程序狀態(tài)寄存器格式

1)條件碼標(biāo)志位(ConditionCodeFlags)

N、Z、C、V均為條件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定某條指令是否被執(zhí)行。

①在ARM狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的;

②在Thumb狀態(tài)下,僅有分支指令是有條件執(zhí)行的。

2)控制位

①中斷禁止位I、F:I=1禁止IRQ中斷;F=1禁止FIQ中斷;

②?T標(biāo)志位:該位反映處理器的運(yùn)行狀態(tài),對(duì)于ARM體系結(jié)構(gòu)v5及以上的版本的T系列處理器,當(dāng)該位為1時(shí),程序運(yùn)行于Thumb狀態(tài),否則運(yùn)行于ARM狀態(tài)。對(duì)于ARM體系結(jié)構(gòu)v5及以上的版本的非T系列處理器,當(dāng)該位為1時(shí),執(zhí)行下一條指令以引起為定義的指令異常;當(dāng)該位為0時(shí),表示運(yùn)行于ARM狀態(tài)。

③運(yùn)行模式位M[4:0]:M0、M1、M2、M3、M4是模式位。這些位決定了處理器的運(yùn)行模式。

3)保留位

PSR中的其余位為保留位,當(dāng)改變PSR中的條件碼標(biāo)志位或者控制位時(shí),保留位不要被改變,在程序中也不要使用保留位來存儲(chǔ)數(shù)據(jù)。保留位將用于ARM版本的擴(kuò)展。5.3.7異常

當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止時(shí),稱之為異常(Exceptions)。

1.?ARM體系結(jié)構(gòu)支持的異常

ARM體系結(jié)構(gòu)所支持的異常及具體含義如表5-5所示。

2.異常的響應(yīng)

當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作:

(1)將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時(shí)能從正確的位置重新開始執(zhí)行。

(2)將CPSR復(fù)制到相應(yīng)的SPSR中;

(3)根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位;

(4)強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。

3.異常返回

異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回:

(1)將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中;

(2)將SPSR復(fù)制回CPSR中;

(3)若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。

4.各類異常的具體描述

1)FIQ(FastInterruptRequest)

FIQ異常是為了支持?jǐn)?shù)據(jù)傳輸或者通道處理而設(shè)計(jì)的。在ARM狀態(tài)下,系統(tǒng)有足夠的私有寄存器,從而可以避免對(duì)寄存器保存的需求,并減小了系統(tǒng)上下文切換的開銷。

2)?IRQ(InterruptRequest)

IRQ異常屬于正常的中斷請(qǐng)求,可通過對(duì)處理器的nIRQ引腳輸入低電平產(chǎn)生,IRQ的優(yōu)先級(jí)低于FIQ,當(dāng)程序執(zhí)行進(jìn)入FIQ異常時(shí),IRQ可能被屏蔽。

3)?Abort(中止)

產(chǎn)生中止異常意味著對(duì)存儲(chǔ)器的訪問失敗。ARM微處理器在存儲(chǔ)器訪問周期內(nèi)檢查是否發(fā)生中止異常。

4)?SoftwareInterrupt(軟件中斷)

軟件中斷指令(SWI)用于進(jìn)入管理模式,常用于請(qǐng)求執(zhí)行特定的管理功能。軟件中斷處理程序執(zhí)行以下指令從SWI模式返回(無論是在ARM狀態(tài)還是Thumb狀態(tài)):

MOVPC,R14_svc

5)?UndefinedInstruction(未定義指令)

當(dāng)ARM處理器遇到不能處理的指令時(shí),會(huì)產(chǎn)生未定義指令異常。采用這種機(jī)制,可以通過軟件仿真擴(kuò)展ARM或Thumb指令集。

在仿真未定義指令后,處理器執(zhí)行以下程序返回(無論是在ARM狀態(tài)還是Thumb狀態(tài)):

MOVSPC,R14_und

5.異常進(jìn)入/退出

表5-6總結(jié)了進(jìn)入異常處理時(shí)保存在相應(yīng)R14中的PC值,及在退出異常處理時(shí)推薦使用的指令。

6.異常向量

表5-7所示為異常向量(ExceptionVectors)地址表。

7.異常優(yōu)先級(jí)

當(dāng)多個(gè)異常同時(shí)發(fā)生時(shí),系統(tǒng)根據(jù)固定的優(yōu)先級(jí)決定異常的處理次序。異常優(yōu)先級(jí)(ExceptionPriorities)由高到低的排列次序如表5-8所示。

8.應(yīng)用程序中的異常處理

當(dāng)系統(tǒng)運(yùn)行時(shí),異常可能會(huì)隨時(shí)發(fā)生,為保證在ARM處理器發(fā)生異常時(shí)不至于處于未知狀態(tài),在應(yīng)用程序的設(shè)計(jì)中,首先要進(jìn)行異常處理,采用的方式是在異常向量表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序,當(dāng)ARM處理器發(fā)生異常時(shí),程序計(jì)數(shù)器PC會(huì)被強(qiáng)制設(shè)置為對(duì)應(yīng)的異常向量,從而跳轉(zhuǎn)到異常處理程序,當(dāng)異常處理完成以后,返回到主程序繼續(xù)執(zhí)行。

5.4ARM指令集

5.4.1ARM處理器尋址方式

1.立即尋址

立即尋址也叫立即數(shù)尋址,這是一種特殊的尋址方式,操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù)。這個(gè)操作數(shù)被稱為立即數(shù),對(duì)應(yīng)的尋址方式也就叫做立即尋址。例如以下指令:

ADDR0,R0,?#1 ;R0←R0

+

1

ADDR0,R0,?#0x3f ;R0←R0

+

0x3f

2.寄存器尋址

寄存器尋址就是利用寄存器中的數(shù)值作為操作數(shù),這種尋址方式是各類微處理器經(jīng)常采用的一種方式,也是一種執(zhí)行效率較高的尋址方式。例如以下指令:

ADDR0,R1,R2 ;R0←R1

+

R2

3.寄存器間接尋址

寄存器間接尋址就是以寄存器中的值作為操作數(shù)的地址,而操作數(shù)本身存放在存儲(chǔ)器中。例如以下指令:

ADDR0,R1,[R2] ;R0←R1

+

[R2]

LDRR0,[R1] ;R0←[R1]

STRR0,[R1] ;[R1]←R0

4.基址變址尋址

基址變址尋址就是將寄存器(該寄存器一般稱做基址寄存器)的內(nèi)容與指令中給出的地址偏移量相加,從而得到一個(gè)操作數(shù)的有效地址。變址尋址方式常用于訪問某基地址附近的地址單元。采用變址尋址方式的指令常見有以下幾種形式:

LDRR0,[R1,?#4] ;R0←[R1

+

4]

LDRR0,[R1,?#4]! ;R0←[R1?+?4]、R1←R1?+?4

LDRR0,[R1],?#4 ;R0←[R1]、R1←R1?+?4

LDRR0,[R1,R2] ;R0←[R1

+

R2]

5.多寄存器尋址

采用多寄存器尋址方式,一條指令可以完成多個(gè)寄存器值的傳送。這種尋址方式可以用一條指令完成傳送最多16個(gè)通用寄存器的值。例如以下指令:

LDMIAR0,{R1,R2,R3,R4}??;R1←[R0]

;R2←[R0?+?4]

;R3←[R0?+?8]

;R4←[R0?+?12]

6.相對(duì)尋址

與基址變址尋址方式相類似,相對(duì)尋址以程序計(jì)數(shù)器PC的當(dāng)前值為基地址,指令中的地址標(biāo)號(hào)作為偏移量,將兩者相加之后得到操作數(shù)的有效地址。以下程序段完成子程序的調(diào)用和返回,跳轉(zhuǎn)指令BL采用了相對(duì)尋址方式。

BLNEXT ;跳轉(zhuǎn)到子程序NEXT處執(zhí)行

NEXT

MOVPC,LR ;從子程序返回

7.堆棧尋址

堆棧是一種數(shù)據(jù)結(jié)構(gòu),按先進(jìn)后出(FirstInLastOut,F(xiàn)ILO)的方式工作,使用一個(gè)稱做堆棧指針的專用寄存器指示當(dāng)前的操作位置,堆棧指針總是指向棧頂。5.4.2常見ARM指令集

1.跳轉(zhuǎn)指令

跳轉(zhuǎn)指令用于實(shí)現(xiàn)程序流程的跳轉(zhuǎn)。在ARM程序中有如下兩種方法可以實(shí)現(xiàn)程序流程的跳轉(zhuǎn):

(1)使用專門的跳轉(zhuǎn)指令。

(2)直接向程序計(jì)數(shù)器PC寫入跳轉(zhuǎn)地址值。

1)?B指令

B指令的格式為:

B目標(biāo)地址

2)?BL指令

BL指令的格式為:

BL目標(biāo)地址

3)?BLX指令

BLX指令的格式為:

BLX目標(biāo)地址

4)?BX指令

BX指令的格式為:

BX目標(biāo)地址

2.數(shù)據(jù)處理指令

1)?MOV指令

MOV指令的格式為:

MOV{S}目的寄存器,源操作數(shù)

2)?MVN指令

MVN指令的格式為:

MVN{S}目的寄存器,源操作數(shù)

3)?CMP指令

CMP指令的格式為:

CMP操作數(shù)1,操作數(shù)2

4)?CMN指令

CMN指令的格式為:

CMN操作數(shù)1,操作數(shù)2

5)?TST指令

TST指令的格式為:

TST操作數(shù)1,操作數(shù)2

6)?TEQ指令

TEQ指令的格式為:

TEQ操作數(shù)1,操作數(shù)2

7)?ADD指令

ADD指令的格式為:

ADD{S}目的寄存器,操作數(shù)1,操作數(shù)2

8)?ADC指令

ADC指令的格式為:

ADC{S}目的寄存器,操作數(shù)1,操作數(shù)2

9)?SUB指令

SUB指令的格式為:

SUB{S}目的寄存器,操作數(shù)1,操作數(shù)2

10)?SBC指令

SBC指令的格式為:

SBC{S}目的寄存器,操作數(shù)1,操作數(shù)2

11)?RSB指令

RSB指令的格式為:

RSB{S}目的寄存器,操作數(shù)1,操作數(shù)2

12)?RSC指令

RSC指令的格式為:

RSC{S}目的寄存器,操作數(shù)1,操作數(shù)2

13)?AND指令

AND指令的格式為:

AND{S}目的寄存器,操作數(shù)1,操作數(shù)2

14)?ORR指令

ORR指令的格式為:

ORR{S}目的寄存器,操作數(shù)1,操作數(shù)2

15)?EOR指令

EOR指令的格式為:

EOR{S}目的寄存器,操作數(shù)1,操作數(shù)2

16)?BIC指令

BIC指令的格式為:

BIC{S}目的寄存器,操作數(shù)1,操作數(shù)2

3.乘法指令與乘加指令

1)?MUL指令

MUL指令的格式為:

MUL{S}目的寄存器,操作數(shù)1,操作數(shù)2

2)?MLA指令

MLA指令的格式為:

MLA{S}目的寄存器,操作數(shù)1,操作數(shù)2,操作數(shù)3

3)?SMULL指令

SMULL指令的格式為:

SMULL{S}目的寄存器Low,目的寄存器High,操作數(shù)1,操作數(shù)2

4)?SMLAL指令

SMLAL指令的格式為:

SMLAL{S}目的寄存器Low,目的寄存器High,操作數(shù)1,操作數(shù)2

5)?UMULL指令

UMULL指令的格式為:

UMULL{S}目的寄存器Low,目的寄存器High,操作數(shù)1,操作數(shù)2

6)?UMLAL指令

UMLAL指令的格式為:

UMLAL{S}目的寄存器Low,目的寄存器High,操作數(shù)1,操作數(shù)2

4.程序狀態(tài)寄存器訪問指令

1)?MRS指令

MRS指令的格式為:

MRS{條件}通用寄存器,程序狀態(tài)寄存器(CPSR或SPSR)

2)?MSR指令

MSR指令的格式為:

MSR程序狀態(tài)寄存器(CPSR或SPSR)_<域>,操作數(shù)

5.加載/存儲(chǔ)指令

1)?LDR指令

LDR指令的格式為:

LDR目的寄存器,<存儲(chǔ)器地址>

2)?LDRB指令

LDRB指令的格式為:

LDRB目的寄存器,<存儲(chǔ)器地址>

3)?LDRH指令

LDRH指令的格式為:

LDRH目的寄存器,<存儲(chǔ)器地址>

4)?STR指令

STR指令的格式為:

STR源寄存器,<存儲(chǔ)器地址>

5)?STRB指令

STRB指令的格式為:

STRB源寄存器,<存儲(chǔ)器地址>

6)?STRH指令

STRH指令的格式為:

STRH源寄存器,<存儲(chǔ)器地址>

6.批量數(shù)據(jù)加載/存儲(chǔ)指令

ARM微處理器所支持批量數(shù)據(jù)加載/存儲(chǔ)指令可以一次在一片連續(xù)的存儲(chǔ)器單元和多個(gè)寄存器之間傳送數(shù)據(jù),批量加載指令用于將一片連續(xù)的存儲(chǔ)器中的數(shù)據(jù)傳送到多個(gè)寄存器,批量數(shù)據(jù)存儲(chǔ)指令則完成相反的操作。常用的加載存儲(chǔ)指令如下:

LDM 批量數(shù)據(jù)加載指令。

STM 批量數(shù)據(jù)存儲(chǔ)指令。

LDM(或STM)指令的格式為:

LDM(或STM){類型}基址寄存器{!},寄存器列表{∧}

7.數(shù)據(jù)交換指令

1)?SWP指令

SWP指令的格式為:

SWP目的寄存器,源寄存器1,[源寄存器2]

2)?SWPB指令

SWPB指令的格式為:

SWP{條件}B目的寄存器,源寄存器1,[源寄存器2]

8.移位指令

1)?LSL(或ASL)操作

LSL(或ASL)操作的格式為:

通用寄存器,LSL(或ASL)操作數(shù)

2)?LSR操作

LSR操作的格式為:

通用寄存器,LSR操作數(shù)

3)?ASR操作

ASR操作的格式為:

通用寄存器,ASR操作數(shù)

4)?ROR操作

ROR操作的格式為:

通用寄存器,ROR操作數(shù)

5)

RRX操作

RRX操作的格式為:

通用寄存器,RRX操作數(shù)

9.協(xié)處理器指令

1)?CDP指令

CDP指令的格式為:

CDP協(xié)處理器編碼,協(xié)處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2

2)?LDC指令

LDC指令的格式為:

LDC{L}協(xié)處理器編碼,目的寄存器,[源寄存器]

3)?STC指令

STC指令的格式為:

STC{L}協(xié)處理器編碼,源寄存器,[目的寄存器]

4)?MCR指令

MCR指令的格式為:

MCR協(xié)處理器編碼,協(xié)處理器操作碼1,源寄存器,目的寄存器1,目的寄存器2,協(xié)處理器操作碼2

5)?MRC指令

MRC指令的格式為:

MRC協(xié)處理器編碼,協(xié)處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2

10.異常產(chǎn)生指令

ARM微處理器所支持的異常指令有如下兩條:

1)?SWI指令

SWI指令的格式為:

SWI24位的立即

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論