x86-64 gcc doesn't assign a stack frame for local variable

111 views Asked by At

I had some problem when I learned about assembly code.

I use "compiler explorer" that is a website that supporting a lot of compiler.

I made a simple code and compiled it as x86-64 gcc.

<C++ code>:

int sum(int a, int b)
{
    return a + b;
}

int main(void)
{
    return sum(3, 4);
}

:

sum(int, int):

    push    rbp
    mov     rbp, rsp
    mov     DWORD PTR [rbp-4], edi
    mov     DWORD PTR [rbp-8], esi
    mov     edx, DWORD PTR [rbp-4]
    mov     eax, DWORD PTR [rbp-8]
    add     eax, edx
    pop     rbp
    ret

main:

    push    rbp
    mov     rbp, rsp
    mov     esi, 4
    mov     edi, 3
    call    sum(int, int)
    nop
    pop     rbp
    ret

As I know, stack presents for local variable and saving return address, etc in x86.

I can't see that anything about "sub rsp, ??" in function prologue. And I can't see "add rsp, ??" in function epilogue, too.

0

There are 0 answers