Menu
Coddy logo textTech

명령어의 작동 원리

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

CPU가 명령을 하나씩 실행한다는 것은 알고 있습니다. 하지만 CPU는 다음에 어떤 명령을 실행해야 하는지 어떻게 알까요? 명령은 어디에 저장되어 있을까요? 그리고 명령은 실제로 어떤 모습일까요?

instruction은 숫자입니다.

이는 컴퓨터에 대한 근본적인 사실입니다. 모든 것은 숫자입니다. 여러분이 다루는 데이터(예: 숫자 42)도 숫자입니다. 데이터가 저장된 주소(예: 1000)도 숫자입니다. 그리고 명령어 자체(예: mov, add, cmp)도 숫자입니다.

mov rax, 5와 같은 어셈블리 코드를 작성하면, 어셈블러는 사람이 읽을 수 있는 이 텍스트를 CPU가 이해하는 숫자로 변환합니다. 이 숫자를 명령어 코드라고 합니다.

instruction은 어디에 저장되나요?

명령어는 데이터와 마찬가지로 메모리에 저장됩니다. 명령어를 위한 특별한 장소는 없습니다. 메모리에는 다음 두 가지가 모두 저장됩니다:

  • 데이터 (숫자, 문자, 배열)
  • 명령어 (프로그램 자체)

CPU는 차이를 알지 못합니다. CPU는 단순히 Program Counter가 가리키는 메모리 address에 있는 내용을 읽습니다. Lesson 0.1에서 PC에 대해 간략히 배웠습니다. 이제 PC가 정확히 어떻게 작동하는지 이해할 때입니다.

프로그램 카운터(명령어 포인터라고도 함)는 CPU 내부의 특수 레지스터입니다. 프로그램 카운터의 유일한 역할은 실행할 다음 명령어의 메모리 주소를 저장하는 것입니다.

가져오기-실행 사이클:

CPU는 다음 세 단계를 영원히 반복합니다:

단계수행 내용
1. FETCHPC의 주소에 있는 instruction을 Read
2. EXECUTE해당 instruction을 Perform
3. ADVANCEPC를 next instruction으로 Move

간단한 예:

PC = 1000이면 CPU는 다음을 수행합니다:

  • address 1000의 instruction을 가져옵니다
  • 이를 실행합니다
  • PC를 next address(1000 + instruction size)로 이동합니다

그런 다음 새로운 PC 값으로 반복합니다.

명령어의 형태:

모든 명령어는 두 부분으로 구성됩니다.

부분수행하는 작업예시
Opcode수행할 작업mov, add, cmp
Operands작업을 수행할 대상rax, 5, [result]

어떤 명령어는 피연산자가 하나입니다(inc rax처럼 1을 더하는 경우). 어떤 명령어는 피연산자가 두 개입니다(mov rax, 5처럼). 어떤 명령어는 피연산자가 세 개입니다(일부 아키텍처에서의 add rax, rbx, rcx처럼).

직접 해보기

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

quiz icon실력 점검

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

기초의 모든 레슨

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