获取堆栈的起始地址

时间:2011-05-15 16:06:35

标签: c assembly x86 inline-assembly

  

可能重复:
  executing assembly within a function in c++

long getesp() {  
__asm__("movl %esp,%eax");  
}  

void main() {  
printf("%08X\n",getesp()+4);  
}  

为什么打印esp是在堆栈设置之前?(在pushl%ebp之前,movl%esp,%ebp) 提前谢谢

1 个答案:

答案 0 :(得分:1)

我的猜测:不需要框架,因此没有在getesp中分配。详细信息取决于您使用的编译器和编译器标志。