// gcc -g stack.c -o stack
//
unsigned long sp(void){ __asm__("mov %esp, %eax");}
int main(int argc, char **argv)
{
unsigned long esp = sp();
printf("Stack pointer (ESP : 0x%lx)\n",esp);
return 0;
}
上記のコードを確認してください。実際、sp()はesp->eaxを介してespレジスタ値を返します。しかし、なぜ?sp()のデフォルトの戻り値はeax?誰がそれについてもっと教えてくれますか?ありがとう!