PPC中的倾倒寄存器

时间:2016-12-30 19:12:13

标签: assembly xbox360 powerpc

我正在尝试转储r5的值,以便我可以看到var_A0数据是什么。我正试图在PPC中转储,因为我在XBox 360控制台上使用UART调试,
EX):我想弄清楚var_A0的价值是什么

addi      r5, r1, 0x110+var_A0

使用的代码是::

PrintKey:
    lis     %r29, -0x8000
    ori     %r29, %r29, 0x100
    sldi    %r3, %r29, 32
    ori     %r3, %r3, 0x247C  # 0x800001000000247C
    li      %r4, 0x80
    bl      printAddress
printAddress:
    mr      %r30, %r3
    mr      %r11, %r4           # text size
    mtctr   %r11

但这只打印HV中的物理代码而不是寄存器数据

1 个答案:

答案 0 :(得分:0)

这里有一些你需要解决的问题:

printAddress函数看起来需要r3中的地址,大小为r4,然后(大概)打印该地址的内存内容。我们无法告知打印是如何完成的,因为您的问题中缺少这样做的代码。

因此,您可能不希望使用printAddress来显示r5的值。你可以调整实际的打印代码(缺少)只打印寄存器的内容,而不是内存。

但是:您想要找出的实际内容(var_A0的值)可能在编译时确定(或者至少在最终链接期间 - 这个二进制是静态链接的吗?)。检查反汇编代码,和/或检查动态重定位条目(如果这是动态可执行文件)。

或者,您可以使用printAddress打印包含addi指令的内存内容,然后手动解码指令以确定addi中使用的立即值。