본문 바로가기

Reversing

[정리] 레지스터

 

레지스터(Register)란 CPU 내부에 존재하는 다목적 저장 공간이다. 우리가

일반적으로 메모리라고 생각하는 RAM과는 조금 다르다. CPU가 RAM에 있는

데이터를 엑세스하기 위해서는 물리적으로 먼 길을 돌아가야 하지만

레지스터는 CPU와 한 몸이기 때문에 고속으로 데이터를 처리할 수 있다.

 

□ 범용 레지스터 : 범용 레지스터(General Purpose Registers)는 이름처럼 범용적으로 사용되는 레지스터들이다.

                            보통은 상수/주소 등을 저장할 때 주로 사용되며, 특정 어셈블리 명령어에서는 특정 레지스터를

                            조작 하기도 한다.

 

산술 연산 레지스터

 

▷ EAX (Accumulation)

  - 산술연산에 사용되는 레지스터이다.

  - 함수의 리턴값에 사용된다.

 

▷ EBX (Base Register)

  - 간접 번지지정에 사용된다.

  - 산수 / 변수를 지정한다.

 

▷ ECX (Counter Register)

  - 반복문 명령어(LOOP)에서 반복 카운트(loop count)로 사용된다.

  - 루프를 돌 때마다 ECX를 1씩 감소시킨다.

 

▷ EDX (Date Register)

  - EAX의 보조 역할을 수행한다.

  - 나눗셈의 경우 몫은 EAX에 나머지는 EDX에 저장된다.

 

인덱스 레지스터

 

▷ ESI (Source Index)

  - 데이터를 조작하거나, 복사시에 소스 데이터의 주소가 저장된다.

 

▷ EDI (Destination Index)

  - 복사시에 소스 목적지의 주소가 저장된다.

 

포인터 레지스터

 

▷ ESP (Stack Pointer)

  - 스택내에서 가장 최근에 저장된 데이터의 주소를 가르킨다.

 

▷ EBP (Base Pointer)

  - 새로운 함수가 시작될때 EBP레지스터 값이 지금까지 사용했던 스택의 맨 위에 위치하며 스택이 시작된다.

 

□ 세그먼트 레지스터 : 세그먼트 레지스터(Segment Registar)는 현재 세그먼트라고 하는 메모리의 한 영역에

                                   대한 주소를 지정해준다.

                                   

▷ CS Register

  - 실행될 기계 명령어를 포함한다.

  - CS Register는 코드 세그먼트의 주소를 의미한다.

 

▷ DS Register

  - 프로그램에서 정의된 데이터, 상수, 작업 영역을 포함한다.

  - DS Register는 데이터 세그먼트의 주소를 포함한다.

 

▷ SS Register

  - 프로그램이 임시로 저장할 필요가 있거나, 사용자의 '피호출' 서브루틴이 사용할 데이터와 주소를 포함한다.

 

□ 프로그램 상태와 컨트롤 레지스터 : Flag Register의 각 비트는 1 또는 0의 값을 가지는데, 이는 On/Off 혹은

                                                        True/False를 의미한다. 일부 비트는 시스템에서 직접 세팅하고, 일부

                                                        비트는 프로그램에서 사용된 명령의 수행 결과에 따라 세팅된다.

 

▷ Zero Flag

  - 연산 명령 후에 결과 값이 0이 되면 ZF가 1(True)로 세팅된다.

 

Overflow Flag

  - 부호 있는 수의 오버플로가 발생했을 때 1로 세팅된다.

  - MSB(Most Significant Bit)가 변경되었을 때 1로 세팅된다.

 

▷ Carry Flag

  - 부호 없는 수의 오버플로가 발생했을 때 1로 세팅된다.

 

 

 

아직 여기 있는 레지스터들을 모두 완벽하게 알고있지는 못하지만 앞으로 공부하다가

더 알게된 내용이나 모르는 내용이 생기면 공부를하고 내용을 추가할 예정이다.

부족한 부분이 있겠지만 앞으로 공부하며 보안할 것이다.

'Reversing' 카테고리의 다른 글

[정리] 어셈블리어  (0) 2020.05.25