【发布时间】:2011-07-18 13:42:29
【问题描述】:
由于在为 x64 架构进行编译时,Microsoft C++ 中没有内联汇编器,所以我不知道如何访问 RSP 寄存器(堆栈指针)。我知道我可以使用 RtlCaptureContext 读取它,但这也会执行很多不需要的操作。而且它会慢几千倍(出于我的目的,不可接受)。如果我编写一个单独的 ASM 函数,RSP 显然会改变,所以这也不是替代方案。
那么如何使用 Microsoft C++ 读取 x64 RSP 寄存器的内容?
【问题讨论】:
-
也许除了阅读 RSP 之外,还有另一种方法可以做任何您想做的事情。你的真正目的是什么?
-
@Joachim:你想达到什么目的?
-
忽略我(现已删除)的答案。 win64 堆栈必须在 16 字节边界上对齐,因此单独的函数无法正确告知
rsp。 -
您不应该尝试读取寄存器,因为它显然是不可移植的。我认为您误解了为什么要删除内联汇编程序。
-
@Steve-o:看在上帝的份上,这是他的电脑。如果这是他想做的,为什么他不应该阅读 RSP?
标签: c++ visual-c++ assembly 64-bit