cpu2:
el trozo de codigo que ponia son las 6 lineas de una simple llamada a MessageBoxA en x64.
(no se necesita ver mas codigo, con esas 6 lineas vale para entender)
ese sub sí esta reservando espacio de pila para los parametros. aunque los parametros se pasen en registros: da igual.regla en x64: el codigo que llama (en este caso las 6 lineas en asm) tiene que reservar espacio en la pila (creo que tantos qwords como parametros use), para que el codigo llamado (en este caso el user32.dll donde esta el MessageBoxA) pueda tener la posibilidad si quiere, de copiar esos parametros (que le llegan en registros) a la pila.
......................
finalmente: me respondo a mi mismo
la pregunta que hacia al foro:
es que investigué un poco y me parece que di con la solucion.
yo preguntaba que ese alinear la pila, como se hacia.
la respuesta es:
en x64 hay que alinear la pila a 16 bytes.entonces en el ejemplo: hay 4 parametros, luego hay que reservar 4 qwords. luego está la direccion de retorno que meterá la call, pero aqui no necesitamos reservar nada.
entonces tenemos que en la pila se ocuparan 5 qwords. como hay que alinear la pila a 16 bytes, eso hace que necesitemos reservar otro qword.
en total nuestro codigo tiene que reservar: 5 qwords.
y (5 * 8) = 40 bytes = 28h.