함수 호출시 스택 메모리

2023. 1. 5. 14:39개인 공부

https://ko.wikipedia.org/wiki/%EC%BD%9C_%EC%8A%A4%ED%83%9D

 

콜 스택 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 상향 축적 스택의 콜 스택 레이아웃. 콜 스택(call stack) 이란 컴퓨터 프로그램에서 현재 실행 중인 서브루틴에 관한 정보를 저장하는 스택 자료구조이다. 또한

ko.wikipedia.org

 

 

콜 스택 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 상향 축적 스택의 콜 스택 레이아웃. 콜 스택(call stack) 이란 컴퓨터 프로그램에서 현재 실행 중인 서브루틴에 관한 정보를 저장하는 스택 자료구조이다. 또한

ko.wikipedia.org

https://narakit.tistory.com/144

 

[컴퓨터 구조] 스택 포인터와 프레임 포인터

함수 호출과정에서 스택 프레임에 대해 일어나는 일을 알아보도록 한다. 스택 포인터와 프레임 포인터 스택 프레임 (Stack Frame) 기본적으로 함수가 호출될 때마다 전달한 인자와 정의한 지역(자

narakit.tistory.com

https://popcorntree.tistory.com/61

 

[10. 컴퓨터 구조에 대한 세번째 이야기]

* 이 내용은 '뇌를 자극하는 윈도우즈 시스템 프로그래밍' 책의 내용을 정리한 것 입니다. 절차적 함수 호출 (Procedure Call) 지원 CPU 모델 스택 프레임(Stack Frame) 구조 스택 프레임 : 함수 호출 과정

popcorntree.tistory.com

https://boycoding.tistory.com/235

 

C++ 08.10 - 스택과 힙 (Stack and Heap)

스택과 힙 (Stack and Heap) 프로그램이 사용하는 메모리는 일반적으로 세그먼트(segment)라고 하는 몇 가지 다른 영역으로 나뉜다. 코드 세그먼트 : 컴파일된 프로그램이 저장되는 영역, 일반적으로 re

boycoding.tistory.com

https://narakit.tistory.com/144

스택은 주소가 높은곳 -> 낮은곳으로 이동.
함수 호출 시 매개변수가 먼저 쌓이고 
돌아갈 위치에 대한 주소 frame pointer 가 먼저 쌓이고 그 뒤 
지역 변수가 쌓인다.
 
함수 정의는 code 영역에 있지만 함수 호출 시 호출된 함수에 대한 주소는 stack에 할당된다.
그게 함수에 대한 fp .
fp 주소로부터 
1. 매개변수
2. 돌아갈 위치의 fp와 ra 정보 = 돌아갈 함수와 해당 위치 인거 같음.
3. 지역변수 
순으로 스택에 올라간다.
 
스택에 쌓이는 순서는 함수 호출 규약에 따라 다른 것 같다. 마지막 블로그에 설명 나옴.

근데 잘 이해 못함.

stdcall은 호출당한 쪽에서 스택 풀기를 하고
cdecl은 호출한 쪽에서 스택 풀기를 한다.