나의 기록, 현진록

[Reversing] 레지스터 본문

-Computer Theory

[Reversing] 레지스터

guswlsdk 2017. 9. 9. 13:04
반응형

레지스터란?


메모리 계층의 최상위 계층인 기억 장소이다.                

CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장한다.

레지스터는 공간은 작지만 CPU와 직접 연결되어 있으므로 연산 속도가 메모리보다 훨씬 빠르다.



레지스터의 종류

  • 데이터 레지스터 : 정수 값을 저장할 수 있는 레지스터
  • 주소 레지스터 : 메모리 주소를 저장하여 메모리 접근에 사용되는 레지스터
  • 범용 레지스터 : 데이터와 주소를 모두 저장할 수 있는 레지스터
  • 부동 소수점 레지스터 : 부동소수점 값을 저장하기 위해 사용된다.
  • 상수 레지스터 : 0이나 1등 고정된 값을 저장하고 있는 레지스터
  • 특수 레지스터 : 프로그램의 상태를 저장한다.
    • 명령 레지스터 : 현재 실행 중인 명령어를 저장한다.
    • 색인 레지스터 : 실행 중에 피연산자의 주소를 계산하는 데 사용된다.

범용 레지스터

E(약어, 접두어) - 32비트

X(접미어) - 레지스터

I(접미어) - 인덱스

P(접미어) - 포인터


  • EAX = 함수의 리턴 값 저장
  • EBX = ESI나 EDI와 결합하여 인덱스에 사용
  • ECX = 반복 명령어 사용 시 반복 카운터 저장, 반복 횟수 지정 및 반복 작업 수행
  • EDX = EAX와 같이 사용되며 부호 확장 명령 등에 활용

  • ESI = 데이터 복사 및 조작시 소스 데이터 주소가 저장
  • EDI = 복사 작업 시 목적지 주소가 저장

  • EBP = 하나의 스택 프레임의 시작 주소가 저장, 스택 프레임이 없어지기 전까지 EBP는 불변, 없어지면 이전에 사용되던 스택 프레임을 가리킴
  • ESP = 하나의 스택 프레임의 끝 지점 주소 저장, push, pop 명령어에 따라 ESP의 값이 4byte씩 변함
  • EIP = 다음에 실행할 명령의 메모리 주소를 저장, 현재 명령어 실행 다음에는 EIP 레지스터에 저장된 주소에 있는 명령어를 실행. 실행하기 전 EIP에 다음 실행할 명령어 주소 값이 저장


반응형

'-Computer Theory' 카테고리의 다른 글

[Reversing] Breakpoint  (0) 2017.09.09
[Reversing] API  (0) 2017.09.09
[Reversing] 어셈블러의 종류  (0) 2017.09.09
[Reversing] OEP & EP  (0) 2017.09.09
[OS] 프로세서 / 프로그램 / 프로세스  (0) 2017.07.22