Reversing Study - day 2(레지스터)
레지스터란?
CPU 내부에 존재하는 다목적 공간. CPU 내에서 처리할 명령어나 연산에 사용할 값이나 연산 결과를 일시적으로 기억하는 장치
다양한 종류의 레지스터*가 존재하지만 지금은 리버싱 기초를 위한 레지스터들만 먼저 정리해두겠다.
범용 레지스터(General Purpose Registers)
상수/주소 등을 저장할 때 주로 사용되는 레지스터로 특정 어셈블리 명령어에서는 특정 레지스터를 조작하기도 한다.
- EAX: Extended Accumulator Register, 일반적으로 함수 리턴 값에 사용
- EBX: Extended Base Register
- ECX: Extended Counter Register, 반복문 명령어에서 반복 카운트로 사용
- EDX: Extended Data Register
- EBP: Extended Base Pointer, 하나의 스택 프레임의 시작 지점 주소 저장
- ESI: Extended Source Index
- EDI: Extended Destination Index
- ESP: Extended Stack pointer
세그먼트 레지스터(Segment Register)
- CS: Code Segment, 코드가 존재한는 세그먼트 오프셋 저장
- SS: Stack Segment, 프로그램에 사용되는 데이터가 존재하는 세그먼트 오프셋 저장
- DS: Data Segment, 스택이 존재하는 세그먼트 오프셋 저장
- ES: Extra Segment
- FS: Data Segment
- GS: Data Segment
명령 포인터(Instruction Pointer)
- EIP: Extended Instruction Pointer, 다음에 실행해야 할 명령어가 존재하는 메모리 주소 저장
컴퓨터 레지스터(프로세서마다 다르게 정의되고 호칭됨)
- 범용 레지스터, 프로그램 카운터(다음 인출할 명령어 주소를 임시 저장), 명령어 레지스터(가장 최근 인출된 명령어를 임시 저장), 데이터 레지스터, 주소 레지스터, 입출력 레지스터 등
참고: http://www.ktword.co.kr/word/abbr_view.php?m_temp1=5269