빼미의 개발일기

[컴퓨터 구조] - 10강. 레지스터 본문

프로그래밍/컴퓨터 구조

[컴퓨터 구조] - 10강. 레지스터

빼미01 2023. 7. 24. 22:05
이 글은 한빛미디어 '혼자 공부하는 컴퓨터 구조 + 운영체제'를 공부하고 정리한 내용입니다.


프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장된다.

● 레지스터 : CPU 내부의 작은 임시저장장치 - 프로그램 속 명령어 & 데이는 실행 전후로 레지스터에 저장

 

● 반드시 알아야 할 레지스터 (1)

1. PC (Program Counter) : 메모리에서 가져올 명령어의 주소 (메모리에서 읽어 들일 명령어의 주소) 저장

2. IR (Instruction Register) : 해석할 명령어 (방금 메모리에서 읽어 들인 명령어) 저장

3. MAR (Memory Address Register) : 메모리 주소 저장

4. MBR (Memory Buffer Register) : 해당 주소에서 가져온 명령어 & 데이터를 저장

PC, MAR, MBR, IR의 역할과 구동 방식 GIF

 

◆ 순차적인 실행 흐름이 끊기는 경우

- PC는 순차적으로 증가하며 프로그램을 차례대로 실행하는데, 명령어 중 JUMP, CONDITIONAL JUMP, CALL, RET와 같은 특정 메모리 주소로 옮기는 명령어가 실행될 때는 해당 메모리 주소를 PC에서 적용하여 저장하게 된다.

(PC 1200번지 실행 중 - JUMP 2500 명령어 -> PC 2500부터 순차적 실행)

또한 인터럽트가 발생해도 프로그램의 순차적 실행이 끊김.

 


● 반드시 알아야할 레지스터 (2)

5. FR (Flag Register)

- ALU 연산 결과에 따른 플래그를 저장하는 레지스터.

  • CF (Carry Flag) : 산술 연산에 의한 자리 올림이나 자리내림이 발생할 때 1
  • ZF (Zero Flag) : 산술 연산 결과가 0이면 1, 0 이외는 0
  • OF (Overflow Flag) : 부호가 있는 수의 오버플로우가 발생하거나 MSB(2진수의 최상위 비트)를 변경했을 때 1
  • PF (Parity Flag) : 산술 연산 결과가 짝수이면 1
  • AF (Adjust Flag) : 8비트 피연산자를 사용한 산술 연산에서 비트 3을 비트 4로 자리올림하면 1
  • SF (Sign Flag) : 산술 및 논리 연산 결과가 음수이면 1
  • DF (Direction Flag) : 스트링 명령을 제어해서 DF가 1이면 스트링을 높은 주소에서 낮은 주소로 처리, 0이면 스트링을 낮은 주소에서 높은 주소로 처리
  • TF (Trap Flag) : 디버깅을 할 때 Single Step Mode(한 번에 하나의 명령어만 실행되는 모드)를 활성화하면 1
  • IF (Interrupt enable Flag) : 프로세서의 인터럽트 처리 여부를 제어 IF가 1이면 시스템에서 인터럽트를 처리, 0이면 시스템에서 인터럽트를 무시

 

 

6. 범용 레지스터 (General Purpose Register)

- 이름대로 자유롭게 사용할 수 있는 레지스터. 하지만 사용용도나 저장되는 값에 따라 저장공간은 지정된다.

  • EAX (Extended Accumulator Register) :
    함수의 리턴 값 저장이나 산술 연산에 이용. Win32 API 함수들은 모두 리턴 값을 EAX에 저장한 후에 리턴.
  • EBX (Extended Base Register) :
    메모리 주소를 저장하기 위한 용도로 사용. DS 세그먼트의 포인터를 주로 저장
  • ECX (Extended Count Register) :
    반복적으로 실행되는 특정 명령에 사용 (루프, 반복문). 좌우 시프트 연산자에도 사용.
  • EDX (Extended Data Register) :
    일반적인 자료를 저장할 때 사용. 입출력 연산에도 사용. 큰 수의 곱셈과 나눗셈 연산에서는 EAX와 함께 사용.

 

7. 스택 포인터 (Stack Pointer)

- CPU 안에서 스택에 데이터가 채워진 위치를 가리키는 레지스터. 즉 스택의 꼭대기를 가리키며, 스택에 값이 쌓이거나 빠질 때마다 스택 포인터의 값도 변함.

 

8. 베이스 레지스터 (Base Register)

- 데이터용 메모리 영역의 시작 주소를 저장하는 레지스터.

- 베이스 레지스터는 주소 지정 방식을 정할 때 사용하는데, PC를 사용할 때와 베이스 레지스터를 사용할 때로 주소 지정 방식이 나눠진다.

 

● 상대 주소 지정 방식 : 오퍼랜드와 프로그램 카운터의 값을 더하여 유효 주소를 얻는 방식

상대 주소 지정 방식

● 베이스 레지스터 주소 지정 방식 : 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식

 

Comments