現在、コールスタックにいくつかの値を出力する必要があるという問題に取り組んでいます。これが私がしたことです:
int funcA()
{
int a = 1;
int b = 2;
char c = '3';
asm("mov %ebp, ebp");
asm("mov %esp, esp");
printf("&a = %x\n", &a);
printf("&b = %x\n", &b);
printf("&c = %x\n", &c);
printf("esp = %X ebp = %X\n", esp, ebp);
}
espとebpは事前に宣言されています。上記のコードの出力は次のとおりです。
&a = ff7f7c
&b = ff7f78
&c = ff7f77
esp = FF7F68 ebp = FF7F88
- なぜ&c = ff7f77?スタックでは、タイプに関係なく、すべてのチャンクは4バイトに等しいはずですよね?
- なぜesp=ff7f68?&c-4に等しいはずだと思います
別の質問は、私がこれをした場合:
printf("%x", ebp-4);
アウトパスは
ff7f78
出力がff7f84ではない理由を誰かが説明できますか?
よろしくお願いします!