私は、実行時に変数内の変数の位置をEclipse内でgdbを使って読み取ろうとしていますが、どれが正しいアドレスであるかは実際は分かりません。私がプログラムを逆アセンブルするときのgdbの出力は次の通りです。i7プロセッサコード解体のgdbでメモリアドレスを読み取るにはどうすればいいですか?
main():
0000000000400634: push %rbp
0000000000400635: mov %rsp,%rbp
5 int i = 7;
0000000000400638: movl $0x7,-0x4(%rbp)
6 int j = 8;
000000000040063f: movl $0x8,-0x8(%rbp)
8 return 0;
0000000000400646: mov $0x0,%eax
9 }
実行時の変数iの位置は何ですか? 私はそれが-0x4(%rbp)だと推測していますが、どのようにアドレスがわかるのでしょうか?
rbpの現在の値をとり、そこから4を減算する必要がありますか? この場合、rbpの値は0x7fffffffe250です。 したがって、実行時のメモリ内のiの位置は0x7fffffffe250 - 0x4ですか? それはちょうど0x7fffffffe250ですか?
gdbで 'p&i'を試してみましたか? – PlasmaHH
私はしていません。私はEclipse GUIを使ってそれをやろうとしています。 – ratsimihah
gdbでそれをしたくないときにgdbで行う方法を尋ねると良い考えです。 – PlasmaHH