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_SET_FPREG dla określonego rejestru i przesunięcia przy użyciu bieżącego przesunięcia w epilogu.
Składnia
.UNSETFRAMEreg, przesunięcie
Parametry
reg
Wskaźnik ramki jest rejestrowany w celu unset.
offset
Przesunięcie do ramki stosu, w której ustalono wskaźnik ramki.
Remarks
Ważna
Niniejsza dyrektywa jest eksperymentalna i podlega zmianie. Włącz opcję Odwijaj wersję 3 za pomocą polecenia ml64.exe /unwindv3.
.UNSETFRAME jest prawidłowy tylko w wersji 3 odwijaj. Jest to epilog odpowiednik . SETFRAME.
.UNSETFRAME 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 .UNSETFRAME musi pojawić się przed instrukcją, która przywraca wskaźnik stosu z rejestru wskaźnika ramki.
Dobrym rozwiązaniem jest zawijanie zarówno dyrektyw odwijania, jak i kodu, który ma się odwinąć w makrze w celu zapewnienia porozumienia.
W wersji 3 unwind dyrektywy epilogu są obowiązkowe dla epilogu odwijać generowanie kodu. Nie są emitowane żadne kody odwijaczające .BEGINEPILOG/.ENDEPILOG epilogu bez 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 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE
_text SEGMENT
frmex2 PROC FRAME
.pushreg rbp
push rbp
.allocstack 010h
sub rsp, 010h
.setframe rbp, 0
mov rbp, rsp
.endprolog
; modify the stack pointer outside of the prologue (similar to alloca)
sub rsp, 060h
; we can unwind from the following AV because of the frame pointer
mov rax, 0
mov rax, [rax] ; AV!
add rsp, 060h
.beginepilog
.unsetframe rbp, 0
mov rsp, rbp
.freestack 010h
add rsp, 010h
.popreg rbp
pop rbp
.endepilog
ret
frmex2 ENDP
_text ENDS
END
Zobacz także
x64 Unwind, wersja 3 (eksperymentalna)
Odwołanie do dyrektyw
. SETFRAME
. BEGINEPILOG
Gramatyka MASM BNF