ARM體系結構與編程方法-課件_第1頁
ARM體系結構與編程方法-課件_第2頁
ARM體系結構與編程方法-課件_第3頁
ARM體系結構與編程方法-課件_第4頁
ARM體系結構與編程方法-課件_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

嵌入式系統(tǒng)AnIntroductiontoEmbeddedSystem第三-四課ARM體系結構與編程方法1ppt課件IPADIpad1處理器A4SOC,包括ARMCPU+GPU,A4封裝有三層兩層RAM(三星K4X1G323PE,256M)一層含有微處理器。顯示芯片(PowerVRSGXGPU)ARM架構,1GHz主頻,Cortex-A8單核心微架構BSN網站稱是A9,是錯誤的iPhoneOS3.2Ipad2單核->雙核:A5處理器包括A9處理器(兩個A8核)256M->512M內存無攝像頭->前后攝像頭尺寸更小2ppt課件

課程大綱ARM處理器概述ARM體系結構

ARM編程方法3ppt課件3.1.1ARM處理器特點ARM公司雖然只成立10多年,但在1999年因移動電話火爆市場,其32位RISC處理器占市場份額超過了50%。ARM公司商業(yè)模式的強大之處在于其價格合理,全世界范圍有超過100個合作伙伴--包括半導體工業(yè)的著名公司。ARM公司專注于設計,其內核耗電少、成本低、功能強,特有16/32位雙指令集。ARM已成為移動通信、手持計算、多媒體數字消費等嵌入式解決方案的RISC標準?;贏RM技術的微處理器大約占據了32位RISC微處理器80%以上的市場份額。4ppt課件ARM體系主要特征大量的寄存器,都可用于多種用途Load-Store體系結構3地址指令(兩個源操作數寄存器和結果寄存器獨立設定)每條指令都條件執(zhí)行包含非常強大的多寄存器Load和Store指令能在單時鐘周期執(zhí)行的單條指令內完成一項普通的移位操作和一項普通的ALU操作能過協(xié)處理器指令集來擴展ARM指令集,包括在編程模式下增加了新的寄存器和數據類型在Thumb體系結構中以高密度16位壓縮形式表示指令集5ppt課件ARM處理器版本,產生ARM系列產品處理器版本通常指體系結構ARM產品家族一般對應不同體系3.1.2ARM處理器版本6ppt課件產品系列編號方法ARM系列產品豐富,以ARM7為例,內核ARM7TDMI表示為:ARM7:ARM系列具有32位整數運算核T:內含16位壓縮指令集ThumbD:支持片內Debug調試M:采用增強型乘法器(Multiplier)I:內含嵌入式ICE宏單元ARM系列產品的后綴提供了各種形式與功能的選擇:-S:可綜合的軟核Softcore-E:具有DSP的功能-J:Jazeller,允許直接執(zhí)行Java字節(jié)碼7ppt課件ARM架構版本ARM架構定義7種不同的版本,10個家族流行的低端嵌入式系統(tǒng)如智能冰箱,大多采用ARMv4微架構處理器ARM7流行的嵌入式系統(tǒng)如智能手機、平板電腦,大多采用ARMv7微架構處理器Cortex,也有人稱之為ARM12ARM1家族ARM2家族ARM3家族ARM6家族ARM7家族ARM8家族ARM9家族ARM10家族ARM11家族ARMcortex家族V1版架構V2版架構V3版架構V4版架構V5版架構V6版架構V7版架構8ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用ARM1ARMv1ARM1

V1版架構該版架構只在原型機ARM1出現(xiàn)過,其基本性能:基本的數據處理指令(無乘法)字節(jié)、半字和字的LOAD/STORE指令轉移指令,包括子程序調用及鏈接指令軟件中斷指令尋址空間:64M字節(jié)(226)9ppt課件V2版架構該版架構對V1版進行了擴展,如ARM2與ARM3(V2a版)架構,增加了以下功能:乘法和乘加指令支持協(xié)處理器操作指令快速中斷模式SWP/SWPB的最基本存儲器與寄存器交換指令尋址空間:64M字節(jié)10ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用ARM2ARMv2ARM2Architecture2加入了MUL(乘法)指令無4MIPS@8MHzAcornArchimedes,ChessmachineARMv2aARM250IntegratedMEMC(MMU),圖形與IO處理器。Architecture2a加入了SWP和SWPB(置換)指令。無,MEMC1a7MIPS@12MHzAcornArchimedesARM3ARMv2aARM2a首次在ARM架構上使用處理器cache均為4K12MIPS@25MHzAcornArchimedes11ppt課件V3版架構把尋址空間增至32位(4G字節(jié))增加了當前程序狀態(tài)寄存器CPSR(CurrentProgramStatusRegister)和程序狀態(tài)保存寄存器SPSR(SavedProgramStatusRegister)。增加了中止(Abort)和未定義二種處理器模式。ARM6就采用該版架構。指令集變化如下:增加了MRS/MSR指令,以訪問新增的CPSR/SPSR寄存器增加了從異常處理返回的指令功能。12ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用ARM6ARMv3ARM610v3架構首創(chuàng)支持定址32位元的記憶體(針對26位元)均為4K28MIPS@33MHzAcornRiscPC600,AppleNewton13ppt課件V4版架構是目前應用最廣的ARM體系結構,對V3版架構進行了進一步擴充。引進了16位的Thumb指令集,使ARM使用更加靈活。ARM7、ARM8、ARM9和StrongARM(為了推XScale,intel停產了strongarm)都采用該版架構。指令集中增加了以下功能:符號化和非符號化半字及符號化字節(jié)的存/取指令增加了16位Thumb指令集完善了軟件中斷SWI指令的功能處理器系統(tǒng)模式引進特權方式時使用用戶寄存器操作把一些未使用的指令空間捕獲為未定義指令V4版架構14ppt課件ARM7TDMI的3段流水線操作注:程序計數器PC指向正在取指的指令而不是正在執(zhí)行的指令15ppt課件在V4版基本上增加了一些新的指令,ARM10和XScale都采用該版架構,這些新增指令有:帶有鏈接和交換的轉移BLX指令計數前導零CLZ指令BRK中斷指令增加了信號處理指令(V5TE版)為協(xié)處理器增加更多可選擇的指令V5版架構16ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用ARM7TDMIARMv4TARM7TDMI(-S)三級流水線無15MIPS@16.8MHzGameBoyAdvance,NintendoDS,iPod

ARM710T

均為8KB,MMU36MIPS@40MHzAcornRiscPC700,Psion5series,AppleeMate300

ARM720T

均為8KB,MMU60MIPS@59.8MHzZipit

ARM740T

MPU

ARMv5TEJARM7EJ-SJazelleDBX無

17ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用ARM9TDMIARMv4TARM9TDMI五級流水線無

ARM920T

16KB/16KB,MMU200MIPS@180MHzArmadillo,GP32,GP2X(第一顆內核),TapwaveZodiac(Motorolai.MX1)

ARM922T

8KB/8KB,MMU

ARM940T

4KB/4KB,MPU

GP2X(第二顆內核)學院09年底購置的S3C2410采用了ARM920T18ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用ARM9EARMv5TEARM946E-S

可變動,tightlycoupledmemories,MPU

NintendoDS,NokiaN-GageConexant802.11chips

ARM966E-S

無cache,TCMs

STMicroSTR91xF,包含Ethernet

ARM968E-S

無cache,TCMs

ARMv5TEJARM926EJ-SJazelleDBX可變動,TCMs,MMU220MIPS@200MHz移動電話:SonyEricsson(K,W系列),Siemens和Benq(x65系列和新版的)

ARMv5TEARM996HS無振蕩器處理器無cache,TCMs,MPU

19ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用ARM10EARMv5TEARM1020E(VFP),六級流水線32KB/32KB,MMU

ARM1022E(VFP)16KB/16KB,MMU

ARMv5TEJARM1026EJ-SJazelleDBX可變動,MMUorMPU

20ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用XScaleARMv5TE80200/IOP310/IOP315I/O處理器

80219

400/600MHzThecusN2100

IOP321

600BogoMips@600MHzIyonix

IOP33x

IOP34x1-2核,RAID加速器32K/32KL1,512KL2,MMU

PXA210/PXA250應用處理器,七級流水線

ZaurusSL-5600

PXA255

32KB/32KB,MMU400BogoMips@400MHzGumstix,PalmTungstenE2

PXA26x

可達400MHzPalmTungstenT3

PXA27x

800MIPS@624MHzHTCUniversal,ZaurusSL-C1000,3000,3100,3200,DellAximx30,x50,和x51系列

PXA800(E)F

Monahans

1000MIPS@1.25GHz

PXA900

Blackberry8700,BlackberryPearl(8100)

IXC1100ControlPlaneProcessor

IXP2400/IXP2800

IXP2850

IXP2325/IXP2350

IXP42x

NSLU2

IXP460/IXP465

2009年以前本課程使用PXA272。06年intel放棄XSCALE賣給Marvell公司,27x為intel最后一款XScale,此后MarvellXscale出了310、320等21ppt課件ARM920TvsXscale272

ARMv4T架構,ARM9TDMI內核180nm獨立的16KB指令Cache和16KB數據Cache最高可運行在268MHz無多媒體ARMv5TE架構180nm獨立的32KB指令Cache和32KB數據Cache最高可運行在624MHz擴展了MMX支持多媒體22ppt課件ARMv6,發(fā)布于2001年10月,是目前最流行的架構形成ARM11系列嵌入式處理器特點增強的Cache結構支持實地址Cache減少Cache的刷新和重載減少上下文切換的開銷加強媒體處理能力,使MPEG4編碼/解碼/音頻處理加快一倍Intel在Xscale中用自己的技術,使得處理器支持多媒體處理技術ARM11自己帶了多媒體能力,促成intel放棄Xscale低功耗:0.13um工藝,1.2v下,ARM11功耗0.4mW/MHzV6版架構23ppt課件增強的異常和中斷處理使實時任務的處理更加迅速支持Unaligned和Mixed-endian數據訪問使數據共享、軟件移植更簡單,也有利于節(jié)省存儲器空間用戶定制能力強提供可綜合版本和半定制硬核兩種實現(xiàn)客戶根據自己的半導體工藝開發(fā)出各有特色的處理器內核采用了易于綜合的流水線結構保持了100%的二進制向下兼容支持多處理器系統(tǒng)MPCORE(由2-4個ARM11內核組成)24ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用ARM11ARMv6ARM1136J(F)-SSIMD,JazelleDBX,(VFP),八級流水線可變動,MMU??@532-665MHz(i.MX31SoC)NokiaN93,Zune,NokiaN800

ARMv6T2ARM1156T2(F)-SSIMD,Thumb-2,(VFP),九級流水線可變動,MPU

ARMv6KZARM1176JZ(F)-SSIMD,JazelleDBX,(VFP)可變動,MMUTrustZone

ARMv6KARM11MPCore1-4核對稱多處理器,SIMD,JazelleDBX,(VFP)可變動,MMU

25ppt課件XScalevsARM11XScale7級流水線XScale不足無法直接支持Java解碼無法直接支持V6SIMD指令集外其他各項性能參數與ARM11核心都比較接近ARM11促成了2006年7月,英特爾把手機芯片業(yè)務6億美元的價格轉讓給Marvell公司(存儲、通信商)Marvell推出PXA3xx系列,其中PXA320最高主頻806MHzXScale250已經停產,27x還存活,3xx很少看到26ppt課件ARMv7,發(fā)布于2005年,是目前最新的架構,已經全面取代ARM11超標量流水線,能夠同時執(zhí)行多條指令可調尺寸的L2Thumb-2技術首先在2003年的ARM1156出現(xiàn)在Thumb代碼壓縮技術的基礎上發(fā)展出來的,保持代碼兼容性。Thumb-2技術比純32位代碼少使用31%的內存,降低系統(tǒng)開銷能夠提供比Thumb技術的解決方案高出38%的性能表現(xiàn)NEON技術將DSP和媒體處理能力提高了近4倍對H.264和MP3等媒體編解碼提供加速支持改良的浮點運算,滿足3D圖形和游戲物理應用V7版架構27ppt課件支持改良運行環(huán)境,支持不斷增加的JIT和DAC技術ThumbEEThumbExecutionEnvironment又稱Thumb-2EE、JazelleRCT技術2005年v7中發(fā)布,A8具備還技術Thumb-2擴充,使得動態(tài)生成的代碼具有更好的目標,也就是說,就在執(zhí)行之前或在執(zhí)行過程中即可在該設備上編譯代碼。TrustZone安全性擴充一種安全軟件框架,可充分利用內置于ARM體系結構中的安全擴展用在可作為兩個虛擬CPU的單處理器ARM內核中。VFP(VectorFloatingPoint)在協(xié)同處理器針對ARM架構的衍生技術提供低成本的單精度和倍精度浮點運算能力28ppt課件v5至v7架構比較29ppt課件產品家族家族名稱:Cortex,俗稱ARM12第一個Cortex-M3于2004年10月正式發(fā)布2005年,ARMCortex-A8問世2006年,Cortex-R4處理器問世2007年,Cortex-M1,第一個用于FPGA的ARM處理器;Cortex-A9多核(2-4)主要有:SC300、Cortex-M3、Cortex-R4、Cortex-R4F、Cortex-A8、Cortex-A965納米工藝,Cortex-A8功耗不到300毫瓦三個系列“A”系列面向尖端的基于虛擬內存的操作系統(tǒng)和用戶應用;運行包括Linux、WindowsCE和Symbian在內的操作系統(tǒng)“R”系列針對實時系統(tǒng);實時操作系統(tǒng)“M”系列對微控制器和低成本應用提供優(yōu)化摩托羅拉XT701采用A8A8還有諾基亞N900等30ppt課件家族架構內核特點cache(I/D)/MMUMIPS與MHz應用CortexARMv7-ACortex-A8Applicationprofile,VFP,NEON,JazelleRCT,Thumb-2,13-stagepipeline可變動(L1L2),MMUTrustZone

ARMv7-RCortex-R4(F)Embeddedprofile,(FPU)可變動cache,MMU可選配600DMIPSBroadcomisauser

ARMv7-MCortex-M3Microcontrollerprofile無cache,(MPU)120DMIPS@100MHzLuminaryMicro[3]微控制器家族31ppt課件Cortex-A9單核的A9相當于A8A9系列還有兩個、三個乃至四個內核集群Cortex-A15即將發(fā)布,4-16核32ppt課件序號ARM微處理器核心體系結構版本1ARM1v12ARM2v23ARM2As,ARM3v2a4ARM6,ARM600,ARM610,ARM7,ARM700,ARM710v35StrongARM,ARM8,ARM810v46ARM7TDMI,ARM710T,ARM720T,ARM740T,ARM9TDMI,ARM920T,ARM940Tv4T7ARM9E-S,ARM10TDMI,ARM1020Ev5TE8ARM1136J(F)-S,ARM1176JZ(F)-S,ARM11MPCorev69ARM1156T2(F)-Sv6T210ARMCortex-M,ARMCortex-R,ARMCortex-Av733ppt課件34ppt課件3.1.3ARM處理器應用選型操作系統(tǒng)角度Wince、Linux開發(fā)便捷,需要MMU支持(有虛地址)ARM720T以上帶有MMU如果無MMU(只有實地址),可以用uclinux或uc/OSII如ARM7TDMI、ARM9TDMI系統(tǒng)時鐘控制器主頻與運行速度看軟件對cpu能力要求高低USB接口部分ARM處理器內置了USBGPIO數量(通用目的輸入輸出)如果需要多個GPIO引腳35ppt課件中斷控制器需要多少FIQ(快速中斷)、IRQ(中斷)GPIO設置為哪種中斷外圍接口,如IIS接口(integratedinterfaceofsound)、LCD、UART/irDA、DMA等是否需要音頻、LCD、UART/irDA多芯核是否需要36ppt課件3.2ARM體系結構ARM的7種工作模式7種模式下寄存器訪問方式模式分類ARM指令狀態(tài)37ppt課件七種ARM模式用戶模式(usr): -正常的程序執(zhí)行模式快速中斷模式(fiq): -支持高速數據傳輸或通道處理中斷模式(irq): -用于通用中斷處理管理員模式(svc): -操作系統(tǒng)的保護模式中止模式(abt): -支持虛擬內存和/或內存保護系統(tǒng)模式(sys): -支持操作系統(tǒng)的特殊用戶模式(運行操作系統(tǒng)任務)未定義模式(und) -支持硬件協(xié)處理器的軟件仿真除了用戶模式外,其他模式均可視為特權模式38ppt課件改變模式方法軟件控制外部中斷異常處理通常在用戶模式下不能訪問被保護的系統(tǒng)資源一般不能改變模式異常發(fā)生可以導致模式改變改變模式,可以更快完成任務切換與中斷響應39ppt課件處理器模式對應寄存器組每一種處理器模式中有一組相應的寄存器組任意時刻(也就是任意的處理器模式下),可見的寄存器(邏輯寄存器編號)包括15個通用寄存器(R0~R14)一個或兩個狀態(tài)寄存器程序計數器(PC,R15)有些是各模式共用的同一個物理寄存器,有些是各模式自己擁有的獨立的物理寄存器40ppt課件物理寄存器37個寄存器31個通用32位寄存器,包括程序計數器PC6個狀態(tài)寄存器15個通用寄存器(R0-R14),以及狀態(tài)寄存器和程序計數器,在任何時候都可見可見的寄存器取決于處理器的模式其它寄存器的狀態(tài)在支持IRQ、FIQ、系統(tǒng)管理、中止和未定義模式處理時被切換中斷處理非常簡單例如,僅僅使用R8~R14寄存器時,F(xiàn)IQ處理程序可以不必執(zhí)行保存和恢復中斷現(xiàn)場的指令41ppt課件寄存器分配:通用寄存器R0-R15:可以直接訪問R0-R14:通用寄存器0-7:未分組寄存器:所有模式下都是同一個物理寄存器8-14:分組寄存器R8~R12,每個寄存器對應兩個不同的物理寄存器R13:堆棧指針(sp)通常每種處理器模式都有單獨的堆棧每個寄存器對應6個不同的物理寄存器R14:鏈接寄存器(LinkRegister,LR)R15的備份,子程序的返回地址,異常返回地址不需要存放在堆棧中,函數調用速度快每個寄存器對應6個不同的物理寄存器R15:程序計數器(PC)42ppt課件狀態(tài)寄存器R16,就是CPSR當前程序狀態(tài)寄存器,包括代碼標志狀態(tài)和當前模式位5個SPSRs(程序狀態(tài)保存寄存器)

當異常發(fā)生時保存CPSR狀態(tài)43ppt課件程序狀態(tài)寄存器(1/2)ARM7TDMI包含當前程序狀態(tài)寄存器(CPSR),加上5個程序狀態(tài)保存寄存器SPSR,當異常發(fā)生時,用于保存CPSR的狀態(tài)這些寄存器的功能是:–包括關于最近執(zhí)行的ALU操作的信息–控制中斷的使用和禁止–設置處理器操作模式44ppt課件程序狀態(tài)寄存器(2/2)N,Z,CandV條件碼標志–可以在處理器中作為數學和邏輯操作改變–可以被所有的指令測試,以決定指令是否被執(zhí)行–N:Negative.Z:Zero.C:Carry.V:oVerflowIandF位是中斷禁止位M0,M1,M2,M3andM4位是模式位45ppt課件CPSR1)條件碼標記N:負數Z:為0C:進位V:溢出Q:增強型DSP的溢出標志NZCVQDNM(RAZ)IFTM4M3M2M1M02)控制位I:禁止IRQ中斷標記F:禁止FIQ中斷標記T:T變量模式位M[4:0]10000:用戶模式 10001:FIQ模式10010:IRQ模式 10011:管理模式10111:中止模式 11011:未定義11111:系統(tǒng)模式46ppt課件Thumb狀態(tài)下的寄存器組織T狀態(tài)下寄存器集,是ARM狀態(tài)下的子集可直接訪問R0-R7、PC、SP、LR、CPSR各種模式下各有SP、LR、SPSRR0-R7與ARM狀態(tài)下的R0-R7是相同的CPSR、SPSR與ARM狀態(tài)下的CPSR、SPSR是相同的T狀態(tài)的SP對應ARM狀態(tài)的R13T狀態(tài)的LR對應ARM狀態(tài)的R14T狀態(tài)可以用匯編訪問R8-R1547ppt課件3.2.3ARM異常中斷由內部、外部引起的事件7種異常復位,進入管理模式未定義指令:未定義模式軟件中斷(SWI):管理模式預取中止:中止模式數據中止:中止模式IRQ:IRQ模式FIQ:FIQ模式48ppt課件異常中斷向量表和中斷優(yōu)先級中斷向量地址

異常中斷類型

異常中斷模式

優(yōu)先級(6最低)

0x00

復位

特權模式

1

0x04

未定義的指令

UND終止模式

6

0x08

軟件中斷

特權模式

6

0x0C

指令預取終止

終止模式

5

0x10

數據訪問終止

終止模式

2

0x14

保留

未使用

未使用

0x18

外部中斷請求

IRQ模式

4

0x1C

快速中斷請求

FIQ模式

3

49ppt課件異常中斷響應過程異常中斷發(fā)生時,程序將當前執(zhí)行指令的下一條指令的地址存入新的異常模式的鏈接寄存器LR保存當前的CPSR值,即將CPSR復制到新的異常模式的SPSR根據異常類型,重新設置CPSR的運行模式位CPSR[4:0],使微處理器進入相應的工作模式強制給PC賦值,將相應的向量地址賦給PC,從而跳轉到相應的異常處理程序處執(zhí)行程序設置CPSR中的中斷禁止位,以禁止中斷發(fā)生50ppt課件異常返回異常返回流程由鏈接寄存器LR的值恢復PC,返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行程序。將SPSR復制回CPSR中。若在進入異常處理時設置了中斷禁止位,要在此清除。復位系統(tǒng)后,開始整個異常應用程序的執(zhí)行,因此,復位異常處理程序不需要返回51ppt課件3.2.4尋址方式Immediateoffset立即數尋址baseaddress(baseregister)+ConstantLDRr2,[r0,#8];R2=memory(r0+8)Registeroffset寄存器偏移尋址baseaddress(baseregister)+AnotherregisterLDRr2,[r0,r1];R2=memory(r0+r1)Scaledregisteroffset寄存器移位偏移尋址baseaddress(baseregister)+Anotherregister(shift)LDRr2,[r0,r1,LSL#2];R2=memory(r0+r1<<2)Registeraddressing寄存器尋址Addr2,r0,r1Scaledregisteraddress寄存器移位尋址Addr2,r0,r1,LSL#2PC-relativeaddressing基于PC的尋址BEQ1000請自行參閱計算機本科二年級春夏學期的《計算機組成》課件“2011-computerorganization-2.ppt”52ppt課件Immediatepre-indexed立即數前變址baseaddress(baseregister)+Constant,Updatesbaseregisterbeforeaccessmemory.LDRr2,[r0,#4]! ;r0=r0+4,R2=memory(newr0)Immediatepost-indexed立即數后變址baseaddress(baseregister),Updatesbaseregisterafterdatatransfer.LDRr2,[r0],#4

;R2=memory(oldr0),r0=r0+4Registerpre-indexed寄存器前變址baseaddress(baseregister)+Anotherregister,Updatesbaseregisterbeforeaccessmemory.LDRr2,[r0,r1]! ;r0=r0+r1,R2=memory(newr0)ScaledRegisterpre-indexed寄存器移位前變址baseaddress(baseregister)+Anotherregister(shift),Updatesbaseregisterbeforeaccessmemory.LDRr2,[r0,r1LSL#2]!;r0=r0+r1<<2,R2=memory(newr0)Registerpost-indexed寄存器后變址baseaddress(baseregister)+Anotherregister,Updatesbaseregisterafterdatatransfer.LDRr2,[r0],r1

;R2=memory(oldr0),r0=r0+r153ppt課件3.2.5ARM編程方法32位長度字對準,可以傳送8bit,16bit,32bit符號/無符號數據屬于通用寄存器型(GPR)匯編Load-Store結構,數據必須裝載到寄存器才能運算Load從內存裝到寄存器,Store從寄存器存儲到內存ARM指令集數據處理指令跳轉指令內存指令程序狀態(tài)寄存器處理指令協(xié)處理器指令異常產生指令54ppt課件exampleCcodevoidswap(intv[],intk){inttemp;temp=v[k];v[k]=v[k+1];v[k+1]=temp;

}寄存器分配

v

RN

0;vK RN

1;ktemp RN

2;localvariabletemp2 RN

3;temporaryforv[k+1]vkaddr RN

12;toholdaddressofv[k]55ppt課件ARMcodeswap: add vkaddr,v,k,LSL#2 ;regvkaddr=v+k*4

;regvkaddrhastheaddressofv[k] LDR temp,[vkaddr,#0] ;temp=v[k] LDRtemp2,[vkaddr,#4] ;temp2=v[k+1] STRtemp2,[vkaddr,#0] ;v[k]=temp2 STRtemp,[vkaddr,#4] ;v[k+1]=temp mov pc,lr ;returntocallingroutine請自行參閱計算機本科二年級春夏學期的《計算機組成》課件“2011-computerorganization-2.ppt”56ppt課件指令格式請自行參閱計算機本科二年級春夏學期的《計算機組成》課件“2011-computerorganization-2.ppt”的“2011年本科計算機組成”目錄下57ppt課件Thumb指令集16位長度半字對準操作寄存器中是32bit數據訪問和取指使用全32bit地址條件分支指令是唯一一句CPSR的Thumb指令大多數指令訪問R0-R758ppt課件Thumb指令集與ARM指令集的區(qū)別分支語句向后轉移條件下向前轉移轉向子程序從Thumb狀態(tài)切換到ARM狀態(tài)數據傳送指令操作的結果放第一個寄存器eg:R1=R1+R2數據處理操作少訪問R8-R15受到限制單寄存器加載與存儲指令只訪問R1-R7多寄存器加載與存儲指令LDMIAR3!,{R0-R7}STMIAR0!,{R6,R7}PUSH{R3,R5-R7}POP{R2,R5}沒有協(xié)處理器指令沒有信號量指令沒有訪問CPSR指令59ppt課件3.2.6ARM混合編程底層程序必須C、ASM混合編程例如Bootloader一些操作特殊寄存器的指令也是特殊指令,用C是實現(xiàn)不了一些功能用C也是不能實現(xiàn)的。用C不能作的有:1.操作CP15寄存器的指令2.中斷使能3.堆棧地址的設定四種方法在C語言中內嵌匯編在匯編中使用C定義的全局變量在C中調用匯編的函數在匯編中調用C的函數60ppt課件在C語言中內嵌匯編有限制1.不能直接向PC寄存器賦值,程序跳轉要使用B或者BL指令2.在使用物理寄存器時,不要使用過于復雜的C表達式,避免物理寄存器沖突3.R12和R13可能被編譯器用來存放中間編譯結果,計算表達式值時可能將R0到R3、R12及R14用于子程序調用,因此要避免直接使用這些物理寄存器4.一般不要直接指定物理寄存器,而讓編譯器進行分配#include<stdio.h>

voidmy_strcpy(constchar*src,char*dest)

{

charch;

_asm

{

loop:

ldrbch,[src],#1

strbch,[dest],#1

cmpch,#0

bneloop

}

}

intmain()

{

char*a="forgetitandmoveon!";

charb[64];

my_strcpy(a,b);

printf("original:%s",a);

printf("copyed:%s",b);

return0;

}

61ppt課件在匯編中使用C定義的全局變量/*cfile.c

*定義全局變量,并作為主調程序

*/

#include<stdio.h>

intgVar_1=12;

externasmDouble(void);

intmain()

{

printf("originalvalueofgVar_1is:%d",gVar_1);

asmDouble();

printf("modifiedvalueofgVar_1is:%d",gVar_1);

return0;

}

;calledbymain(inC),todoubleaninteger,aglobalvardefinedinCisused.

AREAasmfile,CODE,READONLY

EXPORTasmDouble

IMPORTgVar_1

asmDouble

ldrr0,=gVar_1

ldrr1,[r0]

movr2,#2

mulr3,r1,r2

strr3,[r0]

movpc,lr

END62ppt課件在C中調用匯編的函數在C中使用函數在C中聲明函數原型,并加extern關鍵字;在匯編中用EXPORT導出函數名,并用該函數名作為匯編代碼段的標識用movpc,lr返回。從C的角度,并不知道該函數的實現(xiàn)是用C還是匯編C和匯編之間的參數傳遞通過ATPCS(ARMThumbProcedureCallStandard)的規(guī)定來進行的。如果函數有不多于四個參數,對應的用R0-R3來進行傳遞多于4個時借助棧函數的返回值通過R0來返回63ppt課件/*cfile.c

*inC,callanasmfunction,asm_strcpy

*Sep9,2004

*/

#include<stdio.h>

externvoidasm_strcpy(constchar*src,char*dest);

intmain()

{

constchar*s="seasonsinthesun";

chard[32];

asm_strcpy(s,d);

printf("source:%s",s);

printf("destination:%s",d);

return0;

}

;asmfunctionimplementation

AREAasmfile,CODE,READONLY

EXPORTasm_strcpy

asm_strcpy

loop

ldrbr4,[r0],#1addressincrementafterread

cmpr4,#0

beqover

strbr4,[r1],#1

bloop

over

movpc,lr

END

64ppt課件在匯編中調用C的函數需要在匯編中IMPORT對應的C函數名將C的代碼放在一個獨

溫馨提示

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

評論

0/150

提交評論