я следующий простой кодБуферы на стек в Ассамблее
void test() {
char buffer[20];
return 0;
}
int main() {
test();
}
Узел выводит это
Разборка секции .text:
0000000000000000 <test>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 5d pop %rbp
5: c3 retq
0000000000000006 <main>:
6: 55 push %rbp
7: 48 89 e5 mov %rsp,%rbp
a: b8 00 00 00 00 mov $0x0,%eax
f: e8 00 00 00 00 callq 14 <main+0xe>
14: 5d pop %rbp
15: c3 retq
я я предполагаю буфер размер от этой сборки? Похоже, что много нечего делать со стеклом.
Компилятор оптимизирует локальный, поскольку на него не ссылаются. Попробуйте что-то сделать с этим. –
Bingo 4: c6 45 e0 63 movb $ 0x63, -0x20 (% rbp), но что означает эта инструкция? -0x20 +% rpb = 0x63? – flyinghigh
Вы предположительно написаны 'buffer [x] = 99;' или аналогичные. – Jester