2010-12-12 12 views
2

私はコンピュータアーキテクチャを初めて利用しています。いくつかの複雑なアプリケーションの処理において、限られたレジスタの使用を理解するのに助けてもらえますか?私の質問は、アプリケーションプログラマが関心のある固定数のレジスタ(例:80386は合計16個のレジスタを含む)です。汎用レジスタ

スタックサイズを増やすなど、レジスタを増やしたい場合はどうすればいいですか?レジスタのアドレスとデータはメインメモリに書き戻されますか?マルチタスク環境では、レジスタのデータとアプリケーションのアドレスが移動しますか?メインメモリとバックメモリの間を処理するために登録する

オペレーティングシステムには、アプリケーション汎用レジスタを妨げない特殊レジスタがありますか?

そして、そのような概念を理解するための良いリソースがあれば教えてください。

答えて

1

レジスタは、コンピュータで最も速いメモリです。特定のCPUの命令セットは、特にレジスタアーキテクチャ用に書かれています。より多くのレジスタ空間が使用されるので、データ/アドレスをメモリにバックアップする必要があります。

マルチタスクシステムでは、スケジューラは通常、タスク間で実行コンテキストを保存する必要があります。このコンテキストには、レジスタの現在の状態だけでなく、他のステータスビットも含まれます(CPUに依存します)。

良い最初のステップは、アセンブリプログラミングを学ぶことです。ハードウェアに非常に近いので、これらのすべてを徹底的に学ぶことができます。一度それを持って、それがより高いレベルでどのように行われているか見るために、オペレーティングシステムの本を拾う。あなたの約束(および好奇心)に応じて、FreeRTOSなどのより小さなリアルタイムオペレーティングシステムのソースコードの一部を読むこともできます。 8ビットマイクロコントローラアーキテクチャを読み解くことは簡単です。例えば、AVRまたはHC08は、非常に簡単な学習方法です。すべての情報は無料です。あなたはちょうどそれを読む必要があります。 お楽しみください。

+0

私は、レジスタ、メインメモリ、および処理の理論的/概念的作業の基礎をどこで知ることができますか? – Carbonizer

+0

私はアセンブリ言語の本から始めることをお勧めします。それはあなたがアセンブリをするためにそれを学ぶ*持っているアーキテクチャにとても近いです。残念ながら、私はx86タイプのアーキテクチャーに関する推奨事項はありませんが、実験の容易さのためにその1つをお勧めします。 – caveman