7

私がこれを正しく理解していれば、プログラムカウンターは実行される命令のアドレスを指し、ほとんどの場合、プログラムカウンターに4を追加して、次の命令アドレスに進みます。しかし、メモリ内のワード(たとえばワード15)を指すプログラムカウンターがあり、次の命令に進みたい場合、次の命令を取得するために15に4を直接追加するとしますか?説明をいただければ幸いです

4

2 に答える 2

6

それを命令ポインタと呼びます。プロセッサが現在の命令をデコードすると、それが占めるバイト数を検出し、現在の命令が実行されたときにプロセッサが次に何をすべきかを認識できるように、現在の命令ポインタ値に追加して次の命令に進む量を認識します。

したがって、たとえば、プロセッサは、例のように値15を格納する命令ポインタから開始します-そのアドレスで何が起こっているかを確認し、5バイトを占める命令が発生します、問題ありません-現在の値に5を追加しますは20を生成するため、命令ポインタは値20を格納し、プロセッサは現在の命令を実行します。

于 2012-04-11T12:07:06.613 に答える
2

プログラムカウンターを直接進めることはありません。CPUがプログラムを実行することでそれを行います。プログラマーは、さまざまなジャンプ命令(条件付き、無条件、サブルーチンへのジャンプなど)を実行してプログラムカウンターを操作します。プログラムカウンターにオフセットを追加する必要がある特定のケースの1つは、位置に依存しないコードで分岐する場合です。ただし、この場合でも、命令のサイズをプログラムカウンターに追加しません。代わりに、「相対アドレスへの分岐」を実行して、ジャンプする場所のオフセットを指定します。

于 2012-04-11T12:13:42.173 に答える