레지스터 알아보기

컴퓨터는 cpu와 ram, hdd로 크게 나눠볼 수 있는데 그 중 레지스터는 cpu안에서(내장되어) 연산하는 기능을 담당한다.

 

 

 

어셈블리를 배우기 전 컴퓨터의 연산은

하드디스크에서 파일을 불러와서 불러온 파일을 메인메모리에 복사하고,

복사한 실행파일을 cpu와 서로 주고받으며 연산을 하는것으로 알고 있었는데..

cpu안에 있는 레지스터라는 것도 연산을 담당하고 있었다.

그런데 굳이 필요할까?

 

 

 

cpu는 연산을 할 때, 중간중간 연산한 결과들을 어딘가에 잠시 저장해야 하는 경우가 있다.

그런데 그 결과들을 잠시 저장만 하면 될텐데 그 기록을 굳이 렘이나 하드디스크까지 가서 저장하기는 번거롭다.

 

 

임시로 연산결과를 저장해야 할 필요가 있을 때, 그때 cpu에 내장되어 있는 레지스터라는 작은 용량의 저장소를 이용한다.

cpu에 내장되어 있다보니 연산 결과를 서로 주고받는 속도도 렘이나 하드디스크에 훨씬 빠르다.

 

 

실제로 cpu의 명령어들을 살펴보면 레지스터의 값을 이용하라는 등 cpu는 레지스터와 관련이 아주 많다.

 

 

 

 

 


 

출처 https://kuaaan.tistory.com/449

 

 

레지스터의 크기 또한 정할 수 있는데 rax는 레지스터의 모든 bit(64)를 사용가능한 공간을 이르고

eax는 그 절반인 32bit를 사용할 수 있는 공간, ax는 16bit, al은 8bit(1byte)을 말한다.

 

 

위의 설명에서 a의 위치에 a,b,c,d등등 여러가지의 레지스터의 종류가 많이 있습니다.

 

 

다중 플랫폼 어셈블러 sasm을 이용하여 어셈블러 코드를 작성한 후 결과창을 볼 수 있다.

 

당연히 저 많은걸 다 외우기는 불가능하다고 생각하고, 저는 레지스터라는 저장공간은 정말 다양하게 이루어져 있구나, 로 넘어가면 될것같다.