如何用c ++看到寄存器的内容?

时间:2011-11-18 18:36:24

标签: c++

过度使用gdb,任何人都可以看到任何寄存器的内容?

 ex:

     x/x $ebp + 0x4
     print $eax    

我想知道,我可以用c ++做同样的事情吗?如果是,怎么样?

4 个答案:

答案 0 :(得分:2)

C ++没有指定任何特定的机器架构;因此,它不能做任何与(机器特定的)寄存器相关的标准。您必须检查编译器的文档,看看是否支持这些类型的事情。

答案 1 :(得分:0)

我相信你能做到这一点的唯一方法是使用汇编语言来访问寄存器 - 但那是不可移植的。

这里有一个很好的主题:

http://bytes.com/topic/c/answers/626071-how-access-processor-registers

我在前面问了一个问题关于在C中使用汇编的问题,这将向您展示基础知识(在解决方案中):

How does C code call assembly code (e.g. optimized strlen)?

答案 2 :(得分:0)

如果您的编译器支持,您可以使用内联汇编程序执行此操作。 http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/Extended-Asm.html

答案 3 :(得分:0)

您可以将inline-assembler与mov指令一起使用,但每个编译器都有自己的语法(并且asm语法并不总是相同)。