Udostępnij za pośrednictwem


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

Zobacz też

Korzystanie z języka Asembler w blokach __asm