2010-02-23 2 views

답변

6

__nop 내장 함수를 사용할 수 있다고 생각합니다. 이것은 구축중인 프로세서에 대한 적절한 기계 명령어로 컴파일해야합니다.

http://msdn.microsoft.com/en-us/library/aa983381(VS.80).aspx

는 UPDATE : 여기

난 그냥 VS2008로 만든 예입니다. 이 모두는 Win32 및 x64 구성을 컴파일 : 당신이 궁금해하는 경우

#include "stdafx.h" 
#include <intrin.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    // The intrinsic function below will compile to a NOP machine instruction. 
    // This is the same as _asm nop in the 32-bit compiler. 
    __nop(); 
    return 0; 
} 

, 나는 위의 예를 분해하고, 64 출력했다 :

wmain proc near 
     db 66h 
     nop 
     nop 
     xor eax, eax 
     retn 
wmain endp 

는 Win32 출력했다 :

_main proc near 
     nop 
     xor eax, eax 
     retn 
_main endp 
+0

제안이 작동하지 않습니다 ... 컴파일되지 않습니다. – ra170

+0

그리고 무엇이 오류입니까? 의사가 말하는 것처럼 # 을 포함 했습니까? VS2008이 시도하고 잘 컴파일됩니다. – Dustin

+0

아, 알았어. 문제는 내가 헤더 파일을 포함하지 않았다는 것이다. 샘플 코드를 게시 해 주셔서 감사합니다. – ra170

1

64 비트 프로그램에서는 _asm을 사용할 수 없습니다. 대체는 내장 함수이며 지침 목록은 available here입니다. NOP는 그 중 하나가 아니기 때문에, 당신은 64 비트 컴파일러가 설치되어있을 때 vc \ bin \ x86_amd64 \ ml64.exe로 사용할 수있는 MASM64을 사용해야 만합니다.

+0

괜찮아요,하지만 C++ 안에 있어요. VC++ 2008에서 컴파일되었는데, 어떻게 MASAM64를 사용하려고 생각하는지 모르겠군요 .. – ra170

+0

다른 식으로 설명 하겠지만 x64로 컴파일하려면 _asm을 사용하여 인라인 어셈블리를 사용할 수 없습니다. 우리가 도와 드릴 수 있도록 _asm 코드를 게시하십시오. –

관련 문제