[질문] assembly 스택 포인터 저장 질문

kgykingdom의 이미지

보통 C 함수를 어셈블 파일로 변환해서 보면 아래와 같은데..

main:
        leal  4(%esp), %ecx
              andl  $-16, %esp
               pushl -4(%ecx)     <= 요기
                  pushl %ebp
                movl  %esp, %ebp
                ......
 
 
               popl %ebp
               leal  -4(%ecx), %esp
               ret

함수 아큐먼트를 ecx 에 저장하고, 스택을 16 바이트 바이너리로 할당한 다음 기존 스택의 주소를 스택에 저장한다는데..
내용이 좀 이해가 안가네요.. 멀티 프로세싱 때문인거 같긴 한데... 정확이 어떤 이유 때문인가요??
그리고 pop 해 주는 부분도 없는데 그냥 마지막에 스택 포인터만 원래 대로 돌려 놓는 것인가요??

명쾌하게 이해 시켜 주실분 없으신가요? ^^