스택은 사실 아래로 자란다(push,pop) - CS:APP 3.4.4

2025. 4. 7. 21:40·CS:APP
  • 후입선출(LIFO: Last-In, First-Out) 자료 구조
  • x86-64 아키텍처에선 주소가 높은 곳에서 낮은 곳으로 자람
  • 스택의 꼭대기는 항상 %rsp 레지스터가 가리킴
  • %rsp는 push할 때 내려가고, pop할 때 올라감

명령어 요약

명령어 동작 설명
pushq S %rsp -= 8, M[%rsp] = S
popq D D = M[%rsp], %rsp += 8

- q는 quad-word, 즉 8바이트

- 모든 연산은 8바이트 정렬을 따름


📍 pushq %rax 실행 전

%rsp = 0x108

[0x108] ↑  (아직 안 쓴 공간)

📍 pushq %rax 실행 후

%rsp = 0x100

[0x100] = %rax의 값

📍 popq %rbx 실행 후

%rsp = 0x108

[0x100] = (0x123 등, 값은 여전히 남아 있음!)

📦 사용 목적

상황 이유
함수 호출 시 call 명령은 return address를 스택에 push
함수 종료 시 ret 명령은 return address를 스택에서 pop
지역 변수 저장 %rsp를 내려서 공간 확보 (ex. subq $16, %rsp)
레지스터 백업 함수에서 레지스터 값을 바꾸기 전 push, 끝날 때 pop

 

728x90

'CS:APP' 카테고리의 다른 글

컴파일러 드라이버  (0) 2025.08.04
함수는 추상화의 결과다 - CS:APP 3.7 프로시저 호출  (0) 2025.04.08
[C, Assembly] movq 예제  (0) 2025.04.07
mov 인스트럭션 - CS:APP 3.4.2  (0) 2025.04.07
오퍼랜드 식별자(operand specifier 어셈블리의 시작과 끝 - CS:APP 3.4.1  (0) 2025.04.07
'CS:APP' 카테고리의 다른 글
  • 컴파일러 드라이버
  • 함수는 추상화의 결과다 - CS:APP 3.7 프로시저 호출
  • [C, Assembly] movq 예제
  • mov 인스트럭션 - CS:APP 3.4.2
ahpicl64
ahpicl64
in the clouds
  • ahpicl64
    구름
    ahpicl64
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • WIL (4)
      • Jungle (36)
      • AWS (2)
      • SQL (2)
      • CS:APP (17)
      • Algorithm (10)
      • K8s (7)
      • 자료 구조 (10)
      • Spring (4)
      • React (0)
      • 운영체제 (1)
      • 기타등등 (2)
      • 이야기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Spring boot
    CSAPP
    알고리즘
    CloudFront
    github actions
    IAM
    DB
    Spring
    컴퓨터시스템
    k8s
    python
    DevOps
    EC2
    트러블슈팅
    부하테스트
    AWS
    어셈블리
    S3
    자료구조
    queue
  • 02-21 06:16
  • hELLO· Designed By정상우.v4.10.3
ahpicl64
스택은 사실 아래로 자란다(push,pop) - CS:APP 3.4.4
상단으로

티스토리툴바