0

次のコードがあるとします。

int x=4;
int g=2;
int z=x/g;

私が知る限り、値「4」はメモリの に属する場所にx保存され、「2」はgメモリの の場所に保存されます。CPU がz=x/gコマンドを受け取ると、まずメモリからxとの値を取得しg、その結果を計算して に格納しzます。しかし、次のコードを実行するとどうなるでしょうか。

int x=4;
int z=x/2;

CPU が「4」を取得した後、どうすれば「2」を取得できますか? CPU コマンドは、アドレスとオペコードではなくデータを保持できますか?

4

2 に答える 2

0

多くの CPU コマンドには、データを埋め込むことができます。これを「即値オペランド」と呼びます。ただし、複数のデータはめったにありません。詳細は、CPU アーキテクチャや個々のコマンドによって大きく異なります。

コマンド自体はメモリ内に存在するため、技術的には、CPU コマンドにデータ項目が埋め込まれていても、「メモリ内のデータ」としてカウントされます。ちなみに、アドレスも即値オペランドの一種です。CPUにとって、それは単なる別の数字です。

具体的には、2 による除算は、通常、1 操作による右シフトによって実装されます (ビット単位または算術演算のいずれかによって異なります)。私が知っているすべてのCPUで、シフトコマンドはシフトバイオペランドを即値として格納できます。

于 2013-04-03T21:13:57.017 に答える