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通常是默認值)。這可以改善循環的性能。 –