这是旧书的一个小功能:
unsigned long f()
{
__asm__("movl %eax,%esp");
}
该函数被解释为获得堆栈点,但似乎没有。它实际上得到的8位地址远低于我的帧地址。我猜它是为32位系统设计的? 如果我说了些蠢话,请原谅我。
答案 0 :(得分:1)
实际上,正如@James在评论中提到的,在64位模式下,%eax
和%esp
代表64位%rax
和%rsp
中最不重要的32位寄存器。
答案 1 :(得分:0)
实际上代码有一些错误
unsigned long f()
{
__asm__("movl %esp,%eax");
}
它提供了堆栈指针地址