티스토리 뷰

Programming/ASM

레지스터

MitNy 2016. 11. 13. 18:25

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 범용 레지스터 > 




'Programming > ASM' 카테고리의 다른 글

기본적인 어셈블리 명령  (0) 2016.11.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함