.ALLOCSTACK
Gera um UWOP_ALLOC_SMALL ou um UWOP_ALLOC_LARGE com o tamanho especificado do deslocamento atual no prólogo.
Sintaxe
. Tamanho ALLOCSTACK
Comentários
O MASM escolherá a codificação mais eficiente para um determinado tamanho.
O .ALLOCSTACK permite que usuários do ml64.exe especifiquem como uma função de quadro é desenrolada e só é permitido no prólogo, que se estende da declaração FRAME PROC até a diretiva .ENDPROLOG. Essas diretivas não geram código. Elas só geram .xdata
e .pdata
. O .ALLOCSTACK deve ser precedido por instruções que realmente implementam as ações a serem desenroladas. É uma boa prática encapsular as diretivas de desacoplamento e o código que elas devem desacoplar em uma macro para garantir o acordo.
O operando size deve ser um múltiplo de 8.
Para obter mais informações, confira MASM para x64 (ml64.exe).
Amostra
O exemplo a seguir mostra como especificar um manipulador de desenrolamento/exceção:
; ml64 ex3.asm /link /entry:Example1 /SUBSYSTEM:Console
text SEGMENT
PUBLIC Example3
PUBLIC Example3_UW
Example3_UW PROC NEAR
; exception/unwind handler body
ret 0
Example3_UW ENDP
Example3 PROC FRAME : Example3_UW
sub rsp, 16
.allocstack 16
.endprolog
; function body
add rsp, 16
ret 0
Example3 ENDP
text ENDS
END