0

アクセスされた仮想アドレスを保持するポインターによってデータがどのようにポイントされますか?

プロセッサは、ポインタの内容がデータ自体ではなくアドレスであることをどのようにして知るのでしょうか。

誰かが私に段階的なプロセスを教えてもらえますか?

4

2 に答える 2

3

つまり、Cポインタを処理するコードは、アドレスを処理するCPUオペコードにコンパイルされます。つまり、値に対して操作を実行する物理マシンコードは、アドレスに対して操作を実行するものとは異なる命令コードです。 (ポインタ)。

もちろん、現実はそれよりも複雑です。Cこのスタックオーバーフローの質問の指示に従うことで、 さまざまな(小さな)プログラムに何が起こるかを詳細に確認できます。gccのC / C ++ソースからアセンブラ出力を取得するにはどうすればよいですか?

より深いレベルでは、オペレーティングシステムとCPUは物理メモリを仮想化します。ハードウェアでアドレスxのメモリを要求する命令は、仮想ルックアップテーブルを使用して、物理アドレスyからメモリを取得します。これはセキュリティとセキュリティを可能にする最新の開発です。メモリのランダム化などのメモリ管理機能。

于 2012-04-13T04:08:44.293 に答える
1

あなたはどの本全体が書かれたかについて質問していますが、ここに要点があります:

  1. ポインタを逆参照する。ポインタメモリ内のアドレスであるため、ポインタはそれが指すデータを取得する場所を正確に記述します。
  2. *コードは、変数がポインターを保持していることを(を介して)コンパイラーに通知するためです。コンパイラはその情報を、プロセッサに正確に何をすべきかを指示するコードに変換します。プロセッサは、「ポインタの内容がアドレスであり、データ自体ではないことを認識していません」。マシンコードの指示どおりに動作します。
  3. 何の段階的なプロセス?
于 2012-04-13T04:05:46.850 に答える