如何显示内置函数的汇编输出?

问题描述 投票:0回答:1

我尝试使用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

我想必须有一些编译器参数来揭示内置函数的定义,但我找不到合适的。

c++ c gcc godbolt
1个回答
0
投票

如何显示内置函数的汇编输出?

您正在代码中显示构建函数的汇编输出 - 它是

jmp     round
。汇编函数
__builtin_roundl
生成了
jmp round
在本例中,并且它是正确的。

内置函数没有“程序集”。它仅作为对语言的某些抽象的一系列转换存在于 C 编译器源代码中。

代码在这里https://github.com/gcc-mirror/gcc/blob/fca6f6fddb22b8665e840f455a7d0318d4575227/gcc/convert.cc#L550.

我想必须有一些编译器参数来揭示内置函数的定义

没有。

© www.soinside.com 2019 - 2024. All rights reserved.