본문 바로가기

스택 메모리2

[C언어]함수 호출을 통한 스택 메모리 이해[1](by 어셈블리어) 이번 글에서는 간단한 함수 호출을 하는 코드를 어셈블리어로 보면서 스택메모리가 실제로 어떻게 변수를 쌓아가는지를 배우겠습니다. 이번글에 들어가기 전에 먼저 알아야 될 용어들은 EBP (Extended Base Pointer), ESP (Extened Stack Pointer) 스택프레임입니다. EBP, ESP, 스택프레임이란? EBP (Extended Base Pointer)는 현재 스택프레임의 첫 주소입니다. EBP (Extended Stack Pointer)는 영어를 보시다시피 현재 스택이 어디까지 채워져 있는지 보여주는 포인터입니다. 스택프레임 (Stack Frame)은 각 함수가 사용하는 스택 메모리 범위입니다. 스택 프레임은 보통 ebp, esp사이의 범위입니다.(하지만 esp는 움직이는 포인터.. 2023. 2. 21.
[C언어]스택(Stack) 메모리 스택 메모리 (LIFO, Last In Firtst Out) 스택 메모리는 각 함수(main함수도 함수다)에서 사용하는 지역 변수등을 임시적으로 저장하는 공간이다. 스택 메모리의 크기는 프로그램 빌드시 결정이 된다(함수를 다 호출할 때 필요한 메모리를 컴파일할 때 결정) 스택 메모리 위치는 프로그램 실행시에 운영체제가 알아서 붙여준다.(가상 페이징, 가상 메모리 개념) 운영체제가 알아서 붙여주기에 반드시 그림처럼 '코드, 데이터, 힙, 스택'순으로 주소가 생기지는 않지만, 전통적으로 그래왔기 때문에 그림을 이렇게 표현하였다. 함수가 호출이 될 때마다 함수에서 필요한 공간만큼 스택에서 떼어 줬다가 함수가 반환을 하면 지워버린 다는 개념 즉, 함수 메모리 영역으로 스택 메모리라고 불린다. 함수 호출 될 때 .. 2023. 2. 17.