Soy un principiante en lenguaje ensamblador y he notado que el código x86 emitido por los compiladores generalmente mantiene el puntero del marco incluso en modo de lanzamiento / optimizado cuando podría usar el EBP
registro para otra cosa.
Entiendo por qué el puntero del marco puede hacer que el código sea más fácil de depurar, y podría ser necesario si alloca()
se llama dentro de una función. Sin embargo, x86 tiene muy pocos registros y usar dos de ellos para mantener la ubicación del marco de la pila cuando uno sería suficiente simplemente no tiene sentido para mí. ¿Por qué omitir el puntero del marco se considera una mala idea incluso en compilaciones optimizadas / de lanzamiento?
alloca
) 3. facilidad de implementación en tiempo de ejecución: manejo de exceptoins, sandbox, GC