嵌入式系统及开发应用ARM指令集与编程.pptVIP

嵌入式系统及开发应用ARM指令集与编程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

协处理器指令ARM体系支持16个协处理器针对每个协处理器的指令占用ARM指令集中的固定部分如果相应的协处理器不存在,将发生一个未定义指令异常。这有三种协处理器指令协处理器数据处理指令CDP:初始化协处理器数据处理操作协处理器寄存器传送指令MRC:从ARM寄存器移到协处理器寄存器MCR:从协处理器寄存器移到ARM寄存器协处理器存储器传送指令LDC:从存储器装载到协处理器寄存器STC:从协处理器寄存器存储到存储器常量的装载ARM指令不用于将一个32位的常量装入寄存器,因为ARM本身是32位的,所以指令中不可能再定义一个普通的32位常量;ARM增加了2条伪指令,把32位常量送入寄存器:例:LDRRd,=constant;LDR—常量装载伪指令ADRRd,Label;ADR—地址装载伪指令为允许装载大常数,汇编器提供了一条伪指令:LDRrd,=const它可能汇编成下列指令:MOVorMVN。 或LDR指令,从数据池(Literalpools)读取常数。ForexampleLDRr0,=0xFF = MOVr0,#0xFFLDRr0,=0= LDRr0,[PC,#Imm12]

DCD0推荐使用这种方法把常数装入寄存器。装载32bit常数软件中断(SWI)产生一个异常陷阱,跳转到SWI硬件向量。SWI处理程序可以检测SWI号,从而决定采取何种操作。通过SWI机制,运行在用户模式下的应用程序,可请求操作系统执行一系列特权操作。语法:SWI{cond}SWInumber软件中断(SWI)执行的操作指令名称执行操作SWI软件中断Lr_svc=SWI指令后面的指令地址spsr_svc=cpsrpc=vectors+0x8cpsr模式=SVCcpsrI=1(屏蔽IRQ中断)SWI中断处理程序处理软件中断的代码段称为中断处理程序(SWIHandler),中断处理程序是通过执行指令的地址获取软件中断号,指令地址是从lr计算出来的;SWI号的确定方法:SWI_Number=SWIinstructionandNOT(0xf283124270Cond1111SWInumber(ignoredbyprocessor)23条件域SWI处理程序应用示例SWI_handler;保存寄存器r0~r12和lrSTMFDsp!,{r0-r12,lr};readtheSWIinstructionLDRr10,[lr,#-4];makeofftop8bitsBICr10,r10,#0xff000000;r10-containstheSWInumberBLservice_routine;returnfromSWIhandlerLDMFDsp!,{r0-r12,pc}^015310ADDSr2,r2,#1ADDr2,#132-bitARM指令16-bitThumb指令对于由编译器产生的大部分指令:没有条件执行源、目的寄存器必须相同仅能使用低寄存器常数大小有限制不能使用在线移位器关于Thumb指令集Thumb是16-bit指令集代码密度优化(总代码大小约为ARM指令的65%)使用窄总线存储器时可以大大提高性能。是ARM指令集的一个子集。核存在一个执行状态–Thumb状态ARM和Thumb之间切换使用BX指令写Thumb汇编程序Thumb不是一个“好”指令集!最好用编译器来产生约束并不一致手动编码使用ARM指令集比较好更多细节,参看:ARM“ArchitectureReferenceManual”(网络课堂上有)杜春雷:《ARM体系结构与编程》,清华大学出版社ADS与ARM汇编程序设计生成二进制文件的过程编译器的基本功能规定汇编语言的语法规则ADSVs.GNU预编译(Pre-assembler)→标准汇编语言编译→二进制文件预编译(Pre-assembler)处理伪指令(Pseudo-Instruction)伪指令:做为汇编语言的参数,或被预编译器识别,翻译成标准汇

文档评论(0)

189****0266 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档