gcc和g ++能够用各种优化来编译C++代码。 gcc/g ++也可以输出汇编指令。我相信在输出asm代码之前会应用这些优化。是否可以使用gcc/g ++提供的优化来编译汇编代码?
通常gcc/g ++代码比我能在asm中产生的任何东西都快,可能是因为我是汇编程序的新手,所以我不知道很多指令。 (基本上我有点垃圾)。
了解优化的一个好方法是检查C++编译器的汇编级输出,或者告诉我。
是否有可能使用gcc或g ++或其他完全类似gas或nasm的代码来编译由gcc或g ++生成的汇编代码?
有两个原因,我问:
首先,它会很酷能够生产自己的汇编代码,并用gcc编译优化它,看看是否有任何差异出现。这实际上更像是一种学习工具。
问第二个原因是检查我是否可以加快gcc的汇编代码。也许我做不到,我知道gcc几乎是优化方面的专家,所以我不希望在这里获得任何东西,但它会带来一个有趣的挑战 - 击败编译器!
所以是的,这样的事情是可能的吗?
GCC只生成汇编。编译程序时,GCC生成程序集,然后调用[_as_](http://linux.die.net/man/1/as)(_gas_)来执行程序集部分。 – DaoWen
@DaoWen啊,很好,所以有可能?我猜''gcc main.c -s -o main.s'然后'作为main.s -o main.o' - 但是我应该说什么来告诉它它需要什么格式,并且它应该是' .s'还是'.S'? – user3728501
优化汇编代码对于计算机来说真的很难做......除了可能将一条指令改为相当于它的指令而花费较少时间之外,优化将很困难。这是因为同样的原因,没有好的机器代码反编译器 - 机器代码非常精确,以至于很难说出它在实际操作中的作用。由于计算机无法分辨您正在尝试做什么,因此无法优化。 – Aaron