本文共 2349 字,大约阅读时间需要 7 分钟。
00. 目录
文章目录
01. 乘法指令概述
ARM 乘法指令完成两个数据的乘法。两个 32 位二进制数相乘的结果是 64 位的积。在有些 ARM 的处理器版本中,将乘积的结果保存到两个独立的寄存器中。另外一些版本只将最低有效 32 位存放到一个寄存器中。无论是哪种版本的处理器,都有乘—累加的变型指令,将乘积连续累加得到总和。而且有符号数和无符号数都能使用。对于有符号数和无符号数,结果的最低有效位是一样的。因此,对于只保留 32 位结果的乘法指令,不需要区分有符号数和无符号数这两种情况。
如表 3-7 所示为各种形式乘法指令的功能。
其中:
(1)“RdHi:RdLo”是由 RdHi(最高有效 32 位)和 RdLo(最低有效 32 位)连接形成的 64 位数,“[31:0]”只选取结果的最低有效 32 位。 (2)简单的赋值由“:=”表示。 (3)累加(将右边加到左边)是由“+ =”表示。各个乘法指令中的位 S(参考下文具体指令的语法格式)控制条件码的设置会产生以下结果。
① 对于产生 32 位结果的指令形式,将标志位 N 设置为 Rd 的第 31 位的值;对于产生长结果的指令形式,将其设置为 RdHi 的第 31 位的值。 ② 对于产生 32 位结果的指令形式,如果 Rd 等于零,则标志位 Z 置位;对于产生长结果的指令形式,RdHi 和 RdLo 同时为零时,标志位 Z 置位。 ③ 将标志位 C 设置成无意义的值。 ④ 标志位 V 不变。02. MUL 指令
MUL(Multiply)32 位乘法指令将 Rm 和 Rs 中的值相乘,结果的最低 32 位保存到 Rd 中。
2.1 指令的语法格式
MUL{}{S} , ,
2.2 应用示例一
@ R1 = R2 × R3。MUL R1, R2, R3
2.3 应用示例二
@ R0 = R3 × R7,同时设置 CPSR 中的 N 位和 Z 位。MULS R0, R3, R7
03. MLA 指令
MLA(Multiply Accumulate)32 位乘—累加指令将 Rm 和 Rs 中的值相乘,再将乘积加上第 3 个操作数,结果的最低 32 位保存到 Rd 中。
3.1 指令的语法格式
MLA{}{S} , , ,
3.2 应用示例一
@ 完成 R1 = R2×R3 + 10 的操作。MOV R0, #0x0AMLA R1, R2, R3, R0
04. UMULL 指令
UMULL(Unsigned Multiply Long)为 64 位无符号乘法指令。它将 Rm 和 Rs 中的值做无符号数相乘,结果的低 32 位保存到 RsLo 中,高 32 位保存到 RdHi 中。
4.1 指令的语法格式:
UMULL{}{S} , , ,
4.2 应用示例一
@ 下面的指令完成(R1,R0) = R5 × R8 操作。UMULL R0, R1, R5, R8;
05. UMLAL 指令
UMLAL(Unsigned Multiply Accumulate Long)为 64 位无符号长乘—累加指令。指令将 Rm 和 Rs 中的值做无符号数相乘,64 位乘积与 RdHi、RdLo 相加,结果的低 32 位保存到 RsLo 中,高 32 位保存到 RdHi 中。
5.1 指令语法格式
UMALL{}{S} , , ,
5.2 应用示例一
@ 下面的指令完成(R1,R0) = R5 × R8+(R1,R0)操作。UMLAL R0, R1, R5,R8;
06. SMULL 指令
SMULL(Signed Multiply Long)为 64 位有符号长乘法指令。指令将 Rm 和 Rs 中的值做有符号数相乘,结果的低 32 位保存到 RsLo 中,高 32 位保存到 RdHi 中。
6.1 指令的语法格式
SMULL{}{S} , , ,
6.2 应用示例一
@ 下面的指令完成(R3,R2) = R7 × R6 操作。SMULL R2, R3, R7,R6;
07. SMLAL 指令
SMLAL(Signed Multiply Accumulate Long)为 64 位有符号长乘—累加指令。指令将Rm 和 Rs 中的值做有符号数相乘,64 位乘积与 RdHi、RdLo 相加,结果的低 32 位保存到RsLo 中,高 32 位保存到 RdHi 中。
7.1 指令的语法格式
SMLAL{}{S} , , ,
7.2 应用示例一
@ 下面的指令完成(R3,R2) = R7 × R6 +(R3,R2)操作。SMLAL R2, R3, R7,R6;
08. 附录
11.1 ARM Architecture Reference Manual
转载地址:https://dengjin.blog.csdn.net/article/details/106795503 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!