Ich spiele mit der Betrachtung einer Montage nach einer einfachen Funktion: < /p>
Code: Select all
bool magic()
{
bool j = false;
return j;
}
< /code>
Wenn ich den Montagecode von x86 GCC 11.4 (ohne Optimierungen) betrachte Ich sehe Folgendes: < /p>
magic():
push rbp
mov rbp, rsp
mov BYTE PTR [rbp-1], 0
movzx eax, BYTE PTR [rbp-1]
pop rbp
ret
Meine Frage ist, warum gibt es keine Sub -RSP, 1 , um Platz für die Variable zuzuweisen? Wenn ich meiner Kompilierzeile -m32 hinzufüge, sehe ich Sub ESP, 16 , um Platz zu erhalten. Gibt es etwas Besonderes im 64 -Bit -Modus, den ich fehlt?