在汇编器中实现 math.h 函数

发布于 2024-08-05 06:31:20 字数 158 浏览 7 评论 0原文

我已使用 gdb 逐步执行在标准 C 数学库 (-lm -march=pentium3 -mfpmath=387) 中实现标准 C sin() 函数的汇编代码。那里有很多存根,我不知道为什么他们不简单地内联 fsin 汇编器指令。其他数学函数也会发生同样的情况。为什么他们不直接调用相应的FPU指令呢?

I have used gdb to step through the assembler code that implement the standard C sin() function in the standard C math library (-lm -march=pentium3 -mfpmath=387). There is a lot of stub there and I don't know why they have not simply inlined the fsin assembler instruction. The same happens with other mathematic functions. Why they don't just call the corresponding FPU instruction?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尛丟丟 2024-08-12 06:31:20

因为“那里有很多存根”比 x87 fsin 指令更快、更准确。与普遍的看法相反,图书馆作者通常知道他们在做什么。

Because the "lot of stub there" is both faster and more accurate than the x87 fsin instruction. Contrary to popular belief, library writers generally know what they're doing.

临风闻羌笛 2024-08-12 06:31:20

您可能应该 启用内在函数 - 内在实现sinf 几乎肯定会被内联(除非,比如说,有人获取了它的地址,或者其他一些不寻常的情况)。

在 VS 上,这相当于用 /Oi 编译

You should probably enable intrinsics - the intrinsic implementation of sinf is pretty much sure to be inlined (unless, say, someone takes an address of it, or some other unusual circumstances).

On VS that amounts to compiling with /Oi.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文