JPH09114698A - プログラム開発装置 - Google Patents

プログラム開発装置

Info

Publication number
JPH09114698A
JPH09114698A JP7266932A JP26693295A JPH09114698A JP H09114698 A JPH09114698 A JP H09114698A JP 7266932 A JP7266932 A JP 7266932A JP 26693295 A JP26693295 A JP 26693295A JP H09114698 A JPH09114698 A JP H09114698A
Authority
JP
Japan
Prior art keywords
stack
value
stack pointer
address
program development
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.)
Pending
Application number
JP7266932A
Other languages
English (en)
Inventor
Koji Nishibayashi
浩司 西林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP7266932A priority Critical patent/JPH09114698A/ja
Publication of JPH09114698A publication Critical patent/JPH09114698A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】スタック・オーバーフローを検出する手段を提
供しプログラムの誤動作を防ぐ。 【解決手段】このプログラム開発装置は、スタック・ポ
インタ値が更新されたことを示すスタック・ポインタ値
更新信号5と、更新後のスタック・ポインタ値示すスタ
ック・データ・バス6と、スタック・データ・バス6の
値と比較する為のスタック領域の限界値を保持する比較
値レジスタ9と、比較値レジスタ9とスタック・データ
・バス6とを比較する比較器8とを有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はプログラム開発装置
に関し、特にスタックを操作するプログラムをデイバッ
グするプログラム開発装置に関する。
【0002】
【従来の技術】以下、図面を参照しながら従来の技術を
説明する。
【0003】図6は従来のプログラム開発装置のスタッ
ク・オーバーフロー検出方式の構成を示すブロック・ダ
イアグラムである。
【0004】図6を参照すると、従来のプログラム開発
装置は、スタック・ポインタ2を用いたメモリ・アクセ
スである事を示すスタック・ポインタ使用信号11と、
その時のアドレス値を示すアドレス・バス3と、アドレ
ス・バス3の値と比較するためのスタック領域の限界値
を保持する比較値レジスタ9と、比較値レジスタ9とア
ドレス・バス3とを比較する比較器8とを有する構成で
ある。
【0005】次に、従来のプログラム開発装置の動作に
ついて説明する。なお、こので扱うソース・プログラム
の文法は特にことわらない限り共立出版の「プログラミ
ング言語C第2版」に定めるの文法/用語に準拠してい
る。また、ここで扱う機械語命令は特にことわらない限
り、日本電気株式会社発行の「μPD78054シリー
ズ8ビット・シングルチップ・マイクロコンピュータ」
資料番号IEU−824Aに記述されている命令であ
る。図3はC言語ソース・プログラムの例である。な
お、便宜上各行の先頭には行番号を明示してある。図4
は図3に示すソース・プログラムをコンパイルして得ら
れた機械語命令である。なお、便宜上各行の先頭には行
番号を明示してある。
【0006】さらに、図5は図3に示す関数funcに
おいて自動変数の変数領域をスタックに配置するための
スタック領域の確保などの前処理が終わったスタック領
域の図である。
【0007】ここでは、スタック領域が1000(1
6)番地(括弧内の数値は奇数を表す。以下同様に記述
する。)から1200(16)番地であるとしスタック
のデータは1200(16)番地から負の方向に積まれ
て行く”X”はスタック領域内のあるアドレスである。
この場合比較値レジスタ9の値は1000(16)に設
定する。
【0008】CPU1は関数funcを呼び出す前にス
タック・ポインタ2がアドレス”X”を示していた場
合、関数呼びだし処理により、スタック・ポインタ2
を”X−2”を指すように更新しスタック・ポインタ2
の指し示すアドレスに戻り番地を保存するが、この時の
戻り番地の書き込みがスタック・ポインタ2を用いたデ
ータ・アクセスになりスタック・ポインタ使用信号11
が真になる。その時のスタック・ポインタ2が示すアド
レス”X−2”がアドレス・バス3に出力され、比較器
8によって比較値レジスタ9の値と比較される。
【0009】もし、関数funcを呼び出す前のスタッ
ク・ポインタ2のチャネル”X”が1102(16)で
あった場合、関数呼びだし処理によりスタック・ポイン
タ2は1100(16)になりアドレス・バス3には1
100(16)が出力され、比較器8により比較値レジ
スタ9の値1000(16)より大きいことが確認され
スタック・オーバーフローが起きていないと判断する。
【0010】そして、関数funcを呼び出す前のスタ
ック・ポインタ2の値”X”が1000(16)であっ
た場合、関数呼び出し処理によりスタック・ポインタ2
は0ffe(16)になりアドレス・バス3には0ff
e(16)が出力され、比較器8により比較値レジスタ
9の値1000(16)より小さいことが確認されスタ
ック・オーバーフローが起きていると判断する。
【0011】
【発明が解決しようとする課題】図3のプログラムをコ
ンパイルした図4に示す命令列は、スタック・ポインタ
の値とオフセット値を加算してメモリにアクセスする
(以下スタック・ポインタ相対アドレッシングとする)
ことができないCPUの場合である。
【0012】このプログラム例では、スタック・ポイン
タ相対アドレッシングができないのでその代わりに図4
に示す6行の様にスタック・ポインタの値をレジスタH
Lにコピーし、汎用レジスタ値とオフセット値を加算し
てメモリにアクセスする命令(以下汎用レジスタ相対ア
ドレッシングと称する)に置きかえている。
【0013】まず、関数funcの動作を説明する。関
数の前処理部で自動変数”i”,”array”のため
の領域として、12バイトの領域をスタック領域に確保
する処理として図4の3行目から6行目のようにスタッ
ク・ポインタ2の値を12減じ、その値をレジスタHL
にコピーする。従って、スタック・ポインタ2とHLレ
ジスタ”X−14”となる。これ以降はこの自動変数領
域には、図4の9行目から10行目の様にHLレジスタ
を用いた汎用レジスタ相対アドレッシングを用いる。
【0014】ここで、関数funcの呼出前スタック・
ポインタ2の値”X”が1002(16)であった場
合、戻り番地を保存する処理では、スタック・ポインタ
2は1000(16)になりアドレス・バス3には10
00(16)が出力されるが、比較値レジスタ9より小
さくない為にスタック・オーバーフローとは判断されな
い。
【0015】そして、関数の前処理部での12バイトの
自動変数領域をスタック領域に確保する処理によりスタ
ック・ポインタ2とHLレジスタの値は0552(1
6)となる。
【0016】その後はスタック・ポインタ2ではなくH
Lレジスタを用いて自動変数領域にアクセスするためス
タック・ポインタ使用信号11が真とならず、既にスタ
ック領域をオーバーフローしているにもかかわらずそれ
を検出することが出来ないという問題点があり、また、
データ・アクセスによる検出方法であるため、スタック
・オーバーフローするアドレスのデータにアクセスする
までスタック・オーバーフローがわからないという問題
点もある。
【0017】
【課題を解決するための手段】本発明のプログラム開発
装置は、中央処理装置と、前記中央処理装置により制御
される後入れ先出し記憶手段と、その内容の値によって
前記記憶手段の書き込み場所、または、読み出し場所、
または、書き込みと読み出し場所の両方を指定するスタ
ック位置指定手段を有するコンピュータ装置のためのプ
ログラム開発装置において、前記スタック位置指定手段
の値が更新されたことを示すスタック・ポインタ値更新
信号手段と、更新後のスタック位置指定手段の値を示す
スタック・データ・バス手段とこのスタック・データ・
バス手段の値と比較するためのスタック領域の限界値を
保持する比較値レジスタと、この比較値レジスタと前記
スタック・データ・バス手段の値とを比較する比較器を
有し、前記中央処理装置が前記スタック位置指定手段を
更新した事を前記スタック・ポインタ値更新信号手段に
より検出し、その時のスタック・データ・バスと予めス
タック領域の限界を設定してあった前記比較値レジスタ
を前記比較器により比較しスタック領域の限界を越えた
スタック・オーバーフローかどうかを検査する構成であ
る。
【0018】また、本発明のプログラム開発装置の前記
比較器は、スタック・オーバーフローのとき・スタック
・オーバーフロー信号を出力する構成とすることもでき
る。
【0019】さらにまた、本発明のプログラム開発装置
の前記スタック位置位置指定手段はスタック・ポインタ
である構成とすることもできる。
【0020】
【発明の実施の形態】次に、本発明について図面を参照
して説明する。図1は本発明の第1の実施の形態のプロ
グラム開発装置の構成図である。
【0021】本発明の第1の実施の形態のプログラム開
発装置は、スタック・ポインタ2を用いたメモリ・アク
セスであること示しスタック・ポインタ2の値の更新を
示すスタック・ポインタ値更新信号5と、アドレス・バ
ス33と、データ・バス34と、スタック・データ・バ
ス6とこのアドレス・バス33の値と比較するためのス
タック領域の限界値を保持する比較レジスタ9と、比較
値レジスタ9とアドレス・バス33とを比較する比較器
8とを有する構成である。
【0022】次に、このプログラム開発装置の動作につ
いて説明する。
【0023】スタック・ポインタ2の値が更新されると
スタック・ポインタ値更新信号5が真となり、更新後の
スタック・ポインタ2の値がスタック・データ・バス6
に出力され、スタック領域の限界値を保持する比較値レ
ジスタ9とスタック・データ・バス6とを比較器8で比
較する。
【0024】図3に示すようなC言語で書かれたプログ
ラムをコンパイルして得られた図4に示すような命令を
実行した場合の動作について説明する。
【0025】スタック領域が1000(16)番地から
1200(16)番地で1200(16)番地から負の
方向に積まれて行く”X”はスタック領域内のあるアド
レスである。この場合比較値レジスタ9の値は1000
(16)に設定する。
【0026】CPU1は関数funcを呼び出す前にス
タック・ポインタ2がアドレス”X”を示していた場合
関数の呼びだし処理によりスタック・ポインタ2が”X
−2”を指すように更新しスタック・ポインタ2の指し
示すアドレスに戻り番地を保存するが、この時のスタッ
ク・ポインタ2を”X−2”に更新する処理によりスタ
ック・ポインタ値更新信号5が真になりその時のスタッ
ク・ポインタ2が示すアドレス”X−2”がスタック・
データ・バス6に出力され、比較器によって比較値レジ
スタ9の値と比較される。
【0027】次に、関数funcの前処理部で自動変
数”i”,”array”の為の領域として、12バイ
トの領域をスタック領域に確保する処理の図4の6行目
の所で、スタック・ポインタ2が更新されるのでスタッ
ク・ポインタ値更新信号5が真になり、その時のスタッ
ク・ポインタ2が示すアドレス”X−14”がスタック
・データ・バス6に出力され、比較器8によって比較値
レジスタ9の値と比較される。
【0028】このとき、関数funcの呼出前のスタッ
ク・ポインタ2の値”X”が1002(16)であった
場合、戻り番地を保持する処理では、スタック・ポイン
タ2が1000(16)になるがこの時のスタック・ポ
インタ2の更新でスタック・データ・バス6に1000
(16)が出力され、比較値レジスタ9の1000(1
6)より小さくない為にスタック・オーバーフローとは
判断されない。
【0029】しかし、関数funcの前処理部の図4の
6行目の所では、スタック・ポインタ2が0ff2(1
6)となり、スタック・データ・バス6には0ff2
(16)が出力され、比較値レジスタ9の1000(1
6)より小い為にスタック・オーバーフローとは判断す
ることが出来る。
【0030】図6は本発明の第2の実施の形態のプログ
ラム開発装置の構成図である。
【0031】この実施の形態は、スタック・オーバーフ
ローを検出する手段をCPU1に内蔵した場合の例で、
比較器8の比較結果スタック・オーバーフローがあった
事を知らせるスタック・オーバーフロー信号12として
外部に知らせるようになっている。
【0032】この第2の実施の形態のプログラム開発装
置の動作は第1の実施の形態のプログラム開発装置と同
一なのでその詳細な説明は省略する。
【0033】これにより、CPU1の端子数を減らせる
ことが可能となりスタック・オーバーフロー信号12を
CPU1の割り込み端子に接続することによりオペレー
ティングシステムによる検出も可能となる。
【0034】
【発明の効果】以上説明したように本発明は、スタック
・ポインタを用いないでデータにアクセスする場合にも
スタック・オーバーフローを検出する事が可能となり、
また、スタック・オーバーフローになる領域にアクセス
しなくてもスタック・オーバーフローを検出することが
できるという効果を有する。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態のプログラム開発装
置の構成図である。
【図2】本発明の第2の実施の形態のプログラム開発装
置の構成図である。
【図3】プログラム・リストである。
【図4】アセンプル・リストである。
【図5】スタック領域を示す図である。
【図6】従来のプログラム開発装置。
【符号の説明】
1 CPU 2 スタック・ポインタ 3,33 アドレス・バス 4,34 データ・バス 5 スタック・ポインタ値更新信号 6 スタック・データ・バス 7 メモリ 8 比較器 9 比較値レジスタ 11 スタック・ポインタ使用信号 12 スタック・オーバーフロー信号

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 中央処理装置と、前記中央処理装置によ
    り制御される後入れ先出し記憶手段と、その内容の値に
    よって前記記憶手段の書き込み場所、または、読み出し
    場所、または、書き込みと読み出し場所の両方を指定す
    るスタック位置指定手段を有するコンピュータ装置のた
    めのプログラム開発装置において、前記スタック位置指
    定手段の値が更新されたことを示すスタック・ポインタ
    値更新信号手段と、更新後のスタック位置指定手段の値
    を示すスタック・データ・バス手段とこのスタック・デ
    ータ・バス手段の値と比較するためのスタック領域の限
    界値を保持する比較値レジスタと、この比較値レジスタ
    と前記スタック・データ・バス手段の値とを比較する比
    較器を有し、前記中央処理装置が前記スタック位置指定
    手段を更新した事を前記スタック・ポインタ値更新信号
    手段により検出し、その時のスタック・データ・バスと
    予めスタック領域の限界を設定してあった前記比較値レ
    ジスタを前記比較器により比較しスタック領域の限界を
    越えたスタック・オーバーフローかどうかを検査するこ
    とを特徴とするプログラム開発装置。
  2. 【請求項2】 前記比較器は、スタック・オーバーフロ
    ーのときスタック・オーバーフロー信号を出力すること
    を特徴とする請求項1記載のプログラム開発装置。
  3. 【請求項3】 前記スタック位置位置指定手段はスタッ
    ク・ポインタである請求項1または2記載のプログラム
    開発装置。
JP7266932A 1995-10-16 1995-10-16 プログラム開発装置 Pending JPH09114698A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7266932A JPH09114698A (ja) 1995-10-16 1995-10-16 プログラム開発装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7266932A JPH09114698A (ja) 1995-10-16 1995-10-16 プログラム開発装置

Publications (1)

Publication Number Publication Date
JPH09114698A true JPH09114698A (ja) 1997-05-02

Family

ID=17437693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7266932A Pending JPH09114698A (ja) 1995-10-16 1995-10-16 プログラム開発装置

Country Status (1)

Country Link
JP (1) JPH09114698A (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02176946A (ja) * 1988-12-28 1990-07-10 Hitachi Ltd プログラム暴走検出方法
JPH02293939A (ja) * 1989-05-08 1990-12-05 Fujitsu Ltd スタックオーバーフロー検出時処理方式
JPH03208132A (ja) * 1990-01-09 1991-09-11 Mitsubishi Electric Corp シングルチツプマイクロコンピユータ
JPH0477826A (ja) * 1990-07-16 1992-03-11 Ricoh Co Ltd マイクロプロセツサ
JPH04127333A (ja) * 1990-09-19 1992-04-28 Nec Corp アプリケーションタスクの障害検出方式
JPH04266141A (ja) * 1991-02-21 1992-09-22 Fujitsu Ltd スタックオーバーフロー検出方式

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02176946A (ja) * 1988-12-28 1990-07-10 Hitachi Ltd プログラム暴走検出方法
JPH02293939A (ja) * 1989-05-08 1990-12-05 Fujitsu Ltd スタックオーバーフロー検出時処理方式
JPH03208132A (ja) * 1990-01-09 1991-09-11 Mitsubishi Electric Corp シングルチツプマイクロコンピユータ
JPH0477826A (ja) * 1990-07-16 1992-03-11 Ricoh Co Ltd マイクロプロセツサ
JPH04127333A (ja) * 1990-09-19 1992-04-28 Nec Corp アプリケーションタスクの障害検出方式
JPH04266141A (ja) * 1991-02-21 1992-09-22 Fujitsu Ltd スタックオーバーフロー検出方式

Similar Documents

Publication Publication Date Title
JP3230262B2 (ja) 電子装置及びその固定情報修正方法
JPH1115675A (ja) 割込みコントローラ及び制御システム
JPH09114698A (ja) プログラム開発装置
JPH02304635A (ja) プログラム暴走検知方法
JPH01286029A (ja) マイクロプログラムのパッチ方式
JPH1063574A (ja) キャッシュメモリ付プロセッサ
JPS6270947A (ja) デバグ割込み制御方式
JPH02278428A (ja) 分岐制御方式
JPH0248733A (ja) 情報処理装置
JPH0447350A (ja) 主記憶読み出し応答制御方式
JPS63165931A (ja) 不連続命令フエツチアドレス情報記憶方式
JP3012618B1 (ja) 被検査プログラムのデバグ方法とそのデバグ方式
JP2506591B2 (ja) 補助処理装置
JPS61131047A (ja) パイプライン制御方式
JPH0795288B2 (ja) マイクロコンピュータ
JP2504570B2 (ja) 記憶領域の書き込み検査処理方法
JPH02207328A (ja) パイプライン制御方式
JPH0561673A (ja) オブジエクトプログラムの動的リンク方式
JPH01205340A (ja) データ処理装置
JPS60173640A (ja) 演算処理装置
JPS638949A (ja) プログラムの検査装置
JPH0573311A (ja) 処理装置における命令バツフアの命令書換方式
JPS6231434A (ja) 命令アドレス制御方式
JPH08106431A (ja) ダイレクトメモリアクセス制御回路
JPH06295252A (ja) 計算機

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19980707