ARM零碎知识点总结(尽可能零碎)

本文详细介绍了ARM架构中的六类指令集,包括跳转指令、数据处理指令等,并讲解了通过跳转指令和直接修改PC寄存器实现程序跳转的方法。此外还探讨了数据处理指令的具体应用,并对比了宏汇编技术和子程序的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ARM有六类指令集:

跳转指令、数据处理指令、程序状态寄存器传输指令、Load/Store指令、协处理器指令、异常中断产生指令

2.ARM中实现程序跳转的方式有两种:

1.通过跳转指令  

2.直接向PC寄存器(R15中写入目标地址值

3. 数据处理指令又可分为3类:

数据传送指令、算术逻辑运算指令、比较指令

部分指令的使用如下:

ANDAnd 逻辑与操作指令)可以提取寄存器中某些位的值,具体的做法是见杜春雷P69

ORRLogical OR逻辑或操作指令)可将寄存器中的某些位设置成1,详见杜春雷P70

EORExclusive OR逻辑异或操作指令)可将进村器中某些位的值取反,详见杜春雷P71

BICBit Clear位清除指令)用于将寄存器中的某些位的值设置成0,详见杜春雷P72

TSTTest位测试指令)用于测试寄存器中某个位是1还是0,详见杜春雷P73

TEQTest Equivalence相等测试指令)用于比较两个数或操作数是否相等,详见杜春雷P74

4.程序不能通过直接修改CPSR中的T控制位直接将程序状态切换到Thumb状态,必须通过BX等指令完成程序状态的切换

5.LDR指令的用法:

 a.可以用来从内存中读取32位字数据到通用寄存器,然后对数据进行操作

 b.当PC作为指令中的目标寄存器时,指令可以实现程序跳转的功能

现通过LDR的用法不难总结出

1)LDRB(Load Register Byte字节数据处理指令)的用法如下:

 a.读取8位字节数据,然后对其操作(寄存器高24位清零)

 b.PC为目标寄存器时,实现程序跳转

2)LDRH(Load Register Halfword半字数据读取指令)的用法如下:

 a.读取16位半字节数据,然后对其操作(高16位清零)

 b.PC为目标寄存器时,实现程序跳转     

6.arm汇编语言中$ 是意思是什么?

在一个符号前使用$,表示程序在汇编时将使用相应的值来代替$后的符号

7.宏汇编技术与子程序:

使用子程序可以节省存储空间及程序设计所花费的时间,也可以提供模块化的程序设计,使程序的调试维护方便,但它也有缺点,例如,使用子程序时保存和恢复相关的寄存器及子程序现场,增加了额外的开销。因此在子程序较短而需要传递的参数较多的可以使用宏汇编技术。                                                                                                                                                                                                                                                           



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值