.PUSHREG
UWOP_PUSH_NONVOL
Создает запись кода очистки для указанного регистра с помощью текущего смещения в прологе.
Синтаксис
.PUSHREG register
Замечания
. PUSHREG позволяет ml64.exe пользователям указывать способ очистки функции кадра и допускается только в прологе, который расширяется от объявления PROC FRAME к прологу . Директива ENDPROLOG . Эти директивы не создают код; они создаются .xdata
только и .pdata
. . PushREG должен предшествовать инструкциям, которые фактически реализуют действия, которые должны быть размножены. Рекомендуется упаковать как директивы очистки, так и код, которые они предназначены для очистки макроса для обеспечения соглашения.
регистрация может быть одной из следующих:
RAX | RCX | RDX | RBX | RDI | RSI | RBP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15.
Дополнительные сведения см. в статье MASM для x64 (ml64.exe).
Пример
Description
В следующем примере показано, как отправлять ненезависимые регистры.
Код
; ml64 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE
_text SEGMENT
Example1 PROC FRAME
push r10
.pushreg r10
push r15
.pushreg r15
push rbx
.pushreg rbx
push rsi
.pushreg rsi
.endprolog
; rest of function ...
ret
Example1 ENDP
_text ENDS
END