【发布时间】:2011-03-10 00:16:44
【问题描述】:
我目前有内联函数调用另一个内联函数(一个简单的 4 行大 getAbs() 函数)。然而,我通过查看汇编代码发现“大”内联函数被很好地内联,但是编译器使用bl 跳转来调用getAbs() 函数。
不能在另一个内联函数中内联一个函数吗?顺便说一句,这是嵌入式代码,我们没有使用标准库。
编辑:编译器是 WindRiver,我已经检查过内联是有益的(4 条指令而不是 +-40)。
【问题讨论】:
-
你用的是什么编译器?通常有一些方法可以强制内联。我假设您已经分析了您的代码并且非常有信心内联将是有益的。在 GCC 中,这可以通过 __attribute__((always_inline)) 来完成。
-
我能问一下您为什么关心编译器做出的决定吗?您是否对代码进行了剖析,发现一条跳转指令的开销正在扼杀性能?