用于查找平方根的最快汇编代码。需要说明[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于查找平方根的最快汇编代码。需要说明[关闭]相关的知识,希望对你有一定的参考价值。

我目前正在C中制作一个需要找到数十亿平方根的程序。我查找了哪些已知代码更快地找到了平方根并且遇到了这个看起来最快的代码。 https://www.codeproject.com/Articles/69941/Best-Square-Root-Method-Algorithm-Function-Precisi

double inline __declspec (naked) __fastcall sqrt(double n)
{
    _asm fld qword ptr[esp + 4]
    _asm fsqrt
    _asm ret 8
}

我对汇编语言了解不多,所以有人可以解释这段代码在算法上的作用以及这些关键字的含义吗?

答案

这是标准naked函数的Microsoft Specific fast call sqrt

有关详细信息,请查看Microsoft文档。

裸存储类属性是特定于Microsoft的C语言扩展。对于使用naked storage-class属性声明的函数,编译器生成没有prolog和epilog代码的代码。您可以使用此功能使用内联汇编程序代码编写自己的prolog / epilog代码序列。裸函数在编写虚拟设备驱动程序时特别有用。见:Naked functions

__fastcall调用约定指定函数的参数在可能的情况下在寄存器中传递。此调用约定仅适用于x86体系结构。看看:__fastcall

__fastcall是很久以前由微软推出的。通常,fastcall调用约定在寄存器中传递一个或多个参数,这减少了调用所需的内存访问次数。通过片上缓存,寄存器中传递信息的收益并不像以前那么大。而__stdcall现在可能实际上更快。

以上是关于用于查找平方根的最快汇编代码。需要说明[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

汇编检测OD代码

Atmel studio 汇编:8 位数字的平方根

keil反汇编窗口怎么搜索

为 ARM Thumb2 寻找有效的整数平方根算法

查找最快的路径

查找组合矩阵的索引位置