레지스터
cpu에서 연산을 위해 데이터를 일시적으로 저장하는 공간이며 영어로는 register로 등록/기록을 의미하는 영단어이다.
레지스트리와 이름이 비슷하다고 헷갈리지 말자
레지스트리는 OS의 설정 및 정보를 담고있는 데이터베이스이다.
레지스터의 종류에는
범용 레지스터 : 임시 저장 공간이며 계산, 주소 지정 등의 목적으로 사용한다.
포인터 레지스터 : 메모리 스택 영역과 관련된 주소 값을 저장한다.
인덱스 레지스터 : 문자열 복사/비교와 관련된 레지스터이다.
세그먼트 레지스터 : 다양한 크기로 구분을 하는 목적으로 사용되며 16bit로 구성된다.
플래그 레지스터 : 실행 순서을 제어하기 위한 목적을 사용한다.
가 있다.
일단 범용 레지스터를 제외한 다른 레지스터들은 필요할 때 다시 포스팅 할 예정 사실 아직 안배웠음
범용 레지스터
범용 레지스터는 EAX, EBX, ECX, EDX 등이 있다. (32bit cpu 기준)
레지스터 EAX는 레지스터 AX(16bit)를 포함하고 AX다시 AH(8bit)와 AL(8bit)로 구성된다.
EBX 또한 BX로 구성되어 있고 BX는 BH와 BL로 구성되어 있다. ECX, EDX 또한 마찬가지
64bit의 경우 EAX를 포함하는 레지스터 RAX(64bit)가 있다. 여기서 R은 register의 R이며 EAX의 E는 extended의 E이다.
EAX에 16진법으로 표현된 값 "1234A6C8"이 저장된다면
AX에는 16진법으로 "A6C8"이 저장되고 AH에는 "A6" AL에는 "C8"이 저장된다.
용도
범용 레지스터는 용도를 정해두지 않고 다양하게 쓸 수 있는 레지스터입니다. x32의 범용 레지스터는 총 8개로 원칙적으로 용도가 정해져 있진 않지만, 관행적으로 그 쓰임새가 정해져 있는 경우도 있습니다.
참고문헌
hidaehyunlee님의 어셈블리 프로그램 구조와 x64 레지스터 이해하기
티스토리 블로그 - Wooeong's lab님의 리버싱 기초 지식 : 레지스터
'어셈블리어' 카테고리의 다른 글
어셈블리어 [3] 명령어 (Feat. 플래그 레지스터) (0) | 2021.12.08 |
---|---|
어셈블리어 [1] 기초 (0) | 2021.10.20 |