2016-12-30 74 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中使用的立即值。