第三章arm嵌入式微处理器指令系统

第三章arm嵌入式微处理器指令系统

ID:10396355

大小:923.48 KB

页数:151页

时间:2018-07-06

第三章arm嵌入式微处理器指令系统_第1页
第三章arm嵌入式微处理器指令系统_第2页
第三章arm嵌入式微处理器指令系统_第3页
第三章arm嵌入式微处理器指令系统_第4页
第三章arm嵌入式微处理器指令系统_第5页
资源描述:

《第三章arm嵌入式微处理器指令系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第三章ARM嵌入式微处理器指令系统为什么需要学习汇编指令嵌入式系统的初始化代码需要用汇编指令来编写。初始化代码通常包括处理器的初始化、内存初始化等,其中涉及一些比较特殊的操作,比如设置处理器在不同工作模式下的堆栈指针,需要使用特殊的访问处理器状态寄存器的指令,强制处理器切换到不同模式下进行操作;一些中断例程尤其是作为一种异常被响应的第一级中断派发程序需要用汇编指令来编写,以提高效率;在软件的调试过程中,熟悉汇编指令更有助于查找疑难问题;某些指令本身就是不能直接由编译器产生的,而需要人工编写。为什么需要学习汇编指令可以直接控制在C语言编程时不能有效

2、使用的3个优化工具:指令调整调整一段代码中的指令序列,以避免处理器的暂停等待。ARM指令执行是在指令流水线中进行的,所以一条指令执行的时间会受其相邻指令的影响,在“附录1指令流水线”中描述了相关问题。寄存器分配决定如何分配变量给ARM寄存器或者堆栈,以获得最好的性能。目标是要使访问存储器的次数降到最少。条件执行可以使用ARM条件代码和条件指令的全部功能。简单的ARM程序;文件名:TEST1.S;功能:实现两个寄存器相加;说明:使用ARMulate软件仿真调试AREAExample1,CODE,READONLY;声明代码段Example1ENTRY

3、;标识程序入口CODE32;声明32位ARM指令STARTMOVR0,#0;设置参数MOVR1,#10LOOPBLADD_SUB;调用子程序ADD_SUBBLOOP;跳转到LOOPADD_SUBADDSR0,R0,R1;R0=R0+R1MOVPC,LR;子程序返回END;文件结束使用“;”进行注释标号顶格写实际代码段声明文件结束主要内容1ARM指令集概述2ARMV4T架构指令体系3ARMv5TE架构指令体系4ARMv6架构指令体系新特性5Thumb指令集3.1.1ARM指令集ARM处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译

4、码机制较为简单。ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代码密度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。简介:3.1.1ARM指令集—寻址方式ARM处理器的寻址方式:寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有9种基本寻址方式。1.寄存器

5、寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.块拷贝寻址;9.相对寻址。操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下:MOVR1,R2;将R2的值存入R1SUBR0,R1,R2;将R1的值减去R2的值,结果保存到R00xAA0x55R2R1寻址方式分类——寄存器寻址MOVR1,R20xAA3.1.1ARM指令集—寻址方式立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出

6、指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下:SUBSR0,R0,#1;R0减1,结果放入R0,并且影响标志位MOVR0,#0xFF000;将立即数0xFF000装入R0寄存器关于后面立即数的取值范围问题,将在后面PPT中说明。其要满足一定条件。0x55R0MOVR0,#0xFF00程序存储寻址方式分类——立即寻址MOVR0,#0xFF000xFF00从代码中获得数据3.1.1ARM指令集—寻址方式寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合

7、之前,选择进行移位操作。寄存器移位寻址指令举例如下:MOVR0,R2,LSL#3;R2的值左移3位,结果放入R0,;即是R0=R2×8ANDSR1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相;“与”操作,结果放入R10x55R0R20x01寻址方式分类——寄存器移位寻址MOVR0,R2,LSL#30x080x08逻辑左移3位3.1.1ARM指令集—寻址方式寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下:LDRR1,[R2]

8、;将R2指向的存储单元的数据读出;保存在R1中SWPR1,R1,[R2];将寄存器R1的值和R2指定的存储;单元的内容交换0x55R0R

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。