gcc和g ++能够使用各种优化来编译c ++代码。 gcc / g ++也可以输出汇编指令。我相信,在输出asm代码之前会应用这些优化。
gcc / g ++代码通常比我在asm中生成的任何代码都快,可能是因为我是汇编程序的新手,因此我不知道很多指令。 (基本上我有点垃圾。)
了解优化的一个好方法是检查C ++编译器的汇编级输出,或者我被告知。
是否可以使用gcc或g ++编译由gcc或g ++生成的汇编代码,或者其他完全类似gas或nasm的东西?
我提出两个理由:
首先,能够生成我自己的asm代码并使用gcc优化进行编译会很酷,并查看是否存在任何差异。这真的是一种学习工具。
询问的第二个原因是检查我是否可以加速gcc的汇编代码。可能我不能,我知道gcc几乎是优化方面的专家,所以我不希望在这里获得任何东西,但它会带来一个有趣的挑战 - 击败编译器!
所以,是的,有可能吗?
答案 0 :(得分:0)
GCC对源代码的IR(中间表示)进行优化,因此在创建汇编代码之前应用所有优化。当然,可能有些事情你可以考虑作为"优化"他们如何选择为一组给定的操作发出哪些汇编指令 - 但这又是在IR级决定的。
我想你也可以发现这个答案也很有用:Get Assembly code after every optimization GCC makes?