スタック領域(スタックが使うアドレス)の再確認
x86版gccの場合、
関数からのリターンの際、
リターン時のEAXレジスタが関数の戻り値になるので、
次のようにスタックが使うアドレスを直接とりだすことができる
[hirasawa@aspire-white gcc-Programming-Kobo]$ cat ./stack.c #include <stdio.h> asm("stack: "); asm(" movl %esp ,%eax "); asm(" ret "); unsigned int stack(void); int main() { printf("ESP address is %p\n", &stack); printf("ESP address is %p\n", stack); printf("ESP has had %08x\n", stack()); return 0; } [hirasawa@aspire-white gcc-Programming-Kobo]$ gcc -Wall -save-temps -o stack stack.c [hirasawa@aspire-white gcc-Programming-Kobo]$ [hirasawa@aspire-white gcc-Programming-Kobo]$ ./stack ESP address is 0x80483c4 ESP address is 0x80483c4 ESP has had bfcda7ac [hirasawa@aspire-white gcc-Programming-Kobo]$
やっぱ、0x0bffffffあたり