JPH05216715A - 関数コール・リターン検出方式 - Google Patents
関数コール・リターン検出方式Info
- Publication number
- JPH05216715A JPH05216715A JP4054363A JP5436392A JPH05216715A JP H05216715 A JPH05216715 A JP H05216715A JP 4054363 A JP4054363 A JP 4054363A JP 5436392 A JP5436392 A JP 5436392A JP H05216715 A JPH05216715 A JP H05216715A
- Authority
- JP
- Japan
- Prior art keywords
- function
- address
- call
- return
- fetched
- 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.)
- Granted
Links
Landscapes
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 関数コールおよびリターンの検出において、
プリフェッチ機能をもったCPUでも正確、かつ、短時
間に解析を行えるようにすることにある。 【構成】 CPUの実行履歴中のプログラム・フェッチ
時のバス情報を、ステップ101により順次サンプリン
グした順に取り出し、アドレスに着目する。続いて、ス
テップ102により、フェッチするプログラムのアドレ
スが連続であるか否かをチェックする。連続であれば、
再度、データの読み込みを行い、連続でなくなったと
き、従来と同様にして関数コールおよび関数リターンの
検出動作に移る。
プリフェッチ機能をもったCPUでも正確、かつ、短時
間に解析を行えるようにすることにある。 【構成】 CPUの実行履歴中のプログラム・フェッチ
時のバス情報を、ステップ101により順次サンプリン
グした順に取り出し、アドレスに着目する。続いて、ス
テップ102により、フェッチするプログラムのアドレ
スが連続であるか否かをチェックする。連続であれば、
再度、データの読み込みを行い、連続でなくなったと
き、従来と同様にして関数コールおよび関数リターンの
検出動作に移る。
Description
【0001】
【産業上の利用分野】本発明はプログラム中の関数の動
作解析に関し、特に関数のコールおよびリターン方式に
関する。
作解析に関し、特に関数のコールおよびリターン方式に
関する。
【0002】
【従来の技術】プログラムの動作解析において、関数の
遷移状況を調査することに欠くことができない。CPU
の実行履歴から関数の遷移状況を調べるためには、コー
ル命令およびリターン命令の実行箇所を検出することが
必要である。この際、コール命令およびリターン命令の
検出は、図3に示すようにして行われる。
遷移状況を調査することに欠くことができない。CPU
の実行履歴から関数の遷移状況を調べるためには、コー
ル命令およびリターン命令の実行箇所を検出することが
必要である。この際、コール命令およびリターン命令の
検出は、図3に示すようにして行われる。
【0003】CPUの実行履歴中のプログラム・フェッ
チ時のバス情報をステップ301によってサンプリング
した順に取り出し、アドレスに着目する。そのアドレス
をステップ303によって関数のアドレス・エントリ・
テーブルに検索に行き、ステップ304により関数の先
頭アドレスと比較する。その結果、両アドレスが一致す
れば、ステップ306により関数コールが起こったもの
と判定する。両アドレスが一致しなかった場合であれ
ば、ステップ305により、直前にプログラム・フェッ
チされたアドレスの関数領域と、現在、読み込まれたデ
ータのアドレスの関数領域とを比較する。両関数領域が
異なるときには、ステップ307により、直前にプログ
ラム・フェッチされたアドレスが指示する関数からのリ
ターンであると判断する。
チ時のバス情報をステップ301によってサンプリング
した順に取り出し、アドレスに着目する。そのアドレス
をステップ303によって関数のアドレス・エントリ・
テーブルに検索に行き、ステップ304により関数の先
頭アドレスと比較する。その結果、両アドレスが一致す
れば、ステップ306により関数コールが起こったもの
と判定する。両アドレスが一致しなかった場合であれ
ば、ステップ305により、直前にプログラム・フェッ
チされたアドレスの関数領域と、現在、読み込まれたデ
ータのアドレスの関数領域とを比較する。両関数領域が
異なるときには、ステップ307により、直前にプログ
ラム・フェッチされたアドレスが指示する関数からのリ
ターンであると判断する。
【0004】しかしながら、上記方法では、プログラム
・フェッチ時に読み込まれたバス情報を逐次、テーブル
検索に向かわせなければならない。関数コールおよびリ
ターン命令のフェッチは全プログラム・フェッチ中の極
く一部であるので、関数コールおよびリターン命令をフ
ェッチしたバス情報だけを抜き出してコールであるかあ
るいはリターンであるかの判別を行わないと、検出時間
を短縮することができない。また、実行プログラムを先
き読み(以下、プリフェッチと称する。)CPUを使用
したシステムの関数コールおよび関数リターンの検出に
おいて、実際には実行されない命令をプリフェッチした
場合、上記方法によれば実際に実行されたか否かの判断
ができない。
・フェッチ時に読み込まれたバス情報を逐次、テーブル
検索に向かわせなければならない。関数コールおよびリ
ターン命令のフェッチは全プログラム・フェッチ中の極
く一部であるので、関数コールおよびリターン命令をフ
ェッチしたバス情報だけを抜き出してコールであるかあ
るいはリターンであるかの判別を行わないと、検出時間
を短縮することができない。また、実行プログラムを先
き読み(以下、プリフェッチと称する。)CPUを使用
したシステムの関数コールおよび関数リターンの検出に
おいて、実際には実行されない命令をプリフェッチした
場合、上記方法によれば実際に実行されたか否かの判断
ができない。
【0005】
【発明が解決しようとする課題】解決しようとする課題
は、関数コールおよび関数リターン命令をフェッチした
バス情報だけを抜き出して、コールであるかあるいはリ
ターンであるかの判別を行うことができない点、並びに
実際には実行されない命令をプリフェッチした場合、実
際に実行されたか否かの判断ができない点である。
は、関数コールおよび関数リターン命令をフェッチした
バス情報だけを抜き出して、コールであるかあるいはリ
ターンであるかの判別を行うことができない点、並びに
実際には実行されない命令をプリフェッチした場合、実
際に実行されたか否かの判断ができない点である。
【0006】本発明は、関数コール命令および関数リタ
ーン命令のフェッチ・データだけを抜き出すための第1
の手段と、前記抜き出されたフェッチ・データによりコ
ールであるか、あるいはリターンであるかを判別する第
2の手段とを備えた関数コール・リターン検出方式であ
って、前記第1の手段は関数のアドレス領域の情報を納
めたエントリ・アドレス・テーブルの当該アドレスが或
る関数の先頭アドレスと一致するか否かを判定する第3
の手段と、前記第3の手段によって前記一致を検出する
ことにより関数コールが起こったことを判断する第4の
手段と、前記一致が検出されなかったときであって、か
つ、或る関数領域から別の関数領域へアドレスが移った
とき、移り先のアドレスが関数の先頭アドレスでなけれ
ば、或る関数からのリターンが起こった箇所であると判
断する第5の手段と、前記抜き出されたフェッチ・デー
タのなかから連続しないアドレス点を検出する第6の手
段と、前記第6の手段によりアドレスの不連続点を検出
したとき、コールあるいはリターンの動作であるとして
前記第2の手段に伝える第7の手段とを備えたことを特
徴とする。
ーン命令のフェッチ・データだけを抜き出すための第1
の手段と、前記抜き出されたフェッチ・データによりコ
ールであるか、あるいはリターンであるかを判別する第
2の手段とを備えた関数コール・リターン検出方式であ
って、前記第1の手段は関数のアドレス領域の情報を納
めたエントリ・アドレス・テーブルの当該アドレスが或
る関数の先頭アドレスと一致するか否かを判定する第3
の手段と、前記第3の手段によって前記一致を検出する
ことにより関数コールが起こったことを判断する第4の
手段と、前記一致が検出されなかったときであって、か
つ、或る関数領域から別の関数領域へアドレスが移った
とき、移り先のアドレスが関数の先頭アドレスでなけれ
ば、或る関数からのリターンが起こった箇所であると判
断する第5の手段と、前記抜き出されたフェッチ・デー
タのなかから連続しないアドレス点を検出する第6の手
段と、前記第6の手段によりアドレスの不連続点を検出
したとき、コールあるいはリターンの動作であるとして
前記第2の手段に伝える第7の手段とを備えたことを特
徴とする。
【0007】
【実施例】次に、本発明について図面を参照して説明す
る。図1は、本発明による関数コール・リターン検出方
式の動作例を示すフローチャートである。CPUの実行
履歴中のプログラム・フェッチ時のバス情報を、ステッ
プ101によりサンプリングした順に取り出し、アドレ
スに着目する。ステップ102により、フェッチするプ
ログラムのアドレスの連続性をチエックする。アドレス
が連続であれば、再度、データの読み込みを行い、連続
でなくなった時点で関数コール・リターンの検出動作に
移る。
る。図1は、本発明による関数コール・リターン検出方
式の動作例を示すフローチャートである。CPUの実行
履歴中のプログラム・フェッチ時のバス情報を、ステッ
プ101によりサンプリングした順に取り出し、アドレ
スに着目する。ステップ102により、フェッチするプ
ログラムのアドレスの連続性をチエックする。アドレス
が連続であれば、再度、データの読み込みを行い、連続
でなくなった時点で関数コール・リターンの検出動作に
移る。
【0008】フェッチするプログラムのアドレスが連続
ではなったとき、ステップ103により上記アドレスを
図2に示すエントリ・アドレス・テーブルに検索にゆ
く。ステップ104によりエントリ・アドレス・テーブ
ル内の当該アドレスと関数の先頭アドレスとを比較し、
両アドレスが一致すれば、ステップ106により関数コ
ールが起こったと判断する。
ではなったとき、ステップ103により上記アドレスを
図2に示すエントリ・アドレス・テーブルに検索にゆ
く。ステップ104によりエントリ・アドレス・テーブ
ル内の当該アドレスと関数の先頭アドレスとを比較し、
両アドレスが一致すれば、ステップ106により関数コ
ールが起こったと判断する。
【0009】両アドレスが一致しなかった場合、ステッ
プ105により、直前にプログラム・フェッチされたア
ドレスの関数領域と、現在、読み込まれたデータのアド
レスの関数領域とを比較する。両関数領域が異なると
き、ステップ107により、直前にプログラム・フェッ
チされたアドレスが探す関数からのリターンであると判
断する。
プ105により、直前にプログラム・フェッチされたア
ドレスの関数領域と、現在、読み込まれたデータのアド
レスの関数領域とを比較する。両関数領域が異なると
き、ステップ107により、直前にプログラム・フェッ
チされたアドレスが探す関数からのリターンであると判
断する。
【0010】
【発明の効果】本発明によれば、プリフェッチ機能をも
ったCPUのプログラム解析時にも関数コール・リター
ン検出が可能となり、さらにプログラム・フェッチ時の
アドレスを逐次、エントリ・アドレス・テーブルに検索
に行く手間が省け、検出時間が短縮できる利点がある。
ったCPUのプログラム解析時にも関数コール・リター
ン検出が可能となり、さらにプログラム・フェッチ時の
アドレスを逐次、エントリ・アドレス・テーブルに検索
に行く手間が省け、検出時間が短縮できる利点がある。
【図1】本発明による関数コール・リターン検出方式の
動作を説明するフローチャートである。
動作を説明するフローチャートである。
【図2】図1に関するエントリ・アドレス・テーブルを
示す図である。
示す図である。
【図3】従来技術による関数コール・リターン検出方式
の動作を説明するフローチャートである。
の動作を説明するフローチャートである。
101〜107,301,303〜307 処理ステッ
プ
プ
Claims (1)
- 【請求項1】 関数コール命令および関数リターン命令
のフェッチ・データだけを抜き出すための第1の手段
と、 前記抜き出されたフェッチ・データによりコールである
か、あるいはリターンであるかを判別する第2の手段と
を備えた関数コール・リターン検出方式であって、 前記第1の手段は関数のアドレス領域の情報を納めたエ
ントリ・アドレス・テーブルと前期エントリ・アドレス
・テーブルの当該アドレスが或る関数の先頭アドレスと
一致するか否かを判定する第3の手段と、 前記第3の手段によって前記一致を検出することにより
関数コールが起こったことを判断する第4の手段と、 前記一致が検出されなかったときであって、かつ、或る
関数領域から別の関数領域へアドレスが移ったとき、移
り先のアドレスが関数の先頭アドレスでなければ、或る
関数からのリターンが起こった箇所であると判断する第
5の手段と、 前記抜き出されたフェッチ・データのなかから連続しな
いアドレス点を検出する第6の手段と、 前記第6の手段によりアドレスの不連続点を検出したと
き、コールあるいはリターンの動作であるとして前記第
2の手段に伝える第7の手段とを備えたことを特徴とす
る関数コール・リターン検出方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4054363A JP2716310B2 (ja) | 1992-02-05 | 1992-02-05 | 関数コール・リターン検出方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4054363A JP2716310B2 (ja) | 1992-02-05 | 1992-02-05 | 関数コール・リターン検出方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05216715A true JPH05216715A (ja) | 1993-08-27 |
JP2716310B2 JP2716310B2 (ja) | 1998-02-18 |
Family
ID=12968570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4054363A Expired - Fee Related JP2716310B2 (ja) | 1992-02-05 | 1992-02-05 | 関数コール・リターン検出方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2716310B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011170749A (ja) * | 2010-02-22 | 2011-09-01 | Fujitsu Ltd | シミュレーション装置及びシミュレーション方法 |
CN110377325A (zh) * | 2019-06-17 | 2019-10-25 | 中国平安人寿保险股份有限公司 | 接口配置方法、接口调用方法、装置、设备及存储介质 |
-
1992
- 1992-02-05 JP JP4054363A patent/JP2716310B2/ja not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011170749A (ja) * | 2010-02-22 | 2011-09-01 | Fujitsu Ltd | シミュレーション装置及びシミュレーション方法 |
CN110377325A (zh) * | 2019-06-17 | 2019-10-25 | 中国平安人寿保险股份有限公司 | 接口配置方法、接口调用方法、装置、设备及存储介质 |
CN110377325B (zh) * | 2019-06-17 | 2024-05-17 | 中国平安人寿保险股份有限公司 | 接口配置方法、接口调用方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2716310B2 (ja) | 1998-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0557616B2 (ja) | ||
US20060277397A1 (en) | Method and apparatus for predicting branch instructions | |
US11061683B2 (en) | Limiting replay of load-based control independent (CI) instructions in speculative misprediction recovery in a processor | |
JPH05216715A (ja) | 関数コール・リターン検出方式 | |
JPH09330221A (ja) | マイクロプロセッサにおける早期例外を追跡するシステム及び方法 | |
US7174444B2 (en) | Preventing a read of a next sequential chunk in branch prediction of a subject chunk | |
CN114528025A (zh) | 指令处理方法、装置、微控制器及可读存储介质 | |
JP2821300B2 (ja) | 関数コ─ルおよびリタ─ンの検出方式 | |
JP5068552B2 (ja) | プリフェッチ方法、及びキャッシュ機構用ユニット | |
JP2508021B2 (ja) | デ−タ処理装置 | |
JP2646957B2 (ja) | キャッシュ内蔵マイクロプロセッサ及びそのトレースシステム | |
US20060101239A1 (en) | Program-controlled unit having a prefetch unit | |
JPH04213727A (ja) | 情報処理装置 | |
CN109492147B (zh) | 数据记录总数量获取方法及装置 | |
JPH06290045A (ja) | 並列演算処理装置の演算エラー検出方式 | |
JPH06202907A (ja) | デバッグ支援装置 | |
JP3118802B2 (ja) | 分岐ヒストリテーブルを用いたデバッグ回路 | |
CN117331602A (zh) | 一种跳转指令的预取方法及装置 | |
JP2002116926A (ja) | プログラム処理装置およびプログラム処理方法 | |
JPH05143369A (ja) | タスク同定方式 | |
JP2727996B2 (ja) | プログラム実行監視方法およびプログラム実行監視システム | |
JPH01271841A (ja) | データ処理装置 | |
JPS5952349A (ja) | 命令先取制御装置 | |
JPH0667881A (ja) | 分岐予測アドレス処理方式 | |
JPH06149614A (ja) | 命令実行装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
LAPS | Cancellation because of no payment of annual fees | ||
R370 | Written measure of declining of transfer procedure |
Free format text: JAPANESE INTERMEDIATE CODE: R370 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |