JP2658982B2 - 特定命令実行検出方式 - Google Patents

特定命令実行検出方式

Info

Publication number
JP2658982B2
JP2658982B2 JP7150986A JP15098695A JP2658982B2 JP 2658982 B2 JP2658982 B2 JP 2658982B2 JP 7150986 A JP7150986 A JP 7150986A JP 15098695 A JP15098695 A JP 15098695A JP 2658982 B2 JP2658982 B2 JP 2658982B2
Authority
JP
Japan
Prior art keywords
instruction
execution
detected
search
register information
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 - Lifetime
Application number
JP7150986A
Other languages
English (en)
Other versions
JPH08320812A (ja
Inventor
直樹 佐藤
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
Nippon Electric Co Ltd
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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP7150986A priority Critical patent/JP2658982B2/ja
Publication of JPH08320812A publication Critical patent/JPH08320812A/ja
Application granted granted Critical
Publication of JP2658982B2 publication Critical patent/JP2658982B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ターゲットプログラム
中の特定命令が実行された際にそれ(特定命令の実行)
を検出する機能を持たないCPU(Central P
rocessing Unit)上で、ターゲットプロ
グラムの実行中に検出対象の特定命令(検出対象命令)
が実行されたことをソフトウェアによって検出する特定
命令実行検出方式に関する。
【0002】
【従来の技術】CPU上で実行されるターゲットプログ
ラムのデバッグや性能解析等を行うために、特定命令の
実行を検出する特定命令実行検出方式が必要になる。
【0003】従来、この種の特定命令実行検出方式とし
ては、以下の〜に示す3つの方式が用いられてい
た。
【0004】 第1の方式は、CPUに備えられた
「メモリの特定番地のアクセスを検出する機能」(例え
ば、「V60/V70アーキテクチャマニュアル」,日
本電気株式会社,資料番号IEM−949E(第6
版),1988年2月発行,57頁参照)を用いて、特
定命令の実行を検出する方式である。
【0005】 第2の方式は、ターゲットプログラム
の実行前に検出対象命令群を命令実行時処理手段呼出し
命令に置き換えて、その命令実行時処理手段呼出し命令
の実行に基づいて特定命令(検出対象命令)の実行を検
出する方式である。
【0006】 第3の方式は、マシン語レベルの命令
コードを解釈実行するソフトウェアによるCPUシミュ
レータを使用し、検出対象命令が実行された際に特定の
処理を行うことによって、特定命令(検出対象命令)の
実行を検出する方式である。
【0007】
【発明が解決しようとする課題】上述した従来の特定命
令実行検出方式には、以下の〜に示すような問題点
があった。
【0008】 第1の方式における問題点
【0009】CPUに備えられた「メモリの特定番地の
アクセスを検出する機能」は、指定できる検出対象のア
ドレスの数が一般的に少ない。また、この機能によって
検出できる命令は、メモリアクセスを行う命令に限られ
ており、関数呼出し命令等の他の命令を検出できない。
したがって、第1の方式では、検出対象命令として設定
できる特定命令の数が少なくなり、検出対象命令となり
うる特定命令の種類がメモリアクセスに関連する命令に
限られるという問題点があった。なお、第1の方式に
は、CPUが「メモリの特定番地のアクセスを検出する
機能」を備えていなければ検出対象の特定命令の実行を
検出できないという問題点があることはいうまでもな
い。
【0010】 第2の方式における問題点
【0011】第2の方式では、ターゲットプログラムに
命令コードとデータとが混在している場合に、データを
命令コードと誤認することに起因して検出対象命令の実
行を正しく検出できない可能性や、ターゲットプログラ
ムが誤動作を起こす可能性があるという問題点があっ
た。
【0012】 第3の方式における問題点
【0013】第3の方式では、ソフトウェアによるCP
Uシミュレータで命令を解釈実行するために要する時間
が長くなり、検出対象命令の実行を検出できるまでの時
間が長大になるという問題点があった。
【0014】本発明の目的は、上述の点に鑑み、以下の
〜の目的を達成する特定命令実行検出方式を提供す
ることにある。 CPUが持つ命令のうちの任意の命令を検出対象命
令として設定できるようにする。すなわち、検出対象命
令として設定できる命令の数や種類の制限をなくす。 命令コードとデータとが混在しているターゲットプ
ログラムにおいても、検出対象命令の実行を正確に検出
できるようにする。 ソフトウェアによるCPUシミュレータを使用する
第3の方式に比べて、検出対象命令の実行の検出の高速
化を可能にする。
【0015】
【課題を解決するための手段】本発明の特定命令実行検
出方式は、ターゲットプログラム中に含まれる検出対象
命令が実行された際にその「検出対象命令の実行」をソ
フトウェアによって検出する特定命令実行検出方式にお
いて、ターゲットプログラム中の検出対象命令実行時処
理手段呼出し命令や命令検索置換え手段呼出し命令が実
行された時のレジスタ情報を取得するレジスタ情報取得
手段と、前記レジスタ情報取得手段によって取得された
レジスタ情報を保持するレジスタ情報保持手段と、ター
ゲットプログラムの実行を再開する際に前記レジスタ情
報保持手段内のレジスタ情報をレジスタに復帰させるレ
ジスタ情報復帰手段と、ターゲットプログラムの実行開
始前およびターゲットプログラム中の命令検索置換え手
段呼出し命令の実行時に呼び出され、停止状態にあるタ
ーゲットプログラム中の実行再開アドレスから実行を行
う場合に当該実行再開アドレスから次に最初に現れる分
岐命令の存在するアドレスまでの区間における検出対象
命令の有無を当該実行の前に検索し、当該分岐命令を命
令検索置換え手段呼出し命令に置き換え、その検索によ
って検出された検出対象命令を検出対象命令実行時処理
手段呼出し命令に置き換える命令検索置換え手段と、前
記命令検索置換え手段によって置き換えられた分岐命令
および検出対象命令の命令コードおよびアドレスを保存
する命令コード保存手段と、ターゲットプログラム中の
検出対象命令実行時処理手段呼出し命令の実行時に呼び
出され、前記レジスタ情報保持手段内のレジスタ情報を
参照して検出対象命令実行時処理を行う検出対象命令実
行時処理手段とを有する。なお、本明細書における「分
岐命令」という用語は、無条件分岐命令,条件分岐命
令,コール命令(関数呼出し命令およびサブルーチン呼
出し命令等),およびソフトウェア割込み命令のような
命令群を総称する意味を有している。
【0016】
【作用】本発明の特定命令実行検出方式では、ターゲッ
トプログラム中に含まれる検出対象命令が実行された際
にその「検出対象命令の実行」をソフトウェアによって
検出する特定命令実行検出方式において、レジスタ情報
取得手段がターゲットプログラム中の検出対象命令実行
時処理手段呼出し命令や命令検索置換え手段呼出し命令
が実行された時のレジスタ情報を取得し、レジスタ情報
保持手段がレジスタ情報取得手段によって取得されたレ
ジスタ情報を保持し、レジスタ情報復帰手段がターゲッ
トプログラムの実行を再開する際にレジスタ情報保持手
段内のレジスタ情報をレジスタに復帰させ、命令コード
保存手段が命令検索置換え手段によって置き換えられた
分岐命令および検出対象命令の命令コードおよびアドレ
スを保存し、ターゲットプログラム中の検出対象命令実
行時処理手段呼出し命令の実行時に呼び出される検出対
象命令実行時処理手段がレジスタ情報保持手段内のレジ
スタ情報を参照して検出対象命令実行時処理を行い、タ
ーゲットプログラムの実行開始前およびターゲットプロ
グラム中の命令検索置換え手段呼出し命令の実行時に呼
び出される命令検索置換え手段が以下の〜の処理を
行う。 停止状態にあるターゲットプログラム中の実行再開ア
ドレスから実行を行う場合に、当該実行再開アドレスか
ら次に最初に現れる分岐命令の存在するアドレスまでの
区間における検出対象命令の有無を当該実行の前に検索
する。 当該分岐命令を命令検索置換え手段呼出し命令に置き
換える。 その検索によって検出された検出対象命令を検出対象
命令実行時処理手段呼出し命令に置き換える。
【0017】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
【0018】図1は、本発明の特定命令実行検出方式の
第1の実施例(特定命令実行検出方式1)の構成等を示
すブロック図である。
【0019】本実施例の特定命令実行検出方式1は、タ
ーゲットプログラム2中の特定命令(検出対象命令)の
実行を検出する方式であり、命令検索置換え手段11
と、命令コード保存手段12と、検出対象命令実行時処
理手段13と、レジスタ情報取得手段14と、レジスタ
情報保持手段15と、レジスタ情報復帰手段16とを含
んで構成されている。
【0020】図2は、命令検索置換え手段11の処理を
示す流れ図である。この処理は、起動アドレス等取得ス
テップ201と、命令取得ステップ202と、命令判定
ステップ203と、検出対象命令置換えステップ204
と、命令コード情報伝達ステップ205と、分岐命令置
換えステップ206と、命令コード情報伝達ステップ2
07と、置換え停止ステップ208と、命令検索置換え
手段呼出しステップ209と、命令コード情報取得ステ
ップ210と、分岐先アドレス取得ステップ211と、
分岐命令復帰ステップ212とからなる。
【0021】図3は、検出対象命令実行時処理手段13
の処理を示す流れ図である。この処理は、検出対象命令
実行時処理手段呼出しステップ301と、命令コード情
報取得ステップ302と、検出対象命令真偽判定ステッ
プ303と、検出対象命令実行伝達ステップ304と、
検出対象命令復帰ステップ305と、ターゲットプログ
ラム実行再開ステップ306とからなる。
【0022】図4(a)〜(e)は、本実施例の特定命
令実行検出方式1の具体的な動作を説明するための図で
ある。
【0023】図5〜図8は、本実施例の特定命令実行検
出方式1の適用例を説明するためのブロック図である。
【0024】次に、このように構成された本実施例の特
定命令実行検出方式1の動作について説明する。
【0025】第1に、命令検索置換え手段11の動作に
ついて説明する(図2参照)。
【0026】ターゲットプログラム2の実行開始に先立
って(実行開始前に)、命令検索置換え手段11が呼び
出される。
【0027】呼び出された命令検索置換え手段11は、
図示しないターゲットプログラム起動アドレス指示手段
によりターゲットプログラム2の起動アドレスを取得
し、「検出対象命令を示す情報」を取得する(ステップ
201)。
【0028】ここで、「検出対象命令を示す情報」につ
いて説明を加える。例えば、検出対象命令が「メモリの
0x100番地(「0x」は後続の数値が16進数であ
ることを示す)をアクセスする命令」であった場合に
は、検出対象命令実行時処理手段13の呼出しに関して
は、実行前に0x100番地をアクセスすることが分か
る命令だけではなく、レジスタ間接メモリアクセス命令
のように実行時まで0x100番地をアクセスするかど
うかが分からない命令も検出対象命令として扱う方が
「適正な検出対象命令の実行の検出」のために適当であ
る場合が多い。そこで、レジスタ間接メモリアクセス命
令のような特定の番地をアクセスするかどうかが分から
ない命令も、上述の「検出対象命令を示す情報」では検
出対象命令とみなされ、後述する置換え対象の命令とさ
れる。ただし、実行時まで特定の番地をアクセスするか
どうかが分からない命令を検出対象命令とみなさない取
扱いも可能である。
【0029】命令検索置換え手段11は、後述するステ
ップ211で取得した分岐先アドレスを実行再開アドレ
ス(停止状態にあるターゲットプログラム2において現
時点で実行を中断している位置を示すアドレス)として
認識し(初回のみは、ステップ201で取得した起動ア
ドレスを実行再開アドレス(初回は「再開」ではないが
「再開」とみなす)として認識する)、その実行再開ア
ドレスから順にターゲットプログラム2中の各命令を取
得する(ステップ202)。
【0030】次に、ステップ202で取得した命令が分
岐命令または検出対象命令であるか否かを判定する(ス
テップ203)。
【0031】ステップ203で「当該命令が検出対象命
令である」と判定した場合(この判定は上述の「検出対
象命令を示す情報」に基づいて行われる)には、当該検
出対象命令を検出対象命令実行時処理手段呼出し命令に
置き換え(ステップ204)、それとともに、置換え対
象となった元の命令(検出対象命令)のアドレスと命令
コードとの組を示す情報(以下、命令コード情報とい
う)を命令コード保存手段12に伝達し(ステップ20
5)、その後に次の命令を取得する(ステップ20
2)。命令コード保存手段12は、その命令コード情報
を保存する。
【0032】ステップ203で「当該命令が分岐命令で
ある」と判定した場合には、当該分岐命令を命令検索置
換え手段呼出し命令に置き換え(ステップ206)、そ
れとともに、置換え対象となった元の分岐命令のアドレ
スと命令コードとの組を示す命令コード情報を命令コー
ド保存手段12に伝達する(ステップ207)。命令コ
ード保存手段12は、その命令コード情報を保存する。
【0033】また、分岐命令を検出した場合には、ステ
ップ202〜207における今回の命令置換えに関する
処理を停止する(ステップ208)。
【0034】なお、ステップ203で「当該命令が分岐
命令または検出対象命令ではない」と判定した場合に
は、次の命令を取得する(ステップ202)。
【0035】上述のような命令置換えの後(ステップ2
08の処理の後)に、ターゲットプログラム2の実行が
開始/再開される。
【0036】当該実行の過程で、命令検索置換え手段呼
出し命令が実行されると、命令検索置換え手段11が呼
び出される(ステップ209)。なお、ステップ208
の処理とステップ209の処理とは、必ずしも一連の処
理の流れとして連続的に行われるわけではない。したが
って、図2中では両者を結ぶ矢線を破線で示している。
【0037】呼び出された命令検索置換え手段11は、
その命令検索置換え手段呼出し命令に置き換えられる前
の分岐命令に関する命令コード情報(その分岐命令のア
ドレスおよび命令コード)を命令コード保存手段12か
ら取得する(ステップ210)。
【0038】なお、レジスタ情報取得手段14は、命令
検索置換え手段呼出し命令が実行された時のレジスタ情
報を収集(取得)する。レジスタ情報保持手段15は、
レジスタ情報取得手段14によって収集されたレジスタ
情報を保持する。
【0039】次に、命令検索置換え手段11は、レジス
タ情報保持手段15内のレジスタ情報を参照しながら
(レジスタ情報の参照が不要な場合もある)、ステップ
210で取得した分岐命令の命令コードの解析を行い、
当該分岐命令の実行後の分岐先アドレスを取得し(ステ
ップ211)、ターゲットプログラム2中の命令検索置
換え手段呼出し命令を元の分岐命令に戻す(ステップ2
12)。
【0040】さらに、ステップ211で取得した分岐先
アドレスを実行再開アドレスと認識し、その実行再開ア
ドレスから順にターゲットプログラム2中の各命令を取
得する(ステップ202)。
【0041】なお、レジスタ情報復帰手段16は、ター
ゲットプログラム2の実行を再開する際に、レジスタ情
報保持手段15内のレジスタ情報をレジスタに復帰させ
る。
【0042】第2に、検出対象命令実行時処理手段13
の動作について説明する(図3参照)。
【0043】ターゲットプログラム2の実行の過程で、
ターゲットプログラム2中の検出対象命令実行時処理手
段呼出し命令が実行された時に、検出対象命令実行時処
理手段13が呼び出される(ステップ301)。
【0044】検出対象命令実行時処理手段13は、検出
対象命令実行時処理手段呼出し命令に置き換えられる前
の命令(検出対象命令)の命令コード情報を命令コード
保存手段12から取得する(ステップ302)。
【0045】なお、レジスタ情報取得手段14は検出対
象命令実行時処理手段呼出し命令が実行された時のレジ
スタ情報を収集(取得)し、レジスタ情報保持手段15
はそのレジスタ情報を保持する。
【0046】ここで、検出対象命令が例えば「メモリの
0x100番地をアクセスする命令」であった場合に
は、先に述べたように、レジスタ間接メモリアクセス命
令のように実行まで検出対象命令となるかどうかが分か
らない命令も検出対象命令実行時処理手段呼出し命令に
置き換えられているため、ステップ302で取得した命
令コードとレジスタ情報保持手段15内のレジスタ情報
とを基に、ステップ302で命令コード情報を取得した
命令が真に検出対象命令であるか否かを判定する(ステ
ップ303)。すなわち、取得した命令コードとレジス
タ情報保持手段15に格納されているレジスタ情報とを
使用してその命令コードの解析を行い、その命令が検出
対象命令であるか否かの判断を行う。
【0047】ステップ303で「当該命令が真の検出対
象命令である」と判定した場合には、以下の〜に示
すような検出対象命令実行時処理を行う。
【0048】 図示しない検出対象命令実行通知手段
に「検出対象命令の実行」の旨と、必要な場合にはその
旨に付随する情報とを伝達する(ステップ304)。
【0049】 ターゲットプログラム2中の検出対象
命令実行時処理手段呼出し命令を元の命令(検出対象命
令)に戻す(ステップ305)。
【0050】 その後に、元の検出対象命令(場合に
よっては、その検出対象命令の次の命令等の他の命令で
あることもある)からターゲットプログラム2の実行を
再開させる(ステップ306)。
【0051】また、ステップ303で「当該命令が真の
検出対象命令でない」と判定した場合には、上述の検出
対象命令実行時処理のうちのおよびの処理を行う
(ステップ305および306)。
【0052】なお、レジスタ情報復帰手段16は、ター
ゲットプログラム2の実行を再開する時に、レジスタ情
報保持手段15内のレジスタ情報をレジスタに復帰す
る。
【0053】次に、本実施例の特定命令実行検出方式の
具体的な動作について説明する。すなわち、本実施例の
特定命令実行検出方式を適用してターゲットプログラム
2を実行した場合に、ターゲットプログラム2において
どのような手順(ステップ)で命令の置換え等が行われ
るかを説明する(図4(a)〜(e)参照)。
【0054】 第1ステップ
【0055】図4(a)に示すターゲットプログラム2
1は、実行開始前のターゲットプログラム2を示すもの
であり、命令コード(データを含む。データ214参
照)の集合(命令コード211〜21n(データ214
を含む))である(nは任意の正整数)。ここでは、命
令コード211が起動アドレスに配置されている命令コ
ードであるものとする。
【0056】ターゲットプログラム21の実行に先立
ち、命令検索置換え手段11が呼び出され、命令コード
211から実行を開始して最初に現れる分岐命令の検索
と、その分岐命令までの間にある検出対象命令の検索と
が行われる。
【0057】ターゲットプログラム21中で最初に現れ
る分岐命令は、分岐命令コード213である。また、命
令コード212が検出対象命令であったとする。そうす
ると、命令検索置換え手段11により、ターゲットプロ
グラム21中の命令コード212は検出対象命令実行時
処理手段呼出し命令コード222に置き換えられ、分岐
命令コード213は命令検索置換え手段呼出し命令コー
ド223に置き換えられる。
【0058】図4(b)に示すターゲットプログラム2
2は、上述の命令コードの置換えが行われたターゲット
プログラム2を示すものである。
【0059】 第2ステップ
【0060】図4(a)から図4(b)への命令コード
の置換えが完了した時点で、実行再開アドレス(ここで
は起動アドレスである命令コード221のアドレス)か
らターゲットプログラム22の実行が開始される。
【0061】命令コード221からのターゲットプログ
ラム22の実行が開始されると、命令コード221が初
めに実行され、続いて検出対象命令実行時処理手段呼出
し命令コード222が実行される。
【0062】検出対象命令実行時処理手段呼出し命令コ
ード222が実行されると、先に説明した通り、検出対
象命令実行時処理手段13が呼び出され、先に述べた検
出対象命令実行時処理が行われる。検出対象命令実行時
処理が終了すると、検出対象命令実行時処理手段呼出し
命令コード222は元の命令コード(検出対象命令の命
令コード232)に戻されている。
【0063】図4(c)に示すターゲットプログラム2
3は、この時点でのターゲットプログラム2を示すもの
である。
【0064】 第3ステップ
【0065】図4(c)に示すターゲットプログラム2
3では、元に戻された命令コード232から、実行が再
開される。
【0066】命令コード232が実行された後に、命令
検索置換え手段呼出し命令コード233が実行される。
【0067】命令検索置換え手段呼出し命令コード23
3が実行されると、先に説明した通り、命令検索置換え
手段11が呼び出される。
【0068】 第4ステップ
【0069】第3ステップで呼び出された命令検索置換
え手段11は、命令検索置換え手段呼出し命令コード2
33を元の分岐命令コード243に戻す処理を行うとと
もに、レジスタ情報保持手段15内のレジスタ情報に基
づいて元の分岐命令の解析を行い、次に実行される命令
アドレスを取得する。
【0070】ここで、次に実行される命令アドレスが命
令コード235の位置を示すアドレスであった場合(命
令コード233と命令コード235との間にデータ23
4が存在する場合)には、命令検索置き換え手段11に
より命令コード235の位置からの分岐命令および検出
対象命令の検索が行われる。
【0071】命令コード235から検索を始めて最初に
現れる分岐命令は分岐命令コード236であり、命令コ
ード235が検出対象命令であったとする。そうする
と、命令検索置き換え手段11により、命令コード23
5は検出対象命令実行時処理手段呼出し命令コード24
5に置き換えられ、分岐命令コード236は命令検索置
換え手段呼出し命令コード246に置き換えられる。
【0072】図4(d)に示すターゲットプログラム2
4は、上述の命令コードの置換えが行われたターゲット
プログラム2を示すものである。
【0073】 第5ステップ
【0074】図4(c)から図4(d)への命令コード
の置換えが完了した時点で、実行再開アドレス(ここで
は、命令検索置換え手段11が呼び出される基となった
命令検索置換え手段呼出し命令コード233が存在した
アドレス)の命令コード、すなわち分岐命令コード24
3から実行が再開される。
【0075】分岐命令コード243が実行された次に、
検出対象命令実行時処理手段呼出し命令コード245が
実行される。
【0076】検出対象命令実行時処理手段呼出し命令コ
ード245が実行されると、第2ステップと同様に、検
出対象命令実行時処理手段13が呼び出され、検出対象
命令実行時処理が行われる。検出対象命令実行時処理が
終了すると、検出対象命令実行時処理手段呼出し命令コ
ード245は元の命令コード255に戻されている。
【0077】図4(e)に示すターゲットプログラム2
5は、この時点でのターゲットプログラム2を示すもの
である。
【0078】 第6ステップ
【0079】図4(e)に示すターゲットプログラム2
5では、元に戻された命令コード255から、実行が再
開される。
【0080】命令コード255が実行された後に、命令
検索置換え手段呼出し命令コード256が実行される。
命令検索置換え手段呼出し命令コード256が実行され
ると、第3ステップと同様に、命令検索置き換え手段1
1が呼び出される。
【0081】この後に、分岐命令の解析(第4ステップ
参照),次に現れる分岐命令および検出対象命令の検索
(第4ステップ参照),分岐命令からの実行の再開(第
5ステップ参照),命令検索置換え手段呼出し命令によ
る命令検索置換え手段11の呼出し(第6ステップ参
照)が順次繰り返される。この動作の繰り返しにより、
ターゲットプログラム2中にある全ての検出対象命令の
実行が順次検出される。
【0082】以上述べたように、本実施例の特定命令実
行検出方式1は、分岐命令から次の分岐命令までの区間
にある検出対象命令および分岐命令の検索を繰り返す処
理により、特定命令である検出対象命令の実行の検出が
実現される。
【0083】一般的に、正しく動作するプログラムで
は、分岐命令による分岐先のアドレスから次に現れる分
岐命令の間には命令コード以外は存在しない。本実施例
の特定命令実行検出方式1では、この性質が利用され
て、ターゲットプログラム2中に命令コードとデータと
が混在する場合でも、検出対象命令の実行を正しく検出
することが可能となる。
【0084】例えば、図4(d)に示すターゲットプロ
グラム24を見るとデータ244が含まれているが、タ
ーゲットプログラム24が正常に動作するプログラムで
ある場合にはデータ244は実行されることがない(分
岐命令コード243による分岐先のアドレス(検出対象
命令実行時処理手段呼出し命令コード245のアドレ
ス)から次に現れる分岐命令コード(命令検索置換え手
段呼出し命令コード246に置き換えられる前の分岐命
令コード)の間には命令コード以外は存在しない)。し
たがって、前述のような手順で処理を行うことにより、
データ244を命令コードと誤認することなく、検出対
象命令の実行を検出することができる。
【0085】次に、本実施例の特定命令実行検出方式1
の適用例について説明する。本実施例の特定命令実行検
出方式1は、デバッガ,性能解析方式およびCPUシミ
ュレータに適用することが可能である。以下に、これら
の適用の態様について、順次説明する。
【0086】(1) デバッガへの適用例
【0087】図5は、本実施例の特定命令実行検出方式
1を使用し、メモリアクセスブレーク機構を持たないC
PU上でメモリアクセスの検出(メモリアクセス命令の
実行の検出)を可能としたデバッガの一例(デバッガ
3)の構成等を示すブロック図である。
【0088】デバッガ3は、デバッグ対象のターゲット
プログラム2のデバッグを行うものであり、デバッグ対
象のターゲットプログラム2のメモリアクセス命令(こ
こでは、このメモリアクセス命令が検出対象命令に該当
する)の実行を検出するための特定命令検出方式1と、
デバッグ手段31とを含んで構成されている。
【0089】特定命令実行検出方式1は、命令検索置き
換え手段11が「検出対象命令を示す情報」をデバッグ
手段31から受け取ることと、検出対象命令実行時処理
手段13が検出対象命令(メモリアクセス命令)が実行
された時に「検出対象命令の実行」の旨を伝達してデバ
ッグ手段31を呼び出すこととを除いては、先に述べた
図1に示す特定命令実行検出方式1の機能と同様の機能
を持つ。
【0090】図6は、デバッグ手段31の構成の一例を
示すブロック図である。デバッグ手段31は、検出対象
命令指示手段311と、検出対象命令実行通知手段31
2と、ユーザインタフェース313とを含んで構成され
ている。
【0091】次に、このように構成されたデバッガ3の
動作について説明する。
【0092】デバッグ手段31内のユーザインタフェー
ス313は、ユーザから指示されたアクセスを検出した
いアドレスを検出対象命令指示手段311に指示する。
【0093】検出対象命令指示手段311は、ユーザイ
ンタフェース313から指示されたアドレスのメモリア
クセスを行う可能性のある命令を検出対象命令とするよ
うに、特定命令実行検出方式1内の命令検索置換え手段
11に対して「検出対象命令を示す情報」を指示(伝
達)する。
【0094】命令検索置換え手段11は、この「検出対
象命令を示す情報」に基づき、先に述べた図2に示す処
理を行う。
【0095】検出対象命令実行通知手段312は、指示
されたアドレスのメモリアクセスがあった場合(検出対
象命令であるメモリアクセス命令の実行があった場合)
に検出対象命令実行時処理手段13から「検出対象命令
の実行」を伝達されることによって呼び出され、その旨
をユーザインタフェース313に通知する。
【0096】ユーザインタフェース313は、検出対象
命令実行通知手段312からの通知を受け取り、検出対
象のアドレスのメモリアクセスがあったことをユーザに
通知する。
【0097】このように、本実施例、ひいては本発明の
特定命令実行検出方式を使用したデバッガは、CPUが
ハードウェア的なメモリアクセス検出機能(メモリの特
定番地のアクセスを検出する機能)を持たない場合にお
いても、ユーザが指示したアドレスのメモリアクセスを
検出し、それをユーザに通知することを実現可能として
いる。
【0098】(2) 性能解析方式への適用例
【0099】図7は、本実施例の特定命令実行検出方式
1を使用した性能解析方式の一例(性能解析方式4)の
構成等を示すブロック図である。
【0100】性能解析方式4は、性能解析対象のターゲ
ットプログラム2の性能解析を行うものであり、性能解
析対象のターゲットプログラム2の関数呼出し命令(こ
こでは、この関数呼出し命令が検出対象命令に該当す
る)の実行を検出するための特定命令実行検出方式1
と、情報収集手段41と、検索対象指示手段42とを含
んで構成されている。
【0101】特定命令実行検出方式1は、命令検索置換
え手段11が「検出対象命令を示す情報」を検索対象指
示手段42から受け取ることと、検出対象命令実行時処
理手段13が検出対象命令(関数呼出し命令)が実行さ
れた時に「検出対象命令の実行」の旨と「関数呼出し命
令によって呼び出され関数のアドレス」とを情報収集手
段41に伝達することとを除いては、先に述べた図1に
示す特定命令実行検出方式1の機能と同様の機能を持
つ。
【0102】次に、このように構成された性能解析方式
4の動作について説明する。
【0103】性能解析方式4内の検索対象指示手段42
は、特定命令実行検出方式1内の命令検索置き換え手段
11に対して、「検出対象命令を示す情報」によって、
検出対象命令として関数呼出し命令を指示する。
【0104】命令検索置換え手段11は、この「検出対
象命令を示す情報」に基づき、先に述べた図2に示す処
理を行う。
【0105】情報収集手段41は、検出対象命令実行通
知手段として機能し、検出対象命令である関数呼出し命
令の実行があった場合に、検出対象命令実行時処理手段
13から「検出対象命令の実行」を伝達されることによ
って呼び出される。
【0106】また、情報収集手段41は、検出対象命令
実行時処理手段12から「検出対象命令の実行」の旨の
付随情報として「関数呼出し命令によって呼び出された
関数のアドレス」を受け取り、そのアドレスを示す情報
を逐次蓄積する。
【0107】情報収集手段41に蓄積された情報によ
り、図示しない関数呼出し情報処理手段によって、各関
数が呼び出された回数等が求められる。これにより、性
能解析方式4は、ターゲットプログラム2の性能解析を
行うことが可能となる。
【0108】既存の(従来の)性能解析方式では、実行
前に命令コードを解析して関数呼出し命令部分の命令置
換えを行っていたため、命令コードとデータとが混在し
ているプログラムを解析対象とした場合に、データを関
数呼出し命令の命令コードと誤認する危険性があった。
これに対して、本実施例、ひいては本発明の特定命令実
行検出方式を用いた性能解析方式は、命令コードとデー
タとが混在したプログラムを解析対象とした場合でも、
データを命令コードと誤認することなく情報の収集が可
能となる。
【0109】(3) CPUシミュレータへの適用例
【0110】図8は、本実施例の特定命令実行検出方式
1を使用したCPUシミュレータの一例(CPUシミュ
レータ5)の構成等を示すブロック図である。
【0111】CPUシミュレータ5は、ターゲットプロ
グラム2が本来実行されるCPUと同一アーキテクチャ
を持つCPUを搭載し、UNIX(「UNIX」はUN
IXSystem Laboratories,In
c.により開発されライセンスされている)等のOS
(Operating System)が動作している
ホストマシン(図示せず)上でターゲットプログラム2
を実行するためのものである。
【0112】CPUシミュレータ5は、UNIX等のO
Sの制限によってホストマシン上のCPUで直接実行で
きない特権命令等をシミュレートし、ホストマシン上の
CPUが直接実行できる命令はそのまま実行することに
より、ホストマシン上でターゲットプログラム2を動作
させる。
【0113】CPUシミュレータ5は、ホストマシン上
のCPUが直接実行できない特権命令等(ここでは、こ
の特権命令等が検出対象命令に該当する)を検出するた
めの特定命令実行検出方式1と、ホストマシン上で直接
実行できない命令のシミュレーションを行う命令シミュ
レーション手段51と、検索対象指示手段52とを含ん
で構成されている。
【0114】特定命令実行検出方式1は、命令検索置換
え手段11が「検出対象命令を示す情報」を検索対象指
示手段52から受け取ることと、検出対象命令実行時処
理手段13が検出対象命令(ホストマシン上のCPUが
直接実行できない特権命令等)が実行された時に「検出
対象命令の実行」の旨を伝達することによって命令シミ
ュレーション手段51を呼び出すこととを除いては、先
に述べた図1に示す特定命令実行検出方式1の機能と同
様の機能を持つ。
【0115】図9は、命令シミュレーション手段51の
構成の一例を示すブロック図である。命令シミュレーシ
ョン手段51は、命令解析手段511と、命令シミュレ
ーション関数1,命令シミュレーション関数2,…,命
令シミュレーション関数nの集合である命令シミュレー
ション関数群512とを含んで構成されている。
【0116】次に、このように構成されたCPUシミュ
レータ5の動作について説明する。
【0117】検索対象指示手段52は、ホストマシン上
のCPUでは直接実行できない特権命令等を検出対象命
令として示す「検出対象命令を示す情報」を命令検索置
換え手段11に対して通知する。
【0118】命令シミュレーション手段51内の命令解
析手段511は、検出対象命令実行通知手段として機能
し、検出対象命令実行時処理手段12からホストマシン
のCPUが直接実行できなかった命令(検出対象命令)
の実行の旨の通知を受け取る。さらに、その命令の解析
を行い、その命令をシミュレーションするための命令シ
ミュレーション関数(命令シミュレーション関数群51
2中の1つの命令シミュレーション関数)を呼び出す。
【0119】呼び出された命令シミュレーション関数
は、レジスタ情報保持手段15内のレジスタ情報の参照
および変更を行いながら、その命令のシミュレーション
を行う。
【0120】なお、検出対象命令実行時処理手段13
は、その命令のシミュレーションの完了後に、ターゲッ
トプログラム2の実行を再開する場合に、検出対象命令
実行時処理手段13を呼び出した命令のアドレスではな
く、その命令の次に実行される命令のあるアドレスから
実行を再開させる。
【0121】既存の(従来の)CPUシミュレータは、
ターゲットプログラム中の命令を全て解釈実行してい
た。これに対して、本実施例、ひいては本発明が適用さ
れるCPUシミュレータは、ホストマシン上のCPUが
直接実行できない命令のみをシミュレート(解釈実行)
するため、高速なシミュレーションが可能となる。
【0122】図10は、本発明の特定命令実行検出方式
の第2の実施例(特定命令実行検出方式10)の構成等
を示すブロック図である。
【0123】本実施例の特定命令実行検出方式10は、
自己書換え型プログラムであるターゲットプログラム2
0に対応したものであり、命令検索置換え手段101
と、命令コード保存手段102と、検出対象命令実行時
処理手段103と、レジスタ情報取得手段104と、レ
ジスタ情報保持手段105と、レジスタ情報復帰手段1
06とを含んで構成されている。
【0124】自己書換え型プログラムでは、実行中に命
令コードが書き換えられる。したがって、第1の実施例
の特定命令実行検出方式1では、自己書換え型プログラ
ムであるターゲットプログラム2における検出対象命令
の実行を正しく検出できない場合がある。本実施例の特
定命令実行検出方式10は、自己書換え型プログラムを
ターゲットプログラム20とした場合にも、検出対象命
令の実行を正しく検出できるようにしたものである。
【0125】なお、本実施例の特定命令実行検出方式1
0(自己書き換え型プログラムに対応した特定命令実行
検出方式)は、命令検索置換え手段101の処理が命令
検索置換え手段11の処理と異なる以外は、第1の実施
例の特定命令実行検索方式1と同じ機能を持つ。
【0126】図11は、命令検索置換え手段101の処
理を示す流れ図である。この処理は、起動アドレス等取
得ステップ1101と、命令取得ステップ1102と、
命令判定ステップ1103と、検出対象命令置換えステ
ップ1104と、命令コード情報伝達ステップ1105
と、分岐命令/自己書換え命令置換えステップ1106
と、命令コード情報伝達ステップ1107と、置換え停
止ステップ1108と、命令検索置換え手段呼出しステ
ップ1109と、命令コード情報取得ステップ1110
と、分岐命令/自己書換え命令判定ステップ1111
と、分岐先アドレス取得ステップ1112と、分岐命令
復帰ステップ1113と、自己書換え命令真偽判定ステ
ップ1114と、自己書換え命令シミュレーションステ
ップ1115と、処理継続アドレス取得ステップ111
6と、自己書換え命令復帰ステップ1117とからな
る。
【0127】次に、このように構成された本実施例の特
定命令実行検出方式10の動作について説明する。ここ
では、第1の実施例と異なる動作である命令検索置換え
手段101の動作を中心にして説明する。
【0128】命令検索置換え手段101は、次のような
処理を行う(図11参照)。
【0129】ターゲットプログラム20の実行開始に先
立って(実行開始前に)、命令検索置換え手段101が
呼び出される。
【0130】呼び出された命令検索置換え手段101
は、図示しないターゲットプログラム起動アドレス指示
手段によりターゲットプログラム20の起動アドレスを
取得し、「検出対象命令を示す情報」を取得する(ステ
ップ1101)。
【0131】命令検索置換え手段101は、後述するス
テップ1113で取得した分岐先アドレスを実行再開ア
ドレスとして認識し(初回のみは、ステップ1101で
取得した起動アドレスを実行再開アドレスとして認識す
る)、その実行再開アドレスから順にターゲットプログ
ラム20中の各命令を取得する(ステップ1102)。
【0132】次に、ステップ1102で取得した命令が
分岐命令,自己書換え命令(ターゲットプログラム20
自身を書き換える命令),または検出対象命令であるか
否かを判定する(ステップ1103)。なお、ここでの
「自己書換え命令」には、レジスタ間接メモリアクセス
命令のように自己書換えのための特定の番地へのアクセ
スを実際に行うかどうかが分からない命令(以下、「擬
制自己書換え命令」という)も含まれる。
【0133】ステップ1103で「当該命令が検出対象
命令である」と判定した場合(この判定は上述の「検出
対象命令を示す情報」に基づいて行われる)には、当該
検出対象命令を検出対象命令実行時処理手段呼出し命令
に置き換え(ステップ1104)、それとともに、置換
え対象となった元の命令(検出対象命令)のアドレスと
命令コードとの組を示す命令コード情報を命令コード保
存手段102に伝達し(ステップ1105)、その後に
次の命令を取得する(ステップ1102)。命令コード
保存手段102は、その命令コード情報を保存する。
【0134】ステップ1103で「当該命令が分岐命令
または自己書換え命令である」と判定した場合には、当
該分岐命令または自己書換え命令を命令検索置換え手段
呼出し命令に置き換え(ステップ1106)、それとと
もに、置換え対象となった元の分岐命令または自己書換
え命令のアドレスと命令コードとの組を示す命令コード
情報を命令コード保存手段102に伝達する(ステップ
1107)。命令コード保存手段102は、その命令コ
ード情報を保存する。
【0135】また、分岐命令または自己書換え命令を検
出した場合には、ステップ1102〜1107における
今回の命令置換えに関する処理を停止する(ステップ1
108)。
【0136】なお、ステップ1103で「当該命令が分
岐命令,自己書換え命令または検出対象命令ではない」
と判定した場合には、次の命令を取得する(ステップ1
102)。
【0137】上述のような命令置換えの後(ステップ1
108の処理の後)に、ターゲットプログラム20の実
行が開始/再開される。
【0138】当該実行の過程で、命令検索置換え手段呼
出し命令が実行されると、命令検索置換え手段101が
呼び出される(ステップ1109)。
【0139】呼び出された命令検索置換え手段101
は、その命令検索置換え手段呼出し命令に置き換えられ
る前の命令に関する命令コード情報(その命令のアドレ
スおよび命令コード)を命令コード保存手段102から
取得する(ステップ1110)。
【0140】なお、レジスタ情報取得手段104は、命
令検索置換え手段呼出し命令が実行された時のレジスタ
情報を収集(取得)する。レジスタ情報保持手段105
は、レジスタ情報取得手段104によって収集されたレ
ジスタ情報を保持する。
【0141】次に、命令検索置換え手段101は、ステ
ップ1110で命令コード情報を取得した命令が分岐命
令であるか自己書換え命令(擬制自己書換え命令を含
む)であるかを判定する(ステップ1111)。
【0142】ステップ1111で「当該命令が分岐命令
である」と判定した場合には、レジスタ情報保持手段1
05内のレジスタ情報を参照しながら、ステップ111
0で取得した分岐命令の命令コードの解析を行い、当該
分岐命令の実行後の分岐先アドレスを取得し(ステップ
1112)、ターゲットプログラム20中の命令検索置
換え手段呼出し命令を元の分岐命令に戻す(ステップ1
113)。
【0143】さらに、ステップ1112で取得した分岐
先アドレスを実行再開アドレスと認識し、その実行再開
アドレスから順にターゲットプログラム20中の各命令
を取得する(ステップ1102)。
【0144】一方、ステップ1111で「当該命令が自
己書換え命令(擬制自己書換え命令を含む)である」と
判定した場合には、ステップ1110で取得した命令コ
ードとレジスタ情報保持手段105内のレジスタ情報と
を基に、ステップ1110で命令コード情報を取得した
命令が真の自己書換え命令であるか否かを判定する(ス
テップ1114)。
【0145】ステップ1114で「当該命令が真の自己
書換え命令である」と判定した場合には、以下の〜
に示すような処理を行う。
【0146】 レジスタ情報保持手段105内のレジ
スタ情報を参照しながら、その自己書換え命令のシミュ
レーションを行い、ターゲットプログラム20の変更を
行う(ステップ1115)。
【0147】 その自己書換え命令の実行後の処理継
続アドレスを取得する(ステップ1116)。
【0148】 ターゲットプログラム20中の命令検
索置換え手段呼出し命令を元の自己書換え命令に戻す
(ステップ1117)。
【0149】また、ステップ1114で「当該命令が真
の自己書換え命令でない」と判定した場合には、上述の
処理のうちのおよびの処理(この場合には、上述の
および中の「自己書換え命令」を「擬制自己書換え
命令」と読み替える)を行う(ステップ1116および
1117)。
【0150】さらに、ステップ1116で取得した処理
継続アドレスを実行再開アドレスと認識し、その実行再
開アドレスから順にターゲットプログラム20中の各命
令を取得する(ステップ1102)。
【0151】なお、レジスタ情報復帰手段106は、タ
ーゲットプログラム20の実行を再開する際に、レジス
タ情報保持手段105内のレジスタ情報をレジスタに復
帰させる。
【0152】命令検索置換え手段101によって上記の
処理が行われることにより、ターゲットプログラム20
が自分自身を書き換えながら実行されるプログラム(自
己書換え型プログラム)であっても、検出対象命令の実
行を正しく検出することができるようになる。
【0153】なお、第2の実施例の特定命令実行検出方
式10も、第1の実施例の特定命令実行検出方式1と同
様に、デバッガ(図5参照),性能解析方式(図7参
照),およびCPUシミュレータ(図8参照)に適用で
きることはいうまでもない。
【0154】
【発明の効果】以上説明したように、本発明によれば、
以下のような効果を得ることができる。
【0155】従来技術の第1の方式では、CPUが「メ
モリの特定番地のアクセスを検出する機能」を備えてい
なければ検出対象命令の実行を検出できず、CPUが当
該機能を備えていても検出対象命令として設定できる命
令の数が少なかったり、検出対象命令とできる命令の種
類がメモリアクセスに関連する命令に限られるという問
題点があった。これに対して本発明の特定命令実行検出
方式では、ハードウェア的なメモリアクセス検出機能
(上述の「メモリの特定番地のアクセスを検出する機
能」)を持たないCPU上でもメモリアクセスの検出が
可能であり、検出対象命令として設定できる命令の数お
よび種類に制限がなくなるという効果がある。
【0156】従来技術の第2の方式では、ターゲットプ
ログラムに命令コードとデータとが混在している場合
に、データを命令コードと誤認することに起因して検出
対象命令の実行を正しく検出できないという問題点や、
ターゲットプログラムが誤動作を起こすという問題点が
あった。これに対して、本発明の特定命令実行検出方式
では、命令コードとデータとが混在しているターゲット
プログラムを対象とした場合にも、データを命令コード
と誤認することがないという効果がある。
【0157】従来技術の第3の方式では、ソフトウェア
によるCPUシミュレータで命令を解釈実行するために
要する時間が長くなり、検出対象命令を検出できるまで
の時間が長大になるという問題点があった。これに対し
て、本発明の特定命令実行検出方式では、ソフトウェア
によるCPUシミュレータを使用した時よりも短い時間
で検出対象命令の実行を検出することが可能になるとい
う効果がある。
【0158】また、命令検索置換え手段に自己書換え命
令に対処できる機能を設けることにより、ターゲットプ
ログラムが自己書き換え型プログラムであっても、上述
の効果を得ることができるようになる。
【図面の簡単な説明】
【図1】本発明の特定命令実行検出方式の第1の実施例
の構成等を示すブロック図である。
【図2】図1中の命令検索置換え手段の処理を示す流れ
図である。
【図3】図1中の検出対象命令実行時処理手段の処理を
示す流れ図である。
【図4】図1に示す特定命令実行検出方式の具体的な動
作を説明するための図である。
【図5】図1に示す特定命令実行検出方式が適用される
デバッガの構成等を示すブロック図である。
【図6】図5中のデバッグ手段の構成の一例を示すブロ
ック図である。
【図7】図1に示す特定命令実行検出方式が適用される
性能解析方式の構成等を示すブロック図である。
【図8】図1に示す特定命令実行検出方式が適用される
CPUシミュレータの構成等を示すブロック図である。
【図9】図8中の命令シミュレーション手段の構成の一
例を示すブロック図である。
【図10】本発明の特定命令実行検出方式の第2の実施
例の構成等を示すブロック図である。
【図11】図10中の命令検索置換え手段の処理を示す
流れ図である。
【符号の説明】
1,10 特定命令実行検出方式 2,20 ターゲットプログラム 3 デバッガ 4 性能解析方式 5 CPUシミュレータ 11,101 命令検索置換え手段 12,102 命令コード保存手段 13,103 検出対象命令実行時処理手段 14,104 レジスタ情報取得手段 15,105 レジスタ情報保持手段 16,106 レジスタ情報復帰手段 31 デバッグ手段 41 情報収集手段 42,52 検索対象指示手段 51 命令シミュレーション手段 311 検出対象命令指示手段 312 検出対象命令実行通知手段 313 ユーザインタフェース 511 命令解析手段 512 命令シミュレーション関数群

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 ターゲットプログラム中に含まれる検出
    対象命令が実行された際にその「検出対象命令の実行」
    をソフトウェアによって検出する特定命令実行検出方式
    において、 ターゲットプログラム中の検出対象命令実行時処理手段
    呼出し命令や命令検索置換え手段呼出し命令が実行され
    た時のレジスタ情報を取得するレジスタ情報取得手段
    と、 前記レジスタ情報取得手段によって取得されたレジスタ
    情報を保持するレジスタ情報保持手段と、 ターゲットプログラムの実行を再開する際に前記レジス
    タ情報保持手段内のレジスタ情報をレジスタに復帰させ
    るレジスタ情報復帰手段と、 ターゲットプログラムの実行開始前およびターゲットプ
    ログラム中の命令検索置換え手段呼出し命令の実行時に
    呼び出され、停止状態にあるターゲットプログラム中の
    実行再開アドレスから実行を行う場合に当該実行再開ア
    ドレスから次に最初に現れる分岐命令の存在するアドレ
    スまでの区間における検出対象命令の有無を当該実行の
    前に検索し、当該分岐命令を命令検索置換え手段呼出し
    命令に置き換え、その検索によって検出された検出対象
    命令を検出対象命令実行時処理手段呼出し命令に置き換
    える命令検索置換え手段と、 前記命令検索置換え手段によって置き換えられた分岐命
    令および検出対象命令の命令コードおよびアドレスを保
    存する命令コード保存手段と、 ターゲットプログラム中の検出対象命令実行時処理手段
    呼出し命令の実行時に呼び出され、前記レジスタ情報保
    持手段内のレジスタ情報を参照して検出対象命令実行時
    処理を行う検出対象命令実行時処理手段とを有すること
    を特徴とする特定命令実行検出方式。
  2. 【請求項2】自己書き換え型プログラムであるターゲッ
    トプログラム中に含まれる検出対象命令が実行された際
    にその「検出対象命令の実行」をソフトウェアによって
    検出する特定命令実行検出方式において、 ターゲットプログラム中の検出対象命令実行時処理手段
    呼出し命令や命令検索置換え手段呼出し命令が実行され
    た時のレジスタ情報を取得するレジスタ情報取得手段
    と、 前記レジスタ情報取得手段によって取得されたレジスタ
    情報を保持するレジスタ情報保持手段と、 ターゲットプログラムの実行を再開する際に前記レジス
    タ情報保持手段内のレジスタ情報をレジスタに復帰させ
    るレジスタ情報復帰手段と、 ターゲットプログラムの実行開始前およびターゲットプ
    ログラム中の命令検索置換え手段呼出し命令の実行時に
    呼び出され、停止状態にあるターゲットプログラム中の
    実行再開アドレスから実行を行う場合に当該実行再開ア
    ドレスから次に最初に現れる分岐命令または自己書換え
    命令の存在するアドレスまでの間における検出対象命令
    の有無を当該実行の前に検索し、当該分岐命令または自
    己書換え命令を命令検索置換え手段呼出し命令に置き換
    え、その検索によって検出された検出対象命令を検出対
    象命令実行時処理手段呼出し命令に置き換える命令検索
    置換え手段と、 前記命令検索置換え手段によって置き換えられた分岐命
    令,自己書換え命令および検出対象命令の命令コードお
    よびアドレスを保存する命令コード保存手段と、 ターゲットプログラム中の検出対象命令実行時処理手段
    呼出し命令の実行時に呼び出され、前記レジスタ情報保
    持手段内のレジスタ情報を参照して検出対象命令実行時
    処理を行う検出対象命令実行時処理手段とを有すること
    を特徴とする特定命令実行検出方式。
  3. 【請求項3】デバッガに適用され、 命令検索置換え手段が「検出対象命令を示す情報」をデ
    バッグ手段から受け取り、 検出対象命令実行時処理手段が「検出対象命令の実行」
    の旨をデバッグ手段に伝達する処理を含む検出対象命令
    実行時処理を行うことを特徴とする請求項1または請求
    項2記載の特定命令実行検出方式。
  4. 【請求項4】性能解析方式に適用され、 命令検索置換え手段が「検出対象命令を示す情報」を検
    索対象指示手段から受け取り、 検出対象命令実行時処理手段が「検出対象命令の実行」
    の旨と「関数呼出し命令によって呼び出された関数のア
    ドレス」とを情報収集手段に伝達する処理を含む検出対
    象命令実行時処理を行うことを特徴とする請求項1また
    は請求項2記載の特定命令実行検出方式。
  5. 【請求項5】CPUシミュレータに適用され、 命令検索置換え手段が「検出対象命令を示す情報」を検
    索対象指示手段から受け取り、 検出対象命令実行時処理手段が「検出対象命令の実行」
    の旨を命令シミュレーション手段に伝達する処理を含む
    検出対象命令実行時処理を行うことを特徴とする請求項
    1または請求項2記載の特定命令実行検出方式。
JP7150986A 1995-05-25 1995-05-25 特定命令実行検出方式 Expired - Lifetime JP2658982B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7150986A JP2658982B2 (ja) 1995-05-25 1995-05-25 特定命令実行検出方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7150986A JP2658982B2 (ja) 1995-05-25 1995-05-25 特定命令実行検出方式

Publications (2)

Publication Number Publication Date
JPH08320812A JPH08320812A (ja) 1996-12-03
JP2658982B2 true JP2658982B2 (ja) 1997-09-30

Family

ID=15508792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7150986A Expired - Lifetime JP2658982B2 (ja) 1995-05-25 1995-05-25 特定命令実行検出方式

Country Status (1)

Country Link
JP (1) JP2658982B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769964B2 (en) * 2006-08-21 2010-08-03 Intel Corporation Technique to perform memory reference filtering

Also Published As

Publication number Publication date
JPH08320812A (ja) 1996-12-03

Similar Documents

Publication Publication Date Title
US5630049A (en) Method and apparatus for testing software on a computer network
EP0537309B1 (en) System and method for preserving source instruction atomicity in translated program code
EP0753814B1 (en) Determining dynamic properties of programs
US6931631B2 (en) Low impact breakpoint for multi-user debugging
US11579856B2 (en) Multi-chip compatible compiling method and device
US20080244325A1 (en) Automated software support system with backwards program execution and debugging
US20040268317A1 (en) Method and apparatus for controlling execution of a child process generated by a modified parent process
CN110580226B (zh) 操作系统级程序的目标码覆盖率测试方法、系统及介质
JPH0734178B2 (ja) 変換コードを実行するための効果的エラー報告
JPH09198276A (ja) プログラムデバッグシステム
JP2007500401A (ja) ソフトウェアデバッギング用装置とその方法
CA2307349A1 (en) Ranked break points and method for debugging a computer program
JP2001519953A (ja) マイクロプロセッサの改良
US20080127118A1 (en) Method and system for dynamic patching of software
US20080307397A1 (en) Program Analysis by Partial Emulation
JPH03188535A (ja) プログラム・エラー検出方法
US7062753B1 (en) Method and apparatus for automated software unit testing
US11113182B2 (en) Reversible debugging in a runtime environment
EP2168045A1 (en) Exception-based error handling in an array-based language
JP2658982B2 (ja) 特定命令実行検出方式
KR100428712B1 (ko) 멀티 태스크 프로그램의 논스톱 디버깅을 위한트레이스포인트 설정 방법
Al-Sharif et al. Debugging with dynamic temporal assertions
CN113515729B (zh) 一种安卓端自动化绕过反调试的方法和系统
JP2000076095A (ja) プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体
RU2390821C1 (ru) Способ динамической инструментации