1
我想了解由编译器完成的x64
程序集优化。“nop dword ptr [rax + rax]”x64汇编指令是做什么的?
我编译了一个小的C++项目,编号为Release
,在Windows 8.1上使用Visual Studio 2008 SP1
IDE编译。
而行的一个包含下面的汇编代码:
B8 31 00 00 00 mov eax,31h
0F 1F 44 00 00 nop dword ptr [rax+rax]
这里是截图:
据我所知nop
本身是do nothing
,但我我从来没有见过这样的操作数。
有人可以解释它是做什么的?
它是一个多字节的NOP。指令设置参考解释了这个:http://www.felixcloutier.com/x86/NOP.html –
@MichaelPetch:谢谢。只是好奇,在'Release'版本中添加该指令的目的是什么? – c00000fd
通常用于对齐。通常你会在循环之前看到它们在16或32字节的边界上对齐(16通常是默认值)。这可以改善循环的性能。 –