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