版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ARM体系结构与编程论文ARM指令摘要:在此论文中,简单了列出一些ARM指令的命令。包括跳转,数据处理乘法与乘加,程序状态寄存器存取,寄存器加载/存储,移位元,协处理器和和Thumb指令。最后有总结了ARM指令极中需要注意和不太容易理解的地方。关键字:Thumb指令,跳转指令,堆栈寻址,立即数寻址The ARM instruction setAbstract:In this paper, a simple list of instructions commands. The ARM Including jump, data processing method, process and by s
2、tate registers access, storage, loading/shift register, Thumb and processor instructions. Finally summarizes the ARM instructions in a need to pay attention and not too easy to understand.Key words: Thumb instruction, jump instruction, stack addressing, immediately several addressing.1.1 ARM微处理器的指令集
3、概述 ARM指令集 * 跳转指令: B 跳转指令。 BL 带返回的跳转指令。 BLX 带返回和状态切换的跳转指令。 BX 带状态切换的跳转指令。 * 数据处理指令 MOV 数据传送指令 MVN 数据取反传送指令 CMP 比较指令 CMN 反值比较指令 TST 位测试指令 TEQ 相等测试指令 ADD 加法指令28 ADC 带进位加法指令 SUB 减法指令 SBC 带借位减法指令 RSB 逆向减法指令 RSC 带借位的逆向减法指令 AND 逻辑与指令 ORR 逻辑或指令 EOR 逻辑互斥指令 BIC 位清除指令 * 乘法指令与乘加指令 MUL 32 位乘法指令 MLA 32 位乘加指令 SMUL
4、L 64 位有符号数乘法指令SMLAL 64 位有符号数乘加指令 UMULL 64 位无符号数乘法指令UMLAL 64 位无符号数乘加指令 * 程序状态寄存器存取指令 MRS 程序状态寄存器到通用寄存器的数据传送指令。 MSR 通用寄存器到程序状态寄存器的数据传送指令。* 寄存器加载/存储指令 : LDR 字数据加载指令DRB 字节数据加载指令 LDRH 半字数据加载指令STR 字数据存储指令 STRB 字节数据存储指令STRH 半字数据存储指令 LDM 连续数据加载指令STM 连续数据存储指令 * 数据交换指令 : SWP 字数据交换指令SWPB 字节数据交换指令 * 移位元指令: LSL
5、逻辑左移ASL 算术左移 LSR 逻辑右移ASR 算术右移 ROR 循环右移RRX 带扩充的循环右移44 * 协处理器指令 CDP 协处理器数操作指令 LDC 协处理器数据加载指令 STC 协处理器数据存储指令46 MCR ARM处理器寄存器到协处理器寄存器的数据传送指令 MRC 协处理器寄存器到ARM处理器寄存器的数据传送指令1.2 Thumb指令及应用Thumb指令集是ARM指令集的一个子集,所有的Thumb指令都有对应的ARM指令。它舍弃了ARM指令集的一些特性 如大多数的Thumb指令是无条件执行的,而几乎所有的ARM指令都是有条件执行的;大多数的Thumb数据处理指令的目的寄存器与其
6、中一个源寄存器相同。 Thumb指令集在保留32代码优势的同时,大大的节省了系统的存储空间。Thumb指令集中操作数仍然是32位,指令地址也为32位,指令编码16位。 由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。1.2.1 Thumb指令优势 在一般的情况下,Thumb指令与ARM指令的时间效率和空间效率关系为: Thumb代码所需的存储空间约为ARM代码的6070 ; Thumb代码使用的指令数比ARM代码多约3040 ; 若使用32位的存储器,ARM代码比Thumb代码快约40 ; 若使
7、用16位的存储器,Thumb代码比ARM代码快约4050; 与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30。1.2.2Thumb指令集的局限性 条件跳转限制在256byte 偏移范围内,无条件跳转限制为4K偏移范围内,而ARM为32 Mbytes偏移 。它不支持乘法和累加指令;没有协处理器指令;没有信号量指令;没有访问CPSR指令。1.3 对ARM指令的一些总结ARM指令集是32位的,程序的启动都是从ARM指令集开始,包括所有异常中断都是自动转化为ARM状态,并且所有的指令都可以是有条件执行的。ARM指令集是Load/Store型的,只能通过Load/Store指令实现对系统
8、存储器的访问,而其他的指令都是基于处理器内部的寄存器操作完成的,这和INTEL汇编是不同的,初学者很不易理解。(1 指令的后缀:S 可选后缀,若指定S,则根据指令执行的结果更新CPSR中的条件码。很多初学着不知道怎么更新,若这条指令执行完以后,对ARM程序状态寄存器的条件码标志(N,Z,C,V)的影响。! 表示在完成数据操作以后,将更新基址寄存器,并且不消耗额外的时间。如:LDR R0, R1, #4 他相当于 R0 R1,操作完毕后,R1 = R1+4。不需要!号。(3 堆栈寻址一定要注意:堆栈操作总是要指定自动变址的,否则会覆盖以前保存的内容。(4 乘法指令1、乘法指令不支持第二操作数为立即数。2、结果寄存器不能同时作为第一源寄存器。32位:MUL Rd,Rm,RsMUL Rd,Rm,Rs /Rd和Rm不能为同一寄存器64位:MUL RdHi,RdLo,Rm,Rs /RdHi、RdLo和Rm不能为同一寄存器,RdHi和RdLo不能为同一寄存器。 (4 跳转指令1、BL和BLX跳转是硬件自动将下一条指令地址保存到LR(R14)中,不需要自己写指令。2、当指令跳转到32MB地址空间以外时,将产生不可预料的结果。 ARM的指令集比较简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年智慧旅游旅游支教数字化平台建设
- 血液透析设备制造项目可行性研究报告
- 2026 年车辆定期维保安全知识宣讲课
- 铜仁地区松桃苗族自治县2025-2026学年三年级数学下学期期中复习检测模拟试题含答案
- 配送进度调整通知书6篇
- 旅游与休闲天气恶劣活动组织者预案
- 酒店业可持续发展绿色节能改造项目实施与效益分析
- 零售连锁和供应链企业战略合作协议签署条件商洽函5篇
- 电商支付结算流程优化回复函5篇
- 2026年租赁合同条款变更催办函7篇
- (正式版)DB42∕T 1764-2021 《高速公路服务区(停车区)服务管理规范》
- 研究院建立方案汇报
- 2024版电网典型设计10kV配电站房分册
- 林业局事业单位考试试题及答案
- GM/T 0024-2023SSL VPN 技术规范
- 蔬菜初加工免责协议书
- 市委党校管理制度
- ICU应激性溃疡预防
- 国家职业技术技能标准 6-29-03-03 电梯安装维修工 人社厅发2018145号
- 水工隧洞软件手册水利版
- 工程测量技术-《工程测量》课程标准
评论
0/150
提交评论