Menu
Coddy logo textTech

레지스터 vs 메모리

Coddy Assembly 여정의 기초 섹션에 포함된 레슨. 45개 중 3번째.

이제 컴퓨터 내부에서 데이터가 존재할 수 있는 두 곳에 대해 배웠습니다:

  • 레지스터 — CPU 내부의 아주 작은 저장 상자
  • 메모리(RAM) — CPU 외부에 있는 번호가 매겨진 슬롯의 거대한 격자

그런데 왜 두 곳이 있을까요? CPU가 메모리에서 직접 작업하면 안 되는 이유는 무엇일까요?

정답은 속도입니다. register는 CPU 내부에 있기 때문에 매우 빠릅니다. memory는 외부에 있기 때문에 더 느립니다. CPU는 단일 사이클에 register에 액세스할 수 있지만, memory에 액세스하는 데는 훨씬 더 오래 걸립니다.

나란히 비교:

기능레지스터Memory (RAM)
위치CPU 내부CPU 외부
속도매우 빠름 (1 사이클)더 느림 (여러 사이클)
저장 슬롯 수매우 적음 (x86-64에서 16-32개)수백만 또는 수십억 개
각 슬롯의 크기8바이트 (64비트)1바이트
접근 방법이름으로 (rax, rbx, rcx...)주소로 (1000, msg, buffer)
휘발성?예 (전원이 꺼지면 사라짐)예 (전원이 꺼지면 사라짐)

어셈블리에서 가장 중요한 규칙:

CPU는 메모리의 데이터로 직접 작업할 수 없습니다. 먼저 데이터를 레지스터로 로드해야 합니다.

이는 선택 사항이 아닙니다. CPU는 이렇게 설계되어 있습니다. 모든 덧셈, 모든 비교, 모든 데이터 이동은 반드시 register를 거쳐야 합니다.

여러분이 끊임없이 사용하게 될 3단계 패턴:

단계일어나는 일예시
1. LOADmemory에서 register로 데이터를 복사합니다mov rax, [count]
2. WORKregister를 사용해 무언가를 수행합니다add rax, 5
3. STORE필요한 경우 result를 다시 memory로 복사합니다mov [result], rax

이 규칙을 잊으면 어떻게 될까요?

둘 다 memory에 있는 두 숫자를 add하려고 하면 어셈블러가 오류를 표시합니다. CPU는 그렇게 할 수 없습니다. 먼저 두 숫자를 register로 로드해야 합니다.

직접 해보기

이 레슨에는 코드 챌린지가 없습니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: Assembly 플레이그라운드