2013-05-03 4 views
1

J'ai récemment essayé d'élargir ma connaissance du langage C et je suis tombé sur un programme qui a utilisé emit, éventuellement émettre un octet.En programmation C, que fait "Emit"?

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

}

Que pourrait-il être utilisé? Merci d'avance.

+0

Cela ressemble à l'assembleur en ligne pour moi. – Musa

+0

@Musa Merci, vous avez certainement raison. Que fait "émettre" dans un assembleur en ligne? – AdamGreenhill

+0

db est l'instruction similaire, voir ici: http://stackoverflow.com/questions/6916050/quand-est-l'équivalent-de-l'emit-dans-masm –

Répondre

9

Votre programme C exécute le code d'assemblage en ligne à l'aide du mot clé _asm. _asm est un mot-clé spécifique à Microsoft utilisé dans MSDN. Le mot-clé __asm appelle l'assembleur en ligne. Il doit être suivi d'une instruction d'assemblage, d'un groupe d'instructions entre accolades ou, au moins, d'une paire d'accolades vide. La pseudo-instruction _emit est similaire à la directive DB de MASM. _emit est une pseudo-instruction spécifique MSDN. _emit est utilisé pour définir un seul octet immédiat à l'emplacement actuel dans le segment de texte en cours. _emit ne peut définir qu'un seul octet à la fois et uniquement dans le segment de texte.

+1

Merci beaucoup! Je voudrais vous upvote mais je n'ai pas la réputation. – AdamGreenhill