VMULL中的最后一个L在arm霓虹汇编语言中是什么意思

时间:2013-06-28 21:09:05

标签: assembly arm neon

我开始学习arm asm。现在我想知道指令vmull.u8 q7,d0,d4中的最后一个“l”是什么意思?我发现这里解释的指令VMUL{cond}Condition codes解释了可用的不同条件,但由于vmull中的最后一个“l”不在列表中,我不明白它是什么意思。

2 个答案:

答案 0 :(得分:4)

“长”

乘以两个定点数会得到长度加倍的“长”结果,因此需要两倍的寄存器宽度来存储结果。

所以s8 x s8 => s16结果。

技术上要求任何固定点乘法以完美的精度存储结果,因为将两个“n”位数乘以(2 * n) - 1位需要VMULL用于带符号数(2 * n)对于未签名的。但有时在算术中你只能操作较小的整数而你不关心高位,所以你可以使用VMUL,它更快,需要更少的寄存器。有时在信号处理中,如果你表示一些十进制格式(有时称为"Q" numbers),例如Q15使用16位有符号数(s16),那么你实际上不需要 lower 比特,NEON也提供VQDMLH。无论你需要什么,NEON都可以做到。

答案 1 :(得分:0)

可选条件代码主要适用于Thumb模式。在ARM模式下,唯一可有条件执行的NEON指令是与VFP共享的指令。 (例如VLDM)

显然您正在阅读最新版本的ARM的NEON指南(5.03)

由于某些未知原因,它缺少所有那些非常重要的IMO长,宽和窄的变体。抓住所有变种列出的首选版本。