작성
·
234
1
안녕하세요 항상 유익한 강의 감사드립니다.
MAX:
push rbp
mov rbp, rsp
mov rax, [rbp+16]
mov rbx, [rbp+24]
cmp rax, rbx
여기서 mov rbp, rsp 를 하지 않고 rsp를 기준으로 연산을 하는게 더 간단할 것 같은데 이렇게 구현하는이유가 함수안에서도 push를 할때가 있어서라고 생각하는데 맞는지 궁금합니다.
답변 1
1
잘 이해하셨습니다.
sp(stack pointer)는 push/pop을 할때마다 위치가 변하는 휘발적인 존재입니다.
따라서 bp(base pointer) 즉 기준이 되는 고정 위치를 정해두고,
bp를 기준으로 코드가 만들어지는 것입니다.
그러면 추후 sp가 변하더라도, 이미 위치를 고정시켜둔 bp는 영향받지 않겠죠.