우선 메모리나 레지스터의 사용목적은 같다.
컴퓨터에 데이터를 저장하기위해
이건 머리에 박아놔야한다.
다만 좀 더 빠르고 효율적으로 데이터를 저장하고 사용하기위해
레지스터를 사용하는 것이고, 이에 대해 이론적으로 구체적으로 알고싶으면
컴퓨터구조 내지는 운영체제 과목의 메모리 계층(Memory Hierarchy) 개념을 공부하면 된다.
이 글은 포너블 내지는 프로그램 동적 디버깅을 할때 메모리랑 레지스터 헷갈리지 않기위해 적는 글이다.
우선 알아두면 좋을 전제들이 몇개있다.
1. 프로그램에서 데이터를 다루는 주체는 CPU이다.
(따라서 프로그램 명령어. 그러니까 어셈블리어에 있는 데이터들은 다 CPU가 다루는거다.)
2. CPU가 데이터를 사용하기위해선 무조건 레지스터로 옮겨와야한다.
(push / pop은 메모리에 있는 데이터를 메모리로 넣고(push) 레지스터로 가져오는(pop) 명령어다.)
(push / pop은 프로그램 명령어가 메모리와 소통하기위한 명령어다.)
(CPU가 다루는 데이터는 무조건 레지스터에 있다.)
GDB를 할때
레지스터랑 메모리, 헷갈리지말자.
둘다 데이터 저장하는거 맞고 CPU에서 연산, 실행 흐름변경 등등
실행에 영향을 미치는 모든 데이터를 사용 하려면 무조건 레지스터로 가져와야한다.
'공부 > JUN STUDY' 카테고리의 다른 글
MOV와 LEA 어셈블리어 차이 그리고 []의 의미 (RAX와 [RAX]의 차이) (1) | 2022.03.30 |
---|---|
BSS vs 데이터 vs rodata (전역영역 이름 구분하기) (0) | 2022.03.30 |
x86-64 ISA(Instruction Set Architecture)의 여러가지 이름 (Intel64, IA-32e, EM64T, amd64 이거 다 같은거다) (0) | 2022.03.30 |
컴퓨터의 주소표현 (포인터의 크기 & 표현가능한 메모리 주소가 크면 좋은 이유) (0) | 2022.03.30 |
WORD에 대해 (CPU가 한번에 다루는 데이터의 단위란?) (1) | 2022.03.30 |