我试图将x86-64汇编代码转换为等效的C代码。如何获取%rsp中包含的值?

时间:2016-04-06 17:38:17

标签: c assembly x86

我的想法是指向最近初始化的局部变量的指针将包含%rsp的当前值。这是对的吗?

2 个答案:

答案 0 :(得分:2)

C没有寄存器的概念(尽管有近似过时的register关键字)。没有可移植的方法来读取C中的特定寄存器。

最接近的是使用一些特定于编译器的内联汇编代码机制,但是你也可以使用汇编语言。

特定编译器将使用%rsp寄存器来选择它(可能受ABI影响)。当然,不同CPU的编译器根本不会使用%rsp

我建议你退后一步,决定你实际想要完成什么。

答案 1 :(得分:0)

如果你的"反编译"一个函数的C版本仍然直接对堆栈指针做任何事情,你做错了。组成asm通过堆栈指针访问的C变量的名称。

如果您的C仍然像asm,那么您正在编写x86模拟器。