(57)【特許請求の範囲】
【請求項１】
揮発性メモリの初期化の前に、プロセッサの複数の内部汎用レジスタをプロセッサ・ベースのシステムにおけるスタックとして動作させる装置であって、
プロセッサ・ベースのシステムを処理する一つ又は複数の命令シーケンスを格納する不揮発性メモリと、
一つ又は複数の格納された命令シーケンスを実行する、不揮発性メモリに結合された複数の内部汎用レジスタを有するプロセッサと
を備え、格納された命令シーケンスが、プロセッサに、（ａ）前記複数の内部汎用レジスタの占有ステータスを判定させ、（ｂ）所定のオーダに従って、複数の内部汎用レジスタの一つ又は複数のコンテンツを再構成させ、複数の内部汎用レジスタをスタックとして動作させる装置。
【請求項２】
一つ又は複数の格納された命令シーケンスが、さらにプロセッサに、（ｃ）ステータスに基づいて、データの転送を実施させる請求項１に記載の装置。
【請求項３】
（ａ）において、占有ステータスが、複数の内部汎用レジスタの所定の数が占有されていない場合、データ転送の実施に進むことを示す請求項２に記載の装置。
【請求項４】
（ｂ）が、（ｂ．１）最後の占有レジスタのコンテンツを、後続レジスタに移動させ、（ｂ．２）各占有レジスタのコンテンツが後続レジスタに移動されるまで（ｂ．１）を反復する請求項３に記載の装置。
【請求項５】
（ｃ）が、目標格納装置のコンテンツを、複数の内部汎用レジスタの第１非占有レジスタに転送することを備える請求項４に記載の装置。
【請求項６】
プロセッサが、占有レジスタの数を表す値を格納するカウンタ・レジスタをさらに備え、一つ又は複数の格納された命令シーケンスが、さらに（ｃ）の後、プロセッサがカウンタ・レジスタ内で値を増やす請求項５に記載の装置。
【請求項７】
複数の内部汎用レジスタと、
命令を復号するように構成されたデコーダと、
デコーダに結合され、外部揮発性メモリの初期化の前に、１つの復号された命令に応答して、
（ａ）複数のレジスタの占有ステータスを判定し、
（ｂ）所定のオーダに従って、各複数のレジスタのコンテンツを再構成するように構成されている回路と
を備える、スタックとして動作可能な複数の内部汎用レジスタを有するプロセッサ。
【請求項８】
回路が、（ｂ）の前に、さらに（ｃ）前記占有ステータスに基づいてデータの転送を実施する請求項７に記載のプロセッサ。
【請求項９】
（ａ）において、占有ステータスが、複数の内部汎用レジスタの所定の数が占有されていることを示し、そうである場合、（ｃ）に進む請求項８に記載のプロセッサ。
【請求項１０】
（ｃ）が、複数の内部汎用レジスタ内にある第１レジスタのコンテンツを目標格納装置に移動する請求項９に記載のプロセッサ。
【請求項１１】
（ｂ）が、（ｂ．１）第１占有レジスタのコンテンツを先行レジスタに移動し、（ｂ．２）各占有レジスタのコンテンツが、先行非占有レジスタに移動されるまで、（ｂ．１）を反復する請求項１０に記載のプロセッサ。
【請求項１２】
プロセッサが、非占有レジスタの数を表す値を格納するカウンタ・レジスタをさらに備え、単一のデコードされた命令が、さらにプロセッサに、（ｂ）と（ｃ）の後、カウンタ・レジスタに格納されている値を減らさせる請求項１１に記載のプロセッサ。
【請求項１３】
目標格納装置のアドレスが、復号された命令において指定されたレジスタに配置されている請求項７に記載のプロセッサ。
【請求項１４】
目標格納装置のアドレスが、復号された命令において指定されたレジスタに配置されている請求項１０に記載のプロセッサ。
【請求項１５】
（ａ）１つの命令を復号し、
（ｂ）１つの命令を復号するステップに応答して、
（ｉ）複数の内部汎用レジスタの占有ステータスを判定し、
（ｉｉ）所定のオーダに従って、各複数の内部汎用レジスタの一つ又は複数のコンテンツを再構成する、
揮発性メモリを初期化する前にプロセッサの複数の内部汎用レジスタスをスタックとして動作させるコンピュータで実施する方法。
【請求項１６】
（ｉｉｉ）ステータスに基づいて、データ転送を実施することをさらに備える請求項１５に記載の方法。
【請求項１７】
（ｉ）において、占有ステータスが、複数の内部汎用レジスタの所定の数が占有されていない場合、データの転送の実施に進むことを示す請求項１６に記載の方法。
【請求項１８】
（ｉｉ）が、（ｉｉ．１）最後の占有レジスタのコンテンツを、後続レジスタに移動することと、（ｉｉ．２）各占有レジスタのコンテンツが、後続レジスタに移動されるまで、（ｉｉ．１）を反復する請求項１７に記載の方法。
【請求項１９】
（ｉｉｉ）が、目標格納装置のコンテンツを、複数の汎用内部レジスタの第１非占有レジスタに転送する請求項１８に記載の方法。
【請求項２０】
占有レジスタの数を表す値を格納するカウンタ・レジスタを用いて、（ｉｉｉ）の後、カウンタ・レジスタ内で、値を増やすことをさらに備える請求項１９に記載の方法。
【請求項２１】
（ｉｉ）の前に、（ｉｉｉ）ステータスに基づいて、データの転送を実施することをさらに備える請求項１５に記載の方法。
【請求項２２】
（ｉ）において、占有ステータスが、複数の内部汎用レジスタの所定の数が占有されていることを示し、そうである場合、（ｉｉｉ）に進む請求項２１に記載の方法。
【請求項２３】
（ｉｉｉ）が、複数の内部汎用レジスタ内にある第１レジスタのコンテンツを、目標格納装置に移動する請求項２２に記載の方法。
【請求項２４】
（ｉｉ）が、（ｉｉ．１）第１占有レジスタのコンテンツを先行レジスタに移動し、（ｉｉ．２）各占有レジスタのコンテンツが先行非占有レジスタに移動されるまで（ｉｉ．１）を反復する請求項２３に記載の方法。
【請求項２５】
非占有レジスタの数を表す値を格納するカウンタ・レジスタを用いて（ｉｉ）と（ｉｉｉ）の後、カウンタ・レジスタに格納されている値を減らすことをさらに備える請求項２４に記載の方法。
【請求項２６】
揮発性メモリの初期化の前に、プロセッサの複数の内部汎用レジスタをスタックとして動作させるためのコンピュータ可読プログラム・コードを埋め込んだ、コンピュータに利用可能な記録媒体であって、
そのコンピュータ可読プログラム・コードが
複数の内部汎用レジスタの占有ステータスを判定させる第１のコンピュータ可読プログラム・コードと、
複数の内部汎用レジスタをスタックとして動作させるために所定のオーダに従って、各複数の内部汎用レジスタの一つ又は複数のコンテンツを再構成させる第２のコンピュータ可読プログラム・コードと
を備える、
コンピュータに利用可能な記録媒体。
【発明の詳細な説明】
【０００１】
（発明の背景）
（１．発明の分野）
本発明は、一般に、プロセッサ・ベースまたはマイクロプロセッサ・ベースのシステムに関し、より詳細には、プロセッサのレジスタ・セットを使用する汎用スタックを提供する装置および方法に関する。
【０００２】
（２．関連技術の説明）
プロセッサ・ベースのシステムでは、読出し専用メモリ（ＲＯＭ）は、製造プロセス中に書き込まれた情報を格納するように構成されているが、システムの通常の動作プロセス中に書き込むことはできない。ランダム・アクセス・メモリ（ＲＡＭ）は、直接およびランダムに読み取り、書き込むことができる情報を格納する。ＲＯＭに格納されている情報は不揮発性である（すなわち、電源を切っても情報は保持される）が、ＲＡＭに格納されている情報は揮発性である（すなわち、電源を切ると情報は失われる）。
【０００３】
オペレーティング・システムの初期設定の前に、例えば、パワー・オン・セルフ・テスト（ＰＯＳＴ）が完了する前に、ＲＡＭは初期設定することも構成することもできない。このため、スタックなどのＲＡＭのある種の特徴を使用することはできない。その結果、電源投入中またはＲＡＭが初期設定され利用可能になる前に実行される、基本入力／出力システム（ＢＩＯＳ）ルーチンを含むアプリケーション・ソフトウェアおよび／またはファームウェアなどのアプリケーション・プログラムは、限られたアプリケーションを有することになる。例えば、そのようなアプリケーション・ソフトウェアは、スタックを使用して、変数を格納すること、リストを作成すること、または深くネストされた手続きを実施することができない。さらに、メモリの技術がますます複雑になっているので、メモリの検出と構成用のＢＩＯＳルーチンは、スタックを利用せずに実施することがますます困難になっている。
【０００４】
したがって、上述した問題を克服する装置および方法の技術が必要である。特に、プロセッサ・ベースまたはマイクロ制御装置ベースのシステムにおいて、ＲＡＭが利用可能となりアクセス可能となる前に、アプリケーションがスタックを利用できるようにする装置および方法が必要である。
【０００５】
（発明の簡単な概要）
プロセッサ・ベースのシステムで、スタックを提供する方法および装置。ある実施態様では、装置は、命令シーケンスを格納するメモリを備え、この命令シーケンスによってプロセッサ・ベースのシステムを処理する。また、格納された命令シーケンスを実行する、メモリに結合されたプロセッサを備える。プロセッサは複数のレジスタを有する。格納された命令シーケンスは、プロセッサに、（ａ）複数のレジスタの占有ステータスを判定させ、（ｂ）所定のオーダに従って、各複数のレジスタのコンテンツを再構成させる。
【０００６】
本発明は、限定的ではなく、例として図に示されている。同じ参照番号は、同様の要素を示す。
【０００７】
（発明の詳細な説明）
以下の説明では、多くの特有な詳細について記述し、本発明の完全な理解を提供する。しかし、本発明は、これらの特有な詳細を用いずに実施することが可能であることを理解されたい。他の事例では、よく知られている回路、構造、および技術については、本発明をあいまいにしないために、詳細には示していない。
【０００８】
図１は、本発明の原理を実施するコンピュータ・システム１００のある実施形態を示す。コンピュータ・システム１００は、プロセッサ１０５と、格納装置１１０と、バス１１５とを備える。プロセッサ１０５は、バス１１５によって格納装置１１０に結合されている。格納装置１１０は、データを格納する１つまたは複数のメカニズムを示す。例えば、格納装置１１０は、読出し専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、磁気ディスク格納媒体、光学格納媒体、フラッシュ・メモリ・デバイス、および／または他のマシン可読媒体を含むであろう。また、キーボードおよびディスプレイなど、多くのユーザ入力／出力デバイス、１０２1、１２０2、．．．、１２０nがバス１１５に結合されている。さらに、ネットワーク、ＴＶ放送信号受信器、ファックス／モデム、デジタル化ユニット、音声ユニット、グラフィック・ユニットなど、他の装置を選択的にバス１１５に結合することが可能である。プロセッサ１０５は、マルチスレッドＣＩＳＣ、ＲＩＳＣ、ＶＬＩＷ、またはハイブリッド構造など、任意のタイプの構造である中央演算処理装置を代表している。さらに、プロセッサ１０５は、１つまたは複数のチップとして実装することができる。バス１１５は、１つまたは複数のバス（ＡＧＰ、ＰＣＩ、ＩＳＡ、Ｘ−Ｂｕｓ、ＶＥＳＡなど）とブリッジ（バス制御装置とも呼ばれる）を代表している。この実施形態について、単一プロセッサ・コンピュータ・システムに関して説明するが、本発明は、マルチプロセッサ・コンピュータ・システムで実施することもできる。
【０００９】
また、図１は、格納装置１１０が、データ１１２とソフトウェア１１４を格納していることを示す。データ１１２は、本明細書で説明する１つまたは複数のフォーマットで格納されたデータを代表している。ソフトウェア１１４は、図２〜５に関連して説明する任意の技術および／または全ての技術を実施するために必要なコードを代表している。もちろん、格納装置１１０は、追加のソフトウェア（図示せず）を含むことが好ましいが、これは、本発明を理解するために必要ではない。
【００１０】
さらに、図１は、プロセッサ１０５が、デコード・ユニット１４０と、レジスタ１５０のセットと、実行ユニット１６０と、命令を実行する内部バス１６５とを含むことを示している。もちろん、プロセッサ１０５はその他に回路を含むが、これは、本発明を理解するために必要ではない。デコード・ユニット１４０と、レジスタ１５０と、実行ユニット１６０は、内部バス１６５によって共に結合されている。レジスタ１５０は、制御／ステータス情報、スカラおよび／または実装された整数データ、浮動小数点データなど、情報を格納するプロセッサ１０５上の格納領域を表す。ある実施形態では、レジスタ１５０は、本発明の原理によるスタックとして動作するように構成されたレジスタ１５２のセットを含む。デコード・ユニット１４０を使用して、プロセッサ１０５が受信した命令を、制御信号および／またはマイクロ・コード・エントリ・ポイントに復号する。これらの制御信号および／またはマイクロ・コード・エントリ・ポイントに応答して、実行ユニット１６０は適切な動作を実施する。デコード・ユニット１４０は、任意の数の様々なメカニズム（ルックアップ・テーブル、ハードウェア実施、ＰＬＡなど）を使用して実装することが可能である。様々な命令の復号過程は、本明細書では、一連のｉｆ／ｔｈｅｎ命令文が代表的であるが、命令の実行は、これらｉｆ／ｔｈｅｎ命令文の逐次処理を必要としないことを理解されたい。むしろ、このｉｆ／ｔｈｅｎ処理を論理的に実施する任意のメカニズムが、本発明の実施の範囲内にあると考えられている。
【００１１】
デコード・ユニット１４０は、命令を取り出すフェッチ・ユニット１７０と、データの動作を実施する命令セット１８０とを含むことが示されている。ある実施形態では、命令セット１８０は、本発明により用意されているレジスタ・スタック制御命令１８２を含む。ある実施形態では、レジスタ・スタック制御命令１８２は、本発明により用意されているレジスタ・スタック・プッシュ命令１８４と、レジスタ・スタック・ポップ命令１８６とを含む。レジスタ・スタック・プッシュ命令１８４のある例は、ＭＭＰＵＳＨ命令を含み、これは、目標格納装置のコンテンツを、プロセッサ・レジスタ内に実装されているスタックのある要素に移動させるように動作する。レジスタ・スタック・ポップ命令１８２の第２例は、ＭＭＰＯＰ命令１８６を含む。これは、プロセッサ・レジスタ内に実装されているスタックのある要素を目標格納装置に移動する。スタックへ、またはスタックから転送されたデータを格納するために使用する格納領域（目標格納装置など）の位置は重要ではない。例えば、目標格納装置は、レジスタ１５０内のレジスタ、プロセッサ１０５または格納装置１１０の内部または外部に配置されたキャッシュ・メモリ（図示せず）とすることが可能である。
【００１２】
ある実施形態では、ＭＭＰＵＳＨ命令とＭＭＰＯＰ命令は、整数データに適用することが可能である。代替実施形態では、ＭＭＰＵＳＨ命令とＭＭＰＯＰ命令は、実装された浮動小数点データに適用可能であり、所定のビット数を有する数の２つのセット間での動作の結果は、同じ所定のビット数を有するレジスタに格納される。すなわち、オペランドのサイズまたは構成は、結果的なレジスタのものと同じである。本明細書では、ある種のレジスタ・スタック命令は、特定のタイプおよび量のデータと共に使用するために説明されているが、代替実施形態では、レジスタ・スタック制御動作は、異なるタイプおよび量のデータに対して動作する命令を支援することができる。
【００１３】
レジスタ・スタック制御命令１８２の他に、プロセッサ１０５は、新しい命令および／または既存の汎用プロセッサに見出されるものと類似または同様の命令を含むことができる。例えば、ある実施形態では、プロセッサ１０５は、ペンティアム（登録商標）ＩＩプロセッサなど、既存のプロセッサによって使用されているインテル（登録商標）・アーキテクチャ命令セットと互換性のある命令セットを支援する。本発明の代替実施形態は、多かれ少なかれ様々な命令を含むことが可能であり、本発明の教示を利用することが可能である。
【００１４】
プロセッサ１０５は、上述した多くの設計を用いて実現することが可能であるが、本議論の目的のために、インテルのペンティアム（登録商標）ＩＩプロセッサについて言及する。限定的ではなく、例として、図２Ａおよび２Ｂに、本発明の議論で使用される、ペンティアム（登録商標）ＩＩプロセッサのレジスタを示す。図２Ａに示すように、プロセッサは、それぞれ、８個の３２ビットの一般レジスタＥＡＸ、ＥＢＸ、ＥＣＸ、ＥＤＸ、ＥＢＰ、ＥＳＩ、ＥＤＩ、およびＥＳＰ２００１〜２００８を含む。ＥＡＸ、ＥＢＸ、ＥＣＸ、ＥＤＸレジスタの下位の１６ビットは、バイト・アドレス指定のために、ＡＨ（高い）、ＡＬ（低い）、ＢＨ、ＢＬ、ＣＨ、ＣＬ、ＤＨ、およびＤＬレジスタとして、独立して８ビット単位でアドレス指定可能である。レジスタ２００１〜２００８の使用は、本発明の原理により、レジスタ・スタック制御コード２１０などのソフトウェアによって制御される。ある実施形態では、レジスタ・スタック制御コード２１０は、格納装置１１０に配置されている。しかし、レジスタ・スタック制御コード２２０は、任意の一般的に知られている格納媒体に格納することが可能であることを理解されたい。
【００１５】
図２Ｂは、図１のレジスタ１５０内に配置されている、複数のレジスタ１５２のフォーマットの代替実施形態を示す。この代替実施形態では、図２Ａのレジスタ１５２の代わりに、レジスタ１５２’を使用することが可能である。レジスタ１５２’は、複数のマルチメディア拡張（ＭＭＸ）レジスタ２５０1〜２５０8を含む。ある実施形態では、８個の６４ビットのＭＭＸレジスタ２５０1〜２５０8が存在する。レジスタ２５０1〜２５０8の使用も、本発明の原理により、レジスタ・スタック制御コード２１０などのソフトウェアによって制御することが可能である。
【００１６】
図３Ａは、本発明の原理による、レジスタ・スタック・プッシュ命令１８４の一般的な動作を示す。レジスタ・スタック・プッシュ命令１８４は、レジスタ・スタック・プッシュ命令１８４の動作を識別するＭＭＰＵＳＨなどの動作コード（ＯＰ  ＣＯＤＥ）３００と、命令１８４が操作することになる格納領域のアドレスを特定するオペランド３０２とを備える。
【００１７】
例えば、本発明の実行において、レジスタ・スタック・プッシュ命令１８４は、命令１８４が操作することになる目標格納装置ＸＸのアドレスを備えている。ある実施形態では、受信すると、まず、レジスタ・スタック・プッシュ命令１８４は、スタック動作を実施するために配置されている、２００1〜２００Nなど、レジスタＲＥＧ０、ＲＥＧ１、．．．、ＲＥＧＮが、完全またはすべて占有されているか否かを判定する。占有されていない場合は、このスタック内の先行レジスタのコンテンツは、後続の空のレジスタに移動される。その転送が、レジスタ・セットの第１番目が、目標格納装置ＸＸのコンテンツを収容できるようになるまで続けられる。例えば、レジスタＲＥＧ（Ｎ−１）のコンテンツは、レジスタＲＥＧ（Ｎ）に移動され、レジスタＲＥＧ（Ｎ−２）のコンテンツは、レジスタＲＥＧ（Ｎ−１）に移動される、などと続き、ＲＥＧ０のコンテンツは、レジスタＲＥＧ１に移動される。次いで、目標格納装置ＸＸのコンテンツは、レジスタＲＥＧ０に移動される。ある実施形態では、レジスタＲＥＧ（Ｎ＋１）を使用して、内部ステータス値を格納する。他の実施形態では、レジスタＲＥＧ（Ｎ＋２）をカウンタ・レジスタとして使用する。これは、スタック動作を実施するために配置されている２００1〜２００Nなど、レジスタＲＥＧ０、ＲＥＧ１、．．．、ＲＥＧＮが、占有されているかどうかを示す値を提供する。
【００１８】
代替実施形態では、目標格納装置ＸＸのコンテンツをＲＥＧＸ（Ｘは０からＮ）であるなど複数のレジスタの任意の１つに転送するためにレジスタ・スタック・プッシュ命令１８４が動作することが可能である。これは、任意の数のレジスタを選択して、スタックとして動作することが可能だからである。この場合では、まず、選択した複数のレジスタ（ＲＥＧＸからＲＥＧＮ）を検査して、それらがすべて占有されているかを判定する。そうでない場合は、第１非占有レジスタに先行するレジスタのコンテンツは、第１非占有レジスタに移動される。そのようなデータ転送は、目標格納装置ＸＸのコンテンツを格納するために選択されたレジスタ、すなわち目標レジスタＲＥＧＸが非占有になるまで、先行レジスタから後続非専有レジスタへと続けられる。次いで、目標格納装置ＸＸのコンテンツは、非占有目標レジスタ、ＲＥＧＸに転送することができる。
【００１９】
図３Ｂは、本発明の原理によるレジスタ・スタック・ポップ命令１８６の一般的な動作を示す。レジスタ・スタック・プッシュ命令１８６は、レジスタ・スタック・ポップ命令１８６の動作を識別するＭＭＰＯＰなどの動作コード（ＯＰ  ＣＯＤＥ）と、命令１８６が操作することになるデータ対象物のアドレスを保持する格納装置の名前を特定するオペランド３５２とを備える。
【００２０】
本発明の実行において、レジスタ・スタック・ポップ命令１８６は、命令１８６が動作することになる目標格納装置ＹＹのアドレスを備えている。ある実施形態では、レジスタ・スタック・ポップ命令１８６を受けると、プロセッサ１０５は、スタック動作を実施するために配置されている、２００1〜２００Nなど、レジスタＲＥＧ０、ＲＥＧ１、．．．、ＲＥＧＮが空であるかを判定する。そうでない場合は、まず、レジスタＲＥＧ０のコンテンツは、目標格納装置ＹＹに移動される。次に、ＲＥＧ１など、スタックの第１占有レジスタのコンテンツを、ＲＥＧ０など、先行レジスタに転送する。そのような転送は、ＲＥＧＮなど、スタックの最後の占有レジスタのコンテンツが、ＲＥＧ（Ｎ−１）など、先行レジスタに転送されるまで続けられる。例えば、レジスタＲＥＧ１のコンテンツは、レジスタＲＥＧ０に移動される、レジスタＲＥＧ２のコンテンツは、レジスタＲＥＧ１に移動される、などと続き、レジスタＲＥＧ（Ｎ）のコンテンツは、レジスタＲＥＧ（Ｎ−１）に移動される。ある実施形態では、レジスタＲＥＧ（Ｎ＋１）を使用して、内部ステータス値を格納する。他の実施形態では、レジスタＲＥＧ（Ｎ＋２）をカウンタ・レジスタとして使用する。これは、２００1〜２００Nなど、スタック動作を実施するために配置されているレジスタＲＥＧ０、ＲＥＧ１、．．．、ＲＥＧＮが、空または非占有であるかを示す値を提供する。
【００２１】
他の実施形態では、Ｙが０からＮであるＲＥＧＹなどの、複数のレジスタの任意の１つのコンテンツを目標格納装置ＹＹに転送するようにレジスタ・スタック・ポップ命令１８６が動作することができる。これは、任意の数のレジスタを選択して、スタックとして動作することが可能だからである。この場合では、まず、選択した複数のレジスタ（ＲＥＧＹからＲＥＧＮ）を検査して、それらがすべて非占有であるかを判定する。そうでない場合は、まず、目標レジスタＲＥＧＹのコンテンツを目標格納装置ＹＹに転送する。次に、ＲＥＧ（Ｎ＋１）など、スタックの第１占有レジスタのコンテンツを、ＲＥＧＹなど、先行レジスタに転送する。そのような転送は、例えばＲＥＧ（Ｎ＋１）から目標格納装置へ、スタックにある最後の占有レジスタＲＥＧＮのコンテンツが先行レジスタに転送されるまで、すなわち目標レジスタ（この場合はＲＥＧＹ）が占有されるまで、次に占有されているレジスタから先行非占有レジスタへと続けられる。
【００２２】
図４は、本発明のレジスタ・スタック・プッシュ・プロセスのある実施形態を示す流れ図である。開始状態から始めて、プロセス４００は決定ブロック４１０まで進み、そこでカウンタ・レジスタのコンテンツを検査して、スタック・カウントＳＣが最大値であるか、すなわち、スタックが完全または全て占有されているかを判定する。そうでない場合は、プロセス４００はプロセス・ブロック４１２に進み、そこで、プロセス４００は、カウンタ・レジスタの値ＳＣを獲得し、整数ＮがＳＣの値に初期設定される。次に、プロセス４００はプロセス・ブロック４１４に進み、そこで、レジスタＲＥＧ（Ｎ−１）のコンテンツがレジスタＲＥＧＮに移動される。次いでプロセス４００は決定ブロック４１６に進み、そこで、Ｎ−１がゼロであるかを判定する。そうでない場合は、プロセスはプロセス・ブロック４１８に進み、そこでＮは１だけ減る。次いでプロセス４００は、プロセス・ブロック４１４に戻る。しかし、決定ブロック４１６でＮ−１が０に等しくない場合、プロセス４００はプロセス・ブロック４２０に進み、そこで目標格納装置のコンテンツをレジスタＲＥＧ０に移動する。次いで、プロセス４００はプロセス・ブロック４２２に進み、そこでスタック・カウンタ値ＳＣは１だけ増える。次いでプロセス４００はプロセス・ブロック４２４に進み、そこでカウンタ値ＳＣが保存される。決定ブロック４１０で、プロセス４００が、スタック・カウントＳＣが最大値に等しくない（すなわち、スタックが完全でない）と判定する場合、プロセス４００は直接プロセス・ブロック４２４に進む。プロセス・ブロック４２４でプロセスを完了すると、プロセス４００は終了する。
【００２３】
図５は、本発明のレジスタ・スタック・プロセスのある実施形態を示す流れ図である。開始状態から始めて、プロセス５００は決定ブロック５１０に進み、そこでカウンタ・レジスタのコンテンツを検査して、スタック・カウントＳＣが最小値であるか、すなわち、スタックが空であるかを判定する。そうでない場合は、プロセス５００はプロセス・ブロック５１２に進み、そこでプロセス５００は、カウンタ・レジスタの値ＳＣを獲得し、整数Ｎは１に初期設定される。次に、プロセス５００はプロセス・ブロック５１４に進み、そこでレジスタＲＥＧ０のコンテンツは、ＹＹなど、目標格納装置に移動される。次いで、プロセス５００は決定ブロック５１６に進み、そこで、ＳＣが最小値であるかを判定する。そうでない場合は、プロセス５００はプロセス・ブロック５１８に進み、そこでレジスタＲＥＧＮのコンテンツは、レジスタＲＥＧ（Ｎ−１）に移動される。次いで、プロセス５００は決定ブロック５２０に進み、そこで、Ｎ−１＝ＳＣであるかを判定する。そうでない場合、プロセス５００はプロセス・ブロック５２２に進み、そこでＮは１だけ増える。次いで、プロセス５００はプロセス・ブロック５１８に戻る。しかし、決定ブロック５１６で、ＳＣが最小値に等しくない場合、プロセス５００は、直接プロセス・ブロック５２４に進む。さらに、決定ブロック５２０で、プロセスがＮ−１が０に等しいと判定する場合、プロセス５００は直接プロセス・ブロック５２４に進む。プロセス・ブロック５２４で、プロセス５００はカウンタ値ＳＣを１だけ減らす。次いで、プロセス５００はプロセス・ブロック５２６に進み、そこでカウンタ値ＳＣが保存される。決定ブロック５１０で、プロセス５００がスタック・カウントＳＣが最小値に等しくない（すなわち、スタックが空である）と判断する場合、プロセス５００は、直接プロセス・ブロック５２６に進む。プロセス・ブロック５２６でプロセスを完了すると、プロセス５００は終了する。
【００２４】
本発明を使用することにより、プロセッサ・システムにおいて、ＲＡＭが利用可能となりアクセス可能となる前に、アプリケーションがスタックを利用できるようにする装置と方法が提供される。
【００２５】
好ましい実施形態について説明してきたが、本発明は、そのような使用に限定されないことを理解されたい。さらに、本発明をいくつかの実施形態の観点で説明してきたが、当業者なら、本発明は、説明した実施形態に限定されないことを理解するであろう。本発明の方法と装置は、添付の請求項の精神と範囲内において、変更および修正を行うことができる。したがって、説明は、本発明に対する限定ではなく、例示的であると見なさなければならない。
【図面の簡単な説明】
【図１】  本発明を実施する例示的なコンピュータ・システムの図である。
【図２】  図１のレジスタ１５０内に配置された複数のレジスタ１５２のフォーマットのある実施形態を示す図（Ａ）と図１のレジスタ１５０内に配置された複数のレジスタ１５２のフォーマットの代替実施形態を示す図（Ｂ）である。
【図３】  本発明のある実施形態による、レジスタ・スタック・プッシュ命令１８２の一般的な動作を示す図（Ａ）と本発明のある実施形態による、レジスタ・スタック・ポップ命令１８４の一般的な動作を示す図（Ｂ）である。
【図４】  本発明のレジスタ・スタック・プッシュ・プロセスのある実施形態を示す流れ図である。
【図５】  本発明のレジスタ・スタック・ポップ・プロセスのある実施形態を示す流れ図である。
【図１】
0003953275.tif 000002
【図２】
0003953275.tif 000003
【図３】
0003953275.tif 000004
【図４】
0003953275.tif 000005
【図５】
0003953275.tif 000006