3

ブレークポイントはPPCにどのように実装されていますか(具体的には、OS Xの場合)?

たとえば、x86では通常INT 3命令(0xCC)で実行されます-ppcのこれに匹敵する命令はありますか?または、それらを設定/実装する他の方法はありますか?

4

6 に答える 6

6

gdbとそれ自体を16進ダンプする関数を使用すると、0x7fe00008が得られます。これはtw命令のようです:

0b01111111111000000000000000001000
  011111                           31
        11111                      condition flags: lt, gt, ge, logical lt, logical gt
             00000                 rA
                  00000            rB
                       0000000100  constant 4
                                 0 reserved

つまり、r0をr0と比較し、任意の結果をトラップします。

GDBの逆アセンブルは、単に拡張ニーモニックですtrap

編集:「GNUgdb 6.3.50-20050815(Appleバージョンgdb-696)(Sat Oct 20 18:20:28 GMT 2007)」を使用しています

編集2:条件付きブレークポイントが他の形式を使用する可能性もあります。twまたはtwi、必要な値がすでにレジスターにあり、デバッガーがヒット数を追跡​​する必要がない場合もあります。

于 2012-04-23T19:09:06.487 に答える
4

ソフトウェア ブレークポイントに加えて、PPC はハードウェア ブレークポイントもサポートしており、 IABR(IABR2コア バージョンによっては ) レジスタを介して実装されます。これらは命令ブレークポイントですが、データ ブレークポイントもあります ( DABRand で実装されている可能性がありDABR2ます)。コアが 2 セットのハードウェア ブレークポイント レジスタをサポートしている場合 (つまり IABR2 と DABR2 が存在する場合)、特定のアドレスでトリガーするだけでなく、連続するアドレス範囲全体をブレークポイント ターゲットとして指定できます。データブレークポイントの場合、書き込み、読み取り、または任意のアクセスでトリガーするかどうかを指定することもできます。

于 2008-11-29T13:43:47.503 に答える
1

PowerPC アーキテクチャは「トラップ」を使用します。

http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.aixassem/doc/alangref/twi.htm

于 2010-05-17T21:26:39.573 に答える
1

最良の推測は、'tw' または 'twi' 命令です。

PPC gdb のソース コードを掘り下げることができます。OS X はおそらくその FreeBSD ルートと同じ機能を使用しています。

于 2008-11-29T13:30:16.800 に答える
-1

私は信頼できる(しかし現在は酩酊状態にあるので、一粒の塩でそれを取る)情報源から、それは違法であり、ある種のシステムトラップを引き起こすゼロ命令であると言われています。

編集:私の友人が絶対的なゴミを話しているほど酔っている場合に備えて、コミュニティwikiになりました:-)

于 2008-11-29T09:32:00.867 に答える