ARM(四) ARM指令集(下)

本文深入探讨了ARM指令集中的条件执行、分支指令、存储和加载指令,包括SWP交换操作在信号量和互斥锁中的应用,以及如何利用条件字段和条件标志实现高效代码。同时讲解了QADD等溢出处理指令,强调了在中断处理中的注意事项。

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

导读:
介绍了分支指令,Load-Store指令(单寄存器指令,多重寄存器指令),
最后一部分:通过学习向自己提出的问题,用于检测是否掌握其中的知识。

一、Branch instruction

A branch instruction changes the flow of execution or is used to call a routine. This instruction allows programs to have subroutines

讲解

指令 解释 补充
B pc=label
BL pc=label ,lr = BL下一个指令地址
BX pc=Rm&0xffffffe,T=Rm&1 BX使用绝对地址存储在Rm中。T bit(in cpsr)用Rm的最后一位更新。T设置为1时,进入Thmub模式
BXL lr=BXL的下一条指令

使用例子:

  BL SubRoutine
  ....
SubRoutine:
  MOV pc, lr

二、Load-Store instructions

在内存和处理器寄存中传递数据。
分为三类:单寄存器传送,多寄存器传送,swap

1.Single-Register Transfer

指令 解释
LDR,STR load into register/store from register(32bit内存)
LDRB,STRB byte
LDRH,STRH Halfword(16bit内存),支持signed和unsigned
LDRSB,STRSB signed byte

2.Single-Register Transfer(寻址模式)

[Rn, #10]
[Rn,Rm]
[Rn,Rm, LSR #3]
[Rn,#8]
[Rn, Rm]!
[Rn, Rm, LSL #4]!
[Rn], #4
[Rn], Rm
[Rn]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值