求平方根的最快汇编代码。需要解释

Fastest assembly code for finding the square root. Explanation needed

我目前正在用 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
}

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

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

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

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

__fastcall调用约定指定函数的参数尽可能在寄存器中传递。此调用约定仅适用于 x86 架构。看一眼: __fastcall

__fastcall 很久以前由 Microsoft 推出。通常 fastcall 调用约定在寄存器中传递一个或多个参数,这减少了调用所需的内存访问次数。使用 on-chip 缓存,在寄存器中传递内容的好处并不像以前那样多。 __stdcall 现在可能实际上更快了。