V***和F***浮点ARM指令有什么区别?

Tri*_*g3l 2 floating-point assembly arm fpu cpu-registers

ARM VFP指令与V和F一起开始有什么区别?

为什么ARM信息中心不再列出汇编参考中的F指令?

他们中的大多数直接映射到彼此(例如,vcvtr.s32.f32ftosis),那么为什么它们都存在?

例如,这些函数执行相同的操作(floor float-> int conversion):

vmrs %r1, fpscr
bic %r0, %r1, #0xc00000
orr %r0, %r0, #0x800000
vmsr fpscr, %r0
vcvtr.s32.f32 %s2, %s2
vmov %r0, %s2
vmsr fpscr, %r1

mrs %r1, fpscr
bic %r0, %r1, #0xc00000
orr %r0, %r0, #0x800000
msr fpscr, %r0
ftosis %s2, %s2
fmrs %r0, %s2
msr fpscr, %r1
Run Code Online (Sandbox Code Playgroud)

Ste*_*non 5

Fxxx名称是"Pre-UAL"(统一汇编语言)名称,不推荐使用.Vxxx名称是UAL名称,是您应该用于新代码的名称.

  • 指令*name*与*指令*不同; 在Vxxx名称与Fxxx名称相同的情况下,它们是同一指令(和编码)的两个名称,因此它们当然适用于较旧的处理器. (3认同)
  • (当然,还有很多Vxxx指令实际上是新指令,并且没有Fxxx类似物.) (3认同)