JPH0348933A - リターンアドレスのスタック制御回路 - Google Patents
リターンアドレスのスタック制御回路Info
- Publication number
- JPH0348933A JPH0348933A JP18546089A JP18546089A JPH0348933A JP H0348933 A JPH0348933 A JP H0348933A JP 18546089 A JP18546089 A JP 18546089A JP 18546089 A JP18546089 A JP 18546089A JP H0348933 A JPH0348933 A JP H0348933A
- Authority
- JP
- Japan
- Prior art keywords
- address
- value
- return address
- stored
- register
- 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
- 238000000034 method Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000006386 memory function Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はリターンアドレスのスタック制御回路に関し、
特にリターンアドレスの保存と保存されたリターンアド
レスの取出しとを行うリターンアドレスのスタック制御
回路に関する。
特にリターンアドレスの保存と保存されたリターンアド
レスの取出しとを行うリターンアドレスのスタック制御
回路に関する。
ファームウェアでサブルーチンコールを行う際に動作す
る従来のリターンアドレスのスタック制御回路は、スタ
ックポインタの値を保持する手段と、サブルーチン階層
のプッシュダウンおよびポツプアップの動作に従ってそ
のスタックポインタの値を増減して変動させる手段と、
変動するスタックポインタの値に対応する位置にリター
ンアドレスをスタックしたり取出したりする手段とを有
して構成されている。
る従来のリターンアドレスのスタック制御回路は、スタ
ックポインタの値を保持する手段と、サブルーチン階層
のプッシュダウンおよびポツプアップの動作に従ってそ
のスタックポインタの値を増減して変動させる手段と、
変動するスタックポインタの値に対応する位置にリター
ンアドレスをスタックしたり取出したりする手段とを有
して構成されている。
上述した従来のリターンアドレスのスタック制御回路は
、リターンアドレスをスタックしても、ポツプアップす
ると、スタックポインタが元に戻り、次のスタックを行
うと、前のリターンアドレスの値が上書きされて消され
てしまうので、複数階層に及びプッシュダウンとポツプ
アップとが変則的に繰り返されるような状態で障害が発
生した場合に、その経緯を判断することが困難であり、
解析に時間を要するとともに、多段階にプッシュダウン
したスタックポインタを一度に一定の位置にまでポツプ
アップする必要が生じた場合に、ポツプアップする前の
スタックポインタの位置が認識できないという欠点を有
している。
、リターンアドレスをスタックしても、ポツプアップす
ると、スタックポインタが元に戻り、次のスタックを行
うと、前のリターンアドレスの値が上書きされて消され
てしまうので、複数階層に及びプッシュダウンとポツプ
アップとが変則的に繰り返されるような状態で障害が発
生した場合に、その経緯を判断することが困難であり、
解析に時間を要するとともに、多段階にプッシュダウン
したスタックポインタを一度に一定の位置にまでポツプ
アップする必要が生じた場合に、ポツプアップする前の
スタックポインタの位置が認識できないという欠点を有
している。
〔課題を解決するための手段〕
本発明のリターンアドレスのスタック制御回路は、多段
階にサブルーチンへの移行及び復帰をする際にプロセッ
サのリターンアドレスを処理するリターンアドレスのス
タック制御回路において、サブルーチン階層のプッシュ
ダウン及びポツプアップの動作に従ってそれぞれスタッ
クポインタの値をプラス1及びマイナス1して保持する
ポインタレジスタと、プッシュダウン時に保持すべきリ
ターンアドレスの値をその時のスタックポインタの値と
ともに順次に格納するトレースメモリと、リターンアド
レスの値が格納される前記トレースメモリのアドレスを
保持するアドレスレジスタと、リターンアドレスの値が
前記トレースメモリに格納される度に前記アドレスレジ
スタにある格納されたアドレスの値を受けてその時のス
タックポインタの値に対応する位置に格納する二次アド
レス格納手段と、ポツプアップ時に前記ポインタレジス
タよりスタックポインタの値を得て前記二次アドレス格
納手段からそのスタックポインタの値に対応する前記ト
レースメモリのアドレスを読出してそのアドレスにより
前記トレースメモリからリターンアドレスを読出すリタ
ーンアドレス取出し手段とを有して構成されている。
階にサブルーチンへの移行及び復帰をする際にプロセッ
サのリターンアドレスを処理するリターンアドレスのス
タック制御回路において、サブルーチン階層のプッシュ
ダウン及びポツプアップの動作に従ってそれぞれスタッ
クポインタの値をプラス1及びマイナス1して保持する
ポインタレジスタと、プッシュダウン時に保持すべきリ
ターンアドレスの値をその時のスタックポインタの値と
ともに順次に格納するトレースメモリと、リターンアド
レスの値が格納される前記トレースメモリのアドレスを
保持するアドレスレジスタと、リターンアドレスの値が
前記トレースメモリに格納される度に前記アドレスレジ
スタにある格納されたアドレスの値を受けてその時のス
タックポインタの値に対応する位置に格納する二次アド
レス格納手段と、ポツプアップ時に前記ポインタレジス
タよりスタックポインタの値を得て前記二次アドレス格
納手段からそのスタックポインタの値に対応する前記ト
レースメモリのアドレスを読出してそのアドレスにより
前記トレースメモリからリターンアドレスを読出すリタ
ーンアドレス取出し手段とを有して構成されている。
次に、本発明の実施例について図面を参照して説明する
。
。
第1図は本発明のリターンアドレスのスタック制御回路
の一実施例を示すブロック図である。
の一実施例を示すブロック図である。
第1図に示すように、10はポインタレジスタで、20
はアドレスレジスタで、30はトレースメモリで、40
は二次アドレス格納手段で、50は読出し手段である。
はアドレスレジスタで、30はトレースメモリで、40
は二次アドレス格納手段で、50は読出し手段である。
プッシュダウンの命令が実行されると、ポインタレジス
タ10に格納されていたスタックポインタの値は、リタ
ーンアドレスとともに、トレースメモリ30の、アドレ
スレジスタ20にあるアドレスで指示される位置に格納
される。
タ10に格納されていたスタックポインタの値は、リタ
ーンアドレスとともに、トレースメモリ30の、アドレ
スレジスタ20にあるアドレスで指示される位置に格納
される。
また、この時のスタックポインタの値に対応する二次ア
ドレス格納手段40の位置にこの時のトレースメモリ3
0のアドレスが格納された後に、スタックポインタの値
はプラス1されてからポインタレジスタ10へ、トレー
スメモリ30のアドレスはプラス1されてから、アドレ
スレジスタ20へそれぞれ送られて保持される。こうし
てプッシュダウンが実行される度に、その時のリターン
アドレスがトレースメモリ30に格納されていく。
ドレス格納手段40の位置にこの時のトレースメモリ3
0のアドレスが格納された後に、スタックポインタの値
はプラス1されてからポインタレジスタ10へ、トレー
スメモリ30のアドレスはプラス1されてから、アドレ
スレジスタ20へそれぞれ送られて保持される。こうし
てプッシュダウンが実行される度に、その時のリターン
アドレスがトレースメモリ30に格納されていく。
逆に、ポツプアップ命令が実行されると、スタックポイ
ンタの値は、マイナス1されて、この時のスタックポイ
ンタの値に対応す不二次アドレス格納手段40に格納さ
れているトレースメモリ30のアドレスが読出し手段5
0に読出され、トレースメモリ30に送られて読出しア
ドレスとなって、リターンアドレスが得られることにな
る。
ンタの値は、マイナス1されて、この時のスタックポイ
ンタの値に対応す不二次アドレス格納手段40に格納さ
れているトレースメモリ30のアドレスが読出し手段5
0に読出され、トレースメモリ30に送られて読出しア
ドレスとなって、リターンアドレスが得られることにな
る。
なお、ポツプアップでは、ポインタレジスタIOは更新
されるが、アドレスレジスタ20は更新されない。
されるが、アドレスレジスタ20は更新されない。
第2図はファームウェアのサブルーチンコールにおける
本実施例の各構成部の格納値の一例を示す情報説明図で
ある。
本実施例の各構成部の格納値の一例を示す情報説明図で
ある。
第2図に示すように、第0層のメインルーチンでサブル
ーチンAがコールされると、サブルーチンAからのリタ
ーンアドレス[A)が、トレースメモリ30のアドレス
“00″にスタックポインタの値“0”とともに格納さ
れる。この時の二次アドレス格納手段40のスタックポ
インタの値“0”に対応するエリアには、アドレス″0
0”が格納され、ポインタレジスタ10のスタックポイ
ンタの値は“1″に更新される。
ーチンAがコールされると、サブルーチンAからのリタ
ーンアドレス[A)が、トレースメモリ30のアドレス
“00″にスタックポインタの値“0”とともに格納さ
れる。この時の二次アドレス格納手段40のスタックポ
インタの値“0”に対応するエリアには、アドレス″0
0”が格納され、ポインタレジスタ10のスタックポイ
ンタの値は“1″に更新される。
続いて、第1層のサブルーチンAの中でさらにサブルー
チンA1がコールさhると、サブルーチンA1からのリ
ターンアドレスがトレースメモリ30のアドレス“01
”にスタックポインタの値“1”とともに格納され、ス
タックポインタの値“1″の二次アドレス格納手段40
には、アドレス“01″が格納され、ポインタレジスタ
10のスタックポインタの値は“2”に更新される。
チンA1がコールさhると、サブルーチンA1からのリ
ターンアドレスがトレースメモリ30のアドレス“01
”にスタックポインタの値“1”とともに格納され、ス
タックポインタの値“1″の二次アドレス格納手段40
には、アドレス“01″が格納され、ポインタレジスタ
10のスタックポインタの値は“2”に更新される。
次に、サブルーチンA1からのリターン処理でポツプア
ップが実行され、ポインタレジスタ10のスタックポイ
ンタの値は“2″から“1″に下がり、1”で示さhる
二次アドレス格納手段40に格納されているアドレス“
01”により、トレースメモリ30上にあるサブルーチ
ンA1からのリターンアドレス〔A1〕を得てリターン
する。その後、順次サブルーチンA2のコール、サブル
ーチンA2aのコール、サブルーチンA2aからのリタ
ーン、サブルーチンA2からリターン、サブルーチンA
からのリターン、サブルーチンBのコール、サブルーチ
ンBからのリターンというように、プッシュダウンとポ
ツプアップとが繰り返され、ENDまで処理を終えた時
点では第2図に示す結果となっている。
ップが実行され、ポインタレジスタ10のスタックポイ
ンタの値は“2″から“1″に下がり、1”で示さhる
二次アドレス格納手段40に格納されているアドレス“
01”により、トレースメモリ30上にあるサブルーチ
ンA1からのリターンアドレス〔A1〕を得てリターン
する。その後、順次サブルーチンA2のコール、サブル
ーチンA2aのコール、サブルーチンA2aからのリタ
ーン、サブルーチンA2からリターン、サブルーチンA
からのリターン、サブルーチンBのコール、サブルーチ
ンBからのリターンというように、プッシュダウンとポ
ツプアップとが繰り返され、ENDまで処理を終えた時
点では第2図に示す結果となっている。
第3図は第2図め例におけるスタックポインタの値の変
化を示すタイムチャートである。
化を示すタイムチャートである。
第2図の例では、第3図に示すように、先ず、メインル
ーチンがスタックポインタの値“0”で動作し、次にサ
ブルーチンAがスタックポインタのf“l”で動作し、
次にサブルーチンA1がスタックポインタの値す“2″
で動作し、次に一度すブルーチンAに戻ってからサブル
ーチンA2がスタックポインタの値i“2”で動作し、
次にサブルーチンA2 aがスタックポイン多の値“3
″で動作し、次に一度すブルーチンA2.サブルーチン
A、メインルーチンに順次戻ってからサブルーチンBが
スタックポインタの値“1”で動作し、最後にメインル
ーチンがスタックポインタの値“0″で動作している。
ーチンがスタックポインタの値“0”で動作し、次にサ
ブルーチンAがスタックポインタのf“l”で動作し、
次にサブルーチンA1がスタックポインタの値す“2″
で動作し、次に一度すブルーチンAに戻ってからサブル
ーチンA2がスタックポインタの値i“2”で動作し、
次にサブルーチンA2 aがスタックポイン多の値“3
″で動作し、次に一度すブルーチンA2.サブルーチン
A、メインルーチンに順次戻ってからサブルーチンBが
スタックポインタの値“1”で動作し、最後にメインル
ーチンがスタックポインタの値“0″で動作している。
以上説明したように、本発明のリターンアドレスのスタ
ック制御回路は、リターンアドレスをスタックポインタ
の値とともに順次にトレースメモリに格納しているので
、複数階層に及ぶサブルーチンコール等が変則的に実行
されている最中に障害等が発生しても、その経緯が直ち
に認識できるために解析が容易に行えるとともに、各ス
タックポインタ値の指し示す最新のリターンアドレスが
現在トレースメモリのどこのアドレスに位置するかを保
持してリターンアドレスを得ることにより、一つのトレ
ースメモリをリターンアドレスのトレースを行うための
スタックメモリの機能とポツプアップのリターンアドレ
スを得るためのスタックメモリの機能とに共用して有効
に利用することができるという効果を有している。
ック制御回路は、リターンアドレスをスタックポインタ
の値とともに順次にトレースメモリに格納しているので
、複数階層に及ぶサブルーチンコール等が変則的に実行
されている最中に障害等が発生しても、その経緯が直ち
に認識できるために解析が容易に行えるとともに、各ス
タックポインタ値の指し示す最新のリターンアドレスが
現在トレースメモリのどこのアドレスに位置するかを保
持してリターンアドレスを得ることにより、一つのトレ
ースメモリをリターンアドレスのトレースを行うための
スタックメモリの機能とポツプアップのリターンアドレ
スを得るためのスタックメモリの機能とに共用して有効
に利用することができるという効果を有している。
第1図は本発明のリターンアドレスのスタック制御回路
の一実施例を示すブロック図、第2図はファームウェア
のサブルーチンコールにおける本実施例の各構成部の格
納値の一例を示す情報説明図、第3図は第2図の例にお
けるスタックポインタの値の変化を示すタイムチャート
である。 10・・・・・・ポインタレジスタ、20・・・・・・
アドレスレジスタ、30・・・・・・トレースメモリ、
40・・団・二次アドレス格納手段、50・・・・・・
読出し手段。
の一実施例を示すブロック図、第2図はファームウェア
のサブルーチンコールにおける本実施例の各構成部の格
納値の一例を示す情報説明図、第3図は第2図の例にお
けるスタックポインタの値の変化を示すタイムチャート
である。 10・・・・・・ポインタレジスタ、20・・・・・・
アドレスレジスタ、30・・・・・・トレースメモリ、
40・・団・二次アドレス格納手段、50・・・・・・
読出し手段。
Claims (1)
- 多段階にサブルーチンへの移行及び復帰をする際にプロ
セッサのリターンアドレスを処理するリターンアドレス
のスタック制御回路において、サブルーチン階層のプッ
シュダウン及びポップアップの動作に従ってそれぞれス
タックポインタの値をプラス1及びマイナス1して保持
するポインタレジスタと、プッシュダウン時に保持すべ
きリターンアドレスの値をその時のスタックポインタの
値とともに順次に格納するトレースメモリと、リターン
アドレスの値が格納される前記トレースメモリのアドレ
スを保持するアドレスレジスタと、リターンアドレスの
値が前記トレースメモリに格納される度にアドレスレジ
スタにある格納されたアドレスの値を受けてその時のス
タックポインタの値に対応する位置に格納する二次アド
レス格納手段と、ポップアップ時に前記ポインタレジス
タよりスタックポインタの値を得て前記二次アドレス格
納手段からそのスタックポインタの値に対応する前記ト
レースメモリのアドレスを読出してそのアドレスにより
前記トレースメモリからリターンアドレスを読出すリタ
ーンアドレス取出し手段とを有することを特徴とするリ
ターンアドレスのスタック制御回路。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP18546089A JPH0348933A (ja) | 1989-07-17 | 1989-07-17 | リターンアドレスのスタック制御回路 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP18546089A JPH0348933A (ja) | 1989-07-17 | 1989-07-17 | リターンアドレスのスタック制御回路 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0348933A true JPH0348933A (ja) | 1991-03-01 |
Family
ID=16171177
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP18546089A Pending JPH0348933A (ja) | 1989-07-17 | 1989-07-17 | リターンアドレスのスタック制御回路 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0348933A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07175655A (ja) * | 1993-12-17 | 1995-07-14 | Nec Corp | マイクロコンピュータ |
| JPH09146793A (ja) * | 1995-11-17 | 1997-06-06 | Nec Corp | プログラム評価の方法および装置 |
-
1989
- 1989-07-17 JP JP18546089A patent/JPH0348933A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07175655A (ja) * | 1993-12-17 | 1995-07-14 | Nec Corp | マイクロコンピュータ |
| JPH09146793A (ja) * | 1995-11-17 | 1997-06-06 | Nec Corp | プログラム評価の方法および装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5379407A (en) | Error handling in a state-free system | |
| JPH0348933A (ja) | リターンアドレスのスタック制御回路 | |
| CN102521397B (zh) | 一种数据传输方法 | |
| JP2682049B2 (ja) | エラー履歴収集方法 | |
| JPH0667942A (ja) | ログ採取方式 | |
| JPH04239338A (ja) | マイクロプログラム網羅率測定方式 | |
| JPS6142301B2 (ja) | ||
| JPH08161194A (ja) | トレース方法 | |
| JPS61177700A (ja) | 複合連想メモリ | |
| JPH01205331A (ja) | 大規模プログラムリンク方式 | |
| JPH04352242A (ja) | 情報処理装置のデータ履歴記録方式 | |
| JPH02162423A (ja) | データスタック方式 | |
| JPH0258137A (ja) | データ採取方式 | |
| JPS6250854B2 (ja) | ||
| JPS6148738B2 (ja) | ||
| JPH01142936A (ja) | 情報連結方法 | |
| JPH0724030B2 (ja) | デバック装置 | |
| JPH01204151A (ja) | 連想レジスタファイル | |
| JPS6341950A (ja) | 分岐命令実行測定制御方式 | |
| JPH0264828A (ja) | アドレストレース回路 | |
| JPH04326137A (ja) | 動的領域管理方法 | |
| JPH01126729A (ja) | スタック記憶装置 | |
| JPH01211122A (ja) | 2読み出しポート連想レジスタファイル | |
| JPH0610793B2 (ja) | プログラム暴走検出方法 | |
| JPH04128936A (ja) | プログラム実行環境切換え方式 |