본문 바로가기

System

범용레지스터 [Reversing]

범용레지스터에는 여러 종류가 있습니다.

 

산술논리 범용레지스터 : EAX, EBX, ECX, EDX

 

인덱스 주소 레지스터 : EDI, ESI

 

포인터 주소 레지스터 : EBP, ESP, EIP

 

 

EAX : 산술 논리 연산값을 저장합니다. 'E'가 붙어있으므로 32bit 이고 AX는 16bit 입니다. 'E'는 'Extended'의 약자이며 2배 큰 크기를 의미합니다.


EBX : 주소값을 저장하는 레지스터입니다.


ECX : 반복 카운터 즉, LOOP 명령 사용시 ECX의 카운터 값이 -1 되며 반복되고 0이 되면 반복을 멈춥니다.


EDX : EAX에서 연산후 넘치거나 나눗셈을 했을 때 몫과 나머지를 나눠야 할 때 EDX로 넘어가게 되고 FLAG 레지스터의 flag값을 확인하여 EAX의 연산값이 넘쳤는지 잦은 확인이 필요합니다.


* 산술논리 범용 레지스터는 크키를 나눠서 사용이 가능합니다.

 




AH : 주소값이 큰 값이 들어가게 됩니다.

AL : 주소값이 낮은 값이 들어가게 됩니다.

 

 

 

 

EDI : 복사할 때 목적지의 주소가 들어가게 됩니다. ES 레지스터와 연관되어 있습니다.

 

ESI : 데이터를 조작하거나 복사할 때 출발지의 주소(소스 주소)가 들어가게 됩니다. DS 레지스터와 연관되어 있습니다.

 

 

EBP : 스택의 처음 부분 즉, 처음 스택이 될 때 시작 부분의 주소를 나타나게 됩니다. 시작주소는 생성이 된 후 고정되기 때문에 값이 변하지 않습니다. SS(stack segment)레지스터와 함께 사용됩니다.

 

ESP : 스택의 끝주소 즉, 마지막 부분을 나타내게 되고 스택에 값이 들어오거나 나가게 되면 주소에 변화가 생기게 됩니다.

 

EIP : 다음 실행될 명령어의 주소가 저장됩니다. CS(code segment) 레지스터와 함께 사용됩니다.

 

 - 레지스터는 CPU에서 사용하는 초고속 메모리입니다. CPU의 제조사에 따라 리틀엔디안, 빅엔디안 방식으로 입력됩니다.

반응형