크래프톤 정글 (컴퓨터 시스템: CSAPP)/3장 프로그램의 기계수준 표현

컴퓨터 시스템 : CSAPP 3장 정리 - 3.4 장 정보 접근하기 Part.1

고웅 2025. 4. 5. 09:45

3.4장 "정보 접근하기 (Accessing Information)" 부분 전체를 살펴보겠다. 이 장은 컴퓨터가 값(정보)을 어디서, 어떻게 꺼내 쓰고 저장하는지 알려주는 아주 중요한 부분이다 😊

🎯 3.4장 핵심 주제:

컴퓨터가 값을 꺼내고 저장하는 방법을 배운다.


🧠 왜 이게 중요할까?

컴퓨터는 모든 걸 메모리에 저장하고 꺼내서 사용한다.
어셈블리어에서는 "정보를 어디서 꺼내서, 어디에 놓을지"직접 알려줘야 한다


📦 1. 컴퓨터에는 저장 공간이 3가지가 있다.

종류 설명
레지스터 %rax, %rbx 빠른 임시 상자!
메모리 (%rax) 느리지만 큰 저장소
즉시값 $10, $0x40 그냥 숫자 자체

🧩 2. 레지스터란?

레지스터는 컴퓨터 안에 있는 아주 빠른 기억 상자다.
예를 들어:

mov $10, %rax

→ rax라는 상자에 숫자 10을 넣어줘!

컴퓨터는 이런 레지스터들을 써서 계산하고 결과도 여기 담는다.


🧠 3. 메모리 주소로 값 읽고 쓰기

메모리는 책상 위에 놓인 수많은 작은 서랍들 같다.
각 서랍에는 번호(주소)가 있고, 그 안에 값을 넣거나 꺼낼 수 있다.

mov %rax, (%rbx)

→ rbx가 가리키는 주소(서랍 번호)에, rax 상자의 값을 넣어라


🧮 4. 주소를 계산하는 다양한 방법

컴퓨터는 서랍 번호(주소)를 그냥 쓰거나, 계산해서 만들 수 있다.

예시 의미
(%rax) rax가 가리키는 주소에 있는 값
8(%rax) rax + 8 위치에 있는 값
(%rax, %rdx, 4) rax + rdx * 4 위치
8(%rax, %rdx, 4) rax + 8 + rdx * 4 위치
🎒 예: “책가방 맨 왼쪽 주머니에서 8칸 더 간 곳에 있는 연필을 꺼내줘!”

🔧 5. mov 명령어로 값 복사하기

컴퓨터는 mov 명령어로 이렇게 말한다:

mov [어디서], [어디에]

예:

mov %rax, (%rbx)

→ rax에 있는 값을, rbx가 가리키는 메모리 주소에 복사해!


🎓 6. 즉시값 사용

mov $100, %rax

→ 그냥 숫자 100을 rax 상자에 넣어줘!

이건 마치 “100이라는 숫자를 직접 넣는 것”과 같다.


🧑‍🏫 전체 흐름 그림으로 정리!

 
[ 즉시값 ] → mov → [ 레지스터 ]
                      ↓
                mov → [ 메모리 ]

✅ 요약

  1. 컴퓨터는 값을 레지스터, 메모리, 즉시값 세 가지 방식으로 다룬다
  2. 주소를 직접 쓰거나 계산해서 메모리에 접근할 수 있다
  3. mov 명령어로 값을 이리저리 옮겨 다니며 프로그램이 작동한다
  4. 이걸 잘 이해하면, 복잡한 프로그램 흐름도 쉽게 읽을 수 있다