- 참치군
- ?
- stalk.io
- :: 2013년, 스리는 여섯살
- 웹 강좌
- 점프 투 파이썬
- 요니나의 대학생 재테크
- This is CS50
- 애자일 이야기
- isao의 IT,게임번역소
- 소프트웨어 이야기
- Color Scripter
- 어디를 가든지 마음을 다해 가라
- VisuAlgo
- 서울대 평생교육원
- 몽환
- RegExr: Learn, Build, & Test R…
- Hello, Stranger :D
- I Like Exploit
- Z3alous Security Story
- Project Euler
- Blog
- pieces of code
- window 쪼물딱 거리기
- IT - Informatics Alphabet
- rop
- 국제 정보교육센터 I2sec 대구 1기
- This is the moment. :)
- blackmoon
- z3alous는 세상에 소리 z3alous~
- Acord
- FORENSIC-PROOF
- 어셈블리
- Outsider's Dev Story
- Open Tutorials
- 코드라이언
- 컴퓨터 그래픽스와 3D 프린팅
- HACKABILITY
- Lee, Jae-Hong
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 염색
- 베이스
- 호출규약
- 탈색
- 파이썬
- 레지스터
- 창의공학설계
- Visual Studio
- 피보나치
- 컴파일러
- ubuntu
- Wireshark
- 디버깅
- 알고리즘
- 발표
- C언어
- 펌
- 오지총
- BOF
- Debug
- 동대구
- Packet
- 버퍼오버플로우
- 소켓
- 추상데이터타입
- 공간복잡도
- Calling Convention
- 블루블랙
- 시간복잡도
- Hello World
- Today
- Total
c0smicb0y
범용 CPU 레지스터 본문
레지스터는 CPU의 작은 저장 공간으로 CPU가 데이터에 접근하는 가장 빠른 방법을 제공한다.
x86 명령 셋에서 CPU는 8개의 범용 레지스터(EAX, EDX, ECX, ESI, EDI, EBP, ESP, EBX)를 사용한다.
EAX는 accumlator regiter라고 불리며, 산술 연산을 수행하기 위해 사용 된다. x86 명령 셋에서 최적화된 많은 명령이 데이터 계산과 저장을 위해 EAX 레지스터를 사용하도록 설계되었다. 또한 EAX 레지스터는 함수의 리턴 값을 저장하므로 EAX에 저장된 값을 조사하면 호출한 함수가 어떤 리턴 값을 가지는 지 알 수 있다.
EDX 레지스터는 Data register이다. 이 레지스터는 기본적으로 EAX 레지스터의 확장 개념으로 사용된다. 즉, 나누기나 곱하기 같은 복잡한 연산을 위해 추가적으로 데이터를 저장할 때 사용된다.
ECX 레지스터는 Counter register라 불리며, 반복적으로 수행되는 연산에 주로 사용된다. ECX 레지스터는 무조건 카운트를 세는 것이 아니라 감소시키면서 카운트를 센다.
x86 어셈블리 언어에서 데이터를 처리하는 반복문에서는 효과적으로 데이터를 처리하기 위해 ESI 레지스터와 EDI 레지스터를 사용한다. ESI 레지스터는 데이터 연산을 위한 Source index를 나타내거나 입력 데이터 스트림의 위치를 나타내기 위해 사용된다. EDI 레지스터는 데이터 연산의 Destination index를 나타내거나 데이터 연산의 결과가 저장되는 위치를 나타내는데 사용된다. ESI는 읽기 위해 사용되고 EDI 레지스터는 쓰기 위해 사용된다고 생각하면 된다.
ESP 레지스터와 EBP 레지스터는 Stack pointer와 Base pointer 레지스터이다. 스택을 다루기 위해 사용된다.
EBX 레지스터는 특별한 목적으로 설계된 레지스터가 아니라서, 추가적인 저장소로 이 레지스터를 사용한다.
EIP 레지스터는 현재 실행 중인 명령의 주소를 가리킨다.