push rbp
mov rbp, rsp
sub rsp, 0x10
mov dword[rbp - 0x4], 0x0
이렇게있으면 rsp는 rbp주소를 가르키고있을텐데
그럼 rsp에서 0x10빼면 rbp와 rsp사이의 거리가 0x10인 공간이 만들어진다는건가?
그렇다고 보기에는 rbp-0x4에 0을 넣으면 공간이 빌거아냐
0x10의 공간에 0x4에만 0만 넣으면 메모리 낭비 아니냐?
뭔가 내가 잘못알고있는거 같은데 알려줄사람
이렇게있으면 rsp는 rbp주소를 가르키고있을텐데
그럼 rsp에서 0x10빼면 rbp와 rsp사이의 거리가 0x10인 공간이 만들어진다는건가?
그렇다고 보기에는 rbp-0x4에 0을 넣으면 공간이 빌거아냐
0x10의 공간에 0x4에만 0만 넣으면 메모리 낭비 아니냐?
뭔가 내가 잘못알고있는거 같은데 알려줄사람
push rbpmov rbp, rsp sub rsp, 0x10 이게 함수 프레임 잡는 작업인데
rsp 에서 0x10만큼 빼주게되면 지역변수 공간에 0x10 사이즈만큼 잡히게 된다. 니가 궁금해하는 mov dword[rbp - 0x04] ,0x0 이 명령어는 그냥 c언어에서 처럼 int a = 0; 이런 코드처럼 메모리공간 초기화 하는 코드라고 보면된다. 니가 질문한것중에 왜 [rbp-0x04]에만 값을 0 을넣었냐고 물어보면 그냥 그 코드를 개발한 사람이 저 변수공간에만 0 을 넣어서 초기화 햇기 때문이겟지 메모리 낭비가아니라 그냥 저 지역변수만 초기화 해준거야 밑에 어셈까지 분석해보면 아마 다른 변수 공간도 사용할거야