JPH0477826A - マイクロプロセツサ - Google Patents
マイクロプロセツサInfo
- Publication number
- JPH0477826A JPH0477826A JP2187502A JP18750290A JPH0477826A JP H0477826 A JPH0477826 A JP H0477826A JP 2187502 A JP2187502 A JP 2187502A JP 18750290 A JP18750290 A JP 18750290A JP H0477826 A JPH0477826 A JP H0477826A
- Authority
- JP
- Japan
- Prior art keywords
- address
- stack area
- boundary
- final address
- stored
- 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
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Microcomputers (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
この発明は、パーソナルコンピュータ等に内蔵されて装
置各部の制御や各種機能を実現するためのデータ処理を
行なうマイクロプロセッサに関する。
置各部の制御や各種機能を実現するためのデータ処理を
行なうマイクロプロセッサに関する。
パーソナルコンピュータ等に内蔵するマイクロプロセッ
サや1チツプマイクロコンピユータは、CPU、ROM
、RAM等をそれぞれ制御信号線。
サや1チツプマイクロコンピユータは、CPU、ROM
、RAM等をそれぞれ制御信号線。
アドレスバス、及びデータバス等によって接続して構成
されている。
されている。
そして、ソフトウェアが指示する処理手順によってCP
Uが制御信号と共にアドレス信号を送出して、ROM又
はRA、 Mに格納されているデータを取り込んで各種
の演算を行ない、種々の機能を実現している。
Uが制御信号と共にアドレス信号を送出して、ROM又
はRA、 Mに格納されているデータを取り込んで各種
の演算を行ない、種々の機能を実現している。
その際、ソフトウェアの誤り(バグ)によってRAM内
に設定したスタックエリアを越えてデータをセーブする
スタックエリアオーバフローが起きる場合があり、これ
はすぐに修正する必要がある。
に設定したスタックエリアを越えてデータをセーブする
スタックエリアオーバフローが起きる場合があり、これ
はすぐに修正する必要がある。
そこで、従来は予めソフトウェアを設計する時に、スタ
ックエリアとして要するエリアサイズを算出して、その
エリアサイズに相当するエリアをRAM内に設定したら
、スタックエリアと非スタックエリアとの境界アドレス
に固定パターンを書き込み、マイクロプロセッサが動作
中は、周期的にその境界アドレスを参照して格納されて
いる固定パターンが他のデータの書き込みによって消去
(破壊)されているかいないかを検査し、スタックエリ
アオーバフローの発生を検出していた。
ックエリアとして要するエリアサイズを算出して、その
エリアサイズに相当するエリアをRAM内に設定したら
、スタックエリアと非スタックエリアとの境界アドレス
に固定パターンを書き込み、マイクロプロセッサが動作
中は、周期的にその境界アドレスを参照して格納されて
いる固定パターンが他のデータの書き込みによって消去
(破壊)されているかいないかを検査し、スタックエリ
アオーバフローの発生を検出していた。
しかしながら、上述のようにしてスタックエリアオーバ
フローの発生を検出するのでは次のような問題があった
。
フローの発生を検出するのでは次のような問題があった
。
(1)ソフトウェアがマイクロプロセッサを動作させる
と共に、スタックエリアオーバフローの発生の検出を周
期的に行なわなければならないので、ソフトウェアの負
担が増加して処理の効率が低下する。
と共に、スタックエリアオーバフローの発生の検出を周
期的に行なわなければならないので、ソフトウェアの負
担が増加して処理の効率が低下する。
(2)スタックエリアオーバフローが発生しても、その
発生時点て検出されるとは限らないため、ソフトウェア
のバグを解明する際の手掛かりが得られない。
発生時点て検出されるとは限らないため、ソフトウェア
のバグを解明する際の手掛かりが得られない。
(3)スタックエリアオーバフローな起しても、偶然に
境界アドレスに格納した固定パターンと同一のデータに
よってその固定パターンが消去された場合は、スタック
エリアオーバフローの発生を検出できない。
境界アドレスに格納した固定パターンと同一のデータに
よってその固定パターンが消去された場合は、スタック
エリアオーバフローの発生を検出できない。
この発明は」1記の点に鑑みてなされたものであり、ラ
フ1〜ウエアに負担をかけずにマイクロプロセッサのス
タックエリアオーバフローを発生時点で確実に検出でき
るようにすることを目的とする。
フ1〜ウエアに負担をかけずにマイクロプロセッサのス
タックエリアオーバフローを発生時点で確実に検出でき
るようにすることを目的とする。
この発明は上記の目的を達成するため、読み出し及び書
き込み可能なメモリに設定したスタックエリアと非スタ
ックエリアとの境界アドレスを格納するバウンダリレジ
スタと、スタックエリアの最終アドレスを格納するスタ
ックポインタと、スタックポインタに格納されている最
終アドレスを減算する命令が実行された時に、その減算
後の最終アドレスとバウンダリレジスタに格納されてい
る境界アドレスとを比較する手段と、その手段によって
比較した減算後の最終アドレスと境界アドレスとが一致
したらスタックエリアオーバフローの割込要求を出力す
る手段を設けたマイクロプロセッサを提供する。
き込み可能なメモリに設定したスタックエリアと非スタ
ックエリアとの境界アドレスを格納するバウンダリレジ
スタと、スタックエリアの最終アドレスを格納するスタ
ックポインタと、スタックポインタに格納されている最
終アドレスを減算する命令が実行された時に、その減算
後の最終アドレスとバウンダリレジスタに格納されてい
る境界アドレスとを比較する手段と、その手段によって
比較した減算後の最終アドレスと境界アドレスとが一致
したらスタックエリアオーバフローの割込要求を出力す
る手段を設けたマイクロプロセッサを提供する。
この発明しこよるマイクロプロセッサは、RAMに設定
したスタックエリアと非スタックエリアの境界アドレス
をバウンダリレジスタに、スタックエリアの最終アドレ
スをスタックポインタにそれぞれ格納し、その最終アド
レスを減算するような命令が実行されると、減算された
最終アドレスが境界アドレスに一致するか否かを比較す
ることによってスタックエリアオーバフローの発生な検
出するので、ソフトウェアが周期的にチエツクする必要
はなく負担がかからない。
したスタックエリアと非スタックエリアの境界アドレス
をバウンダリレジスタに、スタックエリアの最終アドレ
スをスタックポインタにそれぞれ格納し、その最終アド
レスを減算するような命令が実行されると、減算された
最終アドレスが境界アドレスに一致するか否かを比較す
ることによってスタックエリアオーバフローの発生な検
出するので、ソフトウェアが周期的にチエツクする必要
はなく負担がかからない。
また、その減算された最終アドレスが境界アドレスに一
致した時に割込要求を出力するので、スタックエリアオ
ーバフローをその発生時点で検出することができる。
致した時に割込要求を出力するので、スタックエリアオ
ーバフローをその発生時点で検出することができる。
さらに、スタックエリアオーバフローの発生を、減算さ
れた最終アドレスが境界アドレスに一致したか否かを比
較することによって判別するので、固定パターンの消去
を検出するように不確実なものではなくなる。
れた最終アドレスが境界アドレスに一致したか否かを比
較することによって判別するので、固定パターンの消去
を検出するように不確実なものではなくなる。
以下、この発明の実施例を図面に基づいて具体的に説明
する。
する。
第2図は、この発明によるマイクロプロセッサの概略構
成を示すブロック図である。
成を示すブロック図である。
このマイクロプロセッサは、全体の制御を司ると共に各
種の演算処理等を行なうCPUIと、このCPUIを動
作させるソフトウェア及び固定データを格納する読み出
し専用メモリであるROM2と、CPU1が各種の演算
処理を行なうデータを一時的に格納する読み出し及び書
き込み可能なメモリであるRAM3と、外部とのデータ
の遺り取りを行なう■/○ポート4と、制御信号、アド
レスデータ、演算対象のデータの通信線である制御信号
線5.アドレスバス6、データバス7からなる。
種の演算処理等を行なうCPUIと、このCPUIを動
作させるソフトウェア及び固定データを格納する読み出
し専用メモリであるROM2と、CPU1が各種の演算
処理を行なうデータを一時的に格納する読み出し及び書
き込み可能なメモリであるRAM3と、外部とのデータ
の遺り取りを行なう■/○ポート4と、制御信号、アド
レスデータ、演算対象のデータの通信線である制御信号
線5.アドレスバス6、データバス7からなる。
第1図は、第2図に示したCPUIの内部構成を示すブ
ロック図である。
ロック図である。
このCPUIは、内部バス24を通じて第1−図のRO
M2又はRAM3から読み込んだ命令を一時的に格納す
る命令レジスタ10、その命令を解析して内容に応じて
組み合わせた制御信号を発生する命令デコーダ11、内
部制御信号線23を通じて所要のタイミングで各部へ制
御信号を送出するタイミング及び制御部12、演算処理
を行なうデータを格納するアキュミュレータ13、RA
M3から読み込んだデータを格納するテンポラリレジス
タ14、アキュミュレータ13及びテンポラリレジスタ
14から読み込んだデータを互いに加算又は減算する等
の演算を行なう演算部15、タイミング及び制御部12
からの制御信号に応じて各レジスタ17〜20の選択を
行なうレジスタ選択部16、アドレスの加算及び減算の
処理を行なうインクリメンタ/デクリメンタアドレスラ
ッチ21、及びP C1,9から読み出したアドレスを
格納するアドレスバッファ22からなる。
M2又はRAM3から読み込んだ命令を一時的に格納す
る命令レジスタ10、その命令を解析して内容に応じて
組み合わせた制御信号を発生する命令デコーダ11、内
部制御信号線23を通じて所要のタイミングで各部へ制
御信号を送出するタイミング及び制御部12、演算処理
を行なうデータを格納するアキュミュレータ13、RA
M3から読み込んだデータを格納するテンポラリレジス
タ14、アキュミュレータ13及びテンポラリレジスタ
14から読み込んだデータを互いに加算又は減算する等
の演算を行なう演算部15、タイミング及び制御部12
からの制御信号に応じて各レジスタ17〜20の選択を
行なうレジスタ選択部16、アドレスの加算及び減算の
処理を行なうインクリメンタ/デクリメンタアドレスラ
ッチ21、及びP C1,9から読み出したアドレスを
格納するアドレスバッファ22からなる。
レジスタ選択部]6が選択し得るレジスタのうち、17
は各種の演算、データの移動、及びアドレス修飾等に使
用する汎用レジスタ群である。
は各種の演算、データの移動、及びアドレス修飾等に使
用する汎用レジスタ群である。
18はスタックポインタ(sp)であり、初期設定時に
は第3図に示すRA M、 3内に設定したスタックエ
リアの最終アドレスを格納し、減算命令によって減算し
た最終アドレスを順次格納する。
は第3図に示すRA M、 3内に設定したスタックエ
リアの最終アドレスを格納し、減算命令によって減算し
た最終アドレスを順次格納する。
19はプログラムカウンタ(pc)であり、次に実行す
べき命令を記憶しているROM2またはR,A M 3
のアドレスを格納する。
べき命令を記憶しているROM2またはR,A M 3
のアドレスを格納する。
20はバウンダリレジスタ(BDR)であり、第3図に
示すRA、 M 3に設定したスタックエリアと非スタ
ックエリアの境界アドレス(bdadr)を格納する。
示すRA、 M 3に設定したスタックエリアと非スタ
ックエリアの境界アドレス(bdadr)を格納する。
次に、第4図のフローチャートによってこのマイクロプ
ロセッサの処理について説明する。
ロセッサの処理について説明する。
マイクロプロセッサが起動すると、初期設定として、第
3図に示したR A、 M 3内に設定したスタックエ
リアと非スタックエリアの境界アドレス(bcladr
)及びスタックエリアの最終アドレスを、それぞれスタ
ックポインタ(SP)18とバウンダリレジスタ(BD
R)20に格納する。
3図に示したR A、 M 3内に設定したスタックエ
リアと非スタックエリアの境界アドレス(bcladr
)及びスタックエリアの最終アドレスを、それぞれスタ
ックポインタ(SP)18とバウンダリレジスタ(BD
R)20に格納する。
この初期設定が終了すると、プログラムカウンタ(PC
)19に格納されているアドレス(最初は先頭アドレス
である)をアドレスバッファ22に読み出し、そのアド
レスによって示される命令をROM 2から読み出して
命令レジスタ10に格納し、PCl3の内容(アドレス
)に1を加算したら、命令デコーダ11が命令レジスタ
10に格納されている命令を解析して、それに対応した
処理に移行する。
)19に格納されているアドレス(最初は先頭アドレス
である)をアドレスバッファ22に読み出し、そのアド
レスによって示される命令をROM 2から読み出して
命令レジスタ10に格納し、PCl3の内容(アドレス
)に1を加算したら、命令デコーダ11が命令レジスタ
10に格納されている命令を解析して、それに対応した
処理に移行する。
その命令がデータの演算を指示するものなら、そのデー
タをROM2又はRA、 M 3から読み出してテンポ
ラリレジスタJ4へ格納し、アキュミュレータ13と演
算部15とによって各種の演算を行なう。
タをROM2又はRA、 M 3から読み出してテンポ
ラリレジスタJ4へ格納し、アキュミュレータ13と演
算部15とによって各種の演算を行なう。
そして、解析した命令が5P18のアドレスを減算する
PUSH命令(他にCALL命令等があるが説明は省略
する)ならば、アキュミュレータ13に格納されている
データを5P18に格納されているRAM3のアI(レ
ス先へ格納し、5P18の内容(アドレス)から1を減
算する。
PUSH命令(他にCALL命令等があるが説明は省略
する)ならば、アキュミュレータ13に格納されている
データを5P18に格納されているRAM3のアI(レ
ス先へ格納し、5P18の内容(アドレス)から1を減
算する。
次に、5P18とBDR20に格納されているアドレス
を比較して、一致しなかったらPCl3のアドレスをア
ドレスバッファ22へ読み出す処理へ戻るが、一致した
らスタックエリアオーバフローの割込要求のフラグをセ
ラl−L、直ちにその割込処理を行なうルーチンへ飛ぶ
。
を比較して、一致しなかったらPCl3のアドレスをア
ドレスバッファ22へ読み出す処理へ戻るが、一致した
らスタックエリアオーバフローの割込要求のフラグをセ
ラl−L、直ちにその割込処理を行なうルーチンへ飛ぶ
。
そして、スタックエリアオーバフロー発生の対策は、そ
の発生時のレジスタ内容、システム情報等な適当なメモ
リエリアにセーブして、操作者に対してスタックエリア
オーバフローの発生を知らせる表示をすると共に、制御
プログラムによる制御処理を行なって入力装置のコンソ
ールから指示入力があるまで待機するようにしたり、C
PUの動作をストップするようにすれば、ソフトウェア
のバグに対する最適の情報が収集できて、そのバグを取
り除く処置を素早くとることができる。
の発生時のレジスタ内容、システム情報等な適当なメモ
リエリアにセーブして、操作者に対してスタックエリア
オーバフローの発生を知らせる表示をすると共に、制御
プログラムによる制御処理を行なって入力装置のコンソ
ールから指示入力があるまで待機するようにしたり、C
PUの動作をストップするようにすれば、ソフトウェア
のバグに対する最適の情報が収集できて、そのバグを取
り除く処置を素早くとることができる。
以上説明してきたように、この発明によるマイクロプロ
セッサは、スタックエリアオーバフロー発生の検出に、
ソフトウェアの周期的なチエツクを要しないので、ソフ
トウェアの処理効率がよくなる。
セッサは、スタックエリアオーバフロー発生の検出に、
ソフトウェアの周期的なチエツクを要しないので、ソフ
トウェアの処理効率がよくなる。
また、スタックエリアオーバフローの発生を確実にその
発生時点で検出できるため、その原因となったソフトウ
ェアのバグを解析するための最適情報を収集することが
可能となる。
発生時点で検出できるため、その原因となったソフトウ
ェアのバグを解析するための最適情報を収集することが
可能となる。
第1図は第2図に示すCPUの内部構成を示すブロック
図。 第2図はこの発明によるマイクロプロセッサの概略構成
を示すブロック図、 第3図は第2図のRAM及び第1図のスタックポインタ
とバウンダリレジスタの説明図、第4図は第1−図に示
すマイクロプロセッサの処理を示すフロー図である。 ]−・・・CPU 2・・・ROM 3・・・
RAM4・・・■/○ポート5・制御信号線 6・・アドレスバス 7・・・データバス12・タイ
ミング及び制御部 18・スタックポインタ (sp)
図。 第2図はこの発明によるマイクロプロセッサの概略構成
を示すブロック図、 第3図は第2図のRAM及び第1図のスタックポインタ
とバウンダリレジスタの説明図、第4図は第1−図に示
すマイクロプロセッサの処理を示すフロー図である。 ]−・・・CPU 2・・・ROM 3・・・
RAM4・・・■/○ポート5・制御信号線 6・・アドレスバス 7・・・データバス12・タイ
ミング及び制御部 18・スタックポインタ (sp)
Claims (1)
- 【特許請求の範囲】 1 読み出し及び書き込み可能なメモリに設定したスタ
ックエリアと非スタックエリアとの境界アドレスを格納
するバウンダリレジスタと、 前記スタックエリアの最終アドレスを格納するスタック
ポインタと、 該スタックポインタに格納されている最終アドレスを減
算する命令が実行された時に、その減算後の最終アドレ
スと前記バウンダリレジスタに格納されている境界アド
レスとを比較する手段と、該手段によつて比較した減算
後の最終アドレスと境界アドレスとが一致したらスタッ
クエリアオーバフローの割込要求を出力する手段とを備
えたことを特徴とするマイクロプロセッサ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2187502A JPH0477826A (ja) | 1990-07-16 | 1990-07-16 | マイクロプロセツサ |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2187502A JPH0477826A (ja) | 1990-07-16 | 1990-07-16 | マイクロプロセツサ |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0477826A true JPH0477826A (ja) | 1992-03-11 |
Family
ID=16207188
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2187502A Pending JPH0477826A (ja) | 1990-07-16 | 1990-07-16 | マイクロプロセツサ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0477826A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH09114698A (ja) * | 1995-10-16 | 1997-05-02 | Nec Corp | プログラム開発装置 |
-
1990
- 1990-07-16 JP JP2187502A patent/JPH0477826A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH09114698A (ja) * | 1995-10-16 | 1997-05-02 | Nec Corp | プログラム開発装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0477826A (ja) | マイクロプロセツサ | |
| JPH05257815A (ja) | 中央処理装置 | |
| JPH04332055A (ja) | プログラム暴走検知方法 | |
| JPH05216721A (ja) | 電子計算機 | |
| JPH08249206A (ja) | スタック領域破壊検出機能付き計算機 | |
| JPH074669Y2 (ja) | 割込要求処理回路 | |
| JP2506199B2 (ja) | 電子機器 | |
| JPS6158054A (ja) | プログラムの暴走検出方式 | |
| JPS61141047A (ja) | 障害情報の退避方式 | |
| JP3590289B2 (ja) | イベント検出回路 | |
| JP2000353109A (ja) | エミュレータ及びエミュレーションシステム | |
| JP2000057000A (ja) | フラッシュメモリ内蔵マイクロコンピュータ | |
| JPH0333939A (ja) | マイクロプロセッサ | |
| JPS62182934A (ja) | プログラム実行装置 | |
| JPS6118045A (ja) | プログラムの暴走検出方式 | |
| JP2021144426A (ja) | プロセッサ及びエラー検出方法 | |
| JP2978658B2 (ja) | プログラム開発支援装置 | |
| JP3616588B2 (ja) | マイクロプログラムチェックシステム | |
| JPH06139084A (ja) | 情報処理装置 | |
| JPH04343148A (ja) | 組込型マルチタスクオペレーティングシステムの例外処理方法 | |
| JPS6277650A (ja) | 先行制御部を備えた情報処理装置 | |
| JPH03208132A (ja) | シングルチツプマイクロコンピユータ | |
| JPS6231434A (ja) | 命令アドレス制御方式 | |
| JPH02176946A (ja) | プログラム暴走検出方法 | |
| JPH01251142A (ja) | プログラムトレース方式 |