stack 자료구조로 관리되는 메모리 영역.
낮은 주소를 향해 확장된다.
%rsp
stack의 top(가장 낮은 주소)을 저장하는 레지스터
push
pushq Src
%rsp = %rsp - 8 (주소 하나 크기, 8 Bytes)
stack top 위에 새로운 stack 공간을 추가해서 값을 저장한다.
pop
popq Dest
%rsp = %rsp + 8
stack top에서 값을 빼오고 해당 주소만큼 반납한다.
stack은 상자더미다
아래부터 차곡차곡 쌓인 상자에 새로운 상자를 올리려면(push) 꼭대기 위에 올려야 하고,
상자를 빼려면(pop) 꼭대기 부터 빼야한다.
선입후출(FILO)
주의
stack 메모리는 높은 주소에서 낮은 주소 방향으로 확장되기 때문에 값을 추가하면 %rsp 주소가 낮아지고, 값을 빼면 %rsp 주소가 높아진다.
<참고자료>
Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition
안성용, "시스템소프트웨어", 부산대학교