Поделиться через


.SETFRAME

Заполняет поле и смещение регистра кадра в данных раскрутки, используя указанный регистр (regи смещение ()offset). Смещение должно быть кратным 16 и меньшим или равным 240. Эта директива также создает a UWOP_SET_FPREG запись кода раскрутки для указанного регистра, используя текущее смещение в прологе.

.SETFRAME reg, offset

Заметки

.SETFRAME Позволяет пользователям ml64.exe, чтобы указать, как функция с кадром очистки и допустимо только внутри пролога, который распространяется от PROC объявление КАДРА к .ENDPROLOG директива. Эти правила не создают код; они лишь создают .xdata и .pdata. .SETFRAME Должен предшествовать инструкциям, которые фактически реализуют действия, размотанным. Рекомендуется создавать программу-оболочку и рекомендации очистки и код предназначен для раскрутки в макросе для предоставления соглашения.

Дополнительные сведения см. в разделе MASM для x64 (ml64.exe).

Пример

Описание

В следующем образце показано, как использовать указатель кадра.

Код

; ml64 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE
_text SEGMENT
frmex2 PROC FRAME
   push rbp
.pushreg rbp
   sub rsp, 010h
.allocstack 010h
   mov rbp, rsp
.setframe rbp, 0
.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
   add rsp, 010h
   pop rbp
   ret
frmex2 ENDP
_text ENDS
END

См. также

Другие ресурсы

Справочник по директивам