mov%rax,%rax的目的是什么?

时间:2010-12-15 21:33:59

标签: gcc assembly

我目前正在通过拆解一些C代码来学习ASM。我感兴趣的一点是gcc编译器生成这样的代码

movq %rax,%rax

这显然毫无意义。那么这样做的目的是什么?

我想知道它是否用于浪费几个CPU周期以改善管道?

感谢您的提示!

1 个答案:

答案 0 :(得分:10)

基本上是无操作,是的。

编译器执行此操作是因为分支到4字节边界上对齐的地址比分支到未对齐地址更快。因此,如果你有一个循环,编译器将在它开始之前插入“填充”,以使其对齐。