プロセッサでは、データ、アドレス、命令はどのように区別されますか?プログラムが実行されるとき、プロセッサはすべてが0になると命令を区別する方法はs and 1
です。レジスタは両方のデータ、アドレスをロードしますか?プロセッサ、レジスタ、メモリでデータ、アドレス、命令がどのように区別されますか?
答えて
アプリケーションを起動すると、プログラムのテキストデータがどこにあるかをeip(プログラムカウンタ)に設定します。テキストデータはコード(0..1)です。ここから、eipに置かれたアドレスから命令を実行し始めます。命令は、CPUが例外(このレベルで割り込み)をスローする命令ではない何かを実行しようとすると、CPU(またはキャッシュ)の近くのROMに定義されます。命令であるかどうかを知っているかどうか、フェッチしているforeach命令がromとハッシュテーブルをチェックして有効な命令であるかどうかを調べることは想像できません。
多くのことがXDDで行われるため、これは非常に簡単な問題です。
プロセッサは、実行するように指示します。ご存知のように、プロセッサはメモリ内の "データ"と "コード"の違いを知ることはできません。それは、それがどのように扱われるかを定義するそれらのバイトを使って行うべきことです。
プログラムがコンパイルされると、生成された実行可能ファイルには、コードのパーツとデータのパーツという情報が含まれています。プログラムが実行されると、オペレーティングシステムはコードとデータをメモリの異なる部分にロードし、プロセッサにプログラムのエントリポイントでコードの実行を開始するように指示します。そこから、プロセッサは最初の命令をフェッチして実行し、次の命令に移ります。
これはすべて非常に簡略化されていますが、私はあなたがその考えを得ていると思います。
古いプロセッサと古いオペレーティングシステムでは、データセグメントの途中にある命令の実行を開始するようプロセッサに指示するものはありません。実際には、コードセグメントの途中で「データ」を変更することによって、自己修正コードを作成することができます。新しいプロセッサとオペレーティングシステムは、通常、コードの変更を防ぐために、何らかの形でデータの実行を防止しロックします。さもなければ、自己修正コードは巨大なセキュリティリスクになることがあります。
短い答え:プロセッサはコードをコードとして扱います。それ以外の場合は、すべてがメモリ内のバイトだけです。
さまざまなレジスタは、コンピュータ上で実行されているプロセス内のさまざまなメモリセグメントをプロセッサが識別するのに役立ちます。プログラムがコードセグメントレジスタ(cs)を開始し、命令ポインタ(ip/eip/rip)がコードの位置を指し示すように設定され、データセグメントレジスタ(DS)と汎用レジスタ)を使用してデータセグメントをポイントします。 Intel x86アーキテクチャーがほとんどですが、一般に、ほとんどのアーキテクチャーは、コード領域をデータ領域から区切り、スタック区画と同様に区切るためのレジスタを持っています。これらのレジスタを介して、CPUはコードアドレス
- 1. 命令をレジスタにロード
- 2. アセンブリ命令movレジスタ、[register] [register]
- 3. Gem5でのARMプロセッサの命令アクセス
- 4. x87 FPOP命令とFCOM命令 - どのように動作しますか?
- 5. JavaのJITコンパイルはどのように動的にコンパイルされた命令をメモリにロードしますか?
- 6. SSE命令はどのように使用できますか?
- 7. 命令ポインタはプログラムに見えるレジスタですか?
- 8. SSE命令によるクローン作成 - XMMレジスタの拡張
- 9. `std :: memory_order_acquire`のセマンティクスにはx86/x86_64のプロセッサ命令が必要ですか?
- 10. x86 ROR命令はどのように機能しますか?
- 11. `test`命令はどのように機能しますか?
- 12. MOVSXアセンブリ命令はどのように機能しますか?
- 13. 同じアセンブリ命令が、別のマシン命令
- 14. C/C++で命令のアドレスを取得
- 15. gdbのアドレスで指定された命令にブレークをかけるには?
- 16. 命令数フラッシュされますか?
- 17. 命令ポインタの指し示されたアドレスの取得
- 18. 逆アセンブルされたデータが命令になるのはなぜですか?
- 19. SIGILLハンドラで、どのように問題の命令をスキップできますか?
- 20. なぜCISCプロセッサはパイプライン化が難しいのですか?どのような意味で、他の命令よりも複雑な命令がありますか?マイルMurdocaとヴィンセントHeuringによる「コンピュータアーキテクチャと組織」によると
- 21. mipsには32ビットのアドレスと32ビットの命令がありますか?
- 22. これらのタイプはどのように区別されますか?
- 23. アセンブリ命令には計算がありますが、これはどのように機能しますか?
- 24. クラッシュダンプは、順次命令間でレジスタ値が変更されたことを意味します
- 25. レジスタの内容をメモリ内の変数で指定されたアドレスに格納するにはどうすればよいですか?
- 26. x86のINC命令はどのようにアトミックではありませんか?
- 27. dalvik命令の解析中に可変長引数はどのように解析されますか?
- 28. GPUメモリ読み出し命令フロー、オペランドコレクタ
- 29. メモリ/プロセッサはどれが効率的ですか?
- 30. 'BL'アームの命令分解はどのように機能しますか?
を1つの答えで「認識」するか、または区別することができますか? –