Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Generuje wpis kodu odwijanego WOD_PUSH dla określonego rejestru przy użyciu bieżącego przesunięcia w epilogu.
Składnia
. Rejestrowanie POPREG
Parametry
Zarejestrować
Rejestr do okna podręcznego. Musi być rejestrem 64-bitowym ogólnego przeznaczenia.
Remarks
Ważna
Niniejsza dyrektywa jest eksperymentalna i podlega zmianie. Włącz opcję Odwijaj wersję 3 przy użyciu /unwindv3 opcji w ml64.exe.
.POPREG jest prawidłowy tylko w wersji 3 odwijaj. Jest to epilog odpowiednik . PUSHREG.
.POPREG jest dozwolone tylko w regionie epilogu, między . BEGINEPILOG i . ENDEPILOG. Te dyrektywy generują metadane odwiju (.xdata i .pdata sekcje), ale nie tworzą kodu wykonywalnego. W systemie Unwind Version 3 .POPREG musi pojawić się przed instrukcją pop implementającą przywracanie rejestru. Aby zapewnić umowę, zawijaj zarówno dyrektywy unwind, jak i kod, który mają na celu odwinięcie w makrze.
rejestracja może być jedną z:
RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31
W wersji 3 unwind dyrektywy epilogu są obowiązkowe dla epilogu odwijać generowanie kodu. Asembler nie emituje epilogu unwind codes bez .BEGINEPILOG/.ENDEPILOG pary.
Note
W wersji 1 unwind dyrektywa pojawia się po odpowiedniej instrukcji. W wersji 3 unwind dyrektywa pojawia się przed instrukcją.
Przykład dla unwindv3
; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
.pushreg rbx
push rbx
.pushreg rsi
push rsi
.endprolog
; rest of function ...
.beginepilog
.popreg rsi
pop rsi
.popreg rbx
pop rbx
.endepilog
ret
Example1 ENDP
_text ENDS
END
Zobacz także
x64 Unwind, wersja 3 (eksperymentalna)
Odwołanie do dyrektyw
. PUSHREG
. POP2REG
. BEGINEPILOG
Gramatyka MASM BNF