16、ARM 汇编中的乘法、累加与浮点运算

ARM 汇编中的乘法、累加与浮点运算

1. 乘法累加指令及其重要性

在现代应用中,如对象识别和语音翻译,其执行速度很大程度上取决于矩阵乘法的速度,而矩阵乘法又依赖于乘累加(Multiply with Accumulate)操作的速度。这也是 ARM 处理器在硅片上为乘累加操作分配大量资源的原因。

乘累加指令如下:
- MADD Xd, Xn, Xm, Xa
- MSUB Xd, Xn, Xm, Xa
- SMADDL Xd, Wn, Wm, Xa
- UMADDL Xd, Wn, Wm, Xa
- SMSUBL Xd, Wn, Wm, Xa
- UMSUBL Xd, Wn, Wm, Xa

这些指令与之前讨论的乘法指令密切相关,实际上,大多数乘法指令是使用零寄存器作为 Xa 的这些乘累加指令的别名。计算方式为:
- Xd = Xa + Xn * Xm
- Xd = Xa – Xn * Xm

需要注意的是,Xd 可以与 Xa 相同,用于计算累加和。当 Xa 为零寄存器时,就得到了上一节中的所有负乘法操作。对于将两个 32 位寄存器相乘得到 64 位结果的版本,和需要是 64 位的 X 寄存器。

2. 矩阵乘法示例

以两个 3x3 矩阵相乘为例,其伪代码如下:

FOR row = 1 to 3
      FOR col = 1 to 3
            acum = 0
            FOR i = 1 to 3
            
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值