1

私が勉強している IA-32 アセンブリ電子ブックでは明確にカバーされていないため、いくつかの質問に直面しています:
1-EFLAGS レジスタのステータス部分のゼロ ビットは、"INC" (インクリメント) および "Dec" (デクリメント) 命令またはパリティ ビットも影響を受けますか?
2-mul (符号なし整数乗算) 命令は EFLAGS レジスタのステータス部分に影響しますか?

そして最後に、明確に理解しているかどうかわからない文が
あります。値の場合、IMUL 命令は符号付き整数に対してのみ有効です。」
私の考えでは、この命令 (3 つの形式がある) を符号なし整数乗算に使用する場合、オペランドの最上位ビットにゼロが必要なので、この場合はそのビットを使用しないでください。意図が符号付き整数乗算を行うことである場合、オペランドは自然に最上位ビットを符号ビットとして使用します。

4

2 に答える 2

2

多く/ほとんどの命令セットの参照は、どのフラグがどの命令によって影響を受けるかを示します。たとえば、次のようなものです

一部のリファレンス マニュアルには命令ごとにその情報があり、一部のリファレンス マニュアルには、影響を受けるフラグを示すことを目的とした別の表があり、命令ごとにどのフラグが影響を受けるかを示していない場合があります。

ドキュメントの他の場所では、文字の意味を見つける必要があります。ほとんどのプロセッサは、Z、V、N、および C を参照しています。上記でリンクした参照では、もちろん、フラグを示すためにさまざまな記号を使用しているため、表を見つけて参照する必要があります。どのフラグがどれであるかを教えてから、質問で尋ねられた指示を調べてください。

これで質問 1 と 2 がカバーされます。

3 番目の質問については、「符号付き数値と符号なし数値のビット単位の観点からの違いは何ですか」という質問に答えると、理解が得られます。基本的な概念がスケールアップすることを知っているので、2 ビットまたは 3 ビットで考えるのが最も簡単だと思います。たとえば、3 ビットで考えると、ビット パターン 0b011 は符号なしビット パターンとしてどのように解釈され、符号付きビット パターンとしてどのように解釈されるのでしょうか。0b111はどうですか?0b001はどうですか?そして0b101?0b011 に 0b010 を掛けると、符号なしの数値を使用すると何が得られるでしょうか? 署名された番号として?

答えがまだ明らかでない場合は、3 ビット オペランドの 64 の組み合わせすべてを書き留めて、数値が符号なしと見なされると仮定して結果を計算し、次に符号付きと見なされる数値で結果を計算します。問題のステートメントがオペランドのいずれかの上位ビットが設定されているかどうかを示しているため、間違いを犯していない場合は、符号付き数学と符号なし数学の間で同じ結果が得られません。上位ビットがクリアされている場合、同じ結果が得られます。その理由は、符号付きと符号なしのエンコーディングを理解したり、2 の補数という別の用語を使用したりすることにあります。

ここで、いくつかの興味深い 4 ビットのケース (上位ビットが設定されているものと設定されていないもの) をいくつか試して、4 ビットで 3 の場合と同じ結果が得られるかどうかを判断してから、電卓を使用して 8 ビットまたは 16 ビットの数値を試してください。ルールが任意の数のビットに適用されるか、それとも変更されるかを決定します。次に、3 ビットの数値について学んだことが、IA-32 IMUL 命令のオペランドのサイズに関連するステートメント/質問に答えるか、少なくとも明確にするかどうかを判断します。

于 2011-02-12T14:44:42.120 に答える
1

1)いいえ、影響を受けるフラグは O、S、Z、A、および P です。

2) はい、予測された (有用な) フラグは O と C ですが、フラグ S、Z、A、および P は IMUL 命令が予測されていません。

3) はい、最後のビット (MSB) は符号です。符号が 0 の場合、数値は正であるため、除算アルゴリズムは両方の数値タイプで同じです。

于 2011-02-12T14:43:37.540 に答える