gpt4 book ai didi

c++ - iPhone 拇指和 VFP

转载 作者:行者123 更新时间:2023-11-30 03:11:45 25 4
gpt4 key购买 nike

“为 Thumb 编译”和 VFP 代码如何相互关联?

在 iPhone 2G/3G 上,我知道 Thumb 指令集不包括浮点计算(在 3GS 上,Thumb2 显然有..)。那么,如果针对 thumb 进行编译,但使用 VFP 代码进行浮点计算,会发生什么情况?

我知道这很深入-但这里可能有人知道...c

最佳答案

我不确定“使用 VFP 代码”是什么意思。您是指可以编译为在 VFP 上运行的浮点代码,还是指实际的 VFP 汇编指令?

如果您在 thumb 模式下编译并使用 float ,则将为代码中的每个浮点运算调用一个函数。这些函数调用(它们的名称类似于 __muldf3vfp)将模式切换到 ARM,将数据移入浮点寄存器,执行操作,将数据移回整数寄存器,然后返回。如果您在 ARM 模式下编译,对于只有一条指令的东西来说,这是很多工作,所以不要在浮点密集型代码中使用 thumb。

如果您尝试在 thumb 模式下使用 VFP 汇编指令,您只会得到一个汇编程序错误。

如您所述,3GS 支持 thumb2,确实可以访问 VFP 和 NEON 寄存器,因此这种情况不适用。

另请注意,thumb 和 ARM 编译之间的切换可以按源文件完成,因此您可以在 thumb 中编译大部分项目,然后将 ARM 用于一些执行大量浮点运算的例程。如果您想编写汇编代码,您可以根据功能在 ARM 和 thumb 之间切换。

关于c++ - iPhone 拇指和 VFP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2057920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com