(57)【特許請求の範囲】
【請求項１】
元のプログラムへの戻り番地及び任意のデータを保持するスタック領域を備え、当該スタック領域を用いてプログラム実行時のプッシュ／ポップ・スタックを行うマイクロコンピュータにおいて、
前記ポップ・スタック動作時に、スタック・ポインタをインクリメント（またはデクリメント）する信号を検出してスタック解放信号を生成するスタック解放検出回路と、
前記スタック解放信号を受けて、その時点のプログラム・カウンタ値をプログラム・カウンタ・バックアップ・レジスタに格納し、スタック解放割込みアドレス・レジスタに予め設定した割込みアドレスを、プログラム・カウンタにセットして、スタック解放領域に所定の初期値データを格納処理するスタック解放領域初期化ルーチンを起動するスタック割込み回路と、
前記スタック解放領域初期化ルーチンにて解放対象のスタック領域に格納される初期値データを保持するレジスタと、を有し、
前記スタック領域初期化ルーチン終了時に実行するスタック解放割込みリターン命令時には、前記プログラム・カウンタ・バックアップ・レジスタから主プログラムへの戻り番地を読み出し、プログラム・カウンタに転送して主プログラムに復帰するようにしたことを特徴とするマイクロコンピュータ。
【請求項２】
請求項１記載のマイクロコンピュータにおいて、前記レジスタに所定の初期値データを設定して初期値レジスタとする第１のステップと、
前記スタック・ポインタに、イニシャライズする空きメモリ領域の境界アドレスを設定する第２のステップと、
前記初期値レジスタに格納されたデータをスタック・メモリに退避処理するプッシュ・レジスタ命令を、前記の空きメモリ領域のアドレス数分だけ繰り返し実行する第３のステップとを実行することにより、前記初期値レジスタに設定した所定の初期値データを、前記空きメモリ領域に格納するイニシャライズ処理を行うようにしたことを特徴とする空きメモリ領域の初期化方法。
【請求項３】
前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データが、ノー・オペレーション命令のコード・データであることを特徴とする請求項２記載の空きメモリ領域の初期化方法。
【請求項４】
前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データが、所定のアドレスに分岐する分岐命令のコード・データであることを特徴とする請求項２記載の空きメモリ領域の初期化方法。
【請求項５】
前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データが、各ビットが全て０、または、各ビットが全て１のデータであることを特徴とする請求項２記載の空きメモリ領域の初期化方法。
【請求項６】
請求項１記載のマイクロコンピュータにおいて、
前記マイクロコンピュータに、前記スタック解放割り込みアドレス・レジスタに設定するアドレス値で指定するメモリ位置に配置した前記スタック解放領域初期化ルーチンを実行させることによって、空きメモリ領域を初期化する方法であって、
前記スタック解放領域初期化ルーチンは、
最初に実行される部分に、請求項２、３、４、または５に記載の空きメモリ領域の初期化方法の手順を実行するイニシャライズ処理ルーチンを配置し、
所定の初期値データを前記レジスタに設定する第４のステップと、
割り込み直前に実行完了したポップ・スタック動作により解放されたスタック領域に、前記レジスタに格納した所定の初期値データを格納するプッシュ・レジスタ命令を実行する第５のステップと、
前記のプッシュ・レジスタ命令に対応するポップ・レジスタ命令を実行して、スタック・ポインタの値をこのスタック解放領域初期化ルーチンを起動する直前の値に戻す第６のステップと、
スタック解放割り込みリターン命令を実行して、前記プログラム・カウンタ・バックアップ・レジスタの値を前記プログラム・カウンタに復帰する第７のステップと
を含むものであり、
前記マイクロコンピュータは、前記イニシャライズ処理ルーチンを実行した後、前記第４〜７のステップを順に実行する空きメモリ領域の初期化方法。
【請求項７】
請求項６記載の方法の前記スタック解放領域初期化ルーチンにおいて、前記第４のステップで前記レジスタに設定する初期値データを、所定のアドレスに分岐する分岐命令のコード・データとしたことを特徴とする空きメモリ領域の初期化方法。
【請求項８】
請求項６または７記載の方法の前記スタック解放領域初期化ルーチンを記録した記録媒体。
【請求項９】
請求項１記載のマイクロコンピュータに、請求項６または請求項７に記載の空きメモリ領域の初期化方法を実行させるプログラムを、任意のソースプログラムに組み込んで目的プログラムを生成するコンパイラプログラムを記録した記録媒体であって、
前記コンパイラプログラムは、
主プログラムであるソースプログラムを読み込むステップと、
空きメモリ領域のイニシャライズ処理ルーチンを、前記ソースプログラムの最初に実行する部分に挿入・追加するステップと、
スタック解放割り込みアドレス値を、スタック解放割り込みアドレス・レジスタに設定する命令を前記ソースプログラムの最初に実行する部分に挿入・追加するステップと、
スタック解放領域初期化ルーチンを、前記のスタック解放割り込みアドレス・レジスタに設定したアドレス値で指定される位置に挿入・追加するステップと、
空きメモリ領域イニシャライズ処理ルーチンと、スタック解放領域初期化ルーチンとをソースプログラムに付加したソースプログラムを完成するステップと、
前記の完成したソースプログラムをコンパイル処理して、目的プログラムを生成するステップと、
を実行することを特徴とするコンパイラプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコンピュータ・システムに関して、特に、スタック解放領域の初期化処理が容易に実行可能なマイクロコンピュータ、及び、空きメモリ領域／スタック解放領域の初期化方法に関する。
【０００２】
【従来の技術】
マイクロコンピュータでプログラムを実行するとき、サブルーチン・コール命令実行時や割り込み処理発生時に、元のプログラムへの戻り番地を格納したり、所定のレジスタに格納されたデータを一時的に格納したりするスタック領域を、前記マイクロコンピュータの空きメモリ領域に設定して、前記のようなスタック動作処理を実行するようにし、また、このスタック領域に該当データを格納するプッシュ・スタック動作時や、スタック領域から該当データを読み出して元に戻すポップ・スタック動作時には、スタック・ポインタによりアドレス指定するメモリ領域に対して、前記のスタック動作処理を実行するように構成したマイクロコンピュータが一般的である。
【０００３】
このマイクロコンピュータの空きメモリ領域が不正にアクセスされて、誤動作したり、プログラムが暴走したりすることを防ぐために、前記の空きメモリ領域に所定の初期値データを格納する初期化処理を実行することにより、不正にこの空きメモリ領域がアクセスされても、予期した動作範囲になるようにして、誤動作やプログラムが暴走しないようにすることが、従来、提案されている。
【０００４】
例えば、特開昭６３−２３３４５２号公報には、メモリの未使用領域（空き領域）に、特定のアドレスに分岐するコマンド・コード・データを初期化処理により初期設定して、誤って前記の未使用領域のアドレスをアクセスしたときには、前記の特定アドレスに分岐するコマンド・コード・データを実行することにより、例えば０番地に分岐するようにしてプログラムの暴走を防止するようにした例が記載されている。
【０００５】
また、特開平０４−１８２８３６号公報には、メモリのワークエリア領域を特定のパタンで初期化しておき、プログラムがこのワークエリア領域を参照したときに、参照したデータと前記初期設定した特定パタン・データとを比較して、データが同じときには、不定値参照とみなしてエラー報告するようにして、プログラムの誤動作を防止するようにした例が記載されている。
【０００６】
【発明が解決しようとする課題】
前述した従来技術においては、該当の空きメモリ領域に所定の初期値データを格納する初期化処理を実行したあとに、前記空きメモリ領域の任意の領域にスタック領域を設定して、スタック動作処理を実行し、その後に前記スタック領域を解放したとき、前記解放されたスタック領域には、初期化処理により格納した所定の初期値データとは異なるデータが残されたままとなり、プログラムによりこの解放後のスタック領域が不正にアクセスされたときには、初期化処理を実行したにも拘わらず、初期値データとは異なるデータがアクセスされて、その後の動作が不定となり、誤動作やプログラムの暴走の原因となる可能性があった。
【０００７】
本発明は、このスタック領域解放後の空きメモリ領域にも、常に、所定の初期値データを格納するようにすることが容易に実行可能なマイクロコンピュータを提案するとともに、空きメモリ領域の初期化方法と、及び、スタック領域解放後の空きメモリ領域にも、常に初期値データを格納するようにしたプログラムを作成するマイクロコンピュータのプログラミング方法と、及び、空きメモリ領域／スタック解放領域の初期化方法とを提案するものである。
【０００８】
【課題を解決するための手段】
前記課題を解決するため、本発明のマイクロコンピュータは、サブルーチン・コール命令実行時や、割り込み処理発生時には、主プログラムへの戻り番地をスタック・メモリ領域に格納したり、あるいは、所定のレジスタのデータを一時的に退避するプッシュ・レジスタ命令実行時には、そのレジスタ・データをスタック・メモリ領域に格納するなどのプッシュ・スタック動作と、サブルーチン・リターン命令実行時や、割り込みリターン命令実行時には、前記スタック・メモリ領域からデータを読み出して、主プログラムへの戻り番地をプログラム・カウンタに回復したり、あるいは、一時的に退避したデータを元のレジスタに回復させるポップ・レジスタ命令実行時には、前記スタック・メモリ領域からデータを読み出して、元のレジスタに回復するなどのポップ・スタック動作とを、スタック・ポインタでアドレス指定されるスタック・メモリに対して実行するようにしたマイクロコンピュータにおいて、
前記マイクロコンピュータは、前記ポップ・スタック動作時に、スタック・ポインタをインクリメント（または、ディクリメント）する信号を検出してスタック解放信号を生成するスタック解放検出回路と、前記スタック解放信号を受けて、その時点のプログラム・カウンタ値をプログラム・カウンタ・バックアップ・レジスタに格納し、スタック解放割り込みアドレス・レジスタに予め設定した割り込みアドレスを、プログラム・カウンタにセットして、スタック解放領域に所定の初期値データを格納処理するスタック解放領域初期化ルーチンを起動するスタック割り込み回路とを有し、前記スタック解放領域初期化ルーチン終了時に実行するスタック解放割り込みリターン命令実行時には、前記プログラム・カウンタ・バックアップ・レジスタから主プログラムへの戻り番地を読み出し、プログラム・カウンタに転送して主プログラムに復帰するようにしたことを特徴とする。
【０００９】
また、本発明の空きメモリ領域の初期化方法は、前記のマイクロコンピュータにおいて、任意のレジスタに所定の初期値データを設定して初期値レジスタとする第１のステップと、前記スタック・ポインタに、イニシャライズする空きメモリ領域の境界アドレスを設定する第２のステップと、前記初期値レジスタに格納されたデータをスタック・メモリに退避処理するプッシュ・レジスタ命令を、前記の空きメモリ領域のアドレス数分だけ繰り返し実行する第３のステップとを実行することにより、前記初期値レジスタに設定した所定の初期値データを、前記空きメモリ領域に格納するイニシャライズ処理を行うようにしたことを特徴とする。
【００１０】
また、前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データを、ノー・オペレーション命令のコード・データとする、あるいは、前記初期値レジスタに設定する所定の初期値データを、所定のアドレスに分岐する分岐命令のコード・データとする、あるいは、各ビットが全て０、または、各ビットが全て１のデータとすることを特徴とする。
【００１１】
さらに、本発明のマイクロコンピュータのプログラミング方法は、前記スタック解放割り込み回路により起動される前記スタック解放領域初期化ルーチンが、所定の初期値データを任意のレジスタに設定する第４のステップと、割り込み直前に実行完了したポップ・スタック動作により解放されたスタック領域に、前記レジスタに格納した所定の初期値データを格納するプッシュ・レジスタ命令を実行する第５のステップと、前記のプッシュ・レジスタ命令に対応するポップ・レジスタ命令を実行して、スタック・ポインタの値をこのスタック解放領域初期化ルーチンを起動する直前の値に戻す第６のステップと、スタック解放割り込みリターン命令を実行して、前記プログラム・カウンタ・バックアップ・レジスタの値をプログラム・カウンタに復帰する第７のステップとを含むように構成し、前記マイクロコンピュータで実行するプログラムを作成するときには、前記の空きメモリ領域の初期化方法の手順を実行するイニシャライズ処理ルーチンを該プログラムの最初に実行する部分に配置し、前記第４ステップから第７ステップを含むように構成したスタック解放領域初期化ルーチンを、前記のスタック解放割り込みアドレス・レジスタに設定するアドレス値で指定するメモリ位置に配置するようにして、該プログラムを作成するようにプログラミングすることを特徴とする。
【００１２】
また、前記第４のステップで任意のレジスタに設定する初期値データを、所定のアドレスに分岐する分岐命令のコード・データとするようにしてもよい。
【００１３】
また、このマイクロコンピュータのプログラミング方法で作成したプログラムを記録媒体に格納して、情報処理システムで利用可能にした。
【００１４】
あるいは、本発明のコンパイラは、このマイクロコンピュータで実行するように作成された任意のソースプログラムから、前記のマイクロコンピュータのプログラミング方法に従って作成したプログラムを生成するようにした。そして、このコンパイラで生成したプログラムを記録媒体に格納して、情報処理システムで利用可能にした。
【００１５】
また、前記のマイクロコンピュータのプログラミング方法で作成したプログラム、あるいは、前記のコンパイラで生成したプログラムを実行することにより、空きメモリ領域／スタック解放領域を初期化するようにした。
【００１６】
【発明の実施の形態】
本発明の実施の形態について、以下に図面を参照して説明する。
【００１７】
図１は、本発明のマイクロコンピュータの要部の構成及び本発明の空きメモリ領域／スタック解放領域の初期化方法を説明するための模式図である。
図１において、本発明のマイクロコンピュータ１は、プッシュ／ポップのスタック動作をするときのアドレスを指定するスタック・ポインタ２と、プッシュ／ポップ・スタック動作時に前記スタック・ポインタをディクリメント／インクリメントする信号３０／３１を生成する命令デコーダ＆タイミング発生回路３と、プログラム・カウンタ４と、前記信号３０／３１の中で、ポップ・スタック動作時に生成される信号３１を検出して、スタック解放信号５１を生成するスタック解放検出回路５と、前記スタック解放信号５１を受けて、スタック解放割り込みを発生するスタック割り込み回路６と、汎用レジスタ９とを備え、前記スタック解放割り込み回路６は、スタック解放割り込みが発生した時点での前記プログラム・カウンタ４の値を格納するプログラム・カウンタ・バックアップ・レジスタ７と、前記プログラム・カウンタ・バックアップ・レジスタ７に、プログラム・カウンタ４の値を格納した後、予め設定するスタック解放割り込み処理ルーチンの起動アドレスを格納し、プログラム・カウンタ４に前記のスタック解放割り込み処理ルーチンの起動アドレスを供給するスタック解放割り込みアドレス・レジスタ８とを備えるようにしている。
【００１８】
また、本発明のマイクロコンピュータ１は、前記スタック解放割り込み処理から、元の主プログラムに復帰するためのスタック解放割り込みリターン命令（ＲＥＴＳＰＩ命令）を備えるようにしている。このスタック解放割り込みリターン命令は、前記プログラム・カウンタ・バックアップ・レジスタ７に格納している値を、プログラム・カウンタ４に戻すという動作を実行する命令である。
【００１９】
図２は、本発明の空きメモリ領域を初期化するイニシャライズ処理の手順を説明するフローチャートである。図２のフローチャートに示すように、前記の空きメモリ領域イニシャライズ処理の手順は、本発明のマイクロコンピュータ１の任意のレジスタ９に所定の初期値データを設定して初期値レジスタとする第１のステップ２０１と、前記スタック・ポインタ２に、イニシャライズする空きメモリ領域の境界アドレスを設定する第２のステップ２０２と、前記初期値レジスタに格納されたデータをスタック・メモリに退避処理するプッシュ・レジスタ命令を、前記の空きメモリ領域のアドレス数分だけ繰り返し実行する第３のステップ２０３とを実行するようにして構成している。この手順を実行することにより、前記初期値レジスタに設定した所定の初期値データを、前記空きメモリ領域に格納するイニシャライズ処理を行った後は、分岐命令などにより、主プログラムに戻るようにする。
【００２０】
また、前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データを、ノー・オペレーション命令のコード・データとする、あるいは、前記初期値レジスタに設定する所定の初期値データを、所定のアドレスに分岐する分岐命令のコード・データとする、あるいは、各ビットの全てが０、または、各ビットの全てが１であるデータとするようにしてもよい。
【００２１】
例えば、初期値データとして、各ビットが全て０、または、各ビットが全て１であるようなデータを設定するようにした場合には、不正に該当の空きメモリ領域がアクセスされて、アドレス情報としてこの初期値データが使用されるようなアプリケーションにおいては、ブレーク・ポイント・アドレスを０番地、あるいは、全てのビットが１である番地に指定するようにしておくことにより、不正に空きメモリ領域がアクセスされたときには、一旦、プログラムの実行をブレークして、不正アクセスに対処することが可能となる。
【００２２】
図３は、スタック解放割り込み処理として実行する、スタック解放領域初期化ルーチンの処理手順を説明するフローチャートである。
前記スタック解放領域初期化ルーチンの処理手順は、所定のアドレスに分岐する分岐命令のコード・データを任意のレジスタに設定する第４のステップ３０４と、スタック解放割り込み直前に実行完了したポップ・スタック動作により解放されたスタック領域に、前記レジスタに格納した所定アドレスに分岐する分岐命令のコード・データを格納するプッシュ・レジスタ命令を実行する第５のステップ３０５と、前記のプッシュ・レジスタ命令に対応するポップ・レジスタ命令を実行して、スタック・ポインタの値をこのスタック解放領域初期化ルーチンを起動する直前の値に戻す第６のステップ３０６と、スタック解放割り込みリターン命令（ＲＥＴＳＰＩ命令）を実行して、前記プログラム・カウンタ・バックアップ・レジスタ７の値をプログラム・カウンタ４に復帰する第７のステップ３０７とを含むように構成している。
【００２３】
図４は、本発明のマイクロコンピュータのプログラミング方法によりプログラムを作成する手順を説明するフローチャートである。まず、本発明のマイクロコンピュータで実行する主プログラムを作成した後に、図２を参照して説明した前記の空きメモリ領域イニシャライズ処理ルーチンを、該主プログラムの最初に実行する部分に挿入・追加するステップ４０１と、図３を参照して説明した前記のスタック解放領域初期化ルーチンを配置するアドレス値を前記スタック割り込みアドレス・レジスタ８に設定する命令を前記主プログラムに挿入・追加するステップ４０２と、前記のスタック解放領域初期化ルーチンを、前記のスタック解放割り込みアドレス・レジスタ８に設定するアドレス値で指定するメモリ位置に配置するように挿入・追加するステップ４０３と、以上のステップにより、該主プログラムを完成するようにしている。
【００２４】
図５は、本発明のコンパイラの処理手順を説明するフローチャートである。
本発明のコンパイラは、主プログラムであるソースプログラムを読み込むステップ５０１と、空きメモリ領域のイニシャライズ処理ルーチンを、前記ソースプログラムの最初に実行する部分に挿入・追加するステップ５０２と、スタック解放割り込みアドレス値を、スタック解放割り込みアドレス・レジスタに設定する命令を前記ソースプログラムの最初に実行する部分に挿入・追加するステップ５０３と、スタック解放領域初期化ルーチンを、前記のスタック解放割り込みアドレス・レジスタに設定したアドレス値で指定される位置に挿入・追加するステップ５０４と、空きメモリ領域イニシャライズ処理ルーチンと、スタック解放領域初期化ルーチンとをソースプログラムに付加したソースプログラムを完成するステップ５０５と、前記の完成したソースプログラムをコンパイル処理して、目的のプログラムを生成するステップ５０６とを実行するようにしている。
【００２５】
図６は、前記のプログラミング方法、あるいは、前記のコンパイラにより作成したプログラムをメモリ１０に格納したメモリ・マップを例示した図である。図６に示すように、メモリ領域は大きくプログラム領域と、空きメモリ領域とに区分される。スタック領域は、通常、空きメモリ領域に設けるようにしている。そして、このスタック領域は、プログラムの実行に伴って、スタック領域の使用と解放が繰り返し実行される。
【００２６】
従来は、スタック解放後のスタック領域には、それ以前にスタックしたデータがそのまま残っていたが、本発明の空きメモリ領域／スタック解放領域の初期化方法は、このスタック解放後のスタック領域に、所定の初期値を常に書き込む構成にすることにより、空きメモリ領域を常に所定の初期値で満たすようにするものである。
【００２７】
次に、本発明の空きメモリ領域／スタック解放領域の初期化方法について、図１を参照してその動作を説明する。
【００２８】
通常、プッシュ・スタック動作を実行するときには、まずスタック・ポインタをディクリメントして、ディクリメント後のスタック・ポインタの値でアドレス指定されるメモリ領域（スタック領域）に、所用のデータが退避・格納される。そして、ポップ・スタック動作により退避・格納したデータを回復するときには、現スタック・ポインタでアドレス指定されるスタック領域からデータを読み出して元に戻し、その後、スタック・ポインタをインクリメントするという動作を行う。
【００２９】
本発明のマイクロコンピュータは、本発明のプログラミング方法により作成したプログラムの中の主プログラムを起動すると、プログラムの最初の段階で、空きメモリ領域初期化ルーチンを実行して、空きメモリ領域に所定の初期値データを格納する。その後、主プログラムに戻り、▲１▼ポップ・スタック動作を実行したときに、スタック・ポインタをインクリメントする信号３１を、スタック解放検出回路５で検出して、▲２▼スタック解放信号５１を生成し、▲３▼このスタック解放信号５１をスタック割り込み回路６が受けて、その時点のプログラム・カウンタ４の値を、プログラム・カウンタ・バックアップ・レジスタ７に格納し、▲４▼スタック解放割り込みアドレス・レジスタ８に格納されている値を、プログラム・カウンタ４に転送して、▲５▼前記スタック割り込みアドレス・レジスタで指定される位置に配置したスタック解放領域初期化ルーチンを実行し、▲６▼スタック解放領域初期化ルーチンの最後にスタック解放割り込みリターン命令（ＲＥＴＳＰＩ命令）を実行するようにして、▲７▼前記プログラム・カウンタ・バックアップ・レジスタ７に格納した値をプログラム・カウンタ４に戻して、主プログラムに復帰するという動作を行う。
【００３０】
また、プッシュ・スタック動作時には、スタック・ポインタをインクリメントし、ポップ・スタック動作時にはスタック・ポインタをディクリメントする方式の場合には、前記スタック解放検出回路５で、スタック・ポインタをディクリメントする信号３０を検出して、スタック解放信号５１を生成するようにすればよいことは当然である。
【００３１】
以上の動作により、スタック解放後のスタック領域を含む空きメモリ領域は、常に所定の初期値が格納された状態になる。
【００３２】
【発明の効果】
以上のように、本願発明のマイクロコンピュータは、ポップ・スタック動作終了時毎に、スタック解放割り込みを発生して、スタック解放領域初期化ルーチンを起動し、解放されたスタック領域に所定の初期値を格納するようにしたので、解放後のスタック領域にも、常に初期値データが格納されて、全ての空きメモリ領域を、常に、初期値データで満たしておくことができるという効果がある。
【００３３】
また、プログラム・カウンタ・バックアップ・レジスタを設けるようにしたので、スタック解放割り込み時には、主プログラムへの戻り番地を、スタック領域に格納する必要がないので、前述したスタック解放領域初期化ルーチンを、主プログラムに影響を与えることなく実行できるという効果がある。
【図面の簡単な説明】
【図１】本発明のマイクロコンピュータの要部の構成及び本発明の空きメモリ領域／スタク解放領域の初期化方法を説明する模式図である。
【図２】本発明の空きメモリ領域の初期化方法の手順を説明するフローチャートである。
【図３】本発明のスタック解放領域初期化ルーチンの処理手順を説明するフローチャートである。
【図４】本発明のマイクロコンピュータのプログラミング方法の処理手順を説明するフローチャートである。
【図５】本発明のコンパイラの処理手順を説明するフローチャートである。
【図６】本発明のマイクロコンピュータのプログラミング方法により作成されたプログラムをメモリに格納したメモリ・マップを例示した図である。
【符号の説明】
１    本発明のマイクロコンピュータ
２    スタック・ポインタ
３    命令デコーダ＆タイミング発生回路
４    プログラム・カウンタ
５    スタック解放検出回路
６    スタック割り込み回路
７    プログラム・カウンタ・バックアップ・レジスタ
８    スタック解放割り込みアドレス・レジスタ
９    汎用レジスタ
１０    メモリ
３０    ディクリメント信号
３１    インクリメント信号
５１    スタック解放信号
【図１】
0004996008.tif 000002
【図２】
0004996008.tif 000003
【図３】
0004996008.tif 000004
【図４】
0004996008.tif 000005
【図５】
0004996008.tif 000006
【図６】
0004996008.tif 000007