컴파일러에서 수행 한 x64
어셈블리 최적화를 이해하려고합니다."nop dword ptr [rax + rax]"x64 어셈블리 명령어의 기능은 무엇입니까?
작은 C++ 프로젝트를 IDE로 빌드하고 Windows 8.1에서는 Release
으로 컴파일했습니다.
그리고 선 중 하나
는 다음 어셈블리 코드를 포함 :B8 31 00 00 00 mov eax,31h
0F 1F 44 00 00 nop dword ptr [rax+rax]
을 그리고 여기 스크린 샷입니다 : 나는 그 자체로 nop
이 do nothing
알고 마찬가지로 지금까지
,하지만 난 ' 그런 피연산자를 본적도 없어요.
누군가가 설명 할 수 있습니까?
멀티 바이트 NOP입니다. Set Set 레퍼런스는 다음을 설명합니다 : http://www.felixcloutier.com/x86/NOP.html –
@MichaelPetch : 고마워요. 궁금한 점이 있다면, 그 명령을'Release' 빌드에 추가하는 목적은 무엇입니까? – c00000fd
일반적으로 정렬. 16 또는 32 바이트 경계에 정렬하기 위해 루프 앞에 표시되는 경우가 종종 있습니다 (16은 종종 기본값입니다). 이렇게하면 루프의 성능을 향상시킬 수 있습니다. –