상태 레지스터

위키백과, 우리 모두의 백과사전.

상태 레지스터 또는 플래그 레지스터마이크로프로세서에서 다양한 산술 연산 결과의 상태를 알려주는 플래그 비트들이 모인 레지스터이다.

주로, 조건문과 같은 실행 순서의 분기에 사용된다.

상태 레지스터 플래그[편집]

상태 레지스터에는 다음과 같은 플래그들이 있다.

플래그 기호 이름 의미
Z 제로 플래그 연산 결과가 0일 경우에 참이 된다.
C 캐리 플래그 부호 없는 숫자의 연산 결과가 비트 범위를 넘어섰을 때 참이 된다.
A 보조 캐리 플래그 연산 결과 하위 니블(4bits)에서 비트 범위를 넘어섰을 때 참이 된다. 이진화 십진법(BCD) 연산에 사용된다.
V / O / W 오버플로 플래그 부호 있는 숫자의 연산 결과가 비트 범위를 넘어섰을 때 참이 된다.
N / S 네거티브 플래그, 사인 플래그 연산 결과가 음수일 때 참이 된다.
I / E 인터럽트 플래그 이 플래그가 참일 경우에만 인터럽트 요구를 받아들인다. 일반적으로 관리자 모드에서만 값을 변경 할 수 있다.
P 패리티 플래그 연산 결과에서 1로된 비트의 수가 짝수일 경우 참이 된다.
D 디렉션 플래그 문자열 조작에서 참일 경우 주소 레지스터 값이 자동으로 감소하고, 거짓일 경우 자동으로 증가한다.
D / T 디버그 플래그, 트랩 플래그 참일 경우 한 명령이 실행할 때마다 인터럽트가 발생한다. 디버깅에 사용된다.

상태 레지스터의 구조[편집]

상태 레지스터의 구조는 프로세서의 설계에 따라 플래그의 기능이 약간씩 다를 수 있으며, 일부 아키텍처는 상태 레지스터가 존재하지 않는다.[1]

6502[편집]

플래그 바이트로 불리며, 크기는 8비트이다.

7 6 5 4 3 2 1 0
N V B D I Z C
  • Bit 4. 브레이크 플래그 : BRK 인터럽트의 발생을 알려준다.[2]
  • Bit 3. 십진 플래그 : 참일 경우 이진화 십진법 모드에서 동작한다.

Z-80[편집]

7 6 5 4 3 2 1 0
S Z H P/V N C
  • Bit 4. Half-carry 플래그 : 이진화 십진법 변환 연산인 DAA와 같은 연산에서 사용.
  • Bit 2. Parity / Overflow 플래그: (마지막) 연산이 (AND, OR, XOR와 같은) 8-bit 논리연산 혹은 shitf 연산이었다면 parity (0이면 odd), 산술계열 연산이었다면 overflow (1이면 overflow)를 나타냄.
  • Bit 1. Negative 플래그 : (마지막) 연산이 빼기 계열의 연산 (SUB, SBC, DEC, CP)이면 1.

8086[편집]

8086의 상태 레지스터

플래그 레지스터로 불리며, 크기는 16비트이다.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
O D I T S Z A P C
  • Bit 10. 디렉션 플래그

각주[편집]

  1. MIPS와 아이테니엄 아키텍처는 상태 레지스터가 존재하지 않는다.
  2. 6502은 BRK와 IRQ 두 종류의 인터럽트가 있다.