![ARM体系结构与编程方法-课件_第1页](http://file4.renrendoc.com/view/679afd7e0f0bd775caf7ea610221166f/679afd7e0f0bd775caf7ea610221166f1.gif)
![ARM体系结构与编程方法-课件_第2页](http://file4.renrendoc.com/view/679afd7e0f0bd775caf7ea610221166f/679afd7e0f0bd775caf7ea610221166f2.gif)
![ARM体系结构与编程方法-课件_第3页](http://file4.renrendoc.com/view/679afd7e0f0bd775caf7ea610221166f/679afd7e0f0bd775caf7ea610221166f3.gif)
![ARM体系结构与编程方法-课件_第4页](http://file4.renrendoc.com/view/679afd7e0f0bd775caf7ea610221166f/679afd7e0f0bd775caf7ea610221166f4.gif)
![ARM体系结构与编程方法-课件_第5页](http://file4.renrendoc.com/view/679afd7e0f0bd775caf7ea610221166f/679afd7e0f0bd775caf7ea610221166f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统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公司商业模式的强大之处在于其价格合理,全世界范围有超过100个合作伙伴--包括半导体工业的著名公司。ARM公司专注于设计,其内核耗电少、成本低、功能强,特有16/32位双指令集。ARM已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准。基于ARM技术的微处理器大约占据了32位RISC微处理器80%以上的市场份额。4ppt课件ARM体系主要特征大量的寄存器,都可用于多种用途Load-Store体系结构3地址指令(两个源操作数寄存器和结果寄存器独立设定)每条指令都条件执行包含非常强大的多寄存器Load和Store指令能在单时钟周期执行的单条指令内完成一项普通的移位操作和一项普通的ALU操作能过协处理器指令集来扩展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,允许直接执行Java字节码7ppt课件ARM架构版本ARM架构定义7种不同的版本,10个家族流行的低端嵌入式系统如智能冰箱,大多采用ARMv4微架构处理器ARM7流行的嵌入式系统如智能手机、平板电脑,大多采用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出现过,其基本性能:基本的数据处理指令(无乘法)字节、半字和字的LOAD/STORE指令转移指令,包括子程序调用及链接指令软件中断指令寻址空间:64M字节(226)9ppt课件V2版架构该版架构对V1版进行了扩展,如ARM2与ARM3(V2a版)架构,增加了以下功能:乘法和乘加指令支持协处理器操作指令快速中断模式SWP/SWPB的最基本存储器与寄存器交换指令寻址空间:64M字节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字节)增加了当前程序状态寄存器CPSR(CurrentProgramStatusRegister)和程序状态保存寄存器SPSR(SavedProgramStatusRegister)。增加了中止(Abort)和未定义二种处理器模式。ARM6就采用该版架构。指令集变化如下:增加了MRS/MSR指令,以访问新增的CPSR/SPSR寄存器增加了从异常处理返回的指令功能。12ppt课件家族架构內核特点cache(I/D)/MMUMIPS与MHz应用ARM6ARMv3ARM610v3架构首创支持定址32位元的記憶體(针对26位元)均为4K28MIPS@33MHzAcornRiscPC600,AppleNewton13ppt课件V4版架构是目前应用最广的ARM体系结构,对V3版架构进行了进一步扩充。引进了16位的Thumb指令集,使ARM使用更加灵活。ARM7、ARM8、ARM9和StrongARM(为了推XScale,intel停产了strongarm)都采用该版架构。指令集中增加了以下功能:符号化和非符号化半字及符号化字节的存/取指令增加了16位Thumb指令集完善了软件中断SWI指令的功能处理器系统模式引进特权方式时使用用户寄存器操作把一些未使用的指令空间捕获为未定义指令V4版架构14ppt课件ARM7TDMI的3段流水线操作注:程序计数器PC指向正在取指的指令而不是正在执行的指令15ppt课件在V4版基本上增加了一些新的指令,ARM10和XScale都采用该版架构,这些新增指令有:带有链接和交换的转移BLX指令计数前导零CLZ指令BRK中断指令增加了信号处理指令(V5TE版)为协处理器增加更多可选择的指令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,发布于2001年10月,是目前最流行的架构形成ARM11系列嵌入式处理器特点增强的Cache结构支持实地址Cache减少Cache的刷新和重载减少上下文切换的开销加强媒体处理能力,使MPEG4编码/解码/音频处理加快一倍Intel在Xscale中用自己的技术,使得处理器支持多媒体处理技术ARM11自己带了多媒体能力,促成intel放弃Xscale低功耗:0.13um工艺,1.2v下,ARM11功耗0.4mW/MHzV6版架构23ppt课件增强的异常和中断处理使实时任务的处理更加迅速支持Unaligned和Mixed-endian数据访问使数据共享、软件移植更简单,也有利于节省存储器空间用户定制能力强提供可综合版本和半定制硬核两种实现客户根据自己的半导体工艺开发出各有特色的处理器内核采用了易于综合的流水线结构保持了100%的二进制向下兼容支持多处理器系统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月,英特尔把手机芯片业务6亿美元的价格转让给Marvell公司(存储、通信商)Marvell推出PXA3xx系列,其中PXA320最高主频806MHzXScale250已经停产,27x还存活,3xx很少看到26ppt课件ARMv7,发布于2005年,是目前最新的架构,已经全面取代ARM11超标量流水线,能够同时执行多条指令可调尺寸的L2Thumb-2技术首先在2003年的ARM1156出现在Thumb代码压缩技术的基础上发展出来的,保持代码兼容性。Thumb-2技术比纯32位代码少使用31%的内存,降低系统开销能够提供比Thumb技术的解决方案高出38%的性能表现NEON技术将DSP和媒体处理能力提高了近4倍对H.264和MP3等媒体编解码提供加速支持改良的浮点运算,满足3D图形和游戏物理应用V7版架构27ppt课件支持改良运行环境,支持不断增加的JIT和DAC技术ThumbEEThumbExecutionEnvironment又称Thumb-2EE、JazelleRCT技术2005年v7中发布,A8具备还技术Thumb-2扩充,使得动态生成的代码具有更好的目标,也就是说,就在执行之前或在执行过程中即可在该设备上编译代码。TrustZone安全性扩充一种安全软件框架,可充分利用内置于ARM体系结构中的安全扩展用在可作为两个虚拟CPU的单处理器ARM内核中。VFP(VectorFloatingPoint)在协同处理器针对ARM架构的衍生技术提供低成本的单精度和倍精度浮点运算能力28ppt课件v5至v7架构比较29ppt课件产品家族家族名称:Cortex,俗称ARM12第一个Cortex-M3于2004年10月正式发布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”系列面向尖端的基于虚拟内存的操作系统和用户应用;运行包括Linux、WindowsCE和Symbian在内的操作系统“R”系列针对实时系统;实时操作系统“M”系列对微控制器和低成本应用提供优化摩托罗拉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即将发布,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处理器应用选型操作系统角度Wince、Linux开发便捷,需要MMU支持(有虚地址)ARM720T以上带有MMU如果无MMU(只有实地址),可以用uclinux或uc/OSII如ARM7TDMI、ARM9TDMI系统时钟控制器主频与运行速度看软件对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指令状态37ppt课件七种ARM模式用户模式(usr): -正常的程序执行模式快速中断模式(fiq): -支持高速数据传输或通道处理中断模式(irq): -用于通用中断处理管理员模式(svc): -操作系统的保护模式中止模式(abt): -支持虚拟内存和/或内存保护系统模式(sys): -支持操作系统的特殊用户模式(运行操作系统任务)未定义模式(und) -支持硬件协处理器的软件仿真除了用户模式外,其他模式均可视为特权模式38ppt课件改变模式方法软件控制外部中断异常处理通常在用户模式下不能访问被保护的系统资源一般不能改变模式异常发生可以导致模式改变改变模式,可以更快完成任务切换与中断响应39ppt课件处理器模式对应寄存器组每一种处理器模式中有一组相应的寄存器组任意时刻(也就是任意的处理器模式下),可见的寄存器(逻辑寄存器编号)包括15个通用寄存器(R0~R14)一个或两个状态寄存器程序计数器(PC,R15)有些是各模式共用的同一个物理寄存器,有些是各模式自己拥有的独立的物理寄存器40ppt课件物理寄存器37个寄存器31个通用32位寄存器,包括程序计数器PC6个状态寄存器15个通用寄存器(R0-R14),以及状态寄存器和程序计数器,在任何时候都可见可见的寄存器取决于处理器的模式其它寄存器的状态在支持IRQ、FIQ、系统管理、中止和未定义模式处理时被切换中断处理非常简单例如,仅仅使用R8~R14寄存器时,FIQ处理程序可以不必执行保存和恢复中断现场的指令41ppt课件寄存器分配:通用寄存器R0-R15:可以直接访问R0-R14:通用寄存器0-7:未分组寄存器:所有模式下都是同一个物理寄存器8-14:分组寄存器R8~R12,每个寄存器对应两个不同的物理寄存器R13:堆栈指针(sp)通常每种处理器模式都有单独的堆栈每个寄存器对应6个不同的物理寄存器R14:链接寄存器(LinkRegister,LR)R15的备份,子程序的返回地址,异常返回地址不需要存放在堆栈中,函数调用速度快每个寄存器对应6个不同的物理寄存器R15:程序计数器(PC)42ppt课件状态寄存器R16,就是CPSR当前程序状态寄存器,包括代码标志状态和当前模式位5个SPSRs(程序状态保存寄存器)
当异常发生时保存CPSR状态43ppt课件程序状态寄存器(1/2)ARM7TDMI包含当前程序状态寄存器(CPSR),加上5个程序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的状态这些寄存器的功能是:–包括关于最近执行的ALU操作的信息–控制中断的使用和禁止–设置处理器操作模式44ppt课件程序状态寄存器(2/2)N,Z,CandV条件码标志–可以在处理器中作为数学和逻辑操作改变–可以被所有的指令测试,以决定指令是否被执行–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:系统模式46ppt课件Thumb状态下的寄存器组织T状态下寄存器集,是ARM状态下的子集可直接访问R0-R7、PC、SP、LR、CPSR各种模式下各有SP、LR、SPSRR0-R7与ARM状态下的R0-R7是相同的CPSR、SPSR与ARM状态下的CPSR、SPSR是相同的T状态的SP对应ARM状态的R13T状态的LR对应ARM状态的R14T状态可以用汇编访问R8-R1547ppt课件3.2.3ARM异常中断由内部、外部引起的事件7种异常复位,进入管理模式未定义指令:未定义模式软件中断(SWI):管理模式预取中止:中止模式数据中止:中止模式IRQ:IRQ模式FIQ:FIQ模式48ppt课件异常中断向量表和中断优先级中断向量地址
异常中断类型
异常中断模式
优先级(6最低)
0x00
复位
特权模式
1
0x04
未定义的指令
UND终止模式
6
0x08
软件中断
特权模式
6
0x0C
指令预取终止
终止模式
5
0x10
数据访问终止
终止模式
2
0x14
保留
未使用
未使用
0x18
外部中断请求
IRQ模式
4
0x1C
快速中断请求
FIQ模式
3
49ppt课件异常中断响应过程异常中断发生时,程序将当前执行指令的下一条指令的地址存入新的异常模式的链接寄存器LR保存当前的CPSR值,即将CPSR复制到新的异常模式的SPSR根据异常类型,重新设置CPSR的运行模式位CPSR[4:0],使微处理器进入相应的工作模式强制给PC赋值,将相应的向量地址赋给PC,从而跳转到相应的异常处理程序处执行程序设置CPSR中的中断禁止位,以禁止中断发生50ppt课件异常返回异常返回流程由链接寄存器LR的值恢复PC,返回到发生异常中断的指令的下一条指令处执行程序。将SPSR复制回CPSR中。若在进入异常处理时设置了中断禁止位,要在此清除。复位系统后,开始整个异常应用程序的执行,因此,复位异常处理程序不需要返回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指令集数据处理指令跳转指令内存指令程序状态寄存器处理指令协处理器指令异常产生指令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指令集的区别分支语句向后转移条件下向前转移转向子程序从Thumb状态切换到ARM状态数据传送指令操作的结果放第一个寄存器eg:R1=R1+R2数据处理操作少访问R8-R15受到限制单寄存器加载与存储指令只访问R1-R7多寄存器加载与存储指令LDMIAR3!,{R0-R7}STMIAR0!,{R6,R7}PUSH{R3,R5-R7}POP{R2,R5}没有协处理器指令没有信号量指令没有访问CPSR指令59ppt课件3.2.6ARM混合编程底层程序必须C、ASM混合编程例如Bootloader一些操作特殊寄存器的指令也是特殊指令,用C是实现不了一些功能用C也是不能实现的。用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的角度,并不知道该函数的实现是用C还是汇编C和汇编之间的参数传递通过ATPCS(ARMThumbProcedureCallStandard)的规定来进行的。如果函数有不多于四个参数,对应的用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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年户外摄影比赛与展览行业深度调研及发展战略咨询报告
- 2025-2030年数据隐私保护与合规性行业深度调研及发展战略咨询报告
- 2025-2030年地质卫星数据实时处理行业深度调研及发展战略咨询报告
- 2025-2030年复古游戏机桌椅行业深度调研及发展战略咨询报告
- 2025-2030年塑料萨克斯行业跨境出海战略研究报告
- 2025-2030年即食香蕉片行业跨境出海战略研究报告
- 化纤浆粕在军用防护材料中的重要性考核试卷
- 2025-2030年手账装饰胶带行业深度调研及发展战略咨询报告
- 2025版班组承包协议书(人工智能智能客服系统)3篇
- 植树节活动总结(集锦15篇)
- 2017年江苏南京中考满分作文《无情岁月有味诗》5
- 2023年宏观经济学考点难点
- 2024-2030年中国智慧水务行业应用需求分析发展规划研究报告
- 黑龙江申论真题2021年(乡镇)
- 山体排险合同模板
- 医保专(兼)职管理人员的劳动合同(2篇)
- 特殊感染手术的配合与术后处理课件
- 检验科生物安全工作总结
- 《金属与石材幕墙工程技术规范》jgj1332001-2021112401384
- 即时通讯系统建设方案
- 2024年中国南水北调集团新能源投资限公司抽水蓄能项目岗位公开招聘高频考题难、易错点模拟试题(共500题)附带答案详解
评论
0/150
提交评论