我尝试使用godbolt在线编译器来查看内置函数生成的程序集。示例
#include <cmath>
double br( double x ) {
return __builtin_roundl(x);
}
double r( double x ) {
return std::round( x );
}
参见https://godbolt.org/z/7e76a6qv4。
但是汇编输出只是显示为
br(double):
jmp round
r(double):
jmp round
我想必须有一些编译器参数来揭示内置函数的定义,但我找不到合适的。
如何显示内置函数的汇编输出?
您正在代码中显示构建函数的汇编输出 - 它是
jmp round
。汇编函数__builtin_roundl
生成了jmp round
在本例中,并且它是正确的。
内置函数没有“程序集”。它仅作为对语言的某些抽象的一系列转换存在于 C 编译器源代码中。
代码在这里https://github.com/gcc-mirror/gcc/blob/fca6f6fddb22b8665e840f455a7d0318d4575227/gcc/convert.cc#L550.
我想必须有一些编译器参数来揭示内置函数的定义
没有。