标签: gcc assembly
我目前正在通过拆解一些C代码来学习ASM。我感兴趣的一点是gcc编译器生成这样的代码
movq %rax,%rax
这显然毫无意义。那么这样做的目的是什么?
我想知道它是否用于浪费几个CPU周期以改善管道?
感谢您的提示!
答案 0 :(得分:10)
基本上是无操作,是的。
编译器执行此操作是因为分支到4字节边界上对齐的地址比分支到未对齐地址更快。因此,如果你有一个循环,编译器将在它开始之前插入“填充”,以使其对齐。