在指令中,我可以使用
vmov r0,s0 / *假设s0的值为100 * /
将值从s0移动到r0,现在r0为100.
但是当我这样做时
vmov s0,r0 / *假设r0的值为100 * /
将值从r0移动到s0,我将s0设为0,而不是100。
有人可以告诉我如何正确设置值吗?
答案 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(需要注册)