Register - 2009/04/07
-
General Register
-
Pointer Register
-
Index Register
-
Instruction Register
-
Segment Register
-
Flag Register
-
Control Register
-
Debug Register
범용 레지스터
l EAX (Extended Accumulator Register)
[ 곱셈과 나눗셈 명령에서 자동으로 사용되고 함수의 리턴값이 저장되는 용도로도 사용된다.
l EBX (Extended Base Register)
[ ESI나EDI와 결합하여 인덱스에 사용된다.
l ECX (Extended Counter Register)
[ 반복 명령어 사용시 반복 카운터로 사용된다. ECX 레지스터에 반복할 횟수를 지정해 놓고 반복 작업을 수행하게 된다.
l EDX (Extended Data Register)
[ EAX와 같이 쓰이며 부호 확장 명령 등에 쓰인다.
l ESI (Extended Source Index)
[ 데이터 복사나 조작시 Source Data의 주소가 저장된다. ESI 레지스터가 가리키는 주소의 데이터를 EDI 레지스터가 가리키는 주소로 복사하는 용도로 많이 사용된다.
l EDI (Extended Destination Index)
[ 복사 작업시 Destination의 주소가 저장된다. 주로 ESI 레지스터가 기리키는 주소의 데이터가 복사된다.
l ESP (Extended Stack Pointer)
[ 하나의 스택 프레임의 끝 지점 주소가 저장된다. PUSH, POP 명령어에 따라서 ESP의 값이4Byte씩 변한다.
l EBP (Extended Base Pointer)
[ 하나의 스택 프레임의 시작 지점 주소가 저장된다. 현재 사용되는 스택 프레임이 소멸되지 않는 동안 EBP의 값은 변하지 않는다. 현재의 스택 프레임이 소멸되면 이전에 사용되던 스택 프레임을 가리키게 된다.
명령 포인터
l EIP (Extended Instruction Pointer)
[ 다음에 실행해야 할 명령어가 존재하는 메모리 주소가 저장된다. 현재 명령어를 실행 완료 한 후에 EIP 레지스터에 저장되어 있는 주소에 위치한 명령어를 실행하게 된다. 실행 전 EIP 레지스터에는 다음 실행해야 할 명령어가 존재하는 주소의 값이 저장된다.
세그먼트 레지스터
l CS (Code Segment)
[ 실행 가능한 명령어가 존재하는 세그먼트의 오프셋이 저장된다.
l DS (Data Segment)
[ 프로그램에서 사용되는 데이터가 존재하는 세그먼트의 오프셋이 저장된다.
l SS (Stack Segment)
[ 스택이 존재하는 세그먼트의 오프셋이 저장된다.
플래그 레지스터
l CF (Carry Flag)
[ 부호 없는 연산 결과가 용량보다 클 때 세트(1)된다.
l ZF (Zero Flag)
[ 연산 결과가 0일 때 세트(1)된다. 연산 결과가 0이 아닐 때 해제(0) 된다.
l OF (Overflow Flag)
[ 부호 있는 연산 결과가 용량보다 클 때 세트(1)된다.
l SF (Sign Flag)
[ 연산 결과가 음수가 되었을 때 세트(1)된다. 연산 결과가 양수가 되었을 때 해제(0)된다.
l DR (Direction Flag)
[ 문자열 처리에서 연속되는 문자열의 처리 방향에 따라 세트된다.
이 글은 스프링노트에서 작성되었습니다.
'Programming > Reversing' 카테고리의 다른 글
ASM 1 (0) | 2009.04.09 |
---|---|
MASM32 / EditPlus 연동 (0) | 2009.04.09 |
Memory (0) | 2009.04.08 |
OpenRCE Anti Reverse Engineering Techniques Database (0) | 2009.03.29 |
모음 - 크랙 관련 사이트 (0) | 2009.03.26 |
댓글