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

3

ARM VFP指令中以V和F开头的有什么区别?

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

大多数指令是直接相互映射的(例如vcvtr.s32.f32ftosis),那么它们为什么都存在?

例如,这些函数执行相同的操作(将浮点数向下取整转换为整数):

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

也许是旧版本(例如VFPv1)?正如ARM所说:“VFPv1已经过时。有关详细信息可通过请求从ARM获取。”这就解释了为什么您在他们的网站上找不到有关指令的信息。 - Michael
实际上,关于那些函数有信息,但被标记为遗留和已废弃。然而,许多关于新事物的文章也被标记了。 - Triang3l
1
我认为这不是FPA与VFP之间的问题。如下所答,这是相同指令集(vfp)的汇编语言语法的两个变体。 - old_timer
1个回答

6

Fxxx名称是“预统一汇编语言”(Unified Assembly Language)名称,已经被弃用。Vxxx名称是UAL名称,应该在新代码中使用。


新指令是否受到先前的非UAL处理器支持? - Triang3l
3
指令的“名称”不同于“指令”本身;如果存在一个Vxxx名称与Fxxx名称执行相同的操作,则它们是同一条指令(并编码),因此它们可以在旧处理器上使用。 - Stephen Canon
3
当然,还有许多Vxxx指令实际上是全新的指令,没有与之对应的Fxxx指令。 - Stephen Canon
啊,是的。我刚刚用旧指令反汇编了一些代码,而IDA却显示了新指令。 - Triang3l

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接