IT's 2 EG

범용 레지스터 본문

카테고리 없음

범용 레지스터

엠씨비기 2015. 10. 6. 22:55


레지스터란?


 CPU 레지스터란 데이터를 고속으로 처리하기 위해 CPU 내부에 존재하는 다목적 저장 공간을 말한다. 디버깅을 하기 위해서는 어셈블리 명령어를 잘 알아야 하고, 이러한 어셈블리 코드를 잘 이해하기 위해서는 레지스터에 대한 이해가 필수이다.


범용 레지스터 (General Purpose Register)

 

32비트(4바이트)의 크기를 가지는 범용 레지스터는 주로 상수나 주소를 저장할 때 사용되며 특정 어셈블리 명령에서는 레지스터 조작을 위해 사용된다. 




EAX (Accumulator for operands and results data)

EBX (Pointer to data in the segment)

ECX (Counter for string and loop operations)

EDX (I/O pointer)


위 4개의 레지스터들은 주로 산술연산(ADD, SUB, XOR, OR 등) 명령어에서 상수 또는 변수 값을 저장하기 위해 많이 사용된다. 추가적으로 EAX는 함수의 리턴값을 ECX는 반복문에서 반복 카운트로 사용이 된다.


EBP (Pointer to data on the stack)

ESI (source pointer for string operations)

EDI (destination pointer for string operations)

ESP (Stack pointer)


위 4개의 레지스터들은 주로 메모리 주소를 저장하는 포인터로 사용된다. 이 중 ESP는 스택 메모리 주소를 가리키며, PUSH, POP, CALL, RET 등의 명령어는 ESP를 직접 조작하기도 한다. EBP는 함수가 호출되었을 때 그 순간의 ESP를 저장하고 있다가, 함수가 리턴하기 직전에 다시 ESP에 값을 되돌려주어 스택이 깨지지 않도록 하는 역할을 한다. 이를 Stack Frame 기법이라고 한다. ESI, EDI는 LODS, STOS, REP, MOVS 등과 함께 주로 메모리 복사에 사용된다.

Comments