Tag: 内联程序集

如何让这个sqrt内联程序集在iOS上工作

我正在尝试遵循另一个SOpost,并在我的iOS应用程序中实现sqrt14 : double inline __declspec (naked) __fastcall sqrt14(double n) { _asm fld qword ptr [esp+4] _asm fsqrt _asm ret 8 } 我已经在我的代码中修改了以下内容: double inline __declspec (naked) sqrt14(double n) { __asm__("fld qword ptr [esp+4]"); __asm__("fsqrt"); __asm__("ret 8"); } 上面,我已经从方法定义中删除了“__fastcall”关键字,因为我的理解是它仅适用于x86。 以上分别为每条assembly线提供了以下错误: 参数列表中的意外标记 指令无效 指令无效 我试图通过一些内联的ASM指南和其他文章了解如何做到这一点,但我通常只是不熟悉的语言。 我非常了解MIPS,但是这些命令/寄存器似乎有很大不同。 例如,我不明白为什么原始作者从不在汇编代码中的任何位置使用传入的“n”值。 任何帮助得到这个工作将不胜感激! 我正在尝试这样做,因为我正在构build一个应用程序,在那里我需要计算sqrt(好吧,是的,我可以做一个查找表,但现在我关心精度很高)在每个像素的实时video提要。 我目前正在使用标准的sqrt,除了其余的计算,我运行在8fps左右。 希望能够在这一变化的情况下,把这一个或两个碰撞一下。 如果重要的话:我正在构build应用程序,以理想的方式与任何可以运行iOS 7.1的iOS设备兼容。再次,非常感谢您的帮助。