데이터 2

BSS vs 데이터 vs rodata (전역영역 이름 구분하기)

BSS / 데이터 / rodata 세그먼트 모두 전역변수/상수가 저장되는 위치이다. 일단 이거는 머리에 넣어두고 다만 어떤 전역변수/상수가 저장되느냐 인데, 이 글을 통해 살펴보자. 각 세그먼트마다 머리에 넣어두면 좋을 내용을 먼저 정리해보면 BSS 세그먼트 : 프로그램 시작시 모두 0으로 초기화됨 => 선언하고 초기화 하지않은 전역변수 데이터 세그먼트 : 프로그램 시작시 0으로 초기화 안됨 => 초기화된 전역변수/전역상수가 위치하는 영역. rodata 세그먼트 : 데이터 세그먼트 안에 수정 불가능한 영역 => 값이 변하면 안되는 데이터가 위치함. (문자열 / 전역상수) 자 조금만 생각해보자. 전역변수를 선언하고 초기화를 하지 않았으면 프로그램을 실행하는 도중에 변수에 값을 넣어주는 과정이 필연적으로 있..

공부/JUN STUDY 2022.03.30

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

우선 메모리나 레지스터의 사용목적은 같다. 컴퓨터에 데이터를 저장하기위해 이건 머리에 박아놔야한다. 다만 좀 더 빠르고 효율적으로 데이터를 저장하고 사용하기위해 레지스터를 사용하는 것이고, 이에 대해 이론적으로 구체적으로 알고싶으면 컴퓨터구조 내지는 운영체제 과목의 메모리 계층(Memory Hierarchy) 개념을 공부하면 된다. 이 글은 포너블 내지는 프로그램 동적 디버깅을 할때 메모리랑 레지스터 헷갈리지 않기위해 적는 글이다. 우선 알아두면 좋을 전제들이 몇개있다. 1. 프로그램에서 데이터를 다루는 주체는 CPU이다. (따라서 프로그램 명령어. 그러니까 어셈블리어에 있는 데이터들은 다 CPU가 다루는거다.) 2. CPU가 데이터를 사용하기위해선 무조건 레지스터로 옮겨와야한다. (push / pop은..

공부/JUN STUDY 2022.03.30
728x90