JPH05233317A - ソフトウェア・シミュレータ - Google Patents
ソフトウェア・シミュレータInfo
- Publication number
- JPH05233317A JPH05233317A JP4036713A JP3671392A JPH05233317A JP H05233317 A JPH05233317 A JP H05233317A JP 4036713 A JP4036713 A JP 4036713A JP 3671392 A JP3671392 A JP 3671392A JP H05233317 A JPH05233317 A JP H05233317A
- Authority
- JP
- Japan
- Prior art keywords
- area
- command
- function name
- access
- unit
- 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
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【目的】 シミュレート対象マイクロプロセッサの命令
実行後に、あらかじめ指定した領域に対して書き込みを
行った関数名を記憶し、表示することを可能とする。 【構成】 従来のソフトウェアシミュレータに対して、
アクセスしたかどうか知りたい領域を設定するコマンド
とシミュレート後に設定した領域にアクセスした関数名
を表示するコマンドを領域アクセス処理部(103)に
設ける。さらに1命令実行後に領域アクセス処理部で設
定した領域がアクセスされたかどうか判定し、アクセス
をした場合にアクセスした命令が属する関数名を記憶す
る領域アクセスチェック処理部(106)を設ける。こ
れによりある領域をアクセスした関数の履歴がわかるた
め、デバッグが容易となる。
実行後に、あらかじめ指定した領域に対して書き込みを
行った関数名を記憶し、表示することを可能とする。 【構成】 従来のソフトウェアシミュレータに対して、
アクセスしたかどうか知りたい領域を設定するコマンド
とシミュレート後に設定した領域にアクセスした関数名
を表示するコマンドを領域アクセス処理部(103)に
設ける。さらに1命令実行後に領域アクセス処理部で設
定した領域がアクセスされたかどうか判定し、アクセス
をした場合にアクセスした命令が属する関数名を記憶す
る領域アクセスチェック処理部(106)を設ける。こ
れによりある領域をアクセスした関数の履歴がわかるた
め、デバッグが容易となる。
Description
【0001】
【産業上の利用分野】本発明はソフトウェア・シミュレ
ータに関し、特にシミュレート対象マイクロプロセッサ
の命令実行後に、あらかじめ指定した領域に対して書き
込みを行った関数名を記憶し、表示することを可能とす
るソフトウェア・シミュレータに関する。
ータに関し、特にシミュレート対象マイクロプロセッサ
の命令実行後に、あらかじめ指定した領域に対して書き
込みを行った関数名を記憶し、表示することを可能とす
るソフトウェア・シミュレータに関する。
【0002】
【従来の技術】従来のマイクロプロセッサ用ソフトウェ
ア・シミュレータにおいて、入力装置からコマンド単位
で動作指示を行う場合の処理フローの概要を図4に示
す。
ア・シミュレータにおいて、入力装置からコマンド単位
で動作指示を行う場合の処理フローの概要を図4に示
す。
【0003】コマンド入力部100で入力装置からコマ
ンドを入力し、コマンド解析部101で解析し、各コマ
ンド処理部102へ分岐する。命令実行コマンド判定部
104で命令実行系のコマンドかどうかの判断を行い、
命令実行系のコマンドの場合、1命令実行処理部105
で命令実行し、命令実行終了判定部107で実行後ブレ
ーク条件の成立、命令実行時の異常、あるいは外部から
の強制停止指示等の発生があるか判断し、その結果に応
じて次の命令を続行あるいはコマンド入力部100へ分
岐し、以降繰り返し処理を続行する。
ンドを入力し、コマンド解析部101で解析し、各コマ
ンド処理部102へ分岐する。命令実行コマンド判定部
104で命令実行系のコマンドかどうかの判断を行い、
命令実行系のコマンドの場合、1命令実行処理部105
で命令実行し、命令実行終了判定部107で実行後ブレ
ーク条件の成立、命令実行時の異常、あるいは外部から
の強制停止指示等の発生があるか判断し、その結果に応
じて次の命令を続行あるいはコマンド入力部100へ分
岐し、以降繰り返し処理を続行する。
【0004】次に、図6のソース・プログラム・ファイ
ル500を上記で説明したソフトウェア・シミュレータ
を使用してある領域がどの関数で書き込まれたかを把握
する方法を説明する。
ル500を上記で説明したソフトウェア・シミュレータ
を使用してある領域がどの関数で書き込まれたかを把握
する方法を説明する。
【0005】書き込みが行われたかどうか知りたい領域
“flag”と“buff”に対して書き込みが行われ
たらブレークするように設定し、命令の実行を行う。ま
ず、init関数で領域“buff”に“0”を代入し
ているのでブレーク条件が成立しブレークする。この
時、画面に表示された関数名を記録する。再び命令の実
行を行う。以降繰り返し行う。これにより6回ブレーク
条件が成り立つので、6回画面に表示された関数名を記
録しなければならない。
“flag”と“buff”に対して書き込みが行われ
たらブレークするように設定し、命令の実行を行う。ま
ず、init関数で領域“buff”に“0”を代入し
ているのでブレーク条件が成立しブレークする。この
時、画面に表示された関数名を記録する。再び命令の実
行を行う。以降繰り返し行う。これにより6回ブレーク
条件が成り立つので、6回画面に表示された関数名を記
録しなければならない。
【0006】
【発明が解決しようとする課題】しかしながら、上述し
た従来のソフトウェア・シミュレータでは、シミュレー
ション後にある領域がどの関数で書き込みをしたかどう
か分からないという欠点があった。また、これを避ける
ために、上述した従来の技術では書き込みが行われたか
どうか知りたい領域2箇所にブレークポイントを設定
し、命令の実行を行う。その結果、6回ブレーク条件が
成り立つので、6回画面に表示された関数名を記録しな
ければならなかった。
た従来のソフトウェア・シミュレータでは、シミュレー
ション後にある領域がどの関数で書き込みをしたかどう
か分からないという欠点があった。また、これを避ける
ために、上述した従来の技術では書き込みが行われたか
どうか知りたい領域2箇所にブレークポイントを設定
し、命令の実行を行う。その結果、6回ブレーク条件が
成り立つので、6回画面に表示された関数名を記録しな
ければならなかった。
【0007】そこで、本発明の技術的課題は、上記欠点
に鑑み、関数名の表示を迅速に表示するソフトウェア・
シミュレータを提供することである。
に鑑み、関数名の表示を迅速に表示するソフトウェア・
シミュレータを提供することである。
【0008】
【課題を解決するための手段】本発明によれば、指定し
た領域を記憶する手段と、実行した命令が前記領域に対
して書き込みをしたかどうか判断する手段と、判断した
結果前記命令が前記領域に書き込みをした場合に前記命
令がどこの関数であるか判断する手段と、判断した結果
得た関数の名称を記憶する手段と、前記関数の名称を画
面に表示する手段とを有することを特徴とするソフトウ
ェア・シミュレータが得られる。
た領域を記憶する手段と、実行した命令が前記領域に対
して書き込みをしたかどうか判断する手段と、判断した
結果前記命令が前記領域に書き込みをした場合に前記命
令がどこの関数であるか判断する手段と、判断した結果
得た関数の名称を記憶する手段と、前記関数の名称を画
面に表示する手段とを有することを特徴とするソフトウ
ェア・シミュレータが得られる。
【0009】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。
て説明する。
【0010】図1は、本発明のアセンブラ処理方式の一
実施例の流れ図である。図2は、本発明の領域アクセス
コマンド処理方式の一実施例の流れ図である。図3は、
領域アクセスチェック処理方式の一実施例の流れ図であ
る。図5は、本発明で作成される領域アクセス用テーブ
ルと関数名格納テーブルの一実施例である。図6は、ソ
ース・プログラム・ファイルの一例である。図7は、シ
ミュレータのコマンド入力の一例である。
実施例の流れ図である。図2は、本発明の領域アクセス
コマンド処理方式の一実施例の流れ図である。図3は、
領域アクセスチェック処理方式の一実施例の流れ図であ
る。図5は、本発明で作成される領域アクセス用テーブ
ルと関数名格納テーブルの一実施例である。図6は、ソ
ース・プログラム・ファイルの一例である。図7は、シ
ミュレータのコマンド入力の一例である。
【0011】図1のコマンド入力部100でコマンドを
入力し、入力されたコマンドをコマンド解析部101で
解析する。解析した結果、領域アクセスコマンドであれ
ば領域アクセス処理部103で領域アクセスコマンドの
処理を行う。
入力し、入力されたコマンドをコマンド解析部101で
解析する。解析した結果、領域アクセスコマンドであれ
ば領域アクセス処理部103で領域アクセスコマンドの
処理を行う。
【0012】図2の領域アクセスコマンド判定部200
でsetaccコマンドかどうかの判定を行い、set
accコマンドの場合は、領域アクセス用テーブル生成
部201で、図5の領域アクセス用テーブル401を作
成し、領域アクセス用テーブルの先頭を指すポインタ4
00が領域アクセス用テーブル401を指すように設定
する。
でsetaccコマンドかどうかの判定を行い、set
accコマンドの場合は、領域アクセス用テーブル生成
部201で、図5の領域アクセス用テーブル401を作
成し、領域アクセス用テーブルの先頭を指すポインタ4
00が領域アクセス用テーブル401を指すように設定
する。
【0013】図2の開始/終了アドレス取得部202に
よりsetaccコマンドで指定した領域名を、シンボ
ルテーブルから検索して、領域の開始アドレスと終了ア
ドレスとを得る。領域名格納部203で領域アクセス生
成部201により作成した図5の領域アクセス用テーブ
ル401の領域名格納エリア410に、setaccコ
マンドで指定した領域名を格納する。
よりsetaccコマンドで指定した領域名を、シンボ
ルテーブルから検索して、領域の開始アドレスと終了ア
ドレスとを得る。領域名格納部203で領域アクセス生
成部201により作成した図5の領域アクセス用テーブ
ル401の領域名格納エリア410に、setaccコ
マンドで指定した領域名を格納する。
【0014】図2の開始アドレス格納部204で領域ア
クセス生成部201により作成した図5の領域アクセス
用テーブル401の開始アドレス格納エリア411に、
開始/終了アドレス取得部202で取得した開始アドレ
スを格納する。図2の終了アドレス格納部205で領域
アクセス生成部201により作成した図5の領域アクセ
ス用テーブル401の終了アドレス格納エリア412
に、図2の開始/終了アドレス取得部202で取得した
終了アドレスを格納する。
クセス生成部201により作成した図5の領域アクセス
用テーブル401の開始アドレス格納エリア411に、
開始/終了アドレス取得部202で取得した開始アドレ
スを格納する。図2の終了アドレス格納部205で領域
アクセス生成部201により作成した図5の領域アクセ
ス用テーブル401の終了アドレス格納エリア412
に、図2の開始/終了アドレス取得部202で取得した
終了アドレスを格納する。
【0015】また、図2の領域アクセスコマンド判定部
200でsetaccコマンドでない場合、すなわち、
getaccコマンドの場合は、領域名検索部206で
getaccコマンドで指定した領域名の図5の領域ア
クセス用テーブル401があるか検索する。
200でsetaccコマンドでない場合、すなわち、
getaccコマンドの場合は、領域名検索部206で
getaccコマンドで指定した領域名の図5の領域ア
クセス用テーブル401があるか検索する。
【0016】次に図2の関数名表示部207で領域名検
索部206により検索した図5の領域アクセス用テーブ
ル401の関数格納エリアを指すポインタ413が指す
関数名格納テーブル403の関数名格納エリア450の
内容を表示し、次の関数名格納テーブルを指すポインタ
460が指す関数名格納エリア451の内容を表示す
る。以降次の関数名格納テーブルを指すポインタ461
の内容がnullになるまで処理を続ける。
索部206により検索した図5の領域アクセス用テーブ
ル401の関数格納エリアを指すポインタ413が指す
関数名格納テーブル403の関数名格納エリア450の
内容を表示し、次の関数名格納テーブルを指すポインタ
460が指す関数名格納エリア451の内容を表示す
る。以降次の関数名格納テーブルを指すポインタ461
の内容がnullになるまで処理を続ける。
【0017】次に図1の命令実行コマンド判定部104
で命令の実行コマンドかどうかの判定を行い、命令の実
行コマンドでない場合はコマンド入力部100へ進む。
命令の実行コマンドの場合は1命令実行処理部105で
1命令実行する。さらに、領域アクセスチェック処理部
106でsetaccコマンドで指定した領域に書き込
みが行われたかの判定を行う。
で命令の実行コマンドかどうかの判定を行い、命令の実
行コマンドでない場合はコマンド入力部100へ進む。
命令の実行コマンドの場合は1命令実行処理部105で
1命令実行する。さらに、領域アクセスチェック処理部
106でsetaccコマンドで指定した領域に書き込
みが行われたかの判定を行う。
【0018】まず、図3のメモリアクセス判定部300
でメモリアクセスする命令かどうかの判定を行う。メモ
リアクセスをしない命令の場合は、図1の領域アクセス
チェック処理部106の処理を終了する。メモリアクセ
スした命令の場合は、図3の領域アクセス用テーブル存
在確認部301で図5の領域アクセス用テーブル401
は存在するかどうか判定する。存在する場合は、図3の
領域存在確認部302でアクセスした領域のアドレスが
図5の領域アクセス用テーブルの先頭を指すポインタ4
00が指す領域アクセス用テーブル401の領域名格納
エリア410に格納されている開始アドレス格納エリア
411に格納されているアドレスから、終了アドレス格
納エリア412に格納されているアドレスの間であるか
判定する。
でメモリアクセスする命令かどうかの判定を行う。メモ
リアクセスをしない命令の場合は、図1の領域アクセス
チェック処理部106の処理を終了する。メモリアクセ
スした命令の場合は、図3の領域アクセス用テーブル存
在確認部301で図5の領域アクセス用テーブル401
は存在するかどうか判定する。存在する場合は、図3の
領域存在確認部302でアクセスした領域のアドレスが
図5の領域アクセス用テーブルの先頭を指すポインタ4
00が指す領域アクセス用テーブル401の領域名格納
エリア410に格納されている開始アドレス格納エリア
411に格納されているアドレスから、終了アドレス格
納エリア412に格納されているアドレスの間であるか
判定する。
【0019】判定の結果領域名が同じである場合は、図
3の関数名取得部303で現実行命令の格納アドレスの
値を基にシンボルテーブルを検索して関数名を得る。参
照関数名格納部304で関数名取得部303で得た関数
名を、図5の領域アクセス用テーブル401の関数格納
エリアを指すポインタ413が指す関数格納エリア45
0に追加する。
3の関数名取得部303で現実行命令の格納アドレスの
値を基にシンボルテーブルを検索して関数名を得る。参
照関数名格納部304で関数名取得部303で得た関数
名を、図5の領域アクセス用テーブル401の関数格納
エリアを指すポインタ413が指す関数格納エリア45
0に追加する。
【0020】さらに、図3のポインタ・インクリメント
処理部305で次の図5の領域アクセス用テーブル40
2を指すようにする。図3の領域存在確認部302の判
定の結果領域名が同じでない場合は、ポインタ・インク
リメント処理部305の処理を行い、領域アクセス用テ
ーブル存在確認部301へ進む。図5の領域アクセス用
テーブル401がなくなるまで行う。
処理部305で次の図5の領域アクセス用テーブル40
2を指すようにする。図3の領域存在確認部302の判
定の結果領域名が同じでない場合は、ポインタ・インク
リメント処理部305の処理を行い、領域アクセス用テ
ーブル存在確認部301へ進む。図5の領域アクセス用
テーブル401がなくなるまで行う。
【0021】次に、図1の命令実行終了判定部107で
命令の実行が終了かどうかの判断を行う。
命令の実行が終了かどうかの判断を行う。
【0022】命令の実行を続ける場合は1命令実行処理
部105へ進み、命令の実行が終了の場合はコマンド入
力部100へ進む。
部105へ進み、命令の実行が終了の場合はコマンド入
力部100へ進む。
【0023】次に、図6のソース・プログラム・ファイ
ル500をシミュレートの対象とし、図7のシミュレー
タ・コマンド600を入力した場合について説明する。
setaccコマンド601、602は書き込みを行っ
たかどうか知りたい領域を設定するコマンド、step
コマンド603は、オペランドで指定された数分ste
p実行を行うコマンド、getaccコマンド604、
606はsetaccコマンド601、602で設定し
た領域を指定することによりその領域に対して書き込み
を行った関数名を表示するコマンドである。
ル500をシミュレートの対象とし、図7のシミュレー
タ・コマンド600を入力した場合について説明する。
setaccコマンド601、602は書き込みを行っ
たかどうか知りたい領域を設定するコマンド、step
コマンド603は、オペランドで指定された数分ste
p実行を行うコマンド、getaccコマンド604、
606はsetaccコマンド601、602で設定し
た領域を指定することによりその領域に対して書き込み
を行った関数名を表示するコマンドである。
【0024】図1のコマンド入力部100で図7のse
taccコマンド601を入力し、入力したコマンドを
図1のコマンド解析部101で解析する。解析した結
果、領域アクセスコマンドなので領域アクセス処理部1
03で領域アクセスコマンドの処理を行う。図2の領域
アクセスコマンド判定部200でsetaccコマンド
かどうかの判定を行い、setaccコマンドが入力さ
れたので、領域アクセス用テーブル生成部201で図5
の領域アクセス用テーブル401を作成し、領域アクセ
ス用テーブルの先頭を指すポインタ400が領域アクセ
ス用テーブル401を指すように設定する。
taccコマンド601を入力し、入力したコマンドを
図1のコマンド解析部101で解析する。解析した結
果、領域アクセスコマンドなので領域アクセス処理部1
03で領域アクセスコマンドの処理を行う。図2の領域
アクセスコマンド判定部200でsetaccコマンド
かどうかの判定を行い、setaccコマンドが入力さ
れたので、領域アクセス用テーブル生成部201で図5
の領域アクセス用テーブル401を作成し、領域アクセ
ス用テーブルの先頭を指すポインタ400が領域アクセ
ス用テーブル401を指すように設定する。
【0025】図2の開始/終了アドレス取得部202に
よりsetaccコマンドで指定した領域名flagを
シンボルテーブルから検索して、領域の開始アドレスと
終了アドレスを得る。領域名格納部203で領域アクセ
ス生成部201により作成した図5の領域アクセス用テ
ーブル401の領域名格納エリア410に、setac
cコマンドで指定した領域名flagを格納する。
よりsetaccコマンドで指定した領域名flagを
シンボルテーブルから検索して、領域の開始アドレスと
終了アドレスを得る。領域名格納部203で領域アクセ
ス生成部201により作成した図5の領域アクセス用テ
ーブル401の領域名格納エリア410に、setac
cコマンドで指定した領域名flagを格納する。
【0026】図2の開始アドレス格納部204で領域ア
クセス生成部201により作成した図5の領域アクセス
用テーブル401の開始アドレス格納エリア411に、
図2の開始/終了アドレス取得部202で取得したfl
ag領域の開始アドレスを格納する。終了アドレス格納
部205で領域アクセス生成部201により作成した図
5の領域アクセス用テーブル401の終了アドレス格納
エリア412に、図2の開始/終了アドレス取得部20
2で取得したflag終了アドレスを格納する。
クセス生成部201により作成した図5の領域アクセス
用テーブル401の開始アドレス格納エリア411に、
図2の開始/終了アドレス取得部202で取得したfl
ag領域の開始アドレスを格納する。終了アドレス格納
部205で領域アクセス生成部201により作成した図
5の領域アクセス用テーブル401の終了アドレス格納
エリア412に、図2の開始/終了アドレス取得部20
2で取得したflag終了アドレスを格納する。
【0027】次に図1の命令実行コマンド判定部104
で命令の実行コマンドかどうかの判定を行い、命令の実
行コマンドでないのでコマンド入力部100へ進む。コ
マンド入力部100で図7のsetaccコマンド60
2を入力し、入力したコマンドを図1のコマンド解析部
101で解析する。解析した結果、領域アクセスコマン
ドなので、領域アクセス処理部103で領域アクセスコ
マンドの処理を行う。
で命令の実行コマンドかどうかの判定を行い、命令の実
行コマンドでないのでコマンド入力部100へ進む。コ
マンド入力部100で図7のsetaccコマンド60
2を入力し、入力したコマンドを図1のコマンド解析部
101で解析する。解析した結果、領域アクセスコマン
ドなので、領域アクセス処理部103で領域アクセスコ
マンドの処理を行う。
【0028】図2の領域アクセスコマンド判定部200
でsetaccコマンドかどうかの判定を行い、set
accコマンドが入力されたので、領域アクセス用テー
ブル生成部201で図5の領域アクセス用テーブル40
2を作成し、領域アクセス用テーブル401の次の領域
アクセス用テーブルを指すポインタ414が領域アクセ
ス用テーブル402を指すように設定する。
でsetaccコマンドかどうかの判定を行い、set
accコマンドが入力されたので、領域アクセス用テー
ブル生成部201で図5の領域アクセス用テーブル40
2を作成し、領域アクセス用テーブル401の次の領域
アクセス用テーブルを指すポインタ414が領域アクセ
ス用テーブル402を指すように設定する。
【0029】図2の開始/終了アドレス取得部202に
よりsetaccコマンドで指定した領域名buffを
シンボルテーブルから検索して、領域の開始アドレスと
終了アドレスを得る。領域名格納部203で領域アクセ
ス生成部201により作成した図5の領域アクセス用テ
ーブル402の領域名格納エリア420に、setac
cコマンドで指定した領域名buffを格納する。図2
の開始アドレス格納部204で領域アクセス生成部20
1により作成した図5の領域アクセス用テーブル402
の開始アドレス格納エリア421に、図2の開始/終了
アドレス取得部202で取得したbuff領域の開始ア
ドレスを格納する。
よりsetaccコマンドで指定した領域名buffを
シンボルテーブルから検索して、領域の開始アドレスと
終了アドレスを得る。領域名格納部203で領域アクセ
ス生成部201により作成した図5の領域アクセス用テ
ーブル402の領域名格納エリア420に、setac
cコマンドで指定した領域名buffを格納する。図2
の開始アドレス格納部204で領域アクセス生成部20
1により作成した図5の領域アクセス用テーブル402
の開始アドレス格納エリア421に、図2の開始/終了
アドレス取得部202で取得したbuff領域の開始ア
ドレスを格納する。
【0030】終了アドレス格納部205で領域アクセス
生成部201により作成した図5の領域アクセス用テー
ブル402の終了アドレス格納エリア422に図2の開
始/終了アドレス取得部202で取得したbuff領域
の終了アドレスを格納する。
生成部201により作成した図5の領域アクセス用テー
ブル402の終了アドレス格納エリア422に図2の開
始/終了アドレス取得部202で取得したbuff領域
の終了アドレスを格納する。
【0031】次に図1の命令実行コマンド判定部104
で命令の実行コマンドかどうかの判定を行い、命令の実
行コマンドでないのでコマンド入力部100へ進む。コ
マンド入力部100で図7のstepコマンド603を
入力し、入力したコマンドを図1のコマンド解析部10
1で解析する。
で命令の実行コマンドかどうかの判定を行い、命令の実
行コマンドでないのでコマンド入力部100へ進む。コ
マンド入力部100で図7のstepコマンド603を
入力し、入力したコマンドを図1のコマンド解析部10
1で解析する。
【0032】各コマンド処理部102でステップ実行前
処理を行い、次に命令実行コマンド判定部104で命令
の実行コマンドかどうかの判定を行い命令の実行コマン
ドなので、1命令実行処理部105へ進み1命令実行す
る。さらに、領域アクセスチェック処理部106でse
taccコマンドで指定した領域がアクセスされたかの
判定を行う。
処理を行い、次に命令実行コマンド判定部104で命令
の実行コマンドかどうかの判定を行い命令の実行コマン
ドなので、1命令実行処理部105へ進み1命令実行す
る。さらに、領域アクセスチェック処理部106でse
taccコマンドで指定した領域がアクセスされたかの
判定を行う。
【0033】まず、図3のメモリアクセス判定部300
でメモリアクセスする命令かどうかの判定を行う。メモ
リアクセスをしない命令の場合は図1の領域アクセスチ
ェック処理部106の処理を終了する。メモリアクセス
した命令の場合は、図3の領域アクセス用テーブル存在
確認部301で図5の領域アクセス用テーブル401は
存在するかどうか判定する。
でメモリアクセスする命令かどうかの判定を行う。メモ
リアクセスをしない命令の場合は図1の領域アクセスチ
ェック処理部106の処理を終了する。メモリアクセス
した命令の場合は、図3の領域アクセス用テーブル存在
確認部301で図5の領域アクセス用テーブル401は
存在するかどうか判定する。
【0034】存在する場合は、図3の領域存在確認部3
02でアクセスした領域のアドレスが図5の領域アクセ
ス用テーブルの先頭を指すポインタ400が指す領域ア
クセス用テーブル401の領域名格納エリア410に格
納されている開始アドレス格納エリア411に格納され
ているアドレスから、終了アドレス格納エリア412に
格納されているアドレスの間であるか判定する。
02でアクセスした領域のアドレスが図5の領域アクセ
ス用テーブルの先頭を指すポインタ400が指す領域ア
クセス用テーブル401の領域名格納エリア410に格
納されている開始アドレス格納エリア411に格納され
ているアドレスから、終了アドレス格納エリア412に
格納されているアドレスの間であるか判定する。
【0035】判定の結果領域名が同じである場合は、図
3の関数名取得部303で現実行命令の格納アドレスの
値を基にシンボルテーブルを検索して関数名を得る。参
照関数名格納部304で関数名取得部303で得た関数
名を図5の領域アクセス用テーブル401の関数格納エ
リアを指すポインタ413が指す関数格納エリア450
に追加する。
3の関数名取得部303で現実行命令の格納アドレスの
値を基にシンボルテーブルを検索して関数名を得る。参
照関数名格納部304で関数名取得部303で得た関数
名を図5の領域アクセス用テーブル401の関数格納エ
リアを指すポインタ413が指す関数格納エリア450
に追加する。
【0036】さらに、図3のポインタ・インクリメント
処理部305で次の図5の領域アクセス用テーブル40
2を指すようにする。図3の領域存在確認部302の判
定の結果領域名が同じでない場合は、ポインタ・インク
リメント処理部305の処理を行い、領域アクセス用テ
ーブル存在確認部301へ進む。図5の領域アクセス用
テーブル401、402がなくなるまで行う。
処理部305で次の図5の領域アクセス用テーブル40
2を指すようにする。図3の領域存在確認部302の判
定の結果領域名が同じでない場合は、ポインタ・インク
リメント処理部305の処理を行い、領域アクセス用テ
ーブル存在確認部301へ進む。図5の領域アクセス用
テーブル401、402がなくなるまで行う。
【0037】次に、命令実行終了判定部107で命令の
実行が終了かどうかの判断を行う。この場合、図7のs
tepコマンド603で実行ステップ数として“100
0”を指定しているので、図1の1命令実行処理部10
5、領域アクセスチェック処理部106、命令実行終了
判断部107を1000回繰り返し実行する。そして実
行後の図5の領域アクセス用テーブルの先頭を指すポイ
ンタ400は、領域アクセス用テーブル401を指し、
領域アクセス用テーブル401の領域名格納エリア41
0には領域名として“flag”が格納され、開始アド
レス格納エリア411にはflag領域の開始アドレス
が格納され、終了アドレス格納エリア412にはfla
g領域の終了アドレスが格納され、関数格納エリアを指
すポインタ413は関数名格納テーブル403の関数名
格納エリア450を指す。関数名格納エリア450には
関数名として“init”が格納され、次の関数名格納
エリアを指すポインタ460は関数名格納エリア451
を指し、関数名格納エリア451には関数名として“g
en2”が格納され、次の関数名格納エリアを指すポイ
ンタ461は、次の関数名格納エリアが存在しないた
め、存在しないことを表す値としてnullが格納され
ている。次の領域アクセス用テーブルを指すポインタ4
14は領域名格納エリア420を指し、領域名格納エリ
ア420には領域名として“buff”が格納され、開
始アドレス格納エリア421にはbuff領域の開始ア
ドレスが格納され、終了アドレス格納エリア422には
buff領域の終了アドレスが格納され、関数格納エリ
アを指すポインタ423は関数名格納エリア470を指
す。関数名格納エリア470には関数名として“ini
t”が格納され、次の関数名格納エリアを指すポインタ
480は関数名格納エリア471を指す。関数名格納エ
リア471には関数名として“gen1”が格納され、
次の関数名格納エリアを指すポインタ481は関数名格
納エリア472を指す。関数名格納エリア472には関
数名として“gen2”が格納され、次の関数名格納エ
リアを指すポインタ482は関数名格納エリア473を
指す。関数名格納エリア473には関数名して“gen
3”が格納され、次の関数名格納エリアを指すポインタ
483は次の関数名格納エリアが存在しないため、存在
しないことを表す値としてnullが格納されている。
次の領域アクセス用テーブルを指すポインタ424は次
の領域アクセス用テーブルが存在しないため、存在しな
いことを表す値としてnullが格納されている。
実行が終了かどうかの判断を行う。この場合、図7のs
tepコマンド603で実行ステップ数として“100
0”を指定しているので、図1の1命令実行処理部10
5、領域アクセスチェック処理部106、命令実行終了
判断部107を1000回繰り返し実行する。そして実
行後の図5の領域アクセス用テーブルの先頭を指すポイ
ンタ400は、領域アクセス用テーブル401を指し、
領域アクセス用テーブル401の領域名格納エリア41
0には領域名として“flag”が格納され、開始アド
レス格納エリア411にはflag領域の開始アドレス
が格納され、終了アドレス格納エリア412にはfla
g領域の終了アドレスが格納され、関数格納エリアを指
すポインタ413は関数名格納テーブル403の関数名
格納エリア450を指す。関数名格納エリア450には
関数名として“init”が格納され、次の関数名格納
エリアを指すポインタ460は関数名格納エリア451
を指し、関数名格納エリア451には関数名として“g
en2”が格納され、次の関数名格納エリアを指すポイ
ンタ461は、次の関数名格納エリアが存在しないた
め、存在しないことを表す値としてnullが格納され
ている。次の領域アクセス用テーブルを指すポインタ4
14は領域名格納エリア420を指し、領域名格納エリ
ア420には領域名として“buff”が格納され、開
始アドレス格納エリア421にはbuff領域の開始ア
ドレスが格納され、終了アドレス格納エリア422には
buff領域の終了アドレスが格納され、関数格納エリ
アを指すポインタ423は関数名格納エリア470を指
す。関数名格納エリア470には関数名として“ini
t”が格納され、次の関数名格納エリアを指すポインタ
480は関数名格納エリア471を指す。関数名格納エ
リア471には関数名として“gen1”が格納され、
次の関数名格納エリアを指すポインタ481は関数名格
納エリア472を指す。関数名格納エリア472には関
数名として“gen2”が格納され、次の関数名格納エ
リアを指すポインタ482は関数名格納エリア473を
指す。関数名格納エリア473には関数名して“gen
3”が格納され、次の関数名格納エリアを指すポインタ
483は次の関数名格納エリアが存在しないため、存在
しないことを表す値としてnullが格納されている。
次の領域アクセス用テーブルを指すポインタ424は次
の領域アクセス用テーブルが存在しないため、存在しな
いことを表す値としてnullが格納されている。
【0038】次に、図7のgetaccコマンド604
を入力し、入力したコマンドを図1のコマンド解析部1
01で解析する。解析した結果、領域アクセスコマンド
なので、領域アクセス処理部103で領域アクセスコマ
ンドの処理を行う。図2の領域アクセスコマンド判定部
200でsetaccコマンドかどうかの判定を行い、
getaccコマンドが入力されたので、領域名検索部
206へ進む。領域名検索部206では、図5の領域ア
クセス用テーブルの先頭を指すポインタ400が指す領
域アクセス用テーブル群から、図7のgetaccコマ
ンド604で指定された領域名flagを検索する。領
域名flagは図5の領域アクセス用テーブル401の
領域名格納エリア410に存在するので、図3の関数名
表示部207で領域名flagを画面に表示し、図5の
領域アクセス用テーブル401の関数格納エリアを指す
ポインタ413が指す関数名格納エリア450の内容を
画面に表示し、さらに、次の関数名格納エリアを指すポ
インタ460が指す関数名格納エリア451の内容を画
面に表示する。
を入力し、入力したコマンドを図1のコマンド解析部1
01で解析する。解析した結果、領域アクセスコマンド
なので、領域アクセス処理部103で領域アクセスコマ
ンドの処理を行う。図2の領域アクセスコマンド判定部
200でsetaccコマンドかどうかの判定を行い、
getaccコマンドが入力されたので、領域名検索部
206へ進む。領域名検索部206では、図5の領域ア
クセス用テーブルの先頭を指すポインタ400が指す領
域アクセス用テーブル群から、図7のgetaccコマ
ンド604で指定された領域名flagを検索する。領
域名flagは図5の領域アクセス用テーブル401の
領域名格納エリア410に存在するので、図3の関数名
表示部207で領域名flagを画面に表示し、図5の
領域アクセス用テーブル401の関数格納エリアを指す
ポインタ413が指す関数名格納エリア450の内容を
画面に表示し、さらに、次の関数名格納エリアを指すポ
インタ460が指す関数名格納エリア451の内容を画
面に表示する。
【0039】次の関数名格納エリアを指すポインタ46
1がnullなので図2の関数名表示部207の処理を
終了し、表示は図7のgetaccコマンド実行結果6
05となり、図1のコマンド入力部100へ進む。次
に、図7のgetaccコマンド606を入力し、入力
したコマンドを図1のコマンド解析部101で解析す
る。解析した結果、領域アクセスコマンドなので領域ア
クセス処理部103で領域アクセスコマンドの処理を行
う。図2の領域アクセスコマンド判定部200でset
accコマンドかどうかの判定を行い、getaccコ
マンドが入力されたので、領域名検索部206へ進む。
領域名検索部206では、図5の領域アクセス用テーブ
ルの先頭を指すポインタ400が指す領域アクセス用テ
ーブル群から図7のgetaccコマンド604で指定
された領域名buffを検索する。領域名buffは図
5の領域アクセス用テーブル402の領域名格納エリア
420に存在する。図2の関数名表示部207で領域名
buffを画面に表示し、図5の領域アクセス用テーブ
ル402の関数格納エリアを指すポインタ423が指す
関数名格納エリア470の内容を画面に表示し、さら
に、次の関数名格納エリアを指すポインタ480が指す
関数名格納エリア471の内容を画面に表示し、次の関
数名格納エリアを指すポインタ481が指す関数名格納
エリア472の内容を画面に表示し、次の関数名格納エ
リアを指すポインタ482が指す関数名格納エリア47
3の内容を画面に表示する。次の関数名格納エリアを指
すポインタ483がnullなので図2の関数名表示部
207の処理を終了し、表示は図7のgetaccコマ
ンド実行結果607となり、図1コマンド入力部100
へ進む。
1がnullなので図2の関数名表示部207の処理を
終了し、表示は図7のgetaccコマンド実行結果6
05となり、図1のコマンド入力部100へ進む。次
に、図7のgetaccコマンド606を入力し、入力
したコマンドを図1のコマンド解析部101で解析す
る。解析した結果、領域アクセスコマンドなので領域ア
クセス処理部103で領域アクセスコマンドの処理を行
う。図2の領域アクセスコマンド判定部200でset
accコマンドかどうかの判定を行い、getaccコ
マンドが入力されたので、領域名検索部206へ進む。
領域名検索部206では、図5の領域アクセス用テーブ
ルの先頭を指すポインタ400が指す領域アクセス用テ
ーブル群から図7のgetaccコマンド604で指定
された領域名buffを検索する。領域名buffは図
5の領域アクセス用テーブル402の領域名格納エリア
420に存在する。図2の関数名表示部207で領域名
buffを画面に表示し、図5の領域アクセス用テーブ
ル402の関数格納エリアを指すポインタ423が指す
関数名格納エリア470の内容を画面に表示し、さら
に、次の関数名格納エリアを指すポインタ480が指す
関数名格納エリア471の内容を画面に表示し、次の関
数名格納エリアを指すポインタ481が指す関数名格納
エリア472の内容を画面に表示し、次の関数名格納エ
リアを指すポインタ482が指す関数名格納エリア47
3の内容を画面に表示する。次の関数名格納エリアを指
すポインタ483がnullなので図2の関数名表示部
207の処理を終了し、表示は図7のgetaccコマ
ンド実行結果607となり、図1コマンド入力部100
へ進む。
【0040】以上説明したように、書き込みを行ったか
どうか知りたい領域を設定するコマンドを2回、命令の
実行コマンドを1回、書き込みを行った関数名を表示す
るコマンドを2回実行するだけでよい。
どうか知りたい領域を設定するコマンドを2回、命令の
実行コマンドを1回、書き込みを行った関数名を表示す
るコマンドを2回実行するだけでよい。
【0041】
【発明の効果】以上説明したように、本発明のソフトウ
ェア・シミュレータは、予め指定した領域に書き込みを
した関数の履歴が分かることにより、従来はブレークポ
イントの設定を2回、命令の実行を6回、画面に表示さ
れた関数名の記録を6回行わなければならない所が、本
発明では書き込みを行ったかどうか知りたい領域を設定
するコマンドを2回、命令の実行コマンドを1回、書き
込みを行った関数名を表示するコマンドを2回実行する
だけでよい。これにより、従来より効率的にデバッグが
行え作業効率を向上させることができる。
ェア・シミュレータは、予め指定した領域に書き込みを
した関数の履歴が分かることにより、従来はブレークポ
イントの設定を2回、命令の実行を6回、画面に表示さ
れた関数名の記録を6回行わなければならない所が、本
発明では書き込みを行ったかどうか知りたい領域を設定
するコマンドを2回、命令の実行コマンドを1回、書き
込みを行った関数名を表示するコマンドを2回実行する
だけでよい。これにより、従来より効率的にデバッグが
行え作業効率を向上させることができる。
【図1】本発明のソフトウェア・シミュレータの処理方
式の一実施例の流れ図である。
式の一実施例の流れ図である。
【図2】本発明の領域アクセス処理の一例を示す流れ図
である。
である。
【図3】本発明の領域アクセスチェック処理の一例を示
す流れ図である。
す流れ図である。
【図4】従来技術のソフトウェア・シミュレータの処理
方式の一例の流れ図である。
方式の一例の流れ図である。
【図5】本発明の領域アクセス用テーブルの一例を示す
ブロック図である。
ブロック図である。
【図6】Cソース・プログラムの一例を示すファイルで
ある。
ある。
【図7】ソフトウェア・シミュレータのコマンドの一例
を示すコマンド群である。
を示すコマンド群である。
100 コマンド入力部 101 コマンド解析部 102 各コマンド処理部 103 領域アクセス処理部 104 命令実行コマンド判定部 105 1命令実行処理部 106 領域アクセスチェック処理部 107 命令実行終了判定部 200 領域アクセスコマンド判定部 201 領域アクセス用テーブル生成部 202 開始/終了アドレス取得部 203 領域名格納部 204 開始アドレス格納部 205 終了アドレス格納部 206 領域名検索部 207 関数名表示部 300 メモリアクセス判定部 301 領域アクセス用テーブル存在確認部 302 領域存在確認部 303 関数名取得部 304 参照関数名格納部 305 ポインタ・インクリメント処理部 400 領域アクセス用テーブルの先頭を指すポイン
タ 401 領域アクセス用テーブル 402 関数名格納テーブル 403 関数名格納テーブル 410 領域名格納エリア 411 開始アドレス格納エリア 412 終了アドレス格納エリア 413 関数格納エリアを指すポインタ 414 次の領域アクセス用テーブルを指すポインタ 420 領域名格納エリア 421 開始アドレス格納エリア 422 終了アドレス格納エリア 423 関数格納エリアを指すポインタ 424 次の領域アクセス用テーブルを指すポインタ 450 関数名格納エリア 460 次の関数名格納エリアを指すポインタ 451 関数名格納エリア 461 次の関数名格納エリアを指すポインタ 470 関数名格納エリア 480 次の関数名格納エリアを指すポインタ 471 関数名格納エリア 481 次の関数名格納エリアを指すポインタ 472 関数名格納エリア 482 次の関数名格納エリアを指すポインタ 473 関数名格納エリア 483 次の関数名格納エリアを指すポインタ 500 ソース・プログラム・ファイル 600 シミュレータ・コマンド 601 setaccコマンド 602 setaccコマンド 603 stepコマンド 604 getaccコマンド 605 getaccコマンド実行結果 606 getaccコマンド 607 getaccコマンド実行結果
タ 401 領域アクセス用テーブル 402 関数名格納テーブル 403 関数名格納テーブル 410 領域名格納エリア 411 開始アドレス格納エリア 412 終了アドレス格納エリア 413 関数格納エリアを指すポインタ 414 次の領域アクセス用テーブルを指すポインタ 420 領域名格納エリア 421 開始アドレス格納エリア 422 終了アドレス格納エリア 423 関数格納エリアを指すポインタ 424 次の領域アクセス用テーブルを指すポインタ 450 関数名格納エリア 460 次の関数名格納エリアを指すポインタ 451 関数名格納エリア 461 次の関数名格納エリアを指すポインタ 470 関数名格納エリア 480 次の関数名格納エリアを指すポインタ 471 関数名格納エリア 481 次の関数名格納エリアを指すポインタ 472 関数名格納エリア 482 次の関数名格納エリアを指すポインタ 473 関数名格納エリア 483 次の関数名格納エリアを指すポインタ 500 ソース・プログラム・ファイル 600 シミュレータ・コマンド 601 setaccコマンド 602 setaccコマンド 603 stepコマンド 604 getaccコマンド 605 getaccコマンド実行結果 606 getaccコマンド 607 getaccコマンド実行結果
Claims (1)
- 【請求項1】 マイクロプロセッサに用いられるソフト
ウェアシミュレーションにおいて、指定した領域を記憶
する手段と、 実行した命令が前記領域に対して書き込みをしたかどう
か判断する手段と、 判断した結果、前記命令が前記領域に書き込みをした場
合には、前記命令がどこの関数であるか判断する手段
と、 判断した結果、得た関数の名称を記憶する手段と、 前記関数の名称を画面に表示する手段とを有することを
特徴とするソフトウェア・シミュレータ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4036713A JPH05233317A (ja) | 1992-02-24 | 1992-02-24 | ソフトウェア・シミュレータ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4036713A JPH05233317A (ja) | 1992-02-24 | 1992-02-24 | ソフトウェア・シミュレータ |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05233317A true JPH05233317A (ja) | 1993-09-10 |
Family
ID=12477402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4036713A Pending JPH05233317A (ja) | 1992-02-24 | 1992-02-24 | ソフトウェア・シミュレータ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH05233317A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7577557B2 (en) | 2003-10-22 | 2009-08-18 | Panasonic Corporation | Simulator and simulation method for behaviors of processors |
-
1992
- 1992-02-24 JP JP4036713A patent/JPH05233317A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7577557B2 (en) | 2003-10-22 | 2009-08-18 | Panasonic Corporation | Simulator and simulation method for behaviors of processors |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7178135B2 (en) | Scope-based breakpoint selection and operation | |
JPH05233317A (ja) | ソフトウェア・シミュレータ | |
US5481705A (en) | Method for executing a program with branch-to modifying instructions | |
US20050022170A1 (en) | Visual debugging interface | |
JP2870735B2 (ja) | デバッガにおけるデータの値の自動チェック方式 | |
JPH04217034A (ja) | プログラムトレースの表示方式 | |
JPS6254337A (ja) | プログラムの階層指定表示方式 | |
JPH0926897A (ja) | プログラム解析装置及びプログラム解析方法 | |
JPH07191876A (ja) | プログラム試験装置とその使用方法 | |
JPH0510692B2 (ja) | ||
JPH06139108A (ja) | デバッグ処理方法 | |
JPS6274130A (ja) | プログラム構造資料作成処理装置 | |
JP3900223B2 (ja) | 変数影響解析装置及び変数影響解析方法 | |
JPS6292034A (ja) | プログラムデバツグ装置 | |
JPH0471042A (ja) | 実行トレースに基づくテスト支援システム | |
JPS6292033A (ja) | プログラムデバツグ装置 | |
JPS6011944A (ja) | プログラム・アナライザ | |
JP2000181691A (ja) | プログラム構造解析方式 | |
JP2500385B2 (ja) | 入力デ―タ管理方式 | |
JPH10207737A (ja) | エミュレータ及びエミュレーションシステム | |
JPH07110780A (ja) | デバッグ装置 | |
JPH0350640A (ja) | 実行用プログラムのトレース情報編集方式 | |
JPH02100146A (ja) | トレース決定方式 | |
JPH04328644A (ja) | デバッグ支援装置 | |
JPH10254914A (ja) | 論理シミュレーション結果解析装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 19990106 |