我将VC ++设置为为调用sqrt的方法生成ASM,以查看它是否生成FPU或SSE指令。但是当调用sqrt时,我看不到ASM。我只看到一些函数__CIsqrt的调用,我假设它是一些系统sqrt函数。我无法看到任何ASM知道它在做什么?
答案 0 :(得分:5)
那是因为编译器没有生成代码 - 代码已经存在于库中。如果你想看到它,最简单的方法通常是在汇编程序模式下跟踪调试器中的库函数调用。
答案 1 :(得分:2)
数学函数在库中实现。该库包含FPU / SSE2指令,但实现/fp compile option需要额外的代码。虽然大多数CRT代码在VS安装目录的vc \ crt \ src子目录中作为源代码提供,但数学函数不是这种情况。它由英特尔编写,他们可能不允许发布源。该库位于vc \ crt \ src \ intel \ mt_lib \ tran.lib中。在一兆字节,远远不能考虑拆卸。
如果要查看程序集,则应使用/ MT构建项目并使用调试器进入该函数。