монтажный эпилог композиция
Я изучаю сборку и попытался скомпилировать следующий код C в сборку с GCC с отключенной оптимизацией (https://godbolt.org/z/4cz3ocfa5)
void f() {
int x = 1;
int y = 2;
int z = 3;
}
int main() {
f();
return 0;
}
сборка,
f():
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 1
mov DWORD PTR [rbp-8], 2
mov DWORD PTR [rbp-12], 3
nop
pop rbp
ret
main:
push rbp
mov rbp, rsp
call f()
mov eax, 0
pop rbp
ret
Я запутался, почему где нетmov rsp, rbp
передpop
инструкция в эпилоге (особенно когда в кадре стека есть локальные переменныеf
).
Я думал, что полный эпилог должен быть таким
mov rsp, rbp
pop rbp
ret