레지스터
1. 레지스터란 ?
=> 프로세서 안에 존재하는 저장 장치
-메모리나 보조 기억 장치보다 빠르게 동작
1) x86 아키텍처의 레지스터
(1) 범용 레지스터
-EAX ( Accumulator register, 산술 레지스터 ) :연산 결과 저장
-ECA ( Counter register, 카운터 레지스터 ) : 루프 숫자 등의 카운트 저장
-EDX ( Data register, 데이터 레지스터 ) : 연산에 사용하는 데이터 저장
-EBX ( Base register ,베이스 레지스터 ) : 주소의 기본 값 저장
-ESI ( Source Index register ,출발지 인덱스 레지스터 ) : 일부 데이터 전송 명령에서 출발지 저장
-EDI ( Destination Index register, 목적지 인덱스 레지스터 ) : 일부 데이터 전송 명령에서 목적지 저장
(2) 특수 레지스터★
-EBP ( Base Pointer register ,베이스 포인터 레지스터 ) : 현재 스택 프레임의 기준 주소를 저장
-ESP ( Stack Pointer register ,스택 포인터 레지스터 ) : 현재 스택의 최상단 주소 저장
-EIP ( Instruction Pinter register ,명령 포인터 레지스터 ) : 다음에 실행할 어셈블리 명령 주소 저장
< x86 범용 레지스터 >
-범용 레지스터 중 EAX,ECX,EDX,EBX 레지스터의 하위 16비트는 각각 AX,CX,DX,BX 레지스터라고 한다.
그 안에서도 상위 8비트는 AH,CH,DH,BH 레지스터, 하위 8비트는 AL,CL,DL,BL 레지스터라고 한다.
-ESI,EDI 레지스터의 하위 16비트는 각각 SI,DI 레지스터라고 한다.
(3) 플래그 레지스터
-CF ( Carry Flag ,캐리 플래그 ) : 연산 명령으로 Carry(자리 올림) 또는 Boroow(부호 비트 앞 비트에 변경이 생김) 가 발생할때 설정(1) 된다.
-ZF ( Zero Flag ,제로 플래그 ) : 연산 결과가 0이 되는 경우 설정(1) 된다. 아닐 때는 해제(0)
-SF ( Sign Flag ,부호 플래그 ) : 연산 결과가 음수가 될 때 설정(1) 된다. 양수일 경우 해제(0)
-DF ( Direction Flag ,방향 플래그 ) : 문자열 처리를 할 때 연속되는 문자열 처리 방향에 따라 설정(1) 된다.
-OF ( Overflow Flag ,오버플로우 플래그 ) : 부호 있는 연산 결과가 레지스터에 저장 가능한 용량보다 큰 경우 설정(1) 된다.
(4) 세그먼트 레지스터
=> 세그먼트 주소를 참조하는 데 사용하는 레지스터
# 세그먼트 : 메모리를 관리하기 위해 저장 데이터의 종류에 따라 영역을 구분하는 것
-CS ( Code Segment register ,코드 세그먼트 레지스터 ) : 코드 세그먼트 주소 저장
-DS ( Data Segment register ,데이터 세그먼트 레지스터 ) : 데이터 세그먼트 주소 저장
-SS ( Stack Segment register ,스택 세그먼트 레지스터 ) : 스택 세그먼틑 주소 저장
-ES ( Extra Segment register ,보조 세그먼트 레지스터 ) : 보조 세그먼트 주소 저장
2) x86-64 아키텍처의 레지스터
=> x86 아키텍처의 레지스터를 확장해서 레지스터 폭이 64비트
< x86-64 범용 레지스터 >