如何使用vmov设置从s0到r0的值?

时间:2014-03-19 15:12:17

标签: arm

在指令中,我可以使用

vmov r0,s0 / *假设s0的值为100 * /

将值从s0移动到r0,现在r0为100.

但是当我这样做时

vmov s0,r0 / *假设r0的值为100 * /

将值从r0移动到s0,我将s0设为0,而不是100。

有人可以告诉我如何正确设置值吗?

1 个答案:

答案 0 :(得分:1)

vmov是一个有点明智的副本。如果在r0中有100作为整数并且想要将其转换为s0中的32位浮点,则需要vmov将其转换为VFP寄存器,然后vcvt将其转换为浮点格式,例如:

vmov s0, r0
vcvt.f32.s32 s0, s0 ; convert signed int -> 32-bit float

同样用于覆盖另一种方式:

vcvt.s32.f32 s0, s0 ; convert 32-bit float -> signed int
vmov r0, s0

详细信息,请参阅“ARM体系结构参考手册”(ARM ARM):http://infocenter.arm.com/help/topic/com.arm.doc.ddi0406c/index.html(需要注册)