2016-12-30 77 views
0

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

addi  r5, r1, 0x110+var_A0 

代码即时通讯使用的是什么样的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

而你的问题是?你尝试过什么,什么不工作? – UnholySheep

+0

请不要添加(相关)信息,如您在评论中尝试的代码,将其编辑为您问题的一部分 – UnholySheep

+0

好的,我第一次使用该网站道歉 –

回答

0

这里你需要在这里整理出几件事情:

printAddress函数看起来像是需要r3中的地址,并且r4的大小,然后(可能)会在该地址打印内存的内容。我们没有办法告诉您打印是如何完成的,因为您的问题中缺少执行该代码的代码。

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

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

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

相关问题