포인터변수 선언하니까
push rbp
mov rbp, rsp
sub rsp,0x10
mov QWORD PTR [rbp-0x10],0x47f750
mov QWORD PTR [rbp-0x8],0x0
이지랄이넹
포인터변수 선언은 sub에서 공간만들어주는데
중요한건 mov에서 rbp-0x10에 내가 선언한 문자열 들어가고 2바이트 위로 0을 넣네
그럼 0x8이후로 나머지 공간은 뭐냐 메모리 낭비냐?
포인터변수 선언하니까
push rbp
mov rbp, rsp
sub rsp,0x10
mov QWORD PTR [rbp-0x10],0x47f750
mov QWORD PTR [rbp-0x8],0x0
이지랄이넹
포인터변수 선언은 sub에서 공간만들어주는데
중요한건 mov에서 rbp-0x10에 내가 선언한 문자열 들어가고 2바이트 위로 0을 넣네
그럼 0x8이후로 나머지 공간은 뭐냐 메모리 낭비냐?
나 리버싱 할줄모름 2배열 맞춤이 뭐임? 그럼 위에 나머지공간은 버려지는거?
64비트에서는 fastcall 변형써서 4개까지는 레지스터에 매개변수 전해서 보내주고 그 뒤로는 스택에 쌓고 스택공간 처리해주는건 cdecl에서처럼 caller에서 처리해줌 근데 레지스터에 매개변수 전달해주면서 레지스터 전달된 매개변수만큼 스택에 예약공간 만들어두고 그위부터 쌓는데 그거때문이지 싶을듯