относится к размещенной среде, а не автономной.
дал минимальную C ++ программу:
int main() {
return 1234;
}
и скомпилировал его с помощью clang ++ 5.0 с отключенной оптимизацией (по умолчанию-O0
).Полученный код сборки:
pushq %rbp
movq %rsp, %rbp
movl $1234, %eax # imm = 0x4D2
movl $0, -4(%rbp)
popq %rbp
retq
Я понимаю большинство строк, но я не понимаю "movl $ 0, -4 (% rbp)". Кажется, программа инициализирует некоторую локальную переменную в 0. Почему?
Какая внутренняя деталь компилятора приводит к этому хранилищу, которое не соответствует никому в источнике?