过度使用gdb,任何人都可以看到任何寄存器的内容?
ex:
x/x $ebp + 0x4
print $eax
我想知道,我可以用c ++做同样的事情吗?如果是,怎么样?
答案 0 :(得分:2)
C ++没有指定任何特定的机器架构;因此,它不能做任何与(机器特定的)寄存器相关的标准。您必须检查编译器的文档,看看是否支持这些类型的事情。
答案 1 :(得分:0)
我相信你能做到这一点的唯一方法是使用汇编语言来访问寄存器 - 但那是不可移植的。
这里有一个很好的主题:
http://bytes.com/topic/c/answers/626071-how-access-processor-registers
我在前面问了一个问题关于在C中使用汇编的问题,这将向您展示基础知识(在解决方案中):
答案 2 :(得分:0)
如果您的编译器支持,您可以使用内联汇编程序执行此操作。 http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/Extended-Asm.html
答案 3 :(得分:0)
您可以将inline-assembler与mov指令一起使用,但每个编译器都有自己的语法(并且asm语法并不总是相同)。