第4章ARM指令集系统.pptVIP

  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文档。上传文档
查看更多
常用的加载存储指令如下: LDR???? 字数据加载指令 LDRB??? 字节数据加载指令 LDRH??? 半字数据加载指令 STR???? 字数据存储指令 STRB??? 字节数据存储指令 STRH??? 半字数据存储指令 ARM微处理器所支持批量数据加载/存储指令可以一次性实现一片连续的存储器单元和多个寄存器之间进行传送数据。 批量数据加载指令用于将一片连续的存储器中的数据传送到多个寄存器中,批量数据存储指令能够实现将多个寄存器中的内容一次性的存放到一片连续的存储器中。 示例解析 MOV R1,#0x9000 MOV R0,#0x11 MOV R2,#0x22 MOV R3,#0x33 MOV R4,#0x44 MOV R5,#0x55 STMDB R1! ,{R0,R2-R5} 存储情况如下 带PSR操作的批量字数据加载指令 在带PSR操作的批量字数据加载指令中,程序计数器PC包含在指令寄存器列表中。 该指令将数据从连续的内存单元中读取到指令中寄存器列表中的各寄存器中。它同时将目前处理器模式对应的SPSR寄存器内容复制到CPSR寄存器中。 示例解析: 如何用带PSR操作的批量字数据加载指令实现IRQ中断的返回? 在进入IRQ中断处理程序时,首先计算返回地址,并保存相关的寄存器 SUB R14,R14,#4 ; STMFD R13!, {R0-R3, R12, LR} 如果IRQ中断处理程序返回到被中断的进程则执行下面的指令。该指令从数据栈中恢复寄存器R0~R3及R12的值,将返回地址传送到PC中,并将SPSR_irq值复制到CPSR中 LDMFD R13!, {R0-R3, R12, PC}^ 指令示例: SWP ? R0,R0,[R1]? ?? ;该指令完成将R1所指向的存储 器中的字数据与R0中的字数据交换。 4.6程序状态寄存器PSR访问指令 程序状态寄存器PSR访问指令用来实现通用寄存器与程序状态寄存器之间的数据传输,共有两条:读程序状态寄存器指令MRS和写程序状态寄存器指令MSR。 这类指令可以用来修改CPSR,通常是通过“读取-修改-写回”的操作序列来实现。 读程序状态寄存器指令 MRS指令用于将状态寄存器的内容传送到通用寄存器中。这是程序获得程序状寄存器PSR数据的唯一方法。 MRS {cond} Rd, CPSR MRS {cond} Rd, SPSR 写程序状态寄存器指令 MSR指令用于将通用寄存器的内容或一个立即数传送到程序状态寄存器中,实现对程序状态寄存器的修改。 MSR {cond} CPSR_fields, operand2 MSR {cond} SPSR_fields, operand2 fields设置状态寄存器中需要操作的位域。状态寄存器分为4个8位的域: bits[31:24]为条件标志位域,用f表示; bits[23:16]状态位域,用s表示; bits[15:8]扩展位域,用x表示; bits[7:0]控制位域,用c表示; 第二操作数operand2的构成形式有以下两种形式: immediate为将要传送到状态寄存器中的立即数; Rm寄存器包含将要传送到状态寄存器中的数据。 R(bit[22])为0时,写CPSR;R(bit[22])为1时,写SPSR。 3.2 指令集介绍 ARM指令集——状态寄存器写指令 4.8 异常产生指令 ARM处理器所支持的异常产生指令有两条: 软中断指令SWI 断点调试指令BKPT(用于ARM V5及以上的版本) 软中断指令 SWI(SoftWare Interrupt)指令用于产生软件中断,它将处理器置于监控模式(SVC),从地址0x08开始执行指令。 ARM通过这种机制实现用户模式对操作系统中特权模式的程序调用,也就是使用户程序调用操作系统的系统程序成为可能。 SWI{cond} immed_24, 操作系统在SWI的异常处理程序中提供相应的系统服务,指令中24位的立即数指定用户程序调用系统例程的类型,相关参数通过通用寄存器传递。 执行过程: 将SWI后面指令地址保存到R14_svc; 将CPSR保存到SPSR_svc; 进入监控模式,将CPSR[4:0]设置为0b10011的将CPSR[7]设置为[1],禁止IRQ; 将PC设置为0x08,并且开始执行那里的指令。 返回时:MOVS PC,R14 软件中断SWI 汇编格式如下: SWI {cond} 24位立即数 断点中

文档评论(0)

tiangou + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档