_emit – pseudoinstrukce
Specifické pro Microsoft
_emit pseudoinstrukce definuje jeden bajt v aktuálním umístění v aktuálním textovém segmentu. _emit pseudoinstrukce se podobá direktivě DB MASM.
Následující fragment umístí bajty 0x4A, 0x43 a 0x4B do kódu:
#define randasm __asm _emit 0x4A __asm _emit 0x43 __asm _emit 0x4B
.
.
.
__asm {
randasm
}
Upozornění
Pokud _emit
vygeneruje instrukce, které upravují registry a kompilujete aplikaci s optimalizacemi, kompilátor nemůže určit, které registry jsou ovlivněny. Pokud _emit
například vygeneruje pokyn, který upraví registr rax , kompilátor neví, že se rax změnil. Kompilátor pak může po spuštění vloženého kódu assembleru vytvořit nesprávný předpoklad o hodnotě v daném registru. V důsledku toho může aplikace při spuštění vykazovat nepředvídatelné chování.
END Microsoft Specific