11、ARM 汇编高级算术指令与调试技巧

ARM 汇编高级算术指令与调试技巧

1. 更智能的数字运算

在 ARM 架构中,自 v3 版本起引入了更多处理 64 位有符号和无符号数的指令。下面将介绍一些实用的指令。

1.1 长乘法

SMULL 和 UMULL 指令可进行有符号和无符号乘法,使用两个 32 位操作数寄存器得到 64 位结果,并将其存于两个目标寄存器中。指令格式如下:

SMULL (<suffix>) <destlLo>, <destHi>, <Op1>, <Op2>
UMULL (<suffix>) <destlLo>, <destHi>, <Op1>, <Op2>

对于有符号乘法,操作数 1 和操作数 2 的值假定为补码形式。在这些指令中不能使用 PC 寄存器,并且应避免使用 SP 寄存器,不过树莓派可以使用。两个目标寄存器应不同。

例如,计算两个无符号 32 位数的 64 位乘积,假设两个无符号数在 R1 和 R2 中,结果存于 R3 和 R4 中:

UMULL R3, R4, R1, R2

为展示新指令的代码节省效果,下面的程序 12a 使用原始的 MUL 指令实现相同功能:

Program 12a. Long multipli
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值