2011-01-14 11 views
1

私は組み立てが新しく、とても楽しいです。とにかく、私は一つの質問を持っている...簡単なアセンブリの質問

cmpw cr7, %r29, %r8 

は、そのコードはif cr7 > %r29 and %r8のと同等ですか?

+1

おそらく他の人があなたのアーキテクチャを提供するのに役立つでしょう。 – ktm5124

+0

PowerPCのように見える –

+0

はい、これはPPC – Mark

答えて

1

これはr29とr8を比較し、結果をcr7に置きます。すなわち

CR7 = R29 -

R8

いくつかのPPCのドキュメントを読んだ後、それはCR(比較レジスタ)のように見えるが、より少ない、より大きい、等しい表す、符号化された値を取得します。 x86など他のアーキテクチャでは、

less: 0x100 
greater: 0x010 
equal: 0x001 

、そこにはCR自体はないが、そのようなZF、SF、およびCFのようなフラグのグループ、(ゼロは、署名、およびフラグを運びます)。これらは、減算などの算術演算中に常に設定されます。したがって、比較は基本的に減算と同じです。

+0

です。ありがとうございます。しかし、なぜ堕落? – Mark

+1

比較は実際には単なる減算です。 AとBを比較すると、A-Bが負の場合はAはBよりも小さくなります。 A-Bが正の場合はBよりも大きく、A-B == 0の場合は等しくなります。しかし、PPCが減算した結果を100%確実に保存しているわけではありません。私は、crが4,2、および1の値をそれぞれless、greater、equalに取得することを示すいくつかの文書を発見しました。 –

+0

ああ、大丈夫です。 cmpw cr7、%r29、%r8 beq cr7、loc_152A13 – Mark