새소식

인기 검색어

컴퓨터/컴퓨터

범용 레지스터

  • -

레지스터

        CPU 내에서 데이터를 저장하는 장치. 일반적으로 CPU에서 고속으로 계산하는 값을 저장하는 데 사용한다.

        산술논리연산장치(ALU) 에서 처리된 결과 데이터를 임시 보관하고, 주기억장치에서 읽어온 명령어와 데이터를

        임시 보관하기도 한다.

 

 

범용 레지스터

        레지스터의 한 종류로 용도가 정해지지 않은 레지스터이다. 용도가 정해지지 않았으므로 컴퓨터가 다양한 용도로

        사용하는 레지스터이다. 범용 레지스터는 EAX,EBX,ECX 등이 있다.

 

 

디버깅한 어셈블리어 코드의 일부

 

어셈블리어 코드의 일부 이미지를 가져왔다. 위의 코드에서는 EAX가 아닌 RAX, RCX 로 적혀있다.

 

EAX 와 비슷한것 같긴한데 앞에 한 글자가 다르다. E가 아닌 R인데, 어떤 차이가 있을까?

 

이를 설명하기 위해 먼저 WORD 에 대한 설명을 하려고 한다.

 

 

WORD : CPU가 사용하는 값의 크기 단위. 크기는 16비트이다.

 

 

16비트 CPU가 처음 등장했을 때 CPU가 사용하는 값의 기준이 WORD 였으며

 

이 CPU의 레지스터의 이름은 AX,BX,CX 로 명명되었다. 이후 32비트(DWORD), 64비트(QWORD) 로 확장되면서 기존의

 

이름앞에 각각 E,R을 붙이면서 바뀌게 된 것이다. 글에서는 EAX, 어셈블리어 코드에서는 RAX 로 적혀있지만 두 레지스터

 

가 아예 다른 레지스터는 아니며 32비트와 64비트의 차이인 것이다.

 

 

범용 레지스터의 종류와 용도

EAX 함수의 return 값 저장
ECX 반복문에서 카운터로 사용
EDX EAX와 함께 사용되어 연산을 보조
EBX 메모리 주소를 저장
EDI 데이터를 옮길 때 사용되는 목적지의 주소를 저장
ESP 사용중인 스택의 위치를 가리킴
EBP 스택의 제일 아랫부분의 주소를 저장
ESI 데이터를 옮길 때 원본의 주소를 저장
R8~R15 64비트에서 추가된 레지스터. 다양한 용도로 사용

 

위에 정리된 기능들은 특정상황에서 우선적으로 수행하게 될 기능들이다. 함수가 수행되고 리턴 값을 저장해야 할 때

 

EAX 레지스터를 사용하지만, 그 이외의 상황에서는 EAX를 CPU가 쓰고싶을 때 자유롭게 쓸 수가 있다.

 

정해진 용도 이외에는 사용 불가한 것은 아니다.

 

그리고 함수를 호출할 때 사용하도록 지정되어 있는 범용 레지스터의 순서가 존재하며 이를 함수 호출 규약이라고 한다.

 

함수 호출 규약은 운영체제마다 다르며 함수에서 사용하는 인자들을 정해진 순서대로 저장하게 된다.

 

* 함수 호출 규약

        - Windows 64비트의 경우 : RCX, RDX, R8, R9 순서

        - Linux 64비트의 경우 : RDI, RSI, RDX, RCX, R8, R9 순서 

 

 

 

'컴퓨터 > 컴퓨터' 카테고리의 다른 글

엔디안(Endianness)  (0) 2023.09.04
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.