ImFe's study

레지스터(register)란? 본문

FTZ

레지스터(register)란?

ImFe 2020. 4. 7. 14:22

 

레지스터는 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치이다.

CPU와 직접 연결되어 있으므로 연산속도가 메모리보다 훨씬 빠르다.

 

 

 

우리가 사용하는 CPU는 특별한 경우가 아닌경우 32bit와 64bit로 나뉘는데 이 비트 수는 명령을 한번에 처리할 수 있는 레지스터의 비트 수를 의미한다.

32bit CPU의 경우 하나의 레지스터는 32bit만큼을 저장 할 수 있다.


64비트 레지스터와 32비트 레지스터. (e -> r 로 변했다.)

       16비트 레지스터에서 e를 붙이면 32비트 레지스터명과 동일해지는데 이는 '확장되었다'를 의미하는 Extended이다.

 


범용 레지스터:
(32bit 레지스터 기준)

 

EAX(Extended Accumulator Register)

:함수 실행후의 결과가 담긴다. 산술연산 명령에서 상수/변수 값을 저장하거나 함수의 리턴값이 저장된다.


EBX(Extended Base Register)

:베이스레지스터. 메모리 주소를 지정할때 사용.

 

ECX(Extended Counter Register)

:카운터 레지스터. 주로 반복문에 많이 사용. ECX 레지스터에 반복할 횟수를 지정해 놓고 반복 작업을 수행하게 된다


EDX(Extended Data Register)

:데이터 레지스터. 연산을 수행할때 eax와 함께 사용되는편. 입,출력 포인터 값을 저장할 때 사용한다


ESI(Extended Source Index):

메모리를 이동하거나 비교할때, 출발지의 주소를 가르킨다. 데이터 복사나 조작 시 Source Data의 주소가 저장된다.
ESI 레지스터가 가르키는 주소의 데이터를 EDI 레지스터가 가르키는 주소로 복사하는 용도로 많이 사용된다.


EDI(Extended Destination Index):

메모리를 이동하거나 비교할때, 목적지 주소를 가르킨다. 복사 작업 시 Destination의 주소가 저장된다. 주로 ESI 레지스터가 가르키는 주소의 데이터가 복사된다.


EBP(Extended Stack Pointer):

함수의 파라미터나. 변수의 주소를 가르킨다. 하나의 스택 프레임의 시작 지점 주소가 저장된다. 현재 사용되는 스택 프레임이 소멸되지 않는 동안 EBP의 값은 변하지 않는다. 현재의 스택 프레임이 소멸되면 이전에 사용되던 스택 프레임을 가리키게 된다.


ESP(Extended Base Pointer):

어떠한 스택의 삽입 및 삭제 명령에 의해 변경되는 스택의 가장 위에 있는 주소(끝 지점 주소) 를 가르킨다.
PUSH, POP명령어에 따라서 ESP의 값이 4Byte씩 변한다.

 

2.명령 포인터 레지스터

EIP(Extended Instruction Pointer)
 다음에 실행해야 할 명령어가 존재하는 메모리 주소가 저장된다. 현재 명령어를 실행 완료한 후에 EIP 레지스터에 저장되어 있는 주소에 위치한 명령어를 실행하게 된다. 실행전 EIP 레지스터에는 다음 실행해야 할 명령어가 존재하는 주소의 값이 저장된다.

 

 

'FTZ' 카테고리의 다른 글

버퍼 오버플로우 왕기초편 - 무임승차 문제  (0) 2020.04.24
FTZ level11풀이-1  (0) 2020.04.12
어셈블리어 기초- 진법 체계  (0) 2020.03.25
FTZ level9 풀이  (0) 2020.02.12
FTZ training 6~10 정리  (0) 2020.01.02
Comments