【ARMv8/v9 常见汇编指令学习 6.1 - armv8 右移指令 LSR 详细介绍】



请阅读【嵌入式开发学习必备专栏 】


armv8 右移指令 LSR

在ARMv8架构中,lsr(Logical Shift Right)指令是一种逻辑右移指令,用于将一个寄存器中的数值向右移动指定的位数。逻辑右移操作会从左侧填充0,这与算术右移(asr,Arithmetic Shift Right)不同,后者会根据符号位填充。lsr指令在进行位操作、快速除法运算(对2的幂次进行除法)或处理位字段时非常有用。

语法

lsr指令的基本语法如下:

lsr <Xd>, <Xn>, #<imm>
  • <Xd>:目的寄存器,存储操作结果。
  • <Xn>:源寄存器,其内容将被右移。
  • #<imm>:立即数,指定右移的位数。

示例

假设我们希望将寄存器X1中的值向右移动2位,并将结果存储到寄存器X0中,可以这样写:

lsr X0, X1, #2

如果X1的内容是0b111100(十进制中的60),执行上述lsr指令后,X0中的内容将是0b1111(十进制中的15)。

注意事项

  • 在使用lsr指令时,需要注意移位数#<imm>的合法范围。对于32位寄存器(W系列),移位数的范围是0到31;对于64位寄存器(X系列),移位数的范围是0到63。
  • 移位操作不仅可以实现快速的乘除法计算(针对2的幂次),还可以用于清理特定的位、设置位字段或者在位层面上操作数据。
  • lsr指令与算术右移指令asr的主要区别在于填充位的处理。lsr总是用0填充空出的位,而asr则根据原数的符号位填充,这在处理带符号整数时非常重要。
    总的来说,lsr是ARMv8指令集中处理位操作的基本指令之一,适用于各种需要逻辑右移操作的场景。
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ARMv8ARMv9是英国ARM公司开发的两种指令集架构。ARMv8指令集于2011年发布,ARMv9则于2021年发布。这两种指令集都是为ARM架构的处理器设计的。 ARMv8指令集引入了一些重要的新特性。首先,它引入了AArch64执行状态,这是一种64位执行状态,支持更广泛的寻址空间和更高的性能。其次,ARMv8还引入了AArch32执行状态,使得处理器可以在32位和64位模式之间进行切换。此外,ARMv8还增加了一些新的指令,如条件执行指令和新的SIMD指令ARMv9ARM架构的最新版本,也引入了一些新特性。其中最重要的特性是Confidential Compute Architecture(CCA)和Advanced Matrix Extensions(AMX)。CCA提供了更高级别的安全性,保护用户数据免受侧信道攻击。AMX是一种新的向量处理扩展,旨在提高AI和机器学习工作负载的性能。 除了这些新特性外,ARMv9还增加了一些新的指令,例如Bit Manipulation Instructions(BMI),用于位操作,和Instruction-level Gating(ILG),用于动态能耗管理。此外,ARMv9还引入了更多的扩展插槽,以便于处理器设计者添加自定义功能。 总的来说,ARMv8ARMv9指令集架构提供了更高级别的性能和功能,适用于广泛的应用领域,包括移动设备、嵌入式系统、服务器和超级计算机。通过持续的发展和改进,ARM公司不断为其处理器提供更先进的指令集,以满足不断变化的市场需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

主公CodingCos

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

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

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

打赏作者

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

抵扣说明:

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

余额充值