在 32 位 ARM 上,vmov.f32 r0, s0
会将单精度 (float32) 寄存器 s0
复制到 r0
中,如下所示一点模式。
是否有一种方法可以类似地获取 float64 的高位(控制符号、NaN 和无穷大的位)?
最佳答案
使用vmov Rt, Dn[x]
指令:
.syntax unified
.arch armv7-a
.arch_extension simd
vmov r0, d0[1]
这会将 d0
索引 1 处的 32 位子字(即高 32 位)移动到 r0
中。另一种选择是利用每个 double 寄存器被两个单精度寄存器覆盖的事实。所以通过发出来达到同样的效果
vmov r0, s1
但是,这仅适用于存在相应单精度寄存器的 double 寄存器(即 d0
到 d15
)。
关于assembly - 在 32 位 Arm 上,我可以将 double 位模式的高位放入整数寄存器中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74118445/