// 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? 谁能告诉我更多关于它的信息?谢谢!