assembly - 在 32 位 Arm 上,我可以将 double 位模式的高位放入整数寄存器中吗?

标签 assembly arm

在 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 寄存器(即 d0d15)。

关于assembly - 在 32 位 Arm 上,我可以将 double 位模式的高位放入整数寄存器中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74118445/

相关文章:

gcc - Stacktrace arm-linux-gcc

linux - 如何编译ARM EABI工具链?

assembly - Mips 组装有帮助吗?特别是高/低

assembly - 如何正确结束 assembly ?

assembly - 68k寄存器地址

xcode - arm-apple-darwin11-llvm-g++-4.2 在哪里或者我可以在哪里更改编译器?

linux - 访问外部设备时 ARM Cortex 上的 SIGBUS

c - 从ARM微 Controller 端口读取数据的步骤

assembly - 在 ARM 汇编中将 LR 推到 BL 指令之前

ubuntu - Linux汇编编程中64位整数的关键字