Что означает эта ассемблерная инструкция в С++ коде?
Решил в годболте (ссылка) посмотреть ассемблерный код простейшей функции:
struct strr {
int i;
};
int main(){
strr strrr{};
strr strrr2{};
return 0;
}
Годболт выдал вот такой ассемблерный код, ответственный за выделение памяти для структуры:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 0
mov DWORD PTR [rbp-8], 0
mov eax, 0
pop rbp
ret
Я не могу понять, что делает mov DWORD PTR [rbp-4], 0 mov DWORD PTR [rbp-8], 0. Интуитивно я понимаю, что число после rbp- - это что-то вроде смещения адреса, относительно начала стека. Но не могу понять, во-первых, если rbp - это указатель на начало стека, то почему мы вычитаем из него размер структуры, чтобы получить адрес? Во-вторых, что значит DWORD PTR? Компилятор gcc