Ich bin ein Anfänger in Assemblersprache und habe festgestellt, dass der von Compilern ausgegebene x86-Code den Frame-Zeiger normalerweise auch im Release- / optimierten Modus herumhält, wenn er das EBP
Register für etwas anderes verwenden könnte.
Ich verstehe, warum der Frame-Zeiger das Debuggen von Code erleichtert und möglicherweise erforderlich ist, wenn alloca()
er innerhalb einer Funktion aufgerufen wird. X86 hat jedoch nur sehr wenige Register, und zwei davon zu verwenden, um die Position des Stapelrahmens zu halten, wenn eines ausreichen würde, macht für mich einfach keinen Sinn. Warum wird das Weglassen des Frame-Zeigers selbst in optimierten / Release-Builds als schlechte Idee angesehen?
alloca
) 3. Einfache Laufzeitimplementierung: Ausnahmebehandlung, Sandbox, GC