我的想法是指向最近初始化的局部变量的指针将包含%rsp的当前值。这是对的吗?
答案 0 :(得分:2)
C没有寄存器的概念(尽管有近似过时的register
关键字)。没有可移植的方法来读取C中的特定寄存器。
最接近的是使用一些特定于编译器的内联汇编代码机制,但是你也可以使用汇编语言。
特定编译器将使用%rsp
寄存器来选择它(可能受ABI影响)。当然,不同CPU的编译器根本不会使用%rsp
。
我建议你退后一步,决定你实际想要完成什么。
答案 1 :(得分:0)
如果你的"反编译"一个函数的C版本仍然直接对堆栈指针做任何事情,你做错了。组成asm通过堆栈指针访问的C变量的名称。
如果您的C仍然像asm,那么您正在编写x86模拟器。