将汇编代码中的c调用函数转换为汇编代码

时间:2013-08-12 21:35:33

标签: c gcc assembly

我正在处理一个带有一些数学函数的C文件,例如logexp。一世 使用GCC编译C文件以生成汇编代码。在汇编代码中,每当使用pow函数时,我发现它只会调用C函数。例如,

    movsd   xmm0, QWORD PTR 16[rbp]   
    call    log  
    addsd   xmm0, xmm0  
    call    exp  
    movsd   QWORD PTR -8[rbp], xmm0

我想知道是否有可能告诉GCC,而不是只调用C函数,它还会生成logexp的汇编代码?换句话说,是否可以告诉GCC生成不需要任何外部函数调用的汇编代码?

谢谢,

3 个答案:

答案 0 :(得分:1)

我不相信这可以用标准方式完成。但是,您可以自己实现这些函数(或者像Paul R提到的那样从现有库中复制代码,例如libm(libc的一部分)),然后,重要的是,声明函数 {{3 }}

答案 1 :(得分:1)

您可以在GDB或其他调试器中加载程序,并在调用上设置断点,然后单步执行logexp函数,然后在那里转储它的反汇编(或者如果您正在运行适当的调试器,请复制并粘贴它。即使您没有库函数的源,也可以这样做。

答案 2 :(得分:1)

正如其他人所说,你可以复制粘贴来自libm的代码。

尝试使用-finline-functions-finline-limit=n进行编译 有关详细信息,请参阅OptimizeOptions