작성
·
153
0
위 체크한 부분에서 스택에 범위를 설정한다 하셨는데
이전 함수ebp를 푸쉬한다음 ebp에 esp를 넣어놓고, 매개변수와 리턴할주소값을 일단 넣은 다음 공간을 확보하는건가요?
순서가
1.이전함수bp값을 저장
2.ebp값을esp로 설정
3.esp에 사용할범위설정
맞나요?
정확히 어떤식으로 영역설정이 되는건가요?
답변 1
1
이전 함수ebp를 푸쉬한다음 ebp에 esp를 넣어놓고, 매개변수와 리턴할주소값을 일단 넣은 다음 공간을 확보하는건가요?
네 맞습니다!
1.이전함수bp값을 저장
-> 함수가 끝나면 이전 함수 영역으로 돌아가야 하니 복원 용도로 이전 bp값을 스택에 저장합니다.
2.ebp값을esp로 설정
-> 현재 esp 값이 딱 현재 함수의 스택 프레임 시작 영역이니 이를 ebp로 '찝어줍니다'
3.esp에 사용할범위설정
-> sub esp, XX 를 이용해 esp를 크게 내려줘서 결과적으로 ebp~esp 로 가리키는 중간 영역을 사용하게 됩니다.
아하 답변 감사합니다.