2016-07-13 15 views
1

PowerPC命令 'extsb'はどのように動作しますか? CRレジスタに影響しますか?私が見るいくつかのPPCの解体を見て

e_lbz r7, 0(r13) 
extsb. r7,r7 
se_beq some_label 

The documentation for extsb.は、それが条件レジスタにどのように影響するかについては明らかではありません。私はr7の値がこのブランチになるのかどうかはわかりません。

私の考えは、r7の値が最も重要なビットに0を、次にextsbを持つ場合です。命令はr7の値を変更しません。したがって、任意の値r7 >= 0 && r7 <= 127の場合、等しいフラグを設定し、se_beqを分岐する必要があります。

+1

どの部分が不明ですか? 'r7 'のバイトがゼロの場合、分岐します。 – Jester

+0

'r7'が1の場合はどうなりますか?なぜそれが枝分かれしないのでしょうか?特定の値がどのように機能するかについての例を挙げて質問に追加します。命令によって条件レジスタがどのように設定されるか、他の命令は条件レジスタがどのように変更されるかを明示的に述べる。 – Joe

+0

フラグは** zero **に等しくなるように設定されています。 '1'は明らかにゼロではないので、ブランチはありません。 – Jester

答えて

0

"extsb"命令には、extsbextsb.という2つの形式があります。

コードがextsb r7,r7を実行した場合、その後、r7は符号付き8ビット数として解釈r7の下位8ビットに等しい値の符号付き64ビット数から成ります。 r7の下位バイトの内容は0x00(0符号付き8ビット10進数)であった場合

たとえば、extsb r7,r7の結果は、0x0000 0000 0000 0000(64ビットの10進0を締結)されるであろう。

一方、r7の下位バイトが0xff(符号付き8ビット10進数-1)の場合、結果は0xffff ffff ffff ffff(符号付き64ビット10進数-1)になります。構文形式は、レコード(RC)ビットを設定した場合

第二の形態との違い、extsw. r7,r7が同様r7を拡張として、それはまた、状態レジスタの一部のビットをセットすることです1に設定すると、命令は条件レジスタフィールド0のLess Than(LT)ゼロ、Greater Than(GT)ゼロ、Equal To(EQ)ゼロ、サマリーオーバーフロー(SO)ビットに影響します。

アセンブラダンプ私は以前見たppc asmとはかなり違っていて、そうと、分岐-IF-等しいをやろうとしているようにそれが見えます:

  • R7の下位バイトが0であれば、それは0を符号拡張し、それがR7の下位バイトあれば
  • を分岐しますゼロでない場合は、内容を拡張してから分岐しません。
関連する問題