スタックとベースポインターについてもっと学ぼうとしています。次のサンプル アセンブリ コードは、IA32 で gcc によってコンパイルされたバイナリの objdump からのものです。
08048e0b <func_3>:
8048e0b: 55 push %ebp
8048e0c: 89 e5 mov %esp,%ebp
8048e0e: 83 ec 28 sub $0x28,%esp
8048e11: 8d 45 f0 lea -0x10(%ebp),%eax
8048e14: 89 44 24 0c mov %eax,0xc(%esp)
8048e18: 8d 45 f4 lea -0xc(%ebp),%eax
8048e1b: 89 44 24 08 mov %eax,0x8(%esp)
8048e1f: c7 44 24 04 65 9b 04 movl $0x8049b65,0x4(%esp)
%ebp
関数のパラメーターとローカル変数を参照するためにベース ポインターが使用されることはわかっています。通常、正のオフセットは関数に渡されるパラメーターであり、負のオフセットはローカル変数ですか?
行上8048e18: 8d 45 f4 lea -0xc(%ebp),%eax
-0xc(%ebp) は何を指していますか?