2016-12-30 6 views
0

私はr5の値をダンプしようとしていますので、var_A0のデータがわかります。私はXbox 360のコンソール上のUARTのデバッグ、
EX)を使用していますので、PPCにダンプしようとしています:私はvar_A0の値がPPCのダンプレジスタ

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

あなたの質問は?あなたは何をやろうとしましたか、何が動いていませんか? – UnholySheep

+0

あなたがコメントで試したコードなどの(関連性のある)情報を追加しないでください。質問の一部として編集してください。 – UnholySheep

+0

ok初めてサイトに謝罪します。 –

答えて

0

あなたがここに整理する必要がありますいくつかあります。

は、

printAddressの機能は、アドレスがr3で、サイズがであるように見えます(おそらくそのアドレスにあるメモリの内容を表示します)。私たちはあなたの質問から、そのコードを見落としているので、印刷がどのように行われたかを伝える方法がありません。

したがって、r5の値を表示するのに、printAddressを使用しないことをお勧めします。メモリではなくレジスタの内容を印刷するだけで、実際の印刷コード(これは欠落している)を適応させることができます。

しかし、実際に見つけたいもの(値はvar_A0)は、コンパイル時に決定される可能性があります(または少なくとも最終リンク時に - このバイナリは静的にリンクされていますか?)。これが動的実行可能ファイルである場合、逆アセンブルされたコードを確認し、動的再配置エントリを確認してください。

また、addi命令を含むメモリの内容を印刷してから、命令を手動でデコードしてaddiで使用される即値を判断することもできます。

関連する問題