Arm处理器指令集详解
1. DSP扩展指令集
在数字信号处理(DSP)领域,有一系列专门的指令用于高效地执行乘法和乘累加(MAC)操作。部分指令在发生饱和时会设置APSR中的Q位,但该位不会被这些指令清除,需要手动写入APSR来清除。通常,程序代码需要检查APSR中Q位的值,以检测计算流程中是否发生了饱和。
以下是一些常见的乘法和MAC指令的总结:
| 指令 | 描述 | 标志 |
| — | — | — |
| SMMLSR | 带舍入的有符号乘法和减法 (32b<<32 - (32b * 32b) = 32b,先舍入然后返回高32位,低32位忽略) | |
| SMLALxy | 有符号乘累加 ((16b * 16b) + 64b = 64b)
SMLALBB: (低半字 * 低半字) + 双字
SMLALBT: (低半字 * 高半字) + 双字
SMLALTB: (高半字 * 低半字) + 双字
SMLALTT: (高半字 * 高半字) + 双字 | |
| SMUAD | 有符号双乘法然后相加 ((16b * 16b) + (16b * 16b) = 32b) | Q |
| SMUADX | 有交换的有符号双乘法然后相加 ((16b * 16b) + (16b * 16b) = 32b) | Q |
| SMUSD | 有符号双乘法然后相减 ((16b * 16b) - (16b * 16b) = 32b) | |
| SMUSDX | 有交换的有符号双乘法然后相减 ((16b * 16b) - (16b * 16b) = 32b) | |
| S
超级会员免费看
订阅专栏 解锁全文

29

被折叠的 条评论
为什么被折叠?



