[Assemble] 메모리 구조
Assemble

[Assemble] 메모리 구조

오늘은 메모리 구조에 대해 정리해보겠습니다.

 

 

 

메모리 구조를 그림을 표현한다면  저렇게 형상화 할 수 있습니다.

 

1. Stack

 

Stack 영역에는 함수들과 지역변수에 대한 정보들이 저장된다고 합니다.

 

함수를 호출할때마다 Stack 영역에 쌓인다고 합니다.

그래서  취약점이 많이 발견되는 부분이라 하고 

BOF같은 공격을 실행할 수 있는 영역이라고 합니다.

 

2. heap

 

동적으로 메모리가 할당되는 변수들에 대한 정보가 저장되는 공간입니다.

 

c언어에서 malloc()과 같은 함수를 사용하여 동적할당이 된 변수들은 

heap 구역에 정의가 됩니다.

 

3. bss & data

 

프로그램에서 쓰여질 변수들이 실질적으로 위치하는 공간입니다.

 

bss는 초기화가 되지 않은 변수들이 위치하는 공간이고,

data는 초기화가 된 변수들이 위치하는 공간입니다.

 

 

3. text

실제로 우리가 쓴 코드들이 text 공간에 저장이 되면서

코드들을 기계가 해석하며 실행이 됩니다.

 

 

 

 

몇일 전 어셈블리로 Hello World를 적어 보았던 코드들을

보면서 한번 더 정리 하겠습니다...

 

 

 

 

 

윗 글에 정리 해둔것 처럼 data 공간에는 Hello World라고

초기화된 변수가 들어갑니다.

 

 

마지막 text 공간에는 실질적으로 실행될 코드들이 들어갑니다.

 

변수들을 출력하는데 필요한 레지스터로 시스템 시스템 콜을 해줍니다.

 

그럼 우리는 실질적으로 Hello World라는 글자를 볼 수 있게 되는 겁니다.

 

 

오개념이 있다면 더 열심히 공부하면서 더 배우도록 하겠습니다.

감사합니다.

'Assemble' 카테고리의 다른 글

[Assemble] 반복문 구현하기  (0) 2020.06.01
[Assemble] 기초 문법 정리  (0) 2020.05.31
[Assemble] 입력한 값을 출력하는 프로그램 만들기  (0) 2020.05.30
[Assemble] Hello World!  (0) 2020.05.27