为sqrt和__CIsqrt生成的代码在哪里?

时间:2010-04-19 13:43:31

标签: c++ optimization code-generation profiling

我将VC ++设置为为调用sqrt的方法生成ASM,以查看它是否生成FPU或SSE指令。但是当调用sqrt时,我看不到ASM。我只看到一些函数__CIsqrt的调用,我假设它是一些系统sqrt函数。我无法看到任何ASM知道它在做什么?

2 个答案:

答案 0 :(得分:5)

那是因为编译器没有生成代码 - 代码已经存在于库中。如果你想看到它,最简单的方法通常是在汇编程序模式下跟踪调试器中的库函数调用。

答案 1 :(得分:2)

数学函数在库中实现。该库包含FPU / SSE2指令,但实现/fp compile option需要额外的代码。虽然大多数CRT代码在VS安装目录的vc \ crt \ src子目录中作为源代码提供,但数学函数不是这种情况。它由英特尔编写,他们可能不允许发布源。该库位于vc \ crt \ src \ intel \ mt_lib \ tran.lib中。在一兆字节,远远不能考虑拆卸。

如果要查看程序集,则应使用/ MT构建项目并使用调试器进入该函数。