코가손의 블로그
레지스터 본문
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 |