2013-05-03 3 views
1

나는 최근에 C 언어에 대한 지식을 넓히려고 노력했는데, 아마도 바이트를 내보내는 emit을 사용하는 프로그램을 발견했습니다.C 프로그래밍에서 "방출"은 무엇을합니까?

__declspec(naked) void marker_begin() { 
__asm { 
    _emit 0x51; 
    _emit 0x21; 
    _emit 0x1A; 
    _emit 0x14; 
    _emit 0x2C; 
    _emit 0x5B; 
} 

}

이것은 무엇을 사용할 수 있을까? 미리 감사드립니다.

+0

저에게 인라인 어셈블러처럼 보입니다. – Musa

+0

@Musa 고마워, 네 말이 맞아. 인라인 어셈블러에서 "방출"하는 것은 무엇입니까? – AdamGreenhill

+0

db도 비슷한 명령어입니다. 여기를 참조하십시오 : http://stackoverflow.com/questions/6916050/what-is-the-equivalent-of-emit-in-masm –

답변

9

C 프로그램이 _asm 키워드를 사용하여 인라인 어셈블리 코드를 실행하고 있습니다. _asm은 MSDN에서 사용되는 Microsoft 고유 키워드입니다. __asm 키워드는 인라인 어셈블러를 호출합니다. 어셈블리 명령, 중괄호로 묶인 명령어 그룹, 또는 적어도 빈 괄호 쌍이 따라야합니다.

의사 명령은 DB 지시문과 유사합니다. MASM입니다. _emitMSDN 특정 의사 명령어입니다. _emit은 현재 텍스트 세그먼트의 현재 위치에서 단일 직접 바이트를 정의하는 데 사용됩니다. _emit은 한 번에 하나의 바이트 만 정의 할 수 있으며 텍스트 세그먼트에서만 정의 할 수 있습니다.

+1

고마워요! 나는 너를 업신 여길 것이나 나는 명성이 없다. – AdamGreenhill