Estoy jugando con gcc -S
para entender cómo funciona la memoria y la pila. Durante estas obras, encontré varias cosas poco claras para mí. ¿Podrías por favor ayudarme a entender las razones?¿Por qué gcc lo hace al crear código ensamblador?
Cuando la función que llama establece argumentos para una llamada que utiliza un
mov
aesp
lugarpush
. ¿Cuál es la ventaja de no usarpush
?La función que funciona con sus argumentos ubicados en la pila los señala como
ebp + (N + offset)
(donde N es un tamaño reservado para la dirección de retorno). Espero veresp - offset
que es más comprensible. ¿Cuál es la razón para usarebp
como punto fundamental en todas partes? Sé que estos son iguales, ¿pero de todos modos?¿Para qué sirve esta magia al principio de
main
? ¿Por quéesp
debe inicializarse de esta manera solamente?and esp,0xfffffff0
Gracias,
Esto podría ser 3 preguntas separadas. De todos modos, la respuesta al 3er punto es la alineación de la pila. – Mysticial