728x90
반응형
스택프레임이란?
스택프레임이란 함수마다 가지는 별도의 스택 공간으로 메모리 스택은 높은 주소에소 낮은 주소로 내려간느 스택 구조를 지닙니다.
또한 rsp가 아니 rbp를 이용하여 디버깅할때 스택 내의 지역 변수, 파라미터, 복귀 주소에 접근하는 기법을 말합니다.
(( rsp, rbp 레지스터에 대한 내용은 전 글 어셈블리어 레지스터에 정리돼있습니다. ))
스택 프레임의 레지스터 구성
rbp, rsp , sfp, rip,ret 등이 있습니다. 전 글에 정리돼 있지않는 레지스터만 설명하도록 하겠습니다.
sfp : 함수 에필로그에서 rbp가 push 할 때 이전 rbp 값을 저장해놓는 장소.
ret : 함수 호출 다음에 실행할 코드의 주소를 담고 있는 있는 값입니다. ret는 pop rip,jmp rip로 구성되어 에필로그에서 rip 값으로 전달되고 다음 코드를 실행합니다. (pop rip, jmp rip 는 rsp 를 rbp 로 복구하고 ret를 통해 다음에 가야 할 주소로 이동하는 것입니다)
스택 프레임의 구조
스택 프레임의 구조는 간단하게
1. 함수시작
2. 현재의 rsp(스택의 끝 주소) 를 rbp(스택의 첫 주소)에 저장
3. 함수 본체
4. rsp 를 정리 (함수가 시작했을때의 초기값으로 복원)
5. 리턴되기 전에 저장해 놓았던 원래 rbp 값으로 복원
6. 함수 종료
이며 스택 프레임의 전달과정, 동작 순서, 구조는 이 링크에 자세하게 정리돼 있습니다.
반응형
'시스템' 카테고리의 다른 글
중앙처리장치- CPU 실행주기 (0) | 2022.01.19 |
---|---|
중앙처리장치-정의,구성 (0) | 2022.01.19 |
리눅스 기본 명령어1 (0) | 2021.12.06 |
어셈블리어 레지스터 (0) | 2021.11.07 |