монтажный эпилог композиция

Я изучаю сборку и попытался скомпилировать следующий код 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

0 ответов

Другие вопросы по тегам