Pseudoinstrukcja _emit
Specyficzne dla firmy Microsoft
Pseudoinstrukcja _emit definiuje jeden bajt w bieżącej lokalizacji w bieżącym segmencie tekstu. Pseudoinstrukcja _emit przypomina dyrektywę DB programu MASM.
Poniższy fragment umieszcza w kodzie bajty 0x4A, 0x43 i 0x4B:
#define randasm __asm _emit 0x4A __asm _emit 0x43 __asm _emit 0x4B
.
.
.
__asm {
randasm
}
Uwaga
Jeśli _emit
generuje instrukcje modyfikujące rejestry i skompilujesz aplikację z optymalizacjami, kompilator nie może określić, na jakie rejestry mają wpływ. Jeśli na przykład _emit
wygeneruje instrukcję modyfikując rejestr rax, kompilator nie wie, że funkcja rax uległa zmianie. Kompilator może następnie wprowadzić nieprawidłowe założenie dotyczące wartości w tym rejestrze po wykonaniu wbudowanego kodu asemblera. W związku z tym aplikacja może wykazywać nieprzewidywalne zachowanie podczas jej działania.
END Microsoft Specific