오늘은 메모리 구조에 대해 정리해보겠습니다.
메모리 구조를 그림을 표현한다면 저렇게 형상화 할 수 있습니다.
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 |