私は、-4がEAXレジスタにコピーされていることを知っています。mov eaxを実行するとどうなりますか?
私の疑問:
は-4 EAXにコピーするかどうかの前に2の補数バイナリ表記に変換されますか?
2の補数バイナリ表記に変換された場合、その担当者は誰ですか?
負の数を示すための特別なオペコードはありますか?
EAXレジスタに保存できる負の最大数はいくらですか?
符号付き算術演算には特別な演算コードまたは命令がありますか?
CPUで負の数と正の数を掛け合わせるとどうなりますか?
私は、-4がEAXレジスタにコピーされていることを知っています。mov eaxを実行するとどうなりますか?
私の疑問:
は-4 EAXにコピーするかどうかの前に2の補数バイナリ表記に変換されますか?
2の補数バイナリ表記に変換された場合、その担当者は誰ですか?
負の数を示すための特別なオペコードはありますか?
EAXレジスタに保存できる負の最大数はいくらですか?
符号付き算術演算には特別な演算コードまたは命令がありますか?
CPUで負の数と正の数を掛け合わせるとどうなりますか?
2の補数バイナリへの変換はアセンブラで行います。アセンブラで生成されたマシンコードには、バイナリ形式のデータが含まれています。
オペコードの中には、データを符号なしの値として解釈するものと、符号付きの値で動作するものと、オペコードが両方とも同じものがあります。特に負の数のオペコードはありません。
符号付き数値として解釈されるときのeaxの範囲は、-2^31 .. 2^31-1です。
符号付き乗算命令を使用し、オーバーフローがないと仮定すると、負の数に正の数を掛けると、正しい負の結果が2の補数の値になります。
cでは、符号を指定する符号付き整数と符号なし整数を宣言し、x86アセンブリで符号付き整数と符号なし整数を指定する方法は? –
データの種類は指定しないでください。データ型は、オペレーションを実行するために使用されるオペコードによって制御されます。異なるオペコードを使用することによって、同じデータで符号付き乗算と符号なし乗算の両方を実行できます。 – prl
であるので、データはバイナリのみですが、異なるオペコードはバイナリを別々に見ます。私は正しい? –
_ "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
変換が実行される限り、実行時に変換は行われません。即時オペランドを持つ 'mov 'は、コードをアセンブルしてリンクしたときに、単に命令にエンコードされたビットをコピーします。インテルマニュアルの第1巻では、「符号付き整数は、バイト、ワード、ダブルワード、またはクワッドワードで保持された符号付き2進数です。符号付き整数のすべての演算は、2の補数表現を前提としています。 、ワード整数のビット15、ダブルワード整数のビット31、およびクワッドワード整数のビット63(表4-1の符号付き整数エンコードを参照) "_ – Michael
ありがとう@Michael –