esp(rsp)포인터는 스택 최상단(가장낮은주소)를 가르키고 변화일어날때마다 갱신되지만
ebp는 새로운 함수 호출시마다 리턴 어드레스부터 깔고 ebp가 들어가는데 그럼 함수내에서 함수호출을 반복적으로 할 경우
한 스택(스택프레임x) 내에 ebp포인터는 여러개가 존재할 수 있음? 어캐 그게 가능함? ebp든 esp든 레지스터는 하나만 갖고 있는거아님??
내가 빡대가리라 잘못이해한거면 지적부탁함...
esp(rsp)포인터는 스택 최상단(가장낮은주소)를 가르키고 변화일어날때마다 갱신되지만
ebp는 새로운 함수 호출시마다 리턴 어드레스부터 깔고 ebp가 들어가는데 그럼 함수내에서 함수호출을 반복적으로 할 경우
한 스택(스택프레임x) 내에 ebp포인터는 여러개가 존재할 수 있음? 어캐 그게 가능함? ebp든 esp든 레지스터는 하나만 갖고 있는거아님??
내가 빡대가리라 잘못이해한거면 지적부탁함...
저 서브루틴의 ebp, 저 서브루틴이 부른 서브루틴의 ebp, 저 서브루틴이 부른 서브루틴의 서브루틴의 ebp...
그렇게 ebp를 많이 가지면 ebp주소는 레지스터에서 어떻게 판단함? ebp값 넣는 공간도 레지스터에 단일주소로 존재하는거 아님? eax ebx ecx 처럼?
아랫놈말처럼 프롤로그에서 push ebp 에필로그에서 pop ebp해서 씀
함수 프롤로그 검색ㅇㅅㅇ
ebp랑 esp를 stack push, pop 해놓고 가져다 쓰던데