JP4996008B2 - マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 - Google Patents
マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 Download PDFInfo
- Publication number
- JP4996008B2 JP4996008B2 JP2000326819A JP2000326819A JP4996008B2 JP 4996008 B2 JP4996008 B2 JP 4996008B2 JP 2000326819 A JP2000326819 A JP 2000326819A JP 2000326819 A JP2000326819 A JP 2000326819A JP 4996008 B2 JP4996008 B2 JP 4996008B2
- Authority
- JP
- Japan
- Prior art keywords
- stack
- register
- area
- program
- initial value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Advance Control (AREA)
Description
【発明の属する技術分野】
本発明は、マイクロコンピュータ・システムに関して、特に、スタック解放領域の初期化処理が容易に実行可能なマイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法に関する。
【0002】
【従来の技術】
マイクロコンピュータでプログラムを実行するとき、サブルーチン・コール命令実行時や割り込み処理発生時に、元のプログラムへの戻り番地を格納したり、所定のレジスタに格納されたデータを一時的に格納したりするスタック領域を、前記マイクロコンピュータの空きメモリ領域に設定して、前記のようなスタック動作処理を実行するようにし、また、このスタック領域に該当データを格納するプッシュ・スタック動作時や、スタック領域から該当データを読み出して元に戻すポップ・スタック動作時には、スタック・ポインタによりアドレス指定するメモリ領域に対して、前記のスタック動作処理を実行するように構成したマイクロコンピュータが一般的である。
【0003】
このマイクロコンピュータの空きメモリ領域が不正にアクセスされて、誤動作したり、プログラムが暴走したりすることを防ぐために、前記の空きメモリ領域に所定の初期値データを格納する初期化処理を実行することにより、不正にこの空きメモリ領域がアクセスされても、予期した動作範囲になるようにして、誤動作やプログラムが暴走しないようにすることが、従来、提案されている。
【0004】
例えば、特開昭63−233452号公報には、メモリの未使用領域(空き領域)に、特定のアドレスに分岐するコマンド・コード・データを初期化処理により初期設定して、誤って前記の未使用領域のアドレスをアクセスしたときには、前記の特定アドレスに分岐するコマンド・コード・データを実行することにより、例えば0番地に分岐するようにしてプログラムの暴走を防止するようにした例が記載されている。
【0005】
また、特開平04−182836号公報には、メモリのワークエリア領域を特定のパタンで初期化しておき、プログラムがこのワークエリア領域を参照したときに、参照したデータと前記初期設定した特定パタン・データとを比較して、データが同じときには、不定値参照とみなしてエラー報告するようにして、プログラムの誤動作を防止するようにした例が記載されている。
【0006】
【発明が解決しようとする課題】
前述した従来技術においては、該当の空きメモリ領域に所定の初期値データを格納する初期化処理を実行したあとに、前記空きメモリ領域の任意の領域にスタック領域を設定して、スタック動作処理を実行し、その後に前記スタック領域を解放したとき、前記解放されたスタック領域には、初期化処理により格納した所定の初期値データとは異なるデータが残されたままとなり、プログラムによりこの解放後のスタック領域が不正にアクセスされたときには、初期化処理を実行したにも拘わらず、初期値データとは異なるデータがアクセスされて、その後の動作が不定となり、誤動作やプログラムの暴走の原因となる可能性があった。
【0007】
本発明は、このスタック領域解放後の空きメモリ領域にも、常に、所定の初期値データを格納するようにすることが容易に実行可能なマイクロコンピュータを提案するとともに、空きメモリ領域の初期化方法と、及び、スタック領域解放後の空きメモリ領域にも、常に初期値データを格納するようにしたプログラムを作成するマイクロコンピュータのプログラミング方法と、及び、空きメモリ領域/スタック解放領域の初期化方法とを提案するものである。
【0008】
【課題を解決するための手段】
前記課題を解決するため、本発明のマイクロコンピュータは、サブルーチン・コール命令実行時や、割り込み処理発生時には、主プログラムへの戻り番地をスタック・メモリ領域に格納したり、あるいは、所定のレジスタのデータを一時的に退避するプッシュ・レジスタ命令実行時には、そのレジスタ・データをスタック・メモリ領域に格納するなどのプッシュ・スタック動作と、サブルーチン・リターン命令実行時や、割り込みリターン命令実行時には、前記スタック・メモリ領域からデータを読み出して、主プログラムへの戻り番地をプログラム・カウンタに回復したり、あるいは、一時的に退避したデータを元のレジスタに回復させるポップ・レジスタ命令実行時には、前記スタック・メモリ領域からデータを読み出して、元のレジスタに回復するなどのポップ・スタック動作とを、スタック・ポインタでアドレス指定されるスタック・メモリに対して実行するようにしたマイクロコンピュータにおいて、
前記マイクロコンピュータは、前記ポップ・スタック動作時に、スタック・ポインタをインクリメント(または、ディクリメント)する信号を検出してスタック解放信号を生成するスタック解放検出回路と、前記スタック解放信号を受けて、その時点のプログラム・カウンタ値をプログラム・カウンタ・バックアップ・レジスタに格納し、スタック解放割り込みアドレス・レジスタに予め設定した割り込みアドレスを、プログラム・カウンタにセットして、スタック解放領域に所定の初期値データを格納処理するスタック解放領域初期化ルーチンを起動するスタック割り込み回路とを有し、前記スタック解放領域初期化ルーチン終了時に実行するスタック解放割り込みリターン命令実行時には、前記プログラム・カウンタ・バックアップ・レジスタから主プログラムへの戻り番地を読み出し、プログラム・カウンタに転送して主プログラムに復帰するようにしたことを特徴とする。
【0009】
また、本発明の空きメモリ領域の初期化方法は、前記のマイクロコンピュータにおいて、任意のレジスタに所定の初期値データを設定して初期値レジスタとする第1のステップと、前記スタック・ポインタに、イニシャライズする空きメモリ領域の境界アドレスを設定する第2のステップと、前記初期値レジスタに格納されたデータをスタック・メモリに退避処理するプッシュ・レジスタ命令を、前記の空きメモリ領域のアドレス数分だけ繰り返し実行する第3のステップとを実行することにより、前記初期値レジスタに設定した所定の初期値データを、前記空きメモリ領域に格納するイニシャライズ処理を行うようにしたことを特徴とする。
【0010】
また、前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データを、ノー・オペレーション命令のコード・データとする、あるいは、前記初期値レジスタに設定する所定の初期値データを、所定のアドレスに分岐する分岐命令のコード・データとする、あるいは、各ビットが全て0、または、各ビットが全て1のデータとすることを特徴とする。
【0011】
さらに、本発明のマイクロコンピュータのプログラミング方法は、前記スタック解放割り込み回路により起動される前記スタック解放領域初期化ルーチンが、所定の初期値データを任意のレジスタに設定する第4のステップと、割り込み直前に実行完了したポップ・スタック動作により解放されたスタック領域に、前記レジスタに格納した所定の初期値データを格納するプッシュ・レジスタ命令を実行する第5のステップと、前記のプッシュ・レジスタ命令に対応するポップ・レジスタ命令を実行して、スタック・ポインタの値をこのスタック解放領域初期化ルーチンを起動する直前の値に戻す第6のステップと、スタック解放割り込みリターン命令を実行して、前記プログラム・カウンタ・バックアップ・レジスタの値をプログラム・カウンタに復帰する第7のステップとを含むように構成し、前記マイクロコンピュータで実行するプログラムを作成するときには、前記の空きメモリ領域の初期化方法の手順を実行するイニシャライズ処理ルーチンを該プログラムの最初に実行する部分に配置し、前記第4ステップから第7ステップを含むように構成したスタック解放領域初期化ルーチンを、前記のスタック解放割り込みアドレス・レジスタに設定するアドレス値で指定するメモリ位置に配置するようにして、該プログラムを作成するようにプログラミングすることを特徴とする。
【0012】
また、前記第4のステップで任意のレジスタに設定する初期値データを、所定のアドレスに分岐する分岐命令のコード・データとするようにしてもよい。
【0013】
また、このマイクロコンピュータのプログラミング方法で作成したプログラムを記録媒体に格納して、情報処理システムで利用可能にした。
【0014】
あるいは、本発明のコンパイラは、このマイクロコンピュータで実行するように作成された任意のソースプログラムから、前記のマイクロコンピュータのプログラミング方法に従って作成したプログラムを生成するようにした。そして、このコンパイラで生成したプログラムを記録媒体に格納して、情報処理システムで利用可能にした。
【0015】
また、前記のマイクロコンピュータのプログラミング方法で作成したプログラム、あるいは、前記のコンパイラで生成したプログラムを実行することにより、空きメモリ領域/スタック解放領域を初期化するようにした。
【0016】
【発明の実施の形態】
本発明の実施の形態について、以下に図面を参照して説明する。
【0017】
図1は、本発明のマイクロコンピュータの要部の構成及び本発明の空きメモリ領域/スタック解放領域の初期化方法を説明するための模式図である。
図1において、本発明のマイクロコンピュータ1は、プッシュ/ポップのスタック動作をするときのアドレスを指定するスタック・ポインタ2と、プッシュ/ポップ・スタック動作時に前記スタック・ポインタをディクリメント/インクリメントする信号30/31を生成する命令デコーダ&タイミング発生回路3と、プログラム・カウンタ4と、前記信号30/31の中で、ポップ・スタック動作時に生成される信号31を検出して、スタック解放信号51を生成するスタック解放検出回路5と、前記スタック解放信号51を受けて、スタック解放割り込みを発生するスタック割り込み回路6と、汎用レジスタ9とを備え、前記スタック解放割り込み回路6は、スタック解放割り込みが発生した時点での前記プログラム・カウンタ4の値を格納するプログラム・カウンタ・バックアップ・レジスタ7と、前記プログラム・カウンタ・バックアップ・レジスタ7に、プログラム・カウンタ4の値を格納した後、予め設定するスタック解放割り込み処理ルーチンの起動アドレスを格納し、プログラム・カウンタ4に前記のスタック解放割り込み処理ルーチンの起動アドレスを供給するスタック解放割り込みアドレス・レジスタ8とを備えるようにしている。
【0018】
また、本発明のマイクロコンピュータ1は、前記スタック解放割り込み処理から、元の主プログラムに復帰するためのスタック解放割り込みリターン命令(RETSPI命令)を備えるようにしている。このスタック解放割り込みリターン命令は、前記プログラム・カウンタ・バックアップ・レジスタ7に格納している値を、プログラム・カウンタ4に戻すという動作を実行する命令である。
【0019】
図2は、本発明の空きメモリ領域を初期化するイニシャライズ処理の手順を説明するフローチャートである。図2のフローチャートに示すように、前記の空きメモリ領域イニシャライズ処理の手順は、本発明のマイクロコンピュータ1の任意のレジスタ9に所定の初期値データを設定して初期値レジスタとする第1のステップ201と、前記スタック・ポインタ2に、イニシャライズする空きメモリ領域の境界アドレスを設定する第2のステップ202と、前記初期値レジスタに格納されたデータをスタック・メモリに退避処理するプッシュ・レジスタ命令を、前記の空きメモリ領域のアドレス数分だけ繰り返し実行する第3のステップ203とを実行するようにして構成している。この手順を実行することにより、前記初期値レジスタに設定した所定の初期値データを、前記空きメモリ領域に格納するイニシャライズ処理を行った後は、分岐命令などにより、主プログラムに戻るようにする。
【0020】
また、前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データを、ノー・オペレーション命令のコード・データとする、あるいは、前記初期値レジスタに設定する所定の初期値データを、所定のアドレスに分岐する分岐命令のコード・データとする、あるいは、各ビットの全てが0、または、各ビットの全てが1であるデータとするようにしてもよい。
【0021】
例えば、初期値データとして、各ビットが全て0、または、各ビットが全て1であるようなデータを設定するようにした場合には、不正に該当の空きメモリ領域がアクセスされて、アドレス情報としてこの初期値データが使用されるようなアプリケーションにおいては、ブレーク・ポイント・アドレスを0番地、あるいは、全てのビットが1である番地に指定するようにしておくことにより、不正に空きメモリ領域がアクセスされたときには、一旦、プログラムの実行をブレークして、不正アクセスに対処することが可能となる。
【0022】
図3は、スタック解放割り込み処理として実行する、スタック解放領域初期化ルーチンの処理手順を説明するフローチャートである。
前記スタック解放領域初期化ルーチンの処理手順は、所定のアドレスに分岐する分岐命令のコード・データを任意のレジスタに設定する第4のステップ304と、スタック解放割り込み直前に実行完了したポップ・スタック動作により解放されたスタック領域に、前記レジスタに格納した所定アドレスに分岐する分岐命令のコード・データを格納するプッシュ・レジスタ命令を実行する第5のステップ305と、前記のプッシュ・レジスタ命令に対応するポップ・レジスタ命令を実行して、スタック・ポインタの値をこのスタック解放領域初期化ルーチンを起動する直前の値に戻す第6のステップ306と、スタック解放割り込みリターン命令(RETSPI命令)を実行して、前記プログラム・カウンタ・バックアップ・レジスタ7の値をプログラム・カウンタ4に復帰する第7のステップ307とを含むように構成している。
【0023】
図4は、本発明のマイクロコンピュータのプログラミング方法によりプログラムを作成する手順を説明するフローチャートである。まず、本発明のマイクロコンピュータで実行する主プログラムを作成した後に、図2を参照して説明した前記の空きメモリ領域イニシャライズ処理ルーチンを、該主プログラムの最初に実行する部分に挿入・追加するステップ401と、図3を参照して説明した前記のスタック解放領域初期化ルーチンを配置するアドレス値を前記スタック割り込みアドレス・レジスタ8に設定する命令を前記主プログラムに挿入・追加するステップ402と、前記のスタック解放領域初期化ルーチンを、前記のスタック解放割り込みアドレス・レジスタ8に設定するアドレス値で指定するメモリ位置に配置するように挿入・追加するステップ403と、以上のステップにより、該主プログラムを完成するようにしている。
【0024】
図5は、本発明のコンパイラの処理手順を説明するフローチャートである。
本発明のコンパイラは、主プログラムであるソースプログラムを読み込むステップ501と、空きメモリ領域のイニシャライズ処理ルーチンを、前記ソースプログラムの最初に実行する部分に挿入・追加するステップ502と、スタック解放割り込みアドレス値を、スタック解放割り込みアドレス・レジスタに設定する命令を前記ソースプログラムの最初に実行する部分に挿入・追加するステップ503と、スタック解放領域初期化ルーチンを、前記のスタック解放割り込みアドレス・レジスタに設定したアドレス値で指定される位置に挿入・追加するステップ504と、空きメモリ領域イニシャライズ処理ルーチンと、スタック解放領域初期化ルーチンとをソースプログラムに付加したソースプログラムを完成するステップ505と、前記の完成したソースプログラムをコンパイル処理して、目的のプログラムを生成するステップ506とを実行するようにしている。
【0025】
図6は、前記のプログラミング方法、あるいは、前記のコンパイラにより作成したプログラムをメモリ10に格納したメモリ・マップを例示した図である。図6に示すように、メモリ領域は大きくプログラム領域と、空きメモリ領域とに区分される。スタック領域は、通常、空きメモリ領域に設けるようにしている。そして、このスタック領域は、プログラムの実行に伴って、スタック領域の使用と解放が繰り返し実行される。
【0026】
従来は、スタック解放後のスタック領域には、それ以前にスタックしたデータがそのまま残っていたが、本発明の空きメモリ領域/スタック解放領域の初期化方法は、このスタック解放後のスタック領域に、所定の初期値を常に書き込む構成にすることにより、空きメモリ領域を常に所定の初期値で満たすようにするものである。
【0027】
次に、本発明の空きメモリ領域/スタック解放領域の初期化方法について、図1を参照してその動作を説明する。
【0028】
通常、プッシュ・スタック動作を実行するときには、まずスタック・ポインタをディクリメントして、ディクリメント後のスタック・ポインタの値でアドレス指定されるメモリ領域(スタック領域)に、所用のデータが退避・格納される。そして、ポップ・スタック動作により退避・格納したデータを回復するときには、現スタック・ポインタでアドレス指定されるスタック領域からデータを読み出して元に戻し、その後、スタック・ポインタをインクリメントするという動作を行う。
【0029】
本発明のマイクロコンピュータは、本発明のプログラミング方法により作成したプログラムの中の主プログラムを起動すると、プログラムの最初の段階で、空きメモリ領域初期化ルーチンを実行して、空きメモリ領域に所定の初期値データを格納する。その後、主プログラムに戻り、▲1▼ポップ・スタック動作を実行したときに、スタック・ポインタをインクリメントする信号31を、スタック解放検出回路5で検出して、▲2▼スタック解放信号51を生成し、▲3▼このスタック解放信号51をスタック割り込み回路6が受けて、その時点のプログラム・カウンタ4の値を、プログラム・カウンタ・バックアップ・レジスタ7に格納し、▲4▼スタック解放割り込みアドレス・レジスタ8に格納されている値を、プログラム・カウンタ4に転送して、▲5▼前記スタック割り込みアドレス・レジスタで指定される位置に配置したスタック解放領域初期化ルーチンを実行し、▲6▼スタック解放領域初期化ルーチンの最後にスタック解放割り込みリターン命令(RETSPI命令)を実行するようにして、▲7▼前記プログラム・カウンタ・バックアップ・レジスタ7に格納した値をプログラム・カウンタ4に戻して、主プログラムに復帰するという動作を行う。
【0030】
また、プッシュ・スタック動作時には、スタック・ポインタをインクリメントし、ポップ・スタック動作時にはスタック・ポインタをディクリメントする方式の場合には、前記スタック解放検出回路5で、スタック・ポインタをディクリメントする信号30を検出して、スタック解放信号51を生成するようにすればよいことは当然である。
【0031】
以上の動作により、スタック解放後のスタック領域を含む空きメモリ領域は、常に所定の初期値が格納された状態になる。
【0032】
【発明の効果】
以上のように、本願発明のマイクロコンピュータは、ポップ・スタック動作終了時毎に、スタック解放割り込みを発生して、スタック解放領域初期化ルーチンを起動し、解放されたスタック領域に所定の初期値を格納するようにしたので、解放後のスタック領域にも、常に初期値データが格納されて、全ての空きメモリ領域を、常に、初期値データで満たしておくことができるという効果がある。
【0033】
また、プログラム・カウンタ・バックアップ・レジスタを設けるようにしたので、スタック解放割り込み時には、主プログラムへの戻り番地を、スタック領域に格納する必要がないので、前述したスタック解放領域初期化ルーチンを、主プログラムに影響を与えることなく実行できるという効果がある。
【図面の簡単な説明】
【図1】本発明のマイクロコンピュータの要部の構成及び本発明の空きメモリ領域/スタク解放領域の初期化方法を説明する模式図である。
【図2】本発明の空きメモリ領域の初期化方法の手順を説明するフローチャートである。
【図3】本発明のスタック解放領域初期化ルーチンの処理手順を説明するフローチャートである。
【図4】本発明のマイクロコンピュータのプログラミング方法の処理手順を説明するフローチャートである。
【図5】本発明のコンパイラの処理手順を説明するフローチャートである。
【図6】本発明のマイクロコンピュータのプログラミング方法により作成されたプログラムをメモリに格納したメモリ・マップを例示した図である。
【符号の説明】
1 本発明のマイクロコンピュータ
2 スタック・ポインタ
3 命令デコーダ&タイミング発生回路
4 プログラム・カウンタ
5 スタック解放検出回路
6 スタック割り込み回路
7 プログラム・カウンタ・バックアップ・レジスタ
8 スタック解放割り込みアドレス・レジスタ
9 汎用レジスタ
10 メモリ
30 ディクリメント信号
31 インクリメント信号
51 スタック解放信号
Claims (9)
- 元のプログラムへの戻り番地及び任意のデータを保持するスタック領域を備え、当該スタック領域を用いてプログラム実行時のプッシュ/ポップ・スタックを行うマイクロコンピュータにおいて、
前記ポップ・スタック動作時に、スタック・ポインタをインクリメント(またはデクリメント)する信号を検出してスタック解放信号を生成するスタック解放検出回路と、
前記スタック解放信号を受けて、その時点のプログラム・カウンタ値をプログラム・カウンタ・バックアップ・レジスタに格納し、スタック解放割込みアドレス・レジスタに予め設定した割込みアドレスを、プログラム・カウンタにセットして、スタック解放領域に所定の初期値データを格納処理するスタック解放領域初期化ルーチンを起動するスタック割込み回路と、
前記スタック解放領域初期化ルーチンにて解放対象のスタック領域に格納される初期値データを保持するレジスタと、を有し、
前記スタック領域初期化ルーチン終了時に実行するスタック解放割込みリターン命令時には、前記プログラム・カウンタ・バックアップ・レジスタから主プログラムへの戻り番地を読み出し、プログラム・カウンタに転送して主プログラムに復帰するようにしたことを特徴とするマイクロコンピュータ。 - 請求項1記載のマイクロコンピュータにおいて、前記レジスタに所定の初期値データを設定して初期値レジスタとする第1のステップと、
前記スタック・ポインタに、イニシャライズする空きメモリ領域の境界アドレスを設定する第2のステップと、
前記初期値レジスタに格納されたデータをスタック・メモリに退避処理するプッシュ・レジスタ命令を、前記の空きメモリ領域のアドレス数分だけ繰り返し実行する第3のステップとを実行することにより、前記初期値レジスタに設定した所定の初期値データを、前記空きメモリ領域に格納するイニシャライズ処理を行うようにしたことを特徴とする空きメモリ領域の初期化方法。 - 前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データが、ノー・オペレーション命令のコード・データであることを特徴とする請求項2記載の空きメモリ領域の初期化方法。
- 前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データが、所定のアドレスに分岐する分岐命令のコード・データであることを特徴とする請求項2記載の空きメモリ領域の初期化方法。
- 前記のイニシャライズ処理において、前記初期値レジスタに設定する所定の初期値データが、各ビットが全て0、または、各ビットが全て1のデータであることを特徴とする請求項2記載の空きメモリ領域の初期化方法。
- 請求項1記載のマイクロコンピュータにおいて、
前記マイクロコンピュータに、前記スタック解放割り込みアドレス・レジスタに設定するアドレス値で指定するメモリ位置に配置した前記スタック解放領域初期化ルーチンを実行させることによって、空きメモリ領域を初期化する方法であって、
前記スタック解放領域初期化ルーチンは、
最初に実行される部分に、請求項2、3、4、または5に記載の空きメモリ領域の初期化方法の手順を実行するイニシャライズ処理ルーチンを配置し、
所定の初期値データを前記レジスタに設定する第4のステップと、
割り込み直前に実行完了したポップ・スタック動作により解放されたスタック領域に、前記レジスタに格納した所定の初期値データを格納するプッシュ・レジスタ命令を実行する第5のステップと、
前記のプッシュ・レジスタ命令に対応するポップ・レジスタ命令を実行して、スタック・ポインタの値をこのスタック解放領域初期化ルーチンを起動する直前の値に戻す第6のステップと、
スタック解放割り込みリターン命令を実行して、前記プログラム・カウンタ・バックアップ・レジスタの値を前記プログラム・カウンタに復帰する第7のステップと
を含むものであり、
前記マイクロコンピュータは、前記イニシャライズ処理ルーチンを実行した後、前記第4〜7のステップを順に実行する空きメモリ領域の初期化方法。 - 請求項6記載の方法の前記スタック解放領域初期化ルーチンにおいて、前記第4のステップで前記レジスタに設定する初期値データを、所定のアドレスに分岐する分岐命令のコード・データとしたことを特徴とする空きメモリ領域の初期化方法。
- 請求項6または7記載の方法の前記スタック解放領域初期化ルーチンを記録した記録媒体。
- 請求項1記載のマイクロコンピュータに、請求項6または請求項7に記載の空きメモリ領域の初期化方法を実行させるプログラムを、任意のソースプログラムに組み込んで目的プログラムを生成するコンパイラプログラムを記録した記録媒体であって、
前記コンパイラプログラムは、
主プログラムであるソースプログラムを読み込むステップと、
空きメモリ領域のイニシャライズ処理ルーチンを、前記ソースプログラムの最初に実行する部分に挿入・追加するステップと、
スタック解放割り込みアドレス値を、スタック解放割り込みアドレス・レジスタに設定する命令を前記ソースプログラムの最初に実行する部分に挿入・追加するステップと、
スタック解放領域初期化ルーチンを、前記のスタック解放割り込みアドレス・レジスタに設定したアドレス値で指定される位置に挿入・追加するステップと、
空きメモリ領域イニシャライズ処理ルーチンと、スタック解放領域初期化ルーチンとをソースプログラムに付加したソースプログラムを完成するステップと、
前記の完成したソースプログラムをコンパイル処理して、目的プログラムを生成するステップと、
を実行することを特徴とするコンパイラプログラムを記録した記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000326819A JP4996008B2 (ja) | 2000-10-26 | 2000-10-26 | マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000326819A JP4996008B2 (ja) | 2000-10-26 | 2000-10-26 | マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2002132528A JP2002132528A (ja) | 2002-05-10 |
| JP4996008B2 true JP4996008B2 (ja) | 2012-08-08 |
Family
ID=18803948
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000326819A Expired - Fee Related JP4996008B2 (ja) | 2000-10-26 | 2000-10-26 | マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP4996008B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2876557B1 (en) * | 2013-11-22 | 2016-06-01 | Alcatel Lucent | Detecting a read access to unallocated or uninitialized memory |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6368935A (ja) * | 1986-09-10 | 1988-03-28 | Fujitsu Ltd | マイクロプロセツサ暴走防止方式 |
| JPS63233452A (ja) * | 1987-03-20 | 1988-09-29 | Sanyo Electric Co Ltd | デ−タ保護装置 |
| JP2926152B2 (ja) * | 1990-11-19 | 1999-07-28 | 株式会社日立製作所 | ブログラムの不定値参照検出方式 |
| JP3512252B2 (ja) * | 1994-11-02 | 2004-03-29 | 大日本印刷株式会社 | Cpuを内蔵した情報記録媒体 |
| JP2000076081A (ja) * | 1998-08-27 | 2000-03-14 | Matsushita Electric Ind Co Ltd | タスクマネージャー及びプログラム記録媒体 |
-
2000
- 2000-10-26 JP JP2000326819A patent/JP4996008B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2002132528A (ja) | 2002-05-10 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP3915792B1 (en) | Consumable chip, and consumable chip communication method | |
| EP0745934A3 (en) | File system for a data storage device having a power fail recovery mechanism for write/replace operations | |
| JP4996008B2 (ja) | マイクロコンピュータ、及び、空きメモリ領域/スタック解放領域の初期化方法 | |
| JPH10214203A (ja) | 情報処理装置 | |
| KR20020007090A (ko) | 컴퓨터 및 그 부팅 복구 방법 | |
| US20070294599A1 (en) | Method for patching a read-only memory and a data processing system comprising a means of patching the read-only memory based on patch contexts | |
| US6182207B1 (en) | Microcontroller with register system for the indirect accessing of internal memory via auxiliary register | |
| JP2004326331A (ja) | 不正メモリアクセス検知方法及びそのプログラム | |
| JP2001265620A (ja) | Romのプログラムデバッグ方式 | |
| JPH10510652A (ja) | 固定したプログラムを修正できるようにする方法および装置 | |
| JPH09146774A (ja) | パーソナルコンピュータシステム | |
| CN100375029C (zh) | 存储器配置系统与方法 | |
| JP2003131951A (ja) | 不揮発性メモリの制御回路 | |
| JP2000155677A (ja) | プログラムの暴走防止方法、そのためのコンピューターシステムと暴走防止プログラムを記録した記録媒体 | |
| JP2000222198A (ja) | 情報処理装置 | |
| JPS628831B2 (ja) | ||
| KR100631780B1 (ko) | 오버레이 유닛 간의 통신 방법 및 이를 이용한 장치 | |
| KR100436003B1 (ko) | 디바이스드라이버적재방법 | |
| JP3130798B2 (ja) | バス転送装置 | |
| JP4028679B2 (ja) | 揮発性の外部記憶装置 | |
| JPH0934795A (ja) | Cpuプログラムのコピープロテクト法 | |
| JP2000090014A (ja) | 制御ファームウェアによるシステム立ち上げ時のメモリ試験システム及び方法 | |
| TWI288326B (en) | A system and method for updating in-system program | |
| JP3730684B2 (ja) | プログラマブルコントローラ用表示装置およびその表示情報書込方法 | |
| CN119356707A (zh) | 新能源汽车电机控制器的cpu闪存和软件更新系统及方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20070703 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070910 |
|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20100421 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100914 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101112 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110823 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111019 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120508 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120511 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150518 Year of fee payment: 3 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |