공부/JUN STUDY

메모리 vs 레지스터 (메모리가 있는데 레지스터 왜 또 쓸까?)

JUNFUTURE 2022. 3. 30. 21:24

우선 메모리나 레지스터의 사용목적은 같다.

컴퓨터에 데이터를 저장하기위해

이건 머리에 박아놔야한다.

 

다만 좀 더 빠르고 효율적으로 데이터를 저장하고 사용하기위해

레지스터를 사용하는 것이고, 이에 대해 이론적으로 구체적으로 알고싶으면

컴퓨터구조 내지는 운영체제 과목의 메모리 계층(Memory Hierarchy) 개념을 공부하면 된다.

 

이 글은 포너블 내지는 프로그램 동적 디버깅을 할때 메모리랑 레지스터 헷갈리지 않기위해 적는 글이다.

 

우선 알아두면 좋을 전제들이 몇개있다.

 

1. 프로그램에서 데이터를 다루는 주체는 CPU이다.

(따라서 프로그램 명령어. 그러니까 어셈블리어에 있는 데이터들은 다 CPU가 다루는거다.)

 

2. CPU가 데이터를 사용하기위해선 무조건 레지스터로 옮겨와야한다.

(push / pop은 메모리에 있는 데이터를 메모리로 넣고(push) 레지스터로 가져오는(pop) 명령어다.)

(push / pop은 프로그램 명령어가 메모리와 소통하기위한 명령어다.)

(CPU가 다루는 데이터는 무조건 레지스터에 있다.)

 

GDB를 할때

겁나 헷갈린다 진짜로

레지스터랑 메모리, 헷갈리지말자.

둘다 데이터 저장하는거 맞고 CPU에서 연산, 실행 흐름변경 등등

실행에 영향을 미치는 모든 데이터를 사용 하려면 무조건 레지스터로 가져와야한다.