* 해당 글은 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 도서를 읽고 정리한 글입니다
https://product.kyobobook.co.kr/detail/S000001223395
* 스택 프레임
함수 호출 과정에서 할당되는 메모리 블록
* 메모리 블록
지역변수 선언으로 인해 할당되는 메모리 블록
* 스택에 데이터를 쌓거나 반환하기 위해서는 스택 위치를 기억해야 한다
* sp 레지스터(Stack Pointer 레지스터), ESP
현재 스택의 최상단
* fp 레지스터(Frame Pointer 레지스터), EBP
스택 프레임의 기준 주소
* EBP ~ ESP
현재 함수의 스택 프레임 영역
* 프로세스의 메모리 구조
[Code 영역] - 명령어(Instruction Code)
[Data 영역] - 전역변수, static 변수
[Heap 영역] - 프로그래머 할당
[Stack 영역] - 지역변수, 전달인자 정보
* Code 영역에서 명령어를 IR 레지스터로 데이터를 가져오는 것을 Fetch라고 한다
* 함수 호출규약(Calling Convention)
함수 호출시 인자를 전달하는 방식과 스택 프레임을 반환하는 방식을 약속해 놓은 것
Segment Word Size |
Calling Convention | Parameters in registers |
Parameter order on stack |
Stack cleanup by |
32 bit | __cdecl | ← | Caller(호출자) | |
__stdcall | ← | Function(피호출자) | ||
64 bit |
Windows(MS, Intel) | rcx/xmm0 | ← |
Caller(호출자) |
rdx/xmm1 | ||||
r8/xmm2 | ||||
r9/xmm3 |
* 콜백 함수(Callback Function)
Windows 시스템에 의해 자동으로 호출되는 함수를 의미
특정 상황에서 호출되어야 할 함수를 등록시키는 것이 가능한데, 이때 등록이 되는 함수를 가리켜 콜백 함수라 한다
'IT공부 > IT서적' 카테고리의 다른 글
[윤성우 열혈 C프로그래밍] Chapter21 (0) | 2025.01.30 |
---|---|
[윤성우 열혈 C프로그래밍] Chapter16, Chapter17, Chapter18, Chapter19 (0) | 2025.01.29 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 9장. 스케줄링 알고리즘과 우선순위 (0) | 2025.01.28 |
[윤성우 열혈 C프로그래밍] 디버깅 빌드, 어셈블리 코드 - Chapter11, Chapter12, Chapter13, Chapter14 (0) | 2025.01.27 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 8장. 프로세스간 통신(IPC) - 2 (0) | 2025.01.21 |