일부 함수들은 가변적인 저장 공간 크기를 필요로 한다. 이를 위해 스택에 임의의 크기 바이트를 할당하는 표준 함수를 사용한다 (%표시는 레지스터를 의미한다) X86-64 코드는 %rbp를 프레임 포인터(Frame Pointer)(Base Pointer)로 사용해 가변 프레임을 할당한다.
%rbp는 피호출자 저장 레지스터이기에 프레임 포인터로 사용시 기존에 저장되어 있던 값을 스택에 저장하고 사용된다. 아래 함수 Vframe을 보며 가변 프레임을 어떻게 사용하는지 알아보자 함수 vframe의 인자 n은 함수 실행 때마다 값이 달라지기 때문에 컴파일러가 값을 예측할 수 없다.
또한 포인터 배열 p는 포인터 배열이고 n을 인자로 사용하기에 8n 크기의 공간을 스택에..........
가변 크기 스택 프레임 원리에 대한 요약내용입니다.
자세한 내용은 아래에 원문링크를 확인해주시기 바랍니다.