코가손의 블로그

레지스터 본문

CS 및 기본기

레지스터

Cogason 2021. 11. 9. 20:41

CPU의 연산을 돕기 위한 임시적인 저장 공간이다. 

32비트 시스템에서의 레지스터를 표현하면 아래의 그림과 같다.

EAX(Extended Accumulator Register) : 산술/논리 연산 수행, 함수의 반환값 저장하여 호출 함수의 성공 여부, 실패 여부를 쉽게 파악 가능하다.

EBX(Extended Base Register) : ESI/EDI 레지스터와 결합될 수 있으며 기본적으로는 메모리 주소 저장 용도

EDX(Extended Data Register) : EAX와 같이 쓰이고 부호 확장 명령 등에 쓰임, 큰 수의 곱셈 또는 나눗셈 등의 연산이 이루어질 때, EAX레지스터와 함께 쓰임

ECX(Extended Counter Register) : 반복 명령어 사용시 반복 카운터, 시프트 연산자(비트 이동) 등에 사용됨

 

ESI/EDI(Extended Source/Destination Index) :

ESI - 데이터를 조작, 복사시에 소스 데이터의 주소가 저장됨

EDI - 복사 시에 목적지의 주소가 저장됨

 

ESP/EBP(Extended Stack/Base Pointer) :

ESP - 스택 프레임의 끝 지점 주소(스택의 가장 최근 정보)저장됨, PUSH, POP 명령에 따라 ESP의 값이 4바이트(64비트면 8바이트)씩 변함.

EBP - 스택 프레임의 시작 주소 저장됨. 현재 사용되는 스택프레임이 소멸되지 않는 이상 EBP 레지스터의 값은 변하지 않음

 

 

레지스터 할당

추가

레지스터를 전부 사용하려면 rax(8바이트)

부분사용하려면 eax(4바이트), ah, al 등의 방법이 있다고 함

'CS 및 기본기' 카테고리의 다른 글

Vector의 push_back vs emplace_back 차이점  (0) 2023.01.16
Vector vs List 차이와 캐시적중률  (0) 2023.01.16
메모리 영역, 스택 프레임  (0) 2021.11.09
컴퓨터 구조  (0) 2021.11.09
엔디안(Endianness)  (0) 2021.11.09
Comments