2017-11-20 12 views
-1

私は、-4がEAXレジスタにコピーされていることを知っています。mov eaxを実行するとどうなりますか?

私の疑問:

  • は-4 EAXにコピーするかどうかの前に2の補数バイナリ表記に変換されますか?

  • 2の補数バイナリ表記に変換された場合、その担当者は誰ですか?

  • 負の数を示すための特別なオペコードはありますか?

  • EAXレジスタに保存できる負の最大数はいくらですか?

  • 符号付き算術演算には特別な演算コードまたは命令がありますか?

CPUで負の数と正の数を掛け合わせるとどうなりますか?

+0

_ "CPUに負の数と正の数を掛け合わせるとどうなるのですか?" _インテルのマニュアルで分周と乗算を調べましたか(https://www.intel.com/content/dam/www/ public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf) – Michael

+0

変換が実行される限り、実行時に変換は行われません。即時オペランドを持つ 'mov 'は、コードをアセンブルしてリンクしたときに、単に命令にエンコードされたビットをコピーします。インテルマニュアルの第1巻では、「符号付き整数は、バイト、ワード、ダブルワード、またはクワッドワードで保持された符号付き2進数です。符号付き整数のすべての演算は、2の補数表現を前提としています。 、ワード整数のビット15、ダブルワード整数のビット31、およびクワッドワード整数のビット63(表4-1の符号付き整数エンコードを参照) "_ – Michael

+0

ありがとう@Michael –

答えて

1

2の補数バイナリへの変換はアセンブラで行います。アセンブラで生成されたマシンコードには、バイナリ形式のデータが含まれています。

オペコードの中には、データを符号なしの値として解釈するものと、符号付きの値で動作するものと、オペコードが両方とも同じものがあります。特に負の数のオペコードはありません。

符号付き数値として解釈されるときのeaxの範囲は、-2^31 .. 2^31-1です。

符号付き乗算命令を使用し、オーバーフローがないと仮定すると、負の数に正の数を掛けると、正しい負の結果が2の補数の値になります。

+0

cでは、符号を指定する符号付き整数と符号なし整数を宣言し、x86アセンブリで符号付き整数と符号なし整数を指定する方法は? –

+0

データの種類は指定しないでください。データ型は、オペレーションを実行するために使用されるオペコードによって制御されます。異なるオペコードを使用することによって、同じデータで符号付き乗算と符号なし乗算の両方を実行できます。 – prl

+0

であるので、データはバイナリのみですが、異なるオペコードはバイナリを別々に見ます。私は正しい? –

関連する問題