




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)主要內(nèi)容3.1 ARM體系結(jié)構(gòu)概述體系結(jié)構(gòu)概述 3.2 編程模型編程模型3.3 ARM基本尋址方式基本尋址方式3.4 ARM指令集指令集3.6 ARM9TDMI內(nèi)核內(nèi)核3.5 ARM9與與ARM7的比較的比較3.7 ARM920T核核 3第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)ARM體系結(jié)構(gòu)的特點(diǎn)體系結(jié)構(gòu)的特點(diǎn) ARM處理器結(jié)構(gòu)處理器結(jié)構(gòu)ARM處理器內(nèi)核處理器內(nèi)核ARM 處理器核處理器核3.1 ARM體系結(jié)構(gòu)概述4第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.1.1 ARM體系結(jié)構(gòu)的特點(diǎn) ARM即即Advanced RISC Machines
2、的縮寫。的縮寫。ARM公司公司1990年成立,是設(shè)計(jì)公司。年成立,是設(shè)計(jì)公司。ARM是知識(shí)產(chǎn)權(quán)(是知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商供應(yīng)商,本身,本身不生產(chǎn)芯片,靠轉(zhuǎn)讓設(shè)計(jì)許可,由合作伙伴公司來生產(chǎn)各具不生產(chǎn)芯片,靠轉(zhuǎn)讓設(shè)計(jì)許可,由合作伙伴公司來生產(chǎn)各具特色的芯片。特色的芯片。 ARM處理器的處理器的3大特點(diǎn)是:大特點(diǎn)是:耗電少、成本低、功能強(qiáng);耗電少、成本低、功能強(qiáng);16位位/32位雙指令集;位雙指令集;全球眾多合作伙伴保證供應(yīng)。全球眾多合作伙伴保證供應(yīng)。5第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)ARM目前的產(chǎn)品系列:目前的產(chǎn)品系列:ARM7ARM9ARM9EARM10ARM11SecurCore通
3、用處理器系列通用處理器系列專門為安全設(shè)備設(shè)專門為安全設(shè)備設(shè)計(jì)的處理器系列計(jì)的處理器系列6第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)ARM體系結(jié)構(gòu)的特點(diǎn)體系結(jié)構(gòu)的特點(diǎn) ARM處理器結(jié)構(gòu)處理器結(jié)構(gòu)ARM處理器內(nèi)核處理器內(nèi)核ARM 處理器核處理器核3.1 ARM體系結(jié)構(gòu)概述7第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)ARM的體系結(jié)構(gòu)的體系結(jié)構(gòu) ARM的流水線結(jié)構(gòu)的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器結(jié)構(gòu)ARM I/O結(jié)構(gòu)結(jié)構(gòu)ARM AMBA接口接口ARM協(xié)處理器接口協(xié)處理器接口ARM JTAG 調(diào)試接口調(diào)試接口 3.1.2 ARM處理器結(jié)構(gòu)(及其接口)8第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)1
4、.ARM的體系結(jié)構(gòu)的體系結(jié)構(gòu)(ARM處理器基本結(jié)構(gòu)處理器基本結(jié)構(gòu))P5531一個(gè)典型的一個(gè)典型的ARM體系結(jié)構(gòu),包含有體系結(jié)構(gòu),包含有32位位ALU(算術(shù)邏輯單元算術(shù)邏輯單元)、31個(gè)個(gè)32位位通用寄存器及通用寄存器及6個(gè)狀態(tài)寄存器、個(gè)狀態(tài)寄存器、328位乘法器、位乘法器、 3232位桶形移位寄存位桶形移位寄存器、指令譯碼及控制邏輯、指令流水器、指令譯碼及控制邏輯、指令流水線和數(shù)據(jù)地址寄存器等。線和數(shù)據(jù)地址寄存器等。9第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.1.2 ARM處理器結(jié)構(gòu)(及其接口)ARM的體系結(jié)構(gòu)的體系結(jié)構(gòu) ARM的流水線結(jié)構(gòu)的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器結(jié)構(gòu)ARM I
5、/O結(jié)構(gòu)結(jié)構(gòu)ARM AMBA接口接口ARM協(xié)處理器接口協(xié)處理器接口ARM JTAG 調(diào)試接口調(diào)試接口 10第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)2.ARM2.ARM的流水線結(jié)構(gòu)的流水線結(jié)構(gòu) 為增加處理器處理指令的速度,為增加處理器處理指令的速度,ARM體系結(jié)構(gòu)采用體系結(jié)構(gòu)采用流水線,即允許多個(gè)操作同時(shí)處理,而非順序執(zhí)行。流水線,即允許多個(gè)操作同時(shí)處理,而非順序執(zhí)行。 ARM7 采用采用3級(jí)流水線,級(jí)流水線, ARM9采用采用5級(jí)流水線。級(jí)流水線。11第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)該例中用該例中用6個(gè)時(shí)鐘周期執(zhí)行了個(gè)時(shí)鐘周期執(zhí)行了6條指令。條指令。 ARM7 ARM7體系結(jié)構(gòu)
6、采用了體系結(jié)構(gòu)采用了3 3級(jí)流水線級(jí)流水線,分為,分為取指,譯碼和取指,譯碼和執(zhí)行執(zhí)行。下圖是單周期。下圖是單周期3 3級(jí)流水線的操作示意圖。級(jí)流水線的操作示意圖。 v3級(jí)流水線級(jí)流水線(ARM7) P6012第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v5級(jí)流水線級(jí)流水線(ARM9) ARM9體系結(jié)構(gòu)采用體系結(jié)構(gòu)采用5級(jí)流水線級(jí)流水線。 5 5級(jí)流水線把存儲(chǔ)器的取指與數(shù)據(jù)存取分開,增加了級(jí)流水線把存儲(chǔ)器的取指與數(shù)據(jù)存取分開,增加了I-CacheI-Cache和和D-D-CacheCache以提高存儲(chǔ)器存取的效率,增加了數(shù)據(jù)寫回的專門通路和寄存器,以提高存儲(chǔ)器存取的效率,增加了數(shù)據(jù)寫回的專門通
7、路和寄存器,以減少數(shù)據(jù)通路沖突。以減少數(shù)據(jù)通路沖突。 這樣,這樣,5 5級(jí)流水線分為:級(jí)流水線分為:取指、指令譯碼、執(zhí)行、數(shù)據(jù)緩存和寫回取指、指令譯碼、執(zhí)行、數(shù)據(jù)緩存和寫回。 5級(jí)流水線和級(jí)流水線和3級(jí)流水線的區(qū)別是?級(jí)流水線的區(qū)別是? P7113第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.1.2 ARM處理器結(jié)構(gòu)(及其接口)ARM的體系結(jié)構(gòu)的體系結(jié)構(gòu) ARM的流水線結(jié)構(gòu)的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器結(jié)構(gòu)ARM I/O結(jié)構(gòu)結(jié)構(gòu)ARM AMBA接口接口ARM協(xié)處理器接口協(xié)處理器接口ARM JTAG 調(diào)試接口調(diào)試接口 14第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.ARM存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)
8、器結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)和一般計(jì)算機(jī)一樣是三級(jí)存儲(chǔ)系統(tǒng):存儲(chǔ)器結(jié)構(gòu)和一般計(jì)算機(jī)一樣是三級(jí)存儲(chǔ)系統(tǒng):Cache主存儲(chǔ)器主存儲(chǔ)器輔助存儲(chǔ)器輔助存儲(chǔ)器CPU可直接訪問,用來存放當(dāng)可直接訪問,用來存放當(dāng)前正在執(zhí)行的程序中的活躍部前正在執(zhí)行的程序中的活躍部分,以便快速地向分,以便快速地向CPU提供指提供指令和數(shù)據(jù),如變量。令和數(shù)據(jù),如變量。CPU可直接訪問,用來存放當(dāng)可直接訪問,用來存放當(dāng)前正在執(zhí)行的程序和數(shù)據(jù)。前正在執(zhí)行的程序和數(shù)據(jù)。CPU不能直接訪問,用來存放不能直接訪問,用來存放暫時(shí)不參與運(yùn)行的程序和數(shù)據(jù),暫時(shí)不參與運(yùn)行的程序和數(shù)據(jù),需要時(shí)再傳送到主存。需要時(shí)再傳送到主存。15第第3 3章章 ARM
9、ARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.ARM存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器結(jié)構(gòu) ARM架構(gòu)的處理器,有的帶有指令架構(gòu)的處理器,有的帶有指令Cache和數(shù)據(jù)和數(shù)據(jù)Cache,但但片內(nèi)不帶有主存儲(chǔ)器片內(nèi)不帶有主存儲(chǔ)器(即片內(nèi)即片內(nèi)RAM和片內(nèi)和片內(nèi)ROM) ,系統(tǒng)所需的系統(tǒng)所需的RAM和和ROM須通過總線外接須通過總線外接。 多總線結(jié)構(gòu):多總線結(jié)構(gòu):16第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)總線總線單總線結(jié)構(gòu):?jiǎn)慰偩€結(jié)構(gòu):ARM是哪種總線結(jié)構(gòu)?是哪種總線結(jié)構(gòu)?單總線結(jié)構(gòu)。單總線結(jié)構(gòu)。ARM把外設(shè)中的寄存器當(dāng)作內(nèi)存單元來訪問,把外設(shè)中的寄存器當(dāng)作內(nèi)存單元來訪問,內(nèi)存和外設(shè)寄存器在同一地址空間,所以操作指令相同。內(nèi)存和外
10、設(shè)寄存器在同一地址空間,所以操作指令相同。提問?提問?MCS-51單片機(jī)和單片機(jī)和8086分別是哪種總線結(jié)構(gòu)?分別是哪種總線結(jié)構(gòu)?MCS-51單片機(jī):?jiǎn)纹瑱C(jī):?jiǎn)慰偩€結(jié)構(gòu),訪問內(nèi)存和外設(shè)均用單總線結(jié)構(gòu),訪問內(nèi)存和外設(shè)均用MOV 8086:多總線結(jié)構(gòu),訪問內(nèi)存用多總線結(jié)構(gòu),訪問內(nèi)存用MOV,訪問外設(shè)用,訪問外設(shè)用IN、OUT17第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.1.2 ARM處理器結(jié)構(gòu)ARM的體系結(jié)構(gòu)的體系結(jié)構(gòu) ARM的流水線結(jié)構(gòu)的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器結(jié)構(gòu)ARM I/O結(jié)構(gòu)結(jié)構(gòu)ARM AMBA接口接口ARM協(xié)處理器接口協(xié)處理器接口ARM JTAG 調(diào)試接口調(diào)試接口 18第
11、第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)5.ARM協(xié)處理器接口協(xié)處理器接口 P63 ARM為了便于片上系統(tǒng)為了便于片上系統(tǒng)SOC的設(shè)計(jì),處理器內(nèi)核盡可能的設(shè)計(jì),處理器內(nèi)核盡可能精簡(jiǎn),要增加系統(tǒng)的功能,可以通過協(xié)處理器來實(shí)現(xiàn)。在邏精簡(jiǎn),要增加系統(tǒng)的功能,可以通過協(xié)處理器來實(shí)現(xiàn)。在邏輯上,輯上,ARM可以擴(kuò)展可以擴(kuò)展16個(gè)個(gè)協(xié)處理器,每個(gè)協(xié)處理器可有協(xié)處理器,每個(gè)協(xié)處理器可有16個(gè)寄存器。個(gè)寄存器。協(xié)處理器號(hào)協(xié)處理器號(hào)功功 能能1515系統(tǒng)控制系統(tǒng)控制1414調(diào)試控制器調(diào)試控制器13138 8保留保留7 74 4用戶用戶3 30 0保留保留 例如,例如,MMU和保護(hù)單元的系統(tǒng)控制都采用和保護(hù)單元
12、的系統(tǒng)控制都采用CP15協(xié)處理器;協(xié)處理器; JTAG調(diào)試中的協(xié)處理器為調(diào)試中的協(xié)處理器為CP14,即調(diào)試通信通道即調(diào)試通信通道DCC(Debug Communication Channel) 。 可根據(jù)需要選擇性地添加協(xié)處理器??筛鶕?jù)需要選擇性地添加協(xié)處理器。19第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.1.2 ARM處理器結(jié)構(gòu)ARM的體系結(jié)構(gòu)的體系結(jié)構(gòu) ARM的流水線結(jié)構(gòu)的流水線結(jié)構(gòu)ARM存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)器結(jié)構(gòu)ARM I/O結(jié)構(gòu)結(jié)構(gòu)ARM AMBA接口接口ARM協(xié)處理器接口協(xié)處理器接口ARM JTAG 調(diào)試接口調(diào)試接口 20第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)6.ARM AMB
13、A接口接口 P65 A R M 處 理 器 也 可 以 通 過處 理 器 也 可 以 通 過 先 進(jìn) 微 控 制 器 總 線 架 構(gòu)先 進(jìn) 微 控 制 器 總 線 架 構(gòu)AMBA(Advanced Microcontroller Bus Architecture)來擴(kuò)展不來擴(kuò)展不同體系架構(gòu)的宏單元及同體系架構(gòu)的宏單元及I/O部件。部件。AMBA事實(shí)上已成為片上總事實(shí)上已成為片上總線線OCB(On Chip Bus)標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。AMBA包括以下三類包括以下三類總線:總線:先進(jìn)高性能總線先進(jìn)高性能總線AHB先進(jìn)系統(tǒng)總線先進(jìn)系統(tǒng)總線ASB先進(jìn)外圍總線先進(jìn)外圍總線APB用來連接用來連接高性能系高性能系
14、統(tǒng)模塊統(tǒng)模塊用來連接速用來連接速度較慢的系度較慢的系統(tǒng)模塊統(tǒng)模塊21第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)22第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)ARM體系結(jié)構(gòu)的特點(diǎn)體系結(jié)構(gòu)的特點(diǎn) ARM處理器結(jié)構(gòu)處理器結(jié)構(gòu)ARM處理器內(nèi)核處理器內(nèi)核ARM 處理器核處理器核3.1 ARM體系結(jié)構(gòu)概述ARM體系結(jié)構(gòu)以多種形式在市場(chǎng)出現(xiàn),既有處理器內(nèi)核形式,體系結(jié)構(gòu)以多種形式在市場(chǎng)出現(xiàn),既有處理器內(nèi)核形式,也有處理器核形式。也有處理器核形式。23第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.1.3 ARM處理器內(nèi)核 ARM體系結(jié)構(gòu)的處理器內(nèi)核有:體系結(jié)構(gòu)的處理器內(nèi)核有:ARM7TDMI、ARM8、
15、ARM9TDMI、ARM10TDMI及及ARM11TDMI等。等。 TDMI含義如下:含義如下:T 16位位壓縮指令集壓縮指令集Thumb;D 在片在片調(diào)試(調(diào)試(Debug)支持,允許處理器響應(yīng)調(diào)支持,允許處理器響應(yīng)調(diào) 試請(qǐng)求暫停;試請(qǐng)求暫停;M 增強(qiáng)型乘法器(增強(qiáng)型乘法器(Multiplier),),與以前處理器與以前處理器 相比性能更高,產(chǎn)生全相比性能更高,產(chǎn)生全64位結(jié)果;位結(jié)果;I 嵌入式嵌入式ICE硬件提供片上硬件提供片上斷點(diǎn)和調(diào)試點(diǎn)斷點(diǎn)和調(diào)試點(diǎn)支持。支持。 在線仿真器(在線仿真器(In-Circuit Emulator ) 24第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)ARM體
16、系結(jié)構(gòu)的特點(diǎn)體系結(jié)構(gòu)的特點(diǎn) ARM處理器結(jié)構(gòu)處理器結(jié)構(gòu)ARM處理器內(nèi)核處理器內(nèi)核ARM 處理器核處理器核3.1 ARM體系結(jié)構(gòu)概述25第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.1.4 ARM處理器核 在最基本的在最基本的ARM處理器內(nèi)核基礎(chǔ)上,處理器內(nèi)核基礎(chǔ)上,可增加可增加Cache、存存儲(chǔ)器管理單元儲(chǔ)器管理單元MMU、協(xié)處理器協(xié)處理器CP15、AMBA接口以及接口以及EMT宏單元等宏單元等,構(gòu)成,構(gòu)成ARM處理器核。處理器核。 以以ARM7TDMI處理器內(nèi)核為基礎(chǔ)的有:處理器內(nèi)核為基礎(chǔ)的有:ARM720T處理器核處理器核 ARM740T處理器核處理器核 以以ARM9TDMI處理器內(nèi)核為
17、基礎(chǔ)的有:處理器內(nèi)核為基礎(chǔ)的有:ARM920T處理器核處理器核 ARM940T處理器核處理器核 26第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v ARM720T處理器核結(jié)構(gòu)處理器核結(jié)構(gòu) ARM720T處理器核是在處理器核是在ARM7TDMI處理器內(nèi)核基礎(chǔ)上,處理器內(nèi)核基礎(chǔ)上,增加增加8KB的數(shù)據(jù)與指令的數(shù)據(jù)與指令Cache,支持段式和頁式存儲(chǔ)的支持段式和頁式存儲(chǔ)的MMU、寫緩沖器及寫緩沖器及AMBA接口構(gòu)成。接口構(gòu)成。P7327第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v ARM920T處理器核結(jié)構(gòu)處理器核結(jié)構(gòu) ARM920T處理器核是在處理器核是在ARM9TDMI處理器內(nèi)核基礎(chǔ)上,處理器
18、內(nèi)核基礎(chǔ)上,增加了分離式的指令增加了分離式的指令Cache和數(shù)據(jù)和數(shù)據(jù)Cache,并帶有相應(yīng)的存并帶有相應(yīng)的存儲(chǔ)器管理單元儲(chǔ)器管理單元I-MMU和和D-MMU、寫緩沖器及寫緩沖器及AMBA接口等。接口等。P7428第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v ARM920T ARM920T功能框圖功能框圖 ARM920T ARM920T處理器是處理器是ARM9TDMIARM9TDMI通用微處理器家族中的一員,主要用于把完通用微處理器家族中的一員,主要用于把完全的存儲(chǔ)器管理、高性能和低功耗都看得非常重要的多處理器應(yīng)用領(lǐng)域。全的存儲(chǔ)器管理、高性能和低功耗都看得非常重要的多處理器應(yīng)用領(lǐng)域。 29第
19、第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)主要內(nèi)容ARM體系結(jié)構(gòu)概述體系結(jié)構(gòu)概述 編程模型編程模型ARM基本尋址方式基本尋址方式ARM指令集指令集ARM9TDMI內(nèi)核內(nèi)核ARM9與與ARM7的比較的比較ARM920T核核 30第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.5 ARM9與與ARM7的比較的比較 ARM9核的性能是核的性能是ARM7核性能的核性能的2倍。性能的改進(jìn)來自倍。性能的改進(jìn)來自提高時(shí)鐘頻率提高時(shí)鐘頻率和和減少常用指令執(zhí)行的時(shí)鐘周期數(shù)減少常用指令執(zhí)行的時(shí)鐘周期數(shù)。 ARM9TDMI處理器內(nèi)核采用了處理器內(nèi)核采用了5級(jí)流水線:取指、指級(jí)流水線:取指、指令譯碼、執(zhí)行、數(shù)據(jù)緩存和
20、寫回令譯碼、執(zhí)行、數(shù)據(jù)緩存和寫回 存儲(chǔ)器的存儲(chǔ)器的取指與數(shù)據(jù)訪問分開取指與數(shù)據(jù)訪問分開 增加了增加了I-Cache和和D-Cache以提高存儲(chǔ)器訪問的效率以提高存儲(chǔ)器訪問的效率 增加了用于增加了用于數(shù)據(jù)寫回?cái)?shù)據(jù)寫回的專門通路和寄存器,以減少數(shù)的專門通路和寄存器,以減少數(shù)據(jù)通路沖突據(jù)通路沖突 31第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu) ARM處理器的結(jié)構(gòu)處理器的結(jié)構(gòu) ARM處理器核、處理器核、ARM處理器內(nèi)核及其區(qū)別處理器內(nèi)核及其區(qū)別 ARM9和和ARM7的區(qū)別的區(qū)別32第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)主要內(nèi)容ARM體系結(jié)構(gòu)概述體系結(jié)構(gòu)概述 編程模型編程模型ARM基本尋址方式基
21、本尋址方式ARM指令集指令集ARM9TDMI內(nèi)核內(nèi)核ARM9與與ARM7的比較的比較ARM920T核核 33第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.2.1 數(shù)據(jù)類型 ARM ARM處理器支持下列數(shù)據(jù)類型:處理器支持下列數(shù)據(jù)類型:Byte Byte 字節(jié)字節(jié), 8, 8位;位;Halfword Halfword 半字半字, 16, 16位(半字必須與位(半字必須與2 2字節(jié)邊界對(duì)準(zhǔn));字節(jié)邊界對(duì)準(zhǔn));Word Word 字字,32 ,32 位(字必須與位(字必須與4 4字節(jié)邊界對(duì)準(zhǔn))。字節(jié)邊界對(duì)準(zhǔn))。34第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.2.2 處理器模式 ARM ARM體
22、系結(jié)構(gòu)支持體系結(jié)構(gòu)支持7 7種處理器模式。種處理器模式。處理器模式處理器模式說說 明明用戶用戶usrusr非特權(quán)模式非特權(quán)模式,正常程序執(zhí)行模式,正常程序執(zhí)行模式FIQFIQfiqfiq當(dāng)一個(gè)當(dāng)一個(gè)高優(yōu)先級(jí)中斷高優(yōu)先級(jí)中斷產(chǎn)生時(shí)進(jìn)入此模式產(chǎn)生時(shí)進(jìn)入此模式IRQIRQirqirq當(dāng)一個(gè)當(dāng)一個(gè)低優(yōu)先級(jí)中斷低優(yōu)先級(jí)中斷產(chǎn)生時(shí)進(jìn)入此模式產(chǎn)生時(shí)進(jìn)入此模式管理管理svcsvc當(dāng)當(dāng)復(fù)位或軟中斷復(fù)位或軟中斷指令執(zhí)行時(shí)進(jìn)入此模式指令執(zhí)行時(shí)進(jìn)入此模式中止中止abtabt當(dāng)當(dāng)存取異常存取異常時(shí)進(jìn)入此模式時(shí)進(jìn)入此模式未定義未定義undund當(dāng)執(zhí)行當(dāng)執(zhí)行未定義指令未定義指令時(shí)進(jìn)入此模式時(shí)進(jìn)入此模式系統(tǒng)系統(tǒng)syssys使
23、用和用戶模式相同寄存器集的使用和用戶模式相同寄存器集的特權(quán)模式特權(quán)模式35第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 處理器模式分類處理器模式分類處理器模式處理器模式用戶模式用戶模式 特權(quán)模式特權(quán)模式 異常模式異常模式 系統(tǒng)模式系統(tǒng)模式 FIQFIQIRQIRQ管理管理中止中止未定未定義義 36第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.2.3 處理器工作狀態(tài) ARM ARM處理器有兩種工作狀態(tài):處理器有兩種工作狀態(tài):ARMARM: 3232位位, ,這種狀態(tài)下執(zhí)行字對(duì)準(zhǔn)的這種狀態(tài)下執(zhí)行字對(duì)準(zhǔn)的ARMARM指令指令( (須掌握須掌握) )。ThumbThumb:1616位位, ,這種狀
24、態(tài)下執(zhí)行半字對(duì)準(zhǔn)的這種狀態(tài)下執(zhí)行半字對(duì)準(zhǔn)的ThumbThumb指令指令( (了解了解) )。 目的是使代碼長(zhǎng)度變短。目的是使代碼長(zhǎng)度變短。ARMARM處理器在兩種工作狀態(tài)之間可以切換。處理器在兩種工作狀態(tài)之間可以切換。ARMARM和和ThumbThumb之間之間狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容。狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容。37第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.2.4 寄存器組織ARMARM處理器總共有多少個(gè)寄存器?處理器總共有多少個(gè)寄存器?17+3+3+3+3+8=3717+3+3+3+3+8=373131個(gè)通用寄存器。個(gè)通用寄存器。6 6個(gè)狀態(tài)寄存器。
25、個(gè)狀態(tài)寄存器。每個(gè)寄存器都是每個(gè)寄存器都是3232位的位的38第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 通用寄存器通用寄存器通用寄存器(通用寄存器(R0R15)可分成可分成3類:類: 不分組寄存器不分組寄存器R0R7: 在所有的處理器模式下,它們每一個(gè)都訪問一樣的在所有的處理器模式下,它們每一個(gè)都訪問一樣的32位位物理寄存器。物理寄存器。 分組寄存器分組寄存器R8R14: 它們每一個(gè)訪問的物理寄存器取決于當(dāng)前的處理器模式它們每一個(gè)訪問的物理寄存器取決于當(dāng)前的處理器模式。每種處理器模式有專用的分組寄存器用于快速異常處理。每種處理器模式有專用的分組寄存器用于快速異常處理。寄存器寄存器R13通
26、常用作堆棧指針,稱作通常用作堆棧指針,稱作SP。寄存器寄存器R14用作子程序鏈接寄存器,也稱為鏈接寄存用作子程序鏈接寄存器,也稱為鏈接寄存器器LR,即存放返回地址的寄存器,即存放返回地址的寄存器。 程序計(jì)數(shù)器程序計(jì)數(shù)器R15:記錄即將運(yùn)行的指令的地址,稱作記錄即將運(yùn)行的指令的地址,稱作PC。39第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 程序狀態(tài)寄存器程序狀態(tài)寄存器 在所有處理器模式下都可以訪問當(dāng)前程序狀態(tài)寄在所有處理器模式下都可以訪問當(dāng)前程序狀態(tài)寄存器存器CPSRCPSR(Current Program Status RegisterCurrent Program Status Regi
27、ster)。)。每種異常模式都有一個(gè)程序狀態(tài)保存寄存器每種異常模式都有一個(gè)程序狀態(tài)保存寄存器SPSRSPSR(Saved Program Status RegisterSaved Program Status Register)。)。當(dāng)異常出現(xiàn)當(dāng)異常出現(xiàn)時(shí),時(shí),SPSRSPSR用于保留用于保留CPSRCPSR的狀態(tài)。所以的狀態(tài)。所以SPSRSPSR和和CPSRCPSR的的位結(jié)構(gòu)一樣。位結(jié)構(gòu)一樣。40第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 程序狀態(tài)寄存器程序狀態(tài)寄存器NZCV. .IFT M4M3M2M1M0M4:00b100000b100010b100100b10011模式模式用戶用戶
28、FIQIRQ管理管理0b101110b11011中止中止未定義未定義0b11111系統(tǒng)系統(tǒng)模式位模式位工作狀態(tài)位工作狀態(tài)位1:Thumb0: ARMFIQ中斷禁止位中斷禁止位1:禁止:禁止0:允許:允許IRQ中斷禁止位中斷禁止位1:禁止:禁止0:允許:允許OverflowCarryZeroNegative條件碼標(biāo)志位條件碼標(biāo)志位保留位保留位控制位控制位N:N:若結(jié)果為負(fù)數(shù),則若結(jié)果為負(fù)數(shù),則N=1N=1。 Z:Z:若指令的結(jié)果為若指令的結(jié)果為0 0,則,則Z=1Z=1。 C:- C:- 加法加法。產(chǎn)生進(jìn)位則產(chǎn)生進(jìn)位則C=1C=1。 - - 減法減法。產(chǎn)生借位則產(chǎn)生借位則C=0C=0。V:V:當(dāng)
29、計(jì)算結(jié)果超出了補(bǔ)碼的表當(dāng)計(jì)算結(jié)果超出了補(bǔ)碼的表示范圍示范圍(-2(-231312 23131-1)-1)時(shí),時(shí),V=1V=1。 41第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 程序狀態(tài)寄存器程序狀態(tài)寄存器M4:0模式模式可訪問的寄存器可訪問的寄存器10000 用戶用戶PC、R14R0、CPSR10001 FIQPC、R14_fiqR8_fiq、R7R0、CPSR、SPSR_fiq10010 IRQPC、R14_irq、R13_irq、R12R0、CPSR、SPSR_irq10011 管理管理PC、R14_svc、R13_svc、R12R0、CPSR、SPSR_svc10111 中止中止PC
30、、R14_abt、R13_abt、R12R0、CPSR、SPSR_abt11011 未定義未定義PC、R14_und、R13_und、R12R0、CPSR、SPSR_und11111 系統(tǒng)系統(tǒng)PC、R14R0、CPSR42第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.2.5 異常1.1.異常類型異常類型 異常由內(nèi)部或外部源產(chǎn)生并引起處理器處理一個(gè)事件,例如異常由內(nèi)部或外部源產(chǎn)生并引起處理器處理一個(gè)事件,例如外部中斷或試圖執(zhí)行未定義指令都會(huì)引起異常。外部中斷或試圖執(zhí)行未定義指令都會(huì)引起異常。ARMARM支持支持7 7種類型種類型的異常,異常對(duì)應(yīng)的模式及處理程序的地址如下表所示:的異常,異常對(duì)應(yīng)
31、的模式及處理程序的地址如下表所示: 異常類型異常類型模模 式式正常地址正常地址高向量地址高向量地址復(fù)位復(fù)位管理管理0 x000000000 xFFFF0000未定義指令未定義指令 未定義未定義0 x000000040 xFFFF0004軟件中斷(軟件中斷(SWI)管理管理0 x000000080 xFFFF0008預(yù)取中止(取指令存儲(chǔ)器中止)預(yù)取中止(取指令存儲(chǔ)器中止)中止中止0 x0000000C0 xFFFF000C數(shù)據(jù)中止數(shù)據(jù)中止(數(shù)據(jù)訪問存儲(chǔ)器中止數(shù)據(jù)訪問存儲(chǔ)器中止)中止中止0 x000000100 xFFFF0010IRQ(中斷)中斷)IRQ0 x000000180 xFFFF001
32、8FIQ(快速中斷)快速中斷)FIQ0 x0000001C0 xFFFF001C43第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)優(yōu)先級(jí)優(yōu)先級(jí)異異 常常1(最高最高)復(fù)位復(fù)位2數(shù)據(jù)中止數(shù)據(jù)中止3FIQ4IRQ5預(yù)取中止預(yù)取中止6(最低最低)未定義指令、未定義指令、SWI3.2.5 異常2.2.異常優(yōu)先級(jí)異常優(yōu)先級(jí) 44第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)復(fù)制復(fù)制CPSR到到SPSR_ 改變處理器狀態(tài)進(jìn)入改變處理器狀態(tài)進(jìn)入ARM狀態(tài)狀態(tài) 改變處理器模式進(jìn)入相應(yīng)的異常模式改變處理器模式進(jìn)入相應(yīng)的異常模式 設(shè)置中斷禁止位禁止相應(yīng)中斷設(shè)置中斷禁止位禁止相應(yīng)中斷保存返回地址到保存返回地址到LR_設(shè)
33、置設(shè)置PC為相應(yīng)的異常向量為相應(yīng)的異常向量從從SPSR_ 恢復(fù)恢復(fù)CPSR從從LR_恢復(fù)恢復(fù)PC45第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)46第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)有以下有以下4種:種:從從SWI和和Undef異常返回異常返回 MOVS pc,lr從從FIQ、IRQ和預(yù)取異常和預(yù)取異常(Prefect Abort)返回返回 SUBS pc,lr,#4從數(shù)據(jù)異常從數(shù)據(jù)異常(Data Abort)返回返回 SUBS pc,lr,#8如果如果LR之前被壓棧的話使用:之前被壓棧的話使用: LDMFD sp!,pc (當(dāng)然入棧之前要先調(diào)整好當(dāng)然入棧之前要先調(diào)整好pc)注意:注
34、意:pc做目的寄存做目的寄存器,器,LR(即即R14)存放存放返回地址的寄存器返回地址的寄存器 ,S和和表示同時(shí)改變表示同時(shí)改變CPSR的值的值SUB lr,lr,#4STMFD sp, lrLDMFD sp!, pc47第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)為什么要減4?48第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)SUB lr,lr,#4STMFD sp, lrLDMFD sp!, pc49第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.2.6 存儲(chǔ)器地址空間地址空間 ARMARM體系結(jié)構(gòu)使用體系結(jié)構(gòu)使用2 23232個(gè)個(gè)8 8位字節(jié)的單一、線性地址空間。位字節(jié)的單一、線性地址空間
35、。將字節(jié)地址做為無符號(hào)數(shù)看待,范圍為將字節(jié)地址做為無符號(hào)數(shù)看待,范圍為02023232-1-1,每個(gè)字,每個(gè)字節(jié)一個(gè)地址。節(jié)一個(gè)地址。 存儲(chǔ)器格式存儲(chǔ)器格式 即:低字節(jié)放在高地址即:低字節(jié)放在高地址 即:低字節(jié)放在低地址即:低字節(jié)放在低地址 50第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.2.6 存儲(chǔ)器和存儲(chǔ)器映射I/O非對(duì)準(zhǔn)的存非對(duì)準(zhǔn)的存儲(chǔ)器訪問儲(chǔ)器訪問 存儲(chǔ)器映存儲(chǔ)器映射射I/OI/O 若在若在ARMARM態(tài)執(zhí)行期間,將沒有字對(duì)準(zhǔn)的地址寫到態(tài)執(zhí)行期間,將沒有字對(duì)準(zhǔn)的地址寫到R15R15中,結(jié)中,結(jié)果通常不可預(yù)知或者地址的位果通常不可預(yù)知或者地址的位1:01:0被忽略。被忽略。若在若在T
36、humbThumb態(tài)執(zhí)行期間,將沒有半字對(duì)準(zhǔn)的地址寫到態(tài)執(zhí)行期間,將沒有半字對(duì)準(zhǔn)的地址寫到R15R15中,中,則地址的位則地址的位00通常忽略。通常忽略。當(dāng)執(zhí)行無效代碼時(shí),從當(dāng)執(zhí)行無效代碼時(shí),從R15R15讀值的結(jié)果對(duì)讀值的結(jié)果對(duì)ARMARM狀態(tài)來說總是狀態(tài)來說總是位位1:01:0為為0 0,對(duì),對(duì)ThumbThumb狀態(tài)來說總是位狀態(tài)來說總是位00為為0 0。ARMARM系統(tǒng)完成系統(tǒng)完成I/OI/O功能的標(biāo)準(zhǔn)方法是使用存儲(chǔ)器映射功能的標(biāo)準(zhǔn)方法是使用存儲(chǔ)器映射I/OI/O。從存儲(chǔ)器映射從存儲(chǔ)器映射I/OI/O地址加載用于輸入,向存儲(chǔ)器映射地址加載用于輸入,向存儲(chǔ)器映射I/OI/O地址地址存儲(chǔ)用
37、于輸出。存儲(chǔ)用于輸出。存儲(chǔ)器映射存儲(chǔ)器映射I/OI/O位置的行為通常不同于對(duì)一個(gè)正常存儲(chǔ)器位置的行為通常不同于對(duì)一個(gè)正常存儲(chǔ)器位置所期望的行為。例如,對(duì)于存儲(chǔ)器映射位置所期望的行為。例如,對(duì)于存儲(chǔ)器映射I/OI/O位置,第位置,第2 2次次加載的返回值可以不同于第加載的返回值可以不同于第1 1次加載的返回值。次加載的返回值。51第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)主要內(nèi)容ARM體系結(jié)構(gòu)概述體系結(jié)構(gòu)概述 編程模型編程模型ARM基本尋址方式基本尋址方式ARM指令集指令集ARM9TDMI內(nèi)核內(nèi)核ARM9與與ARM7的比較的比較ARM920T核核 52第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)
38、構(gòu) 尋址方式尋址方式是根據(jù)指令中給出的地址碼字段來尋找真實(shí)操是根據(jù)指令中給出的地址碼字段來尋找真實(shí)操作數(shù)地址的方式。作數(shù)地址的方式。ARMARM處理器支持的基本尋址方式有:處理器支持的基本尋址方式有:3.3 ARM基本尋址方式寄存器尋址寄存器尋址立即尋址立即尋址寄存器移位尋址寄存器移位尋址寄存器間接尋址寄存器間接尋址變址尋址變址尋址多寄存器尋址多寄存器尋址堆棧尋址堆棧尋址塊復(fù)制尋址塊復(fù)制尋址相對(duì)尋址相對(duì)尋址53第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 立即尋址立即尋址注:立即數(shù)的前面必須加注:立即數(shù)的前面必須加 “# ”或或“$”號(hào)。號(hào)。 十六進(jìn)制值在十六進(jìn)制值在“#”“#”后加后加“0
39、“0 x”x”或或“&”“&”表示。表示。MOV R1, 0 x0F ;R10F0FR154第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 寄存器尋址寄存器尋址MOV R1, R0 ; R1R0R10FR00F55第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v寄存器移位尋址寄存器移位尋址這種尋址方式是這種尋址方式是ARMARM指令集特有的。操作數(shù)由寄存器中的數(shù)指令集特有的。操作數(shù)由寄存器中的數(shù)值經(jīng)過移位而得到,移位的方式在指令中以助記符的形式給出,值經(jīng)過移位而得到,移位的方式在指令中以助記符的形式給出,移位數(shù)可用立即數(shù)或寄存器給出。例如指令:移位數(shù)可用立即數(shù)或寄存器給出。例如指
40、令:ADD R3,R2,R1,LSL #3 ; R3ADD R3,R2,R1,LSL #3 ; R3R2+8R2+8R1R1寄存器寄存器R1R1的內(nèi)容邏輯左移的內(nèi)容邏輯左移3 3位,再與寄存器位,再與寄存器R2R2內(nèi)容相加,結(jié)內(nèi)容相加,結(jié)果放入果放入R3R3中。中??刹扇〉囊莆徊僮饔锌刹扇〉囊莆徊僮饔? 5種:種: 56第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v可采取的移位操作可采取的移位操作這這4種可移多位(種可移多位(1-31位)位)這種只能移這種只能移1位位57第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v寄存器間接尋址寄存器間接尋址寄存器中存放操作數(shù)的有效地址,而操作數(shù)則存放在存儲(chǔ)
41、單元中,寄存器中存放操作數(shù)的有效地址,而操作數(shù)則存放在存儲(chǔ)單元中,即寄存器為地址指針。例如指令:即寄存器為地址指針。例如指令:LDR R0,R1 ; R0R1STR R0,R1 ; R0R1第第1條指令將寄存器條指令將寄存器R1指向的地址單元的內(nèi)容加載到寄存器指向的地址單元的內(nèi)容加載到寄存器R0中中。第。第2條指令將寄存器條指令將寄存器R0存入寄存器存入寄存器R1指向的地址單元。指向的地址單元。以以LDR R0,R1為例:為例:R03404R10 x3404220 x34000 x340811332258第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 變址尋址變址尋址 變址尋址就是將基址寄存器
42、的內(nèi)容與指令中給出的偏移量相加,形成操變址尋址就是將基址寄存器的內(nèi)容與指令中給出的偏移量相加,形成操作數(shù)有效地址。變址尋址用于訪問基址附近的存儲(chǔ)單元。作數(shù)有效地址。變址尋址用于訪問基址附近的存儲(chǔ)單元。 前索引尋址方式:基址先加偏移來計(jì)算訪問的地址,再傳送。前索引尋址方式:基址先加偏移來計(jì)算訪問的地址,再傳送。 例如:例如:LDR R0,R1,#4 ; R0R1+4 LDR R0,R1,R2 ; R0R1+R2后索引尋址方式:基址不帶偏移作為訪問的地址先傳送,傳送后自動(dòng)索后索引尋址方式:基址不帶偏移作為訪問的地址先傳送,傳送后自動(dòng)索引(即加偏移)。引(即加偏移)。 例如:例如:LDR R0,R1
43、,#4 ; R0R1,R1R1+4 R23400HR1+8H3404H1EH3400H3408H02H03H基址基址偏移量偏移量R002H以以LDR R0,R1,R2為例:為例:59第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 多寄存器尋址多寄存器尋址 一次可以傳送幾個(gè)寄存器的值。允許一條指令傳送一次可以傳送幾個(gè)寄存器的值。允許一條指令傳送16個(gè)寄存器個(gè)寄存器的任何子集(或所有的任何子集(或所有16個(gè)寄存器),連續(xù)的寄存器用個(gè)寄存器),連續(xù)的寄存器用“-”連接,連接,否則用逗號(hào)分隔。例如指令:否則用逗號(hào)分隔。例如指令:LDMIA R0,R1-R3,R5 ; R1R0 ; R2R0+4 ; R
44、3R0+8 ; R5R0+C 由于傳送的數(shù)據(jù)項(xiàng)總是由于傳送的數(shù)據(jù)項(xiàng)總是32位的字,基址位的字,基址R0應(yīng)該字對(duì)準(zhǔn)。這條指應(yīng)該字對(duì)準(zhǔn)。這條指令將令將R0指向的連續(xù)存儲(chǔ)單元的內(nèi)容送到寄存器指向的連續(xù)存儲(chǔ)單元的內(nèi)容送到寄存器R1、R2、R3和和R5。60第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 塊復(fù)制尋址塊復(fù)制尋址 ARM ARM支持兩種不同角度的尋址機(jī)制:堆棧角度和塊復(fù)制角度,兩者支持兩種不同角度的尋址機(jī)制:堆棧角度和塊復(fù)制角度,兩者都映射到相同的基本指令。堆棧和塊拷貝角度的多寄存器加載和存儲(chǔ)都映射到相同的基本指令。堆棧和塊拷貝角度的多寄存器加載和存儲(chǔ)指令映射如下圖。指令映射如下圖。 61第
45、第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)塊復(fù)制角度的尋址舉例,執(zhí)行指令之前的基址寄存器值是塊復(fù)制角度的尋址舉例,執(zhí)行指令之前的基址寄存器值是R9R9,自動(dòng)自動(dòng)尋址之后的基址寄存器是尋址之后的基址寄存器是R9R9。 v 塊復(fù)制尋址塊復(fù)制尋址62第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 相對(duì)尋址相對(duì)尋址例如指令:例如指令: BL SUBR ; 轉(zhuǎn)移到轉(zhuǎn)移到SUBR ; 返回到此返回到此SUBR: ;子程序入口地址子程序入口地址 MOV PC,R14 ;返回返回 63第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)主要內(nèi)容ARM體系結(jié)構(gòu)概述體系結(jié)構(gòu)概述 編程模型編程模型ARM基本尋址方式基本尋址
46、方式ARM指令集指令集ARM9TDMI內(nèi)核內(nèi)核ARM9與與ARM7的比較的比較ARM920T核核 64第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v 匯編常用符號(hào)匯編常用符號(hào)(1) 注釋注釋 :代碼行中的注釋符號(hào):代碼行中的注釋符號(hào) #:整行注釋符號(hào):整行注釋符號(hào) (2)語句分離符號(hào):語句分離符號(hào): ; (3)直接操作數(shù)前綴:直接操作數(shù)前綴:# 或或 $(4) 標(biāo)號(hào):標(biāo)號(hào): 只能由只能由az,AZ,09,“.”,“_”等(即由字母、數(shù)字、等(即由字母、數(shù)字、點(diǎn)、下劃線等)組成,不能以數(shù)字打頭,標(biāo)號(hào)的后面加:點(diǎn)、下劃線等)組成,不能以數(shù)字打頭,標(biāo)號(hào)的后面加: MOV r0, #9 MOV r1,
47、 #15loop: your code here CMP r0, r1 BNE loop65第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.4.1 條件執(zhí)行 幾乎所有的幾乎所有的ARMARM指令均可包含一個(gè)指令均可包含一個(gè)可選的條件碼可選的條件碼,句法說明中以,句法說明中以 condcond表示表示, ,只有在只有在CPSRCPSR中的條件碼標(biāo)志滿足指定的條件時(shí),帶條件碼的指令才中的條件碼標(biāo)志滿足指定的條件時(shí),帶條件碼的指令才能執(zhí)行。并使用能執(zhí)行。并使用后綴后綴“S”S”來區(qū)分是否根據(jù)執(zhí)行結(jié)果修改條件碼標(biāo)志。來區(qū)分是否根據(jù)執(zhí)行結(jié)果修改條件碼標(biāo)志。操作碼操作碼31:2831:28助記符后綴助記符
48、后綴標(biāo)標(biāo) 志志含含 義義00000000EQEQZ Z置位置位相等相等00010001NENEZ Z清零清零不等不等00100010CS/HSCS/HSC C置位置位大于或等于大于或等于( (無符號(hào)無符號(hào)=) )00110011CC/LOCC/LOC C清零清零小于(無符號(hào)小于(無符號(hào) )10011001LSLSC C清零或清零或Z Z置位置位小于或等于小于或等于( (無符號(hào)無符號(hào)=10111011LTLTN N和和V V不同不同帶符號(hào)帶符號(hào) 11011101LELEZ Z置位或置位或N N和和V V不同不同帶符號(hào)帶符號(hào)=11101110ALAL任何任何總是(通常省略)總是(通常省略)66第第
49、3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.4.1 條件執(zhí)行 舉例舉例C代碼:代碼: if (x != 0) x = x + 1; 提問:假定提問:假定x變量存放在寄存變量存放在寄存器器R0中中, 請(qǐng)翻譯成匯編代碼。請(qǐng)翻譯成匯編代碼。 CMP R0, #0 BEQ skip ADD R0, R0, #1 skip: . ARM中,所有的指令都可以中,所有的指令都可以條件執(zhí)行條件執(zhí)行, 匯編代碼可精簡(jiǎn)成如匯編代碼可精簡(jiǎn)成如下代碼:下代碼: CMP R0, #0 ADDEQ R0, R0, #1總結(jié)條件執(zhí)行的好處:總結(jié)條件執(zhí)行的好處: 1. 代碼量會(huì)少代碼量會(huì)少 2. 有利減少跳轉(zhuǎn)指令,有利減少跳
50、轉(zhuǎn)指令,發(fā)揮流水線的效果。發(fā)揮流水線的效果。67第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)該例中用該例中用6個(gè)時(shí)鐘周期執(zhí)行了個(gè)時(shí)鐘周期執(zhí)行了6條指令。條指令。 最佳最佳3 3級(jí)流水線:級(jí)流水線:條件執(zhí)行的好處條件執(zhí)行的好處68第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu) 跳轉(zhuǎn)流水線:跳轉(zhuǎn)流水線:條件執(zhí)行的好處條件執(zhí)行的好處 分析:流水線被阻隔,即分析:流水線被阻隔,即BL指令的指令的E執(zhí)行之后,還要進(jìn)行執(zhí)行之后,還要進(jìn)行L保存返回地址和保存返回地址和A調(diào)整,多占了兩個(gè)時(shí)鐘周期。而且此例中的調(diào)整,多占了兩個(gè)時(shí)鐘周期。而且此例中的BL的的A調(diào)整之后剛好進(jìn)行調(diào)整之后剛好進(jìn)行AND的的E執(zhí)執(zhí)行,但如
51、果跳轉(zhuǎn)距離較長(zhǎng)的話,行,但如果跳轉(zhuǎn)距離較長(zhǎng)的話, BL的的A調(diào)整之后,調(diào)整之后, AND的的F取指和取指和D解碼還沒做,解碼還沒做,那重新取指、解碼,耗的時(shí)間就更長(zhǎng)了。那重新取指、解碼,耗的時(shí)間就更長(zhǎng)了。提問:跳轉(zhuǎn)指令會(huì)對(duì)流水線造成什么影響?提問:跳轉(zhuǎn)指令會(huì)對(duì)流水線造成什么影響?69第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.4.2 指令分類說明 32 32位位ARMARM指令集由指令集由1313種基本指令類型組成,分成種基本指令類型組成,分成4 4大類:大類: 3 3種類型的存儲(chǔ)器訪問指令:控制存儲(chǔ)器和寄存器之間的種類型的存儲(chǔ)器訪問指令:控制存儲(chǔ)器和寄存器之間的數(shù)據(jù)傳送。一種類型用于優(yōu)化
52、的靈活尋址;另一種類型用數(shù)據(jù)傳送。一種類型用于優(yōu)化的靈活尋址;另一種類型用于快速上下文切換;第三種類型用于交換數(shù)據(jù)。于快速上下文切換;第三種類型用于交換數(shù)據(jù)。 3 3種類型的數(shù)據(jù)處理指令:使用片內(nèi)種類型的數(shù)據(jù)處理指令:使用片內(nèi)ALUALU、桶形移位器和桶形移位器和乘法器針對(duì)乘法器針對(duì)3131個(gè)寄存器完成高速數(shù)據(jù)處理操作。個(gè)寄存器完成高速數(shù)據(jù)處理操作。 4 4種類型的分支指令:控制程序執(zhí)行流程、指令優(yōu)先級(jí)以種類型的分支指令:控制程序執(zhí)行流程、指令優(yōu)先級(jí)以及及ARMARM代碼和代碼和ThumbThumb代碼的切換。代碼的切換。 3 3種類型的協(xié)處理器指令:專用于控制外部協(xié)處理器。這種類型的協(xié)處理器
53、指令:專用于控制外部協(xié)處理器。這些指令以開放和統(tǒng)一的方式擴(kuò)展了指令集的片外功能。些指令以開放和統(tǒng)一的方式擴(kuò)展了指令集的片外功能。70第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)3.4.2 指令分類說明 32 32位位ARMARM指令集由指令集由1313種基本指令類型組成,分成種基本指令類型組成,分成4 4大類:大類: 3 3種類型的種類型的存儲(chǔ)器訪問指令存儲(chǔ)器訪問指令:控制:控制存儲(chǔ)器和寄存器存儲(chǔ)器和寄存器之間的之間的數(shù)據(jù)傳送。一種類型用于單寄存器數(shù)據(jù)傳送;另一種類型數(shù)據(jù)傳送。一種類型用于單寄存器數(shù)據(jù)傳送;另一種類型用于批量數(shù)據(jù)傳送;第三種類型用于交換數(shù)據(jù)。用于批量數(shù)據(jù)傳送;第三種類型用于交換
54、數(shù)據(jù)。 4 4種類型的種類型的數(shù)據(jù)處理指令數(shù)據(jù)處理指令:使用片內(nèi)使用片內(nèi)ALU、桶形移位器桶形移位器和乘法器針對(duì)和乘法器針對(duì)31個(gè)通用寄存器個(gè)通用寄存器(注:不包括程序狀態(tài)寄存器注:不包括程序狀態(tài)寄存器和存儲(chǔ)器和存儲(chǔ)器)完成高速數(shù)據(jù)處理操作。包括完成高速數(shù)據(jù)處理操作。包括算術(shù)運(yùn)算指令、邏算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、比較指令、數(shù)據(jù)傳送指令。輯運(yùn)算指令、比較指令、數(shù)據(jù)傳送指令。 4 4種類型的種類型的分支指令分支指令:控制程序執(zhí)行流程:控制程序執(zhí)行流程以及以及ARM代碼代碼和和Thumb代碼的切換。代碼的切換。 3 3種類型的種類型的協(xié)處理器指令協(xié)處理器指令:專用于控制外部協(xié)處理器。這:專用于控制
55、外部協(xié)處理器。這些指令以開放和統(tǒng)一的方式擴(kuò)展了指令集的片外功能。些指令以開放和統(tǒng)一的方式擴(kuò)展了指令集的片外功能。71第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)1.ARM數(shù)據(jù)處理指令數(shù)據(jù)處理指令數(shù)據(jù)處理類指令格式數(shù)據(jù)處理類指令格式:S Rd, Rn, opcode:操作碼,如操作碼,如ADD、SUB、ORRcond:條件碼,即條件碼,即3.4.1表格中的助記符。表格中的助記符。 S:本指令是否更新本指令是否更新CPSR中的狀態(tài)標(biāo)志位中的狀態(tài)標(biāo)志位Rd:目標(biāo)寄存器目標(biāo)寄存器Rn:第一個(gè)源寄存器第一個(gè)源寄存器shifter_operand:復(fù)合的第二個(gè)源操作數(shù),其格式:復(fù)合的第二個(gè)源操作數(shù),其格式
56、:立即數(shù)立即數(shù)ADD R1,R2,#0 x35寄存器寄存器SUBS R3,R2,R1寄存器移位寄存器移位ADDEQS R9,R5, R5, LSL #3 SUB R3,R2, R1,ROR R772第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v ARMARM數(shù)據(jù)處理指令數(shù)據(jù)處理指令算術(shù)算術(shù)/ /邏輯運(yùn)算指令邏輯運(yùn)算指令 73第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)1.ARM數(shù)據(jù)處理指令數(shù)據(jù)處理指令包括:算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、比較指令、數(shù)據(jù)傳送指令包括:算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、比較指令、數(shù)據(jù)傳送指令 可理解為可理解為3+2-3-(-2),即即3和和-2比較比較按位取反后再按位取反后
57、再傳送傳送加法指令加法指令 ADD R1,R2,R3 R1=R2+R3帶進(jìn)位加法帶進(jìn)位加法 ADC R1,R2,R3 R1=R2+R3+C減法指令減法指令 SUB R1,R2,R3 R1=R2-R3逆向減法逆向減法 RSB R1,R2,R3 R1=R3-R2帶借位減法帶借位減法 SBC R1,R2,R3 R1=R2-R3-!C帶借位逆減法帶借位逆減法 RSC R1,R2,R3 R1=R3-R2-!C邏輯與指令邏輯與指令 AND R0,R0,#0X0F 邏輯或指令邏輯或指令 ORR R0,R0,#0X0F邏輯異或邏輯異或 EOR R0,R0,#0X0F位清除位清除 BIC R0,R0,#9 比較
58、指令比較指令 CMP R1,#10 cpsr = R1-10反值比較指令反值比較指令 CMN R1,R2 cpsr =R1+R2位測(cè)試指令位測(cè)試指令 TST R1,#3 cpsr = R1 AND 3相等測(cè)試相等測(cè)試 TEQ R1,R2 cpsr = R1 EOR R2數(shù)據(jù)傳輸指令數(shù)據(jù)傳輸指令 MOV R1,R2 R1=R2取反傳送指令取反傳送指令 MVN R1,R2 R1= ! R274第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)1.ARM數(shù)據(jù)處理指令數(shù)據(jù)處理指令位清除位清除 0001 0011 data BIC 0000 1001 mask - 0001 0010位測(cè)試位測(cè)試 0101 0
59、001 data & 0001 0000 mask - 0001 0000 cpsr相等測(cè)試相等測(cè)試 0101 0001 data0 0101 0001 data1 - 0000 0000 cpsr75第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)v ARM數(shù)據(jù)處理指令應(yīng)用數(shù)據(jù)處理指令應(yīng)用提問提問1:64位加法,指令怎么寫?位加法,指令怎么寫? 0 x00000001(R0) 80000000(R1) +0 x00000001(R2) 80000000(R3) - (R4) (R5) ADDS R5, R1, R3 ADC R4, R0, R2 提問提問2:64位減法,指令怎么寫?位減法
60、,指令怎么寫? 0 x00000001(R0) 80000000(R1) -0 x00000002(R2) 80000000(R3) - (R4) (R5) SUBS R5, R1, R3 SBC R4, R0, R276第第3 3章章 ARMARM體系結(jié)構(gòu)體系結(jié)構(gòu)2.ARM轉(zhuǎn)移指令轉(zhuǎn)移指令(1 1)B B和和BLBL B B(BranchBranch)指令引起處理器轉(zhuǎn)移到指令引起處理器轉(zhuǎn)移到labellabel。 句法句法: : B cond labelB cond label BL BL(Branch and Branch and LinkLink)指令將下一條指令的地址拷貝指令將下一條指令的地址拷貝到到R1
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 金屬欄桿翻新施工方案
- 酒店隔墻施工方案
- 臨建施工方案
- 側(cè)石施工方案
- 木工吊頂天花板施工方案
- 伸縮縫更換施工方案
- 瀝青路面半幅加厚施工方案
- 醫(yī)院專家引進(jìn)合作協(xié)議
- 解除合伙關(guān)系協(xié)議書
- 濟(jì)寧金屬板聲屏障施工方案
- DBJ51-T 198-2022 四川省既有民用建筑結(jié)構(gòu)安全隱患排查技術(shù)標(biāo)準(zhǔn)
- 《干細(xì)胞及其應(yīng)用》課件
- 課題申報(bào)書:生成式人工智能提升中小學(xué)教師數(shù)字素養(yǎng)的路徑探究
- 臨床婦產(chǎn)題庫(kù)+參考答案
- 數(shù)據(jù)安全重要數(shù)據(jù)風(fēng)險(xiǎn)評(píng)估報(bào)告
- 華東師范大學(xué)《外國(guó)人文經(jīng)典(下)》2021-2022學(xué)年第一學(xué)期期末試卷
- 第17講 新高考新結(jié)構(gòu)命題下的導(dǎo)數(shù)解答題綜合訓(xùn)練(教師版)-2025版高中數(shù)學(xué)一輪復(fù)習(xí)考點(diǎn)幫
- 人美版初中美術(shù)八年級(jí)下冊(cè)教案-全冊(cè)
- 2024年度無人機(jī)飛行培訓(xùn)合同
- 倒閘操作培訓(xùn)
- 幼兒園家長(zhǎng)會(huì)安全保健
評(píng)論
0/150
提交評(píng)論