GCC を使用して単純な C コードをアセンブリにコンパイルすると、次の出力が得られます。
...
13 xorl %eax, %eax
14 movl $0, -4(%rbp)
15 movl $5, -8(%rbp)
16 movl $6, -12(%rbp)
17 movl -8(%rbp), %ecx
18 addl -12(%rbp), %ecx
19 movl %ecx, -16(%rbp)
20 popq %rbp
21 retq
私の質問は、frame base pointer (rbp)
を操作する代わりに へのオフセットを使用する理由stack pointer (rsp)
です。それがスタックポインタを持つことの要点ではありませんか?
rsp
このプロセスのスタックが、値を書き込むときにデクリメントされないため、スタックが使用されていることさえ知らない他のプロセス (例としてガベージ コレクション) によって上書きされた場合はどうなるでしょうか。