¿Por qué necesitamos asignación de pila cuando tenemos una zona roja?

Tengo las siguientes dudas:

Como sabemos, System V x86-64 ABI nos da un área de tamaño fijo (128 bytes) en el marco de la pila, llamada redzone. Entonces, como resultado, no necesitamos usar, por ejemplo,sub rsp, 12. Solo hazlomov [rsp-12], X y eso es todo.

Pero no puedo entender la idea de eso. ¿Por qué eso importa? ¿Es necesariosub rsp, 12 sin redzone? Después de todo, el tamaño de la pila es limitado al principio, ¿por qué?sub rsp, 12 ¿es importante? Sé que nos permite seguir la parte superior de la pila, pero ignorémoslo en ese momento.

Sé lo que usan algunas instruccionesrsp valor (comoret) pero no me importa en ese momento.

El quid del problema es: no tenemos zona roja y hemos hecho:

function:
    mov [rsp-16], rcx
    mov [rsp-32], rcx
    mov [rsp-128], rcx
    mov [rsp-1024], rcx
    ret

¿Es la diferencia con?

function:
    sub rsp, 1024
    mov [rsp-16], rcx
    mov [rsp-32], rcx
    mov [rsp-128], rcx
    mov [rsp-1024], rcx
    add rsp, 1024
    ret

Respuestas a la pregunta(2)

Su respuesta a la pregunta