JPH10222397A - シミュレーション装置、シミュレーション方法、及び、シミュレーションプログラムを記録した機械読み取り可能な記録媒体 - Google Patents

シミュレーション装置、シミュレーション方法、及び、シミュレーションプログラムを記録した機械読み取り可能な記録媒体

Info

Publication number
JPH10222397A
JPH10222397A JP9021793A JP2179397A JPH10222397A JP H10222397 A JPH10222397 A JP H10222397A JP 9021793 A JP9021793 A JP 9021793A JP 2179397 A JP2179397 A JP 2179397A JP H10222397 A JPH10222397 A JP H10222397A
Authority
JP
Japan
Prior art keywords
instruction
value
execution
command
simulation
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
Application number
JP9021793A
Other languages
English (en)
Inventor
Shigeyoshi Kaneko
栄美 金子
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP9021793A priority Critical patent/JPH10222397A/ja
Priority to US09/017,240 priority patent/US6240544B1/en
Publication of JPH10222397A publication Critical patent/JPH10222397A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 実行した命令の取り消しを数回以上繰り返し
行え、命令を取り消す処理を行うために必要な1命令当
たりのトレース情報を少なく抑えることである。 【解決手段】 コマンド入力読み込み部130の入力に
よりコマンドが正順コマンドの場合には、命令の種類、
及び、命令の実行により更新されるレジスタに格納され
る値、フラグの値、分岐元も番地の値、もしくはメモリ
に格納される値を命令の種類により選択的にトレース情
報として登録処理を行う実行処理部140と、コマンド
入力読み込み部130の入力によりコマンドが逆順コマ
ンドの場合には、命令の種類によりトレース情報を用い
てデータ復元処理を行うUNDO実行処理部150とを
備えるようにしてある。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、シミュレーション
装置、シミュレーション方法、及び、シミュレーション
プログラムを記録した機械読み取り可能な記録媒体に関
し、特に、ソフトウェアの開発時に実行した命令の取り
消しを数回以上繰り返し行え、命令を取り消す処理を行
うために必要な1命令当たりのトレース情報を少なく抑
え、シミュレーションの操作性の向上を図る技術に関す
る。
【0002】
【従来の技術】ソフトウェア・シミュレーション装置に
は、実行モジュールを読み込み、実行モジュールの最
後、或いは指定されたブレークポイントまで一気に実行
する方法と、シミュレーション装置を起動し、実行モジ
ュールを読んだ後、コマンド入力に従って実行を進める
ユーザとの対話型の実行方法がある。
【0003】図14は、従来の対話型による実行を行う
第1の従来例のシミュレーション装置を示す構成図であ
る。このシミュレーション装置は、実行モジュール10
0の読み込みを行う実行モジュール読み込み部110
と、シミュレーション処理に用いる各種の変数等の初期
化を行う初期化処理部120と、操作者が入力したコマ
ンドを読み込むコマンド入力読み込み部130と、実行
モジュール100について、コマンド入力読み込み部1
30で読み込んだコマンドによりシミュレーションの実
行処理を行う実行処理部170と、この実行処理部17
0にて実行されたシミュレーション結果を出力する結果
出力部160とを備えるものである。
【0004】プログラムを開発しシミュレーション装置
でそのプログラムを実行する場合、まずシミュレーショ
ン装置で実行モジュールを最後まで実行する。ここで、
プログラムの実行結果が正しくない、シミュレーション
装置が暴走する、等の症状が出た場合には、プログラム
にバグがあると判断される。そこで、対話型の実行方法
を用い、プログラムのどの箇所にバグがあるか、実行モ
ジュールを少しずつ進めて問題の箇所を探すことにな
る。
【0005】図15は、図14に示したシミュレーショ
ン装置の処理の流れを示した図である。まず、実行モジ
ュールを読み込む(ステップS151)。また、シミュ
レーションに必要な変数等の初期化を行う(ステップS
152)。続いて、操作者からシミュレーション装置へ
入力されたコマンドを読み込む(ステップS153)。
ここで入力されるコマンドは上述した、指定されたブレ
ークポイントまで一気に実行するためのコマンド、実行
プログラムの1ステップづつ実行を行うステップ実行を
するためのコマンド、若しくは終了のためのコマンドで
あるものとする。
【0006】ブレークポイントまで実行するためのコマ
ンドが入力された場合には、ステップS154でそれを
判定し、ブレークポイントまでステップ実行処理S15
7を繰り返し(ステップS155)、次のコマンド入力
の命令に従う(ステップS153)。また、ステップ実
行のためのコマンドが入力された場合には、ステップS
156でそれを判定し、ステップ実行処理S157を行
い、次のコマンド入力の命令に従う(ステップS15
3)。コマンド入力が終了命令の場合には、それをステ
ップS158で判定し、シミュレーション処理が終了す
る。この際、実行を中断したい実行モジュールの番地を
通り過ぎて実行してしまった場合、或いは数ステップ実
行して、期待した結果が得られなかった場合に、数ステ
ップ前に戻したい時に、従来のシミュレーション装置で
は、逆戻りができないため、シミュレーションを最初か
らやり直す必要があり、プログラム開発の効率が悪かっ
た。
【0007】次に、第2の従来例のシミュレーション装
置について説明する。ここで説明するシミュレーション
装置は、プログラムの実行の履歴として「トレース情
報」を保存し、プログラムのデバッグに利用するもので
ある。この情報を流用すれば、シミュレーション装置で
プログラムを逆戻りさせることは可能になる。しかし、
この従来例におけるトレース情報では、各命令の番地、
レジスタ、メモリ、フラグの値、等の多くの情報を記録
する必要があった。
【0008】さらにこのシミュレーション装置による処
理では、ある番地の命令に対し、命令を実行した「後」
のオペランドの値を保存するため、以下に例示したよう
に、デスティネーションオペランド(命令を実行した結
果が格納されるレジスタやメモリ)の値だけを記憶した
のでは、プログラムを逆に実行すると、正しく元の値に
復元されない。そのため、ソースオペランド(命令の実
行に用いるレジスタやメモリ)の値も保存する必要があ
る。
【0009】例1)演算命令の場合 スタート時にはA=4、B=3とする。「A+B」の結
果を「A」に入れる加算命令を実行した場合、従来のト
レース情報では、図16(a)に示す如く、Aの値とし
て「7」を保存する。この命令を取り消すためにAに
「7」を戻すと、ソースオペランド側のAの値も「7」
になり、再度この命令を実行する場合には、正しい結果
が得られない。従って、デスティネーションオペランド
のみならず、ソースオペランドをも保存する必要があ
る。
【0010】例2)分岐命令の場合 また、分岐命令を実行する場合には、従来のトレース情
報では、「分岐先」の番地を保存している。そのため、
図16(b)に示す如く、分岐命令で0x1240番地
に分岐した後、その命令の実行を取り消したい場合に
は、0x1240番地の命令の1つ前にどの番地が実行
されたかが分からない。このため、分岐元番地をも保存
する必要がある。
【0011】図17は第2の従来例のシミュレーション
装置を示す構成図である。このシミュレーション装置
は、実行モジュール100の読み込みを行う実行プログ
ラム読み込み部110と、シミュレーション処理に用い
る各種の変数等の初期化を行う初期化処理部120と、
操作者からの命令を入力するコマンド入力読み込み部1
30と、実行モジュール100について、コマンド入力
読み込み部130で入力した操作者の入力によりシミュ
レーションの実行処理を行う実行処理部180と、コマ
ンド入力読み込み部130の入力した操作者の入力によ
り、トレース情報を復元してその命令の実行していない
状態に戻すUNDO実行処理部190と、この実行処理
部180、若しくはUNDO実行処理部190にて実行
されたシミュレーション結果を出力する結果出力部16
0とを備えるものである。
【0012】上記構成によるシミュレーション装置にお
いては、上述の如く、非常に多くのトレース情報を保存
する必要があった。この第2の従来例のシミュレーショ
ン装置に必要なトレース情報の例を図18に示す。図示
の如く、各レジスタ、及びその値やオペコード等、(図
中の”*”は、BNE(Brunch Not Equal)命令が分岐し
たか否かを示すフラグである)数多くの情報を保存する
必要があるため、1つの命令の実行に対して358ビッ
トのテーブルサイズが必要であった。
【0013】
【発明が解決しようとする課題】上述の如く、第1の従
来例のシミュレーション装置においては、逆戻りができ
ないため、効率のよいソフトウエア開発を行うことが困
難であった。また、第2の従来例のシミュレーション装
置においては、プログラムが大きくなれば、トレース情
報が膨大な量となり、記憶容量が不足するという問題が
あった。
【0014】一方、シミュレーションを高速に行う方法
として、ハードウェア・エミュレーション装置を用い
て、実行モジュールを実行する方法がある。エミュレー
ション装置では、通常実行プログラムを逆戻りして実行
させることは、困難である。
【0015】本発明は、上記事情に鑑みてなされたもの
であり、その目的とするところは、実行した命令の取り
消しを数回以上繰り返し行え、更に、命令を取り消す処
理を行うために必要な1命令当たりのトレース情報を少
なく抑え、これにより多くの命令のトレース情報を保存
できるシミュレーション装置を提供することにある。
【0016】
【課題を解決するための手段】上記目的を達成するた
め、請求項1の発明は、命令を実行する際に、命令の種
類、及び、前記命令の実行により更新されるレジスタに
格納される値、フラグの値、分岐元の番地の値、もしく
はメモリに格納される値を命令の種類により選択的にト
レース情報として登録し、前記命令が実行される前の状
態を復元する際には、命令の種類により前記トレース情
報を用いて復元処理を実行することを特徴とする。
【0017】上記発明の構成によれば、命令の種類によ
り選択的にトレース情報として登録するようにしてあ
る。このように、命令の種類により登録する情報を変え
るようにすることで、命令を取り消す処理を行うために
必要な1命令当たりのトレース情報を少なく抑え、これ
により多くの命令のトレース情報を保存できるのであ
る。従って、シミュレーション装置の操作性を向上させ
ることができるのである。
【0018】請求項2の発明は、シミュレーションを行
う実行モジュールを読み込む実行モジュール読み込み部
と、シミュレーションに使用する変数の初期化処理を行
う初期化処理部と、シミュレーション処理に関するコマ
ンド入力を読み込むコマンド入力読み込み部と、このコ
マンド入力読み込み部の入力によりコマンドが正順コマ
ンドの場合には、前記命令の種類、及び、前記命令の実
行により更新されるレジスタに格納される値、フラグの
値、分岐元の番地の値、もしくはメモリに格納される値
を命令の種類により選択的にトレース情報として登録処
理を行う実行処理部と、前記コマンド入力読み込み部の
入力によりコマンドが逆順コマンドの場合には、命令の
種類により前記トレース情報を用いて前記命令が実行さ
れる前の状態を復元するデータ復元処理を行うUNDO
実行処理部と、を具備することを特徴とする。
【0019】ここで、上記正順コマンドとは、実行モジ
ュールを命令順に行わせるために操作者が行う命令をい
う。また、逆順コマンドとは、実行モジュールの命令実
行を取り消すような処理を行わせるために操作者が行う
命令をいう。上記発明の構成では、実行処理部にて、命
令の種類により選択的にトレース情報として登録処理を
行い、UNDO処理部にて、命令実行を取り消す場合に
は登録したトレース情報を復元することで命令実行を遡
って取り消すことを実現するようにしてある。従って、
上記請求項1記載の発明の効果に加えて、操作者からの
コマンドによって実行モジュールを正順、逆順に実行す
ることができる。これにより、さらに、シミュレーショ
ン装置の操作性を向上させることができるのである。
【0020】請求項3の発明は、上記請求項2における
前記実行処理部は、前記コマンド入力読み込み部の入力
によりコマンドが正順コマンドの場合に前記実行モジュ
ールを実行する際に、現在実行する命令の種類、及び、
命令の実行によりレジスタの値が更新される命令におい
ては、レジスタ番号とレジスタの値を、前記命令の実行
によりフラグの値が更新される命令においては、フラグ
の値を、前記命令の実行によりメモリの値が更新される
命令においては、メモリの番地とその値を、前記命令の
実行により分岐が発生した分岐先の命令においては、分
岐元の番地をトレース情報として選択的に登録処理を行
う第1のデータ格納処理部を備えることを特徴とする。
【0021】上記発明の構成では、命令の種類、及びそ
の命令の種類により登録するトレース情報を特定したも
のである。上記発明の如く命令の種類により上記のトレ
ース情報を登録することで、命令の種類により登録する
情報を変更するようにすることで、命令を取り消す処理
を行うために必要な1命令当たりのトレース情報を少な
く抑え、これにより多くの命令のトレース情報を保存で
きるのである。これによりシミュレーション装置の操作
性を向上させることができるのである。
【0022】請求項4の発明は、上記請求項3における
前記UNDO処理部は、前記コマンド入力読み込み部の
入力によりコマンドが逆順コマンドの際に前記実行モジ
ュールを復元する場合に、前記第1のデータ格納処理部
にて格納された復元する命令の種類から、前記命令の実
行によりレジスタの値が更新された命令においては、前
記第1のデータ格納処理部に登録された命令レジスタ番
号のレジスタに、登録されたレジスタの値を復元し、前
記命令の実行によりフラグの値が更新される命令におい
ては、前記第1のデータ格納処理部に登録されたフラグ
の値を復元し、前記命令の実行によりメモリの値が更新
される命令においては、前記第1のデータ格納処理部に
登録されたメモリの番地に、登録されたメモリの値を復
元し、前記命令の実行により分岐が発生した分岐先の命
令においては、分岐元の番地をプログラムカウンタに復
元する第1のデータ復元処理部を備えることを特徴とす
る。
【0023】上記発明の構成では、命令の種類、及びそ
の命令の種類により復元するトレース情報を特定したも
のである。上記発明の如く命令の種類により上記のトレ
ース情報を復元することで、命令の種類により登録する
情報を変更するようにすることで、命令を取り消す処理
を行うために必要な1命令当たりのトレース情報を少な
く抑え、これにより多くの命令のトレース情報を保存で
きるのである。これによりシミュレーション装置の操作
性を向上させることができるのである。
【0024】請求項5の発明は、前記請求項2における
前記実行処理部は、前記コマンド入力読み込み部の入力
によりコマンドが正順コマンドの際に前記実行モジュー
ルを実行する場合に、現在実行する命令の種類の登録処
理を行う第2のデータ格納処理部を備え、前記UNDO
処理部は、前記命令が可逆演算命令である場合に、逆演
算を行うことで前記命令が実行される前の状態に復元す
る第2のデータ復元処理部を備えることを特徴とする。
【0025】ここで、可逆演算命令とは、ある演算の実
行後に、他のオペランドの値から一のオペランドの値を
復元することができる命令をいう。このように可逆演算
命令の場合には、命令の逆演算を行うことで一のオペラ
ンドの値を復元するようにしてあるので、その一のオペ
ランドの値を登録する必要がない。従って、上記発明の
構成によれば、さらにトレース情報を少なくすることが
できるのである。
【0026】請求項6の発明は、エミュレーション装置
で命令を実行する際に、その命令に関する情報を登録
し、その情報を用いて前記命令が実行される前の状態を
復元するシミュレーション装置であって、前記命令の種
類、及び、前記命令の実行により更新されるレジスタに
格納される値、フラグの値、分岐元の番地の値、もしく
はメモリに格納される値を命令の種類により選択的にト
レース情報として登録し、前記エミュレーション装置で
命令をが実行される前の状態を復元する際には、前記ト
レース情報を用いてデータ復元処理を行うことを特徴と
する。
【0027】上記発明の構成によれば、ハードウエア・
エミュレータに、実行命令の取消処理が可能なシミュレ
ーショ装置を付加することで、エミューレーションのみ
では不可能、若しくは実現が困難なエミュレータにおけ
る命令の取消処理を行うことができるのである。
【0028】請求項7の発明は、命令を実行する際に、
シミュレーションを行う実行モジュールを読み込む実行
モジュール読み込み、シミュレーションに使用する変数
の初期化処理を行い、シミュレーション処理に関するコ
マンド入力を読み込むコマンド入力を読み込み、前記読
み込まれたコマンドが正順コマンドの場合には、前記命
令の種類、及び、前記命令の実行により更新されるレジ
スタに格納される値、フラグの値、分岐元の番地の値、
もしくはメモリに格納される値を命令の種類により選択
的にトレース情報として登録し、前記読み込まれたコマ
ンドが逆順コマンドの場合には、命令の種類により前記
トレース情報を用いてデータ復元することを特徴とす
る。
【0029】ここで、上記正順コマンドとは、実行モジ
ュールを命令順に行わせるために操作者が行う命令をい
う。また、逆順コマンドとは、実行モジュールの命令実
行を取り消すような処理を行わせるために操作者が行う
命令をいう。上記発明の構成では、実行処理部にて、命
令の種類によりトレース情報として登録処理を行い、U
NDO処理部にて、命令実行を取り消す場合には登録し
たトレース情報を復元することで命令実行を遡って取り
消すことを実現するようにしてある。従って、操作者か
らのコマンドによって実行モジュールを正順、逆順に実
行することができる。これにより、さらに、シミュレー
ション装置の操作性を向上させることができるのであ
る。
【0030】請求項8の発明は、命令を実行する際に、
その命令に関する情報を登録し、その情報を用いて前記
命令が実行される前の状態を復元するシミュレーション
プログラムを記録した機械読み取り可能な記録媒体にお
いて、シミュレーションを行う実行モジュールを読み込
む実行モジュール読み込みステップと、シミュレーショ
ンに使用する変数の初期化処理を行う初期化処理ステッ
プと、シミュレーション処理に関するコマンド入力を読
み込むコマンド入力読み込みステップと、このコマンド
入力読み込みステップの入力によりコマンドが正順コマ
ンドの場合には、前記命令の種類、及び、前記命令の実
行により更新されるレジスタに格納される値、フラグの
値、分岐元の番地の値、もしくはメモリに格納される値
を命令の種類により選択的にトレース情報として登録処
理を行う実行処理ステップと、前記コマンド入力読み込
みステップの入力によりコマンドが逆順コマンドの場合
には、命令の種類により前記トレース情報を用いて前記
命令が実行される前の状態を復元するデータ復元処理を
行うUNDO実行処理ステップと、を含むことを特徴と
する。
【0031】ここで、上記正順コマンドとは、実行モジ
ュールを命令順に行わせるために操作者が行う命令をい
う。また、逆順コマンドとは、実行モジュールの命令実
行を取り消すような処理を行わせるために操作者が行う
命令をいう。上記発明の構成では、実行処理部にて、命
令の種類によりトレース情報として登録処理を行い、U
NDO処理部にて、命令実行を取り消す場合には登録し
たトレース情報を復元することで命令実行を遡って取り
消すことを実現するようにしてある。従って、操作者か
らのコマンドによって実行モジュールを正順、逆順に実
行することができる。これにより、さらに、シミュレー
ション装置の操作性を向上させることができるのであ
る。
【0032】
【発明の実施の形態】以下、本発明に係るシミュレーシ
ョン装置、シミュレーション方法、及びシミュレーショ
ンプログラムを記録した機械読み取り可能な記録媒体の
実施形態について、図面を参照しながら詳細に説明す
る。
【0033】第1の実施の形態 まず、本実施形態を説明するにあたり、以下の説明で用
いる用語の説明をする。UNDO処理とは、命令の実行
を取り消す処理という。データ格納テーブルとは、UN
DO処理に必要な値を登録するテーブルをいう。テーブ
ルは複数個用意し、データ格納処理実行前の各テーブル
のサイズは「SIZE」とする。現在データを登録/参
照しているテーブル以外で、既にデータが格納されてい
るテーブルは圧縮しておく。本実施の形態では、このテ
ーブルを「DT」と略記し、何番目のテーブルであるか
を「DT[N]」、DT[N]の何番地であるかを「D
T[N][i]」と表記する。DT[N]にデータの格
納が終了後、テーブルの最後を指す番地がSIZEを越
えていたら、この番地をDT[N]のサイズとしてSI
ZE[N]に与える。ここで、テーブルを圧縮するの
は、さらにトレース情報の格納領域を小さくするためで
ある。
【0034】また、シミュレーション装置の操作に関す
る用語としては、まず、UNDOブレークポイントと
は、UNDO実行を終了する番地をいう。ステップ実行
とは、シミュレーション装置で、実行モジュールを1命
令だけ実行する。UNDOステップ実行とは、最後に実
行した命令を1命令分とり消す。UNDO実行とは、最
後に実行した命令から連続して実行を遡り、UNDOブ
レークポイントに達するまで取り消して行く処理をい
う。
【0035】命令の種類には、以下のものがある。レジ
スタ系命令とは、命令実行によりレジスタの値が更新さ
れる命令(加減算等の演算命令、ロード命令等)をい
う。フラグ変化命令とは、フラグ変化を伴うレジスタ系
命令をいう。フラグ非変化命令とは、フラグ変化を伴わ
ないレジスタ系命令をいう。メモリ系命令とは、命令実
行によりメモリの値が更新される命令(ストア命令等)
をいう。分岐先命令とは、分岐命令が分岐する先の番地
にある命令で1つ前のPCと比べ、2命令長以上離れて
いる場合に分岐先命令とする。1つ前に実行した命令が
条件分岐命令なら、分岐しなかった場合、或いは分岐し
ても分岐先の番地が1命令長しか離されてない場合には
「分岐先命令」とはしない。
【0036】テーブルに登録するデータのサイズに関す
る用語には以下のものがある。レジスタ番号サイズと
は、レジスタ番号の識別に必要なビット数をいい、32
個なら6ビットである。レジスタサイズとは、レジスタ
の値のサイズをいい、32ビットなら32ビットであ
る。メモリ番地サイズとは、メモリ番地の識別に必要な
ビット数をいい、232なら32ビットである。メモリサ
イズとは、メモリの値のサイズをいい、232ビットなら
32ビットである。命令番地サイズとは、命令番地の識
別に必要なビット数をいい、232なら32ビットであ
る。フラグサイズとは、フラグ(コンディションコー
ド)の識別に必要なビット数をいい、本実施の形態で
は、N(Negative)、Z(Zero)、V(O
verflow)、C(Carry)の4つを持つもの
とする。フラグサイズは4ビットとなり、「NZVC」
の順で値を保持する。各フラグは[1]がその状態(O
N)であることを示す。
【0037】その他、変数の定義は以下の如くである。
VALは、DTに登録する命令の種類を識別した値を持
つ3bitの変数とする。PC、FPC、及びNPC
は、現在、1命令前(forward)、及び次(ne
xt)のプログラムカウンタとする。
【0038】図1は、第1の実施の形態に係わるシミュ
レーション装置の構成図を示したものである。本発明の
第1の実施の形態のシミュレーション装置は、実行モジ
ュール100の読み込みを行う実行モジュール読み込み
部110と、シミュレーション処理に用いる各種の変数
等の初期化を行う初期化処理部120と、操作者からの
命令を入力するコマンド入力読み込み部130と、実行
モジュール100に含まれる命令の実行処理を行い、デ
コード処理部141と第1データ格納処理部142と命
令実行処理部143とPC更新処理部144とを有する
実行処理部140と、第1データ復元処理部151を備
え、コマンド入力読み込み部130で入力した操作者の
入力により、トレース情報を復元してその命令の実行し
ていない状態に戻すUNDO実行処理部150と、実行
処理部140若しくはUNDO実行処理部150の結果
を出力する結果出力部160を備えている。
【0039】図1を用いて本発明に係わるシミュレーシ
ョン装置の動作について説明する。実行モジュール読み
込み部110は、シミュレーション装置への入力である
実行モジュール100を読み込む。初期化処理部120
では、PC、NPC、FPC、データ格納テーブル番号
(N)、データ格納テーブル[N]内の番地(i)を初
期化する。コマンド入力読み込み部130は、シミュレ
ーション装置に入力されるコマンドを読み込む。デコー
ド処理部141ではPCの指している番地の命令を読み
込み、ニーモニック、オペランドを切り出し、ニーモニ
ックから命令の種類を識別する。命令実行処理部143
では、PCの指す番地の命令をシミュレーション装置で
実行する。PC更新処理部144ではFPCに現在のP
Cの値を、PCに現在のNPCの値を、現在実行した命
令が分岐命令でない場合には、NPCを1命令長分増や
し、分岐命令である場合には、分岐先の番地を格納す
る。
【0040】図2は、図1のシミュレーション装置の処
理の流れの概要を示すフローチャートである。
【0041】まず、シミュレーション装置への入力であ
る実行モジュールを読み込み(ステップS11)、P
C、NPC、FPC、データ格納テーブル番号(N)、
データ格納テーブル[N]内の番地(i)の変数等を初
期化する(ステップS12)。ステップS13でシミュ
レーション装置へのコマンド入力を読み込み、ステップ
S14で「実行」を示すコマンドであればステップS1
5へ移行し、設定されたブレークポイントが来るまで、
或いは実行モジュールの最後に達するまでステップ実行
S17を繰り返す。ステップS16で「ステップ実行」
を示すコマンドであれば、デコード処理S171、デー
タ格納処理S172、命令実行処理S173、及びPC
更新処理S174を行いステップS13へ戻る。ステッ
プS18で「UNDO実行」を示すコマンドであれば、
UNDOブレークポイントに達するまで、或いは実行モ
ジュールの先頭に達するまで、UNDOステップ実行を
繰り返す。ステップS20で「UNDOステップ実行」
を示すコマンドであれば、データ復元処理S21を行
い、ステップS13へ戻る。ステップS22で「終了」
を示すコマンドであれば、シミュレーションを終了す
る。
【0042】次に、図3のフローチャートを用いて、第
1データ格納処理部142の処理を説明する。ここで、
先頭に「0b」を付けて表現した数値は、二進数を表す
ものとする。
【0043】ステップS31でデータ格納テーブルDT
[N]の番地を指すカウンタiがSIZE以上の値であ
れば、DT[N]のサイズSIZE[N]の値を「i」
とする。DT[N]を圧縮し、カウンタiを0に初期化
する(ステップS32)。ステップS33でiが0な
ら、Nを1増やし、次のテーブルDT[N]を用意す
る。ステップS35で、デコード処理部141で獲得さ
れたニーモニックがフラグ変化命令であればステップS
36へ移行する。ステップS36では、変数VALに
「0b11」を与え、DT[N][i]からレジスタ番
号サイズ分でレジスタ番号を登録し、iをレジスタ番号
サイズ分更新し、DT[N][i]からレジスタサイズ
分でレジスタの値を登録し、iをレジスタサイズ分更新
し、DT[N][i]からフラグサイズ分でフラグの値
を登録し、iをフラグサイズ分更新し、ステップS41
へ移行する。
【0044】ステップS37でニーモニックがフラグ非
変化命令であれば、ステップS38へ移行する。ステッ
プS38では、VALに「0b10」を与え、DT
[N][i]からレジスタ番号とレジスタの値を登録
し、ステップS41へ移行する。ステップS39でニー
モニックがメモリ系命令であれば、ステップS40に移
行する。ステップS40では、VALに「0b01」を
与え、DT[N][i]からメモリ番地サイズ分でメモ
リの番地を登録し、iをメモリ番地サイズ分更新し、D
T[N][i]からメモリサイズ分でメモリの値を登録
し、iをメモリサイズ分更新し、ステップS41へ移行
する。
【0045】ステップS41でニーモニックが分岐先命
令であれば、ステップS42へ移行する。ステップS4
2では、VALを「0b100」と論理和を取り、DT
[N][i]から命令番地サイズ分で戻り番地を登録
し、iを命令番地サイズ分更新し、ステップS44へ移
行する。分岐先命令でない場合には、ステップS43で
VALを「0b000」と論理和を取る。
【0046】ステップS44でDT[N][i]にVA
Lを3ビットで登録し、iを3更新する。
【0047】図3は、ステップ実行を1回行った際の第
1データ格納処理部142の動作であるので、シミュレ
ーション装置へのコマンド入力で「実行」が指定された
場合には、上記処理を実行モジュールの最後に到達する
まで、或いはブレークポイントに達するまで繰り返し行
う。この時、データ格納テーブルがM個用意されている
として、DT[M]まで使用された場合には、次のテー
ブルは用意せず、再びDT[1]から使用する。この
際、前に格納されていたデータは無効になる。
【0048】次に、UNDO実行処理について説明す
る。シミュレーション装置へのコマンド入力で「UND
Oステップ実行」が指定されると、データ復元処理が行
われる。第1データ復元処理部151の処理を図4を用
いて説明する。
【0049】ステップS51でデータ格納テーブルDT
[N]を指すカウンタiが0であれば、1つ前のテーブ
ルを解凍し、iが新しいテーブルの最後を指すようiに
DT[N]のサイズSIZE[N]を与える(ステップ
S52)。
【0050】ステップS53でプログラムカウンタを更
新する。PCにはFPCを、NPCにはPCを入れ、そ
れぞれ1つ前に実行したプログラムカウンタを指すよう
にする。iを3減らし、DT[N][i]から3ビット
分読み込み、変数VALに格納する(ステップS5
4)。
【0051】ステップS55でVALと「0b100」
の論理積を取った値が「0b100」であればここに登
録されている命令の種類は分岐先命令であるので、ステ
ップS56でiから命令番地サイズ分引き、DT[N]
[i]から命令番地サイズ分読み取る。この値は、「分
岐元の番地」を表すのでこれをFPCに格納する。
【0052】ステップS57でVALと「0b10」の
論理積を取った値が「0b10」であれば、レジスタ系
命令である。ステップS59でVALの最下位ビットが
1であれば、フラグ変化命令であるので、iからフラグ
サイズ分引き、DT[N][i]からフラグサイズ分の
値を読み取り、フラグに値を戻し、ステップS61へ移
行する。
【0053】ステップS61でiからレジスタサイズ分
引き、D[N][i]からレジスタサイズ分でレジスタ
の値を読み取り、iからレジスタ番号サイズ分引き、D
[N][i]からレジスタ番号サイズ分でレジスタ番号
を読み取り、レジスタ番号のレジスタに値を戻す。
【0054】ステップS62でVALと「0b11」の
論理積を取った値が「0b10」であれば、メモリ系命
令であるので、iからメモリサイズ分引き、DT[N]
[i]からメモリサイズ分でメモリの値を読み取り、i
からメモリ番地サイズ分引き、D[N][i]からメモ
リ番地サイズ分でメモリの番地を読み取り、この番地の
メモリに値を戻す。
【0055】具体例として、図5のプログラムを本実施
の形態のシミュレーション装置で実行する場合の処理の
流れを示す。ここでは、10進数、16進数、2進数が
混在するため、10進数は何も付加しない。16進数に
は先頭に「0x」を付加、2進数は前記同様、先頭に
「0b」を付けて表現する。
【0056】現在0x11fc番地までシミュレーショ
ンが終了しているとする。従って、現在のPC=0x1
200、NPC=0x1204である。データ格納テー
ブルは3番目のDT[3]を使用中(N=3)、テーブ
ル内のカウンタは3159(i=3159)を指し、テ
ーブルのサイズSIZEは3200であるとする。
【0057】尚、シミュレーション装置への入力プログ
ラムは、実際にはオブジェクトコード形式で、各命令が
何であるかをシミュレーション装置が分かるのはデコー
ド処理部141を過ぎてからであるが、本実施形態では
図5のように表記して用いる。
【0058】以下、0x1200番地から処理を続け
る。図2のS16でステップ実行が指定されると、0x
1200番地の命令はデコード処理部141でニーモニ
ックとオペランドが切り出され、第1データ格納処理部
142に移行する。
【0059】第1データ格納処理部142では以下の処
理を行う。
【0060】ステップS31:現在iは3159である
ので、S32へ移行する。 ステップS33:ステップS35へ移行する。 ステップS35:0x1200番地の命令はフラグ変化
を伴い、レジスタに値の入る命令である「フラグ変化命
令」であるので、ステップS36へ移行する。 ステップS36:変数VALに「0b11」を入れる。
DN[3][3159]からデスティネーションオペラ
ンドであるレジスタのレジスタ番号「7」をレジスタ番
号サイズである6ビットで登録し、iに「6」を加え
る。DN[3][3165]からレジスタの値「0x8
0」をレジスタサイズである32ビットで登録し、iに
「32」を加える。DN[3][3196]からフラグ
の値「0b0001」をフラグサイズである4ビットで
登録し、iに「4」を加える。ステップS41へ移行す
る。 ステップS41:現在のPCと1つ前に実行したPC
(FPC)を比較し、差が1命令長であるので、分岐先
命令ではないのでステップS43へ移行する。
【0061】ステップS43:VALを「0b000」
と論理和を取る。ステップS44へ移行する。 ステップS44:DT[3][3200]から3ビット
でVALを登録し、iに[3]を加える。 ステップS173:命令実行処理部143で、SUBC
C命令を実行する。 ステップS174:PCを更新する。FPC=PC=0
x1200、PC=NPC=0x1204、NPC=P
C+4=0x1208。
【0062】0x1200番地の命令に対し、ステップ
実行が終了したので、ステップS13のシミュレーショ
ン装置への入力の読み込みに戻る。
【0063】ステップS16:ステップ実行を指定す
る。 ステップS171:デコード処理部141で0x120
4番地の命令をデコードする。命令の種類はいずれにも
当てはまらない。 ステップ172:第1データ格納処理部147によりデ
ータ格納される。S31に移行する。 ステップS31:i=3203で、テーブルサイズ(S
IZE=3200)以上であるので、S32へ移行す
る。 ステップS32:データ格納テーブルDT[3]のサイ
ズSIZE[3]を3203とし、DT[3]を圧縮す
る。iを0にする。S33へ移行する。 ステップS33:i=0であるので43へ移行する。 ステップS34:Nを1つ更新し、DT[4]を用意す
る。S35へ移行する。 ステップS35:フラグ変化命令ではない。S37へ移
行する。 ステップS37:フラグ非変化命令でもない。S39へ
移行する。 ステップS39:メモリ系命令でもない。S41へ移行
する。 ステップS41:分岐先命令でもない。S43へ移行す
る。 ステップS43:VALに「0b000」を与える。S
44へ移行する。 ステップS44:DT[4][0]にVAL「0b00
0」を登録し、iに3加える。S173へ移行する。 ステップS173:0x1204番地のCMP命令を実
行。S174へ移行する。 ステップS174:PCを更新する。FPC=PC=0
x1204、PC=NPC=0x1208、NPC=P
C+4=0x120c。同様に0x1208番地の命令
もいずれの命令の種類にも該当しないので、VAL=
「0b000」をDT[4][3]から3ビットで格納
し、iを3加える。 ステップS174:PCを更新する。0x1208番地
の命令は分岐命令であるので、PCの値には、分岐先の
番地が入る。FPC=PC=0x1208、PC=分岐
先の番地=0x1240、NPC=PC+4=0x12
44。 ステップS171:0x1240番地の命令をデコード
する。フラグ変化を伴わず、レジスタに値の入るフラグ
非変化命令である。 ステップS31、ステップS33はいずれも「no」。
S35へ移行する ステップS35:フラグ変化命令でないので、S37へ
移行する。 ステップS37:フラグ変化命令であるのでS38へ移
行する。 ステップS38:変数VALに「0b10」を与える。
DT[4][6]からレジスタ番号「9]を、レジスタ
番号サイズの6ビットで登録し、iに「6]を加える。
DT[4][12]からレジスタの値「3」を、レジス
タサイズの32ビットで登録し、iに「32」を加え
る。S41へ移行する。 ステップS41:現在のPCの値と1つ前に実行したP
Cの値が1命令長以上離れているので、分岐先の命令に
なる。S42へ移行する。 ステップS42:VALと「0b100」を論理和を取
る。DT[4][44]から戻り番地であるFPCの値
「0x1208」を命令番地サイズである32ビットで
登録し、iに「32」を加える。S44へ移行する。 ステップS44:DT[4][76]に「0b110」
を登録し、iに3を加える。
【0064】ここまでの処理で登録されたテーブルDT
[3]、DT[4]は図6(a),(b)のようにな
る。図示の如く、本実施形態のシミュレーション装置に
よれば、命令を取り消す処理を行うために必要な1命令
当たりのトレース情報を122ビットにすることができ
る。これにより、1命令少当たりのトレース情報を少な
く抑え、これにより多くの命令のトレース情報を保存で
きる。
【0065】次に、UNDO実行を行う場合を説明す
る。現在0x1240番地のLOAD命令の実行が終了
したところである。ここからUNDO実行を行う。現在
の各値は次の通りである。
【0066】PC=0x1240、NPC=0x124
0、FPC=0x1208、データ格納テーブル番号N
=4、i=79 ステップ41で「UNDOステップ実行」が指定される
とS20へ移行し、データ復元処理が行われる。 ステップS51:iは0でないのでS53へ移行する。 ステップS53:PCを更新する。NPC=PC=0x
1240、PC=FPC=0x1208。iから3引
く。S54へ移行する。 ステップS54:DT[4][76]から3ビット読み
込んだ値「0b110」を変数VALに入れる。S55
へ移行する。 ステップS55:VALの「0b100」と論理積をと
ると、最上位ビットは「0b100」であるので、S5
6へ移行する。 ステップS56:iから命令番地サイズ分の32を引
き、DT[4][44]から32ビット分読み取り、読
み取った値「0x1208」をFPCに入れる。S57
へ移行する。 ステップS57:FPC=FPC−4=0x1204。
S58へ移行する。 ステップS58:VAL&「0b10」で「0b10」
であるのでS59へ移行する。 ステップS59:BALの最下位ビットは1でないので
S60へ移行する。 ステップS60:iからレジスタサイズである「32」
を引き、D[4][12]から32ビット分読み取り、
レジスタの値「3」を得る。iからレジスタ番号サイズ
である「6」を引き、DT[4][6]から6ビット分
読み取り、レジスタ番号を得る。レジスタ番号のレジス
タに値を戻す。 次のPCが指す0x1208番地の命令をUNDOステ
ップ実行する ステップS51:i=6であるので53へ移行する。 ステップS53:PCを更新する。NPC=PC=0x
1208、PC=FPC=0x1204。iから3引
く。S54へ移行する。 ステップS54:DT[4][3]から3ビット読み、
読み取った値「000」をVALに入れる。S55へ移
行する。 ステップS55:S57へ移行する。 ステップS57:FPC=FPC−4=0x1200。
S58へ移行する。 ステップS58:S62へ移行する。 ステップS62:S67へ移行する。 次のPCが指す0x1204番地のCMP命令も同様
に、iから3を引き、DT[4][0]から3ビット読
み取ると、命令の種類が「0b000」であるので、F
PC=FPC−4=0x1200にして、S67へ移行
する。次のPCが指す0x1200番地の命令をUND
O実行する。 ステップS51:iが0であるので、S52へ移行す
る。 ステップS52:Nを1減らし、圧縮してあったデータ
格納テーブルDT[3]を解凍する。iをSIZE
[3]=3203にする。S53へ移行する。 ステップS53:PCを更新する。NPC=PC=0x
1200、PC=FPC=0x11fc。iから3を引
き、S54へ移行する。 ステップS54:DT[3][3200]から3ビット
読み、読み取った値「0b011」をVALに入れる。
S55へ移行する。 ステップS55:VALの最上位ビットは1でないの
で、S57へ移行する。 ステップS57:FPC=FPC−4=0x11f8。
S58へ移行する。 ステップS58:VAL&「0b10」は「0b10」
であるのでS59へ移行する。 ステップS59:VALの最下位ビットは1であるの
で、S60へ移行する。 ステップS60:iからフラグサイズである4を引き、
DT[3][3196」から4ビット分読みり、読み取
った値「0b0001」をフラグに戻す。S61へ移行
する。 ステップS61:iからレジスタサイズである32を引
き、DT[3][3165]から32ビット分読み取
り、レジスタの値「0x80」を得る。iからレジスタ
番号サイズである6を引き、DT[3][3159]か
ら6ビット分読み取り、レジスタ番号「7」を得る。レ
ジスタ7に値「0x80」を戻す。
【0067】ここで、レジスタReg9やReg2の値
を、シミュレーション装置へのコマンド入力等で操作
し、再度0x1200番地からステップ実行、あるいは
実行することも可能である。現在の各値は以下の通りで
ある。
【0068】PC=0x11fc、NPC=0x120
0、FPC=0x11f8。データ格納テーブル番号N
=3、i=3159。
【0069】以上説明してきたように本実施形態のシミ
ュレーション装置では、実行した命令の取り消しを数回
以上繰り返し行え、更に、命令の種類によりトレース情
報として登録を行うようにしてあるので、命令を取り消
す処理を行うために必要な1命令当たりのトレース情報
を少なく抑え、これにより多くの命令のトレース情報を
保存できる。
【0070】第2の実施の形態 第1の実施形態に追加して、本実施形態で用いる用語の
説明をする。
【0071】本実施形態では、「A+B→C」「A−B
→C」「A×B→C」の演算を行う場合に、Aを「オペ
ランド1」、Bを「オペランド2」、Cを「オペランド
3」とする。
【0072】可逆演算命令とは、ある演算の実行後に、
オペランド2とオペランド3から、オペランド1を復元
できる命令をいうものとする。例えば、「A+B→A」
を可逆加算命令、「A−B→A」を可逆減算命令、「A
×B→A」を可逆乗算命令と呼ぶ。また、上記各命令に
対する復元命令を、それぞれ、減算、加算、除算とす
る。
【0073】本発明の第2の実施形態に係わるシミュレ
ーション装置の構成図を図7に示す。図7のシミュレー
ション装置は、本発明の第1の実施形態のシミュレーシ
ョン装置の実行処理部140に第2データ格納処理部1
45を備え、UNDO実行処理部150に、可逆演算処
理部153を備えた第2データ復元処理部152を備え
ていることを特徴としている。図7のシミュレーション
装置の処理の流れの概要は図2で示される。
【0074】次に、図8を用いて、図7の第2データ格
納処理部145の処理を説明する。第2データ処理部
は、「命令の種類」として第1の実施形態の第1データ
格納処理部で選別する「フラグ変化命令」、「フラグ非
変化命令」、「メモリ系命令」、「分岐先命令」に併せ
て、「可逆加算命令」、「可逆減算命令」、「可逆乗算
命令」であるかをチェックする機構を追加して持つこと
を特徴としている。
【0075】命令の種類が増えることで、第2の実施形
態のシミュレーション装置では、命令の種類を4ビット
の値で持つ。
【0076】ステップS81で、命令が「可逆加算命
令」であれば、VALに「0b1001」を与える。ス
テップS83で命令が「可逆減算命令」であれば、VA
Lに「0b1010」を与える。ステップS85で命令
が「可逆乗算命令」であれば、VALに「0b101
1」を与え、ステップS87へ移行する。同時にこれら
の命令がステップS87で分岐先命令であれば、VAL
と「0b0100」の論理和を取り、ステップS88で
DT[N][i]に戻り番地を登録し、iに命令番地サ
イズを加えてステップS90に移行する。分岐先命令で
ない場合にはステップS89でVALと「0b000
0」の論理和を取り、101でDT[N][i]にVA
Lを登録し、iに3加える。命令実行前のオペランド3
の値、レジスタ番号はテーブルに登録しない。
【0077】次に、図9を用いて、第2データ復元処理
部の処理を説明する。第2データ復元処理部は、命令の
種類を識別する際に、「フラグ変化命令」、「フラグ非
変化命令」、「メモリ系命令」、「分岐先命令」に併せ
て、「可逆加算命令」、「可逆減算命令」、「可逆乗算
命令」であるかを調べ、各命令の種類に対する処理を行
うことを特徴としている。
【0078】ステップS108で、4ビットで表現され
るVALの最上位ビットが「1」である時、ステップS
109でVALの下位2ビットが「0b10」であれ
ば、ステップS110で減算:「オペランド3−オペラ
ンド2」を実行し、結果をオペランド1に入れること
で、実行前の値を復元する。ステップS111でVAL
の下位2ビットが「0b10」であれば、ステップS1
12で、加算:「オペランド3+オペランド2」を実行
し、結果をオペランド1に入れることで、実行前の値を
復元する。ステップS113でVALの下位2ビットが
「0b11」であれば、ステップS114で除算「オペ
ランド3÷オペランド2」を実行し、結果の商をオペラ
ンド1に入れることで、実行前の値を復元する。
【0079】具体例として、図10のプログラムを第2
実施形態のシミュレーション装置で実行する処理の流れ
を、図8、図9に従って示す。
【0080】第1実施形態の例題の図6のプログラムを
実行した場合と同様、ここでも現在0x11fc番地ま
でのシミュレーションが終了し、データ格納テーブルは
サイズが3200、DT[3]を使用中、テーブル内の
カウンタiは3519を指しているとする。0x120
0番地の命令実行前のレジスタ:Reg2の値は11、
Reg9の値は14とする。
【0081】以下、0x1200番地から処理を続け
る。 ステップS83:0x1200番地の命令は可逆減算命
令であるので、ステップS82へ移行する。 ステップS82:VALに「0b1010」を与える。
ステップS87へ移行する。 ステップS87:分岐先命令でないので、ステップS8
9へ移行する。 ステップS89:VALと「0b000」を論理和を取
る。 ステップS90:DT[3][3159]から4ビット
でVALの値「0b1010」を登録し、iに4を加え
る。 この後、命令実行処理部76で、減算「Reg9−Re
g2」を実行し、実行結果をReg9に入れる。以下同
様に、0x1240番地の命令までをデータ格納テーブ
ルに登録すると、図11のようになる。データ格納テー
ブルDT[3]のサイズSIZE[3]は3245であ
る。従って、第2の実施形態によるテーブルサイズは8
5ビットとなり、第1の実施形態に比較してさらに小さ
い格納領域で済むこととなる。
【0082】次に、現在0x1200番地の命令の実行
が終了した時点とし、0x1200番地の命令をUND
Oする場合を、図9に従って説明する。データ格納テー
ブルDT[3]内の番地を示すiの値は「63番地」で
あるとする。
【0083】ステップS103:i(=63)から4を
引く。 ステップS104:DT[N][59]から4ビット読
み、読んだ値「0b1010」をVALに入れる。 ステップS105:VAL&「0b0100」は「0b
0100」でないので、ステップS107へ移行する。 ステップS107:FPCを更新する。 ステップS108:VALの最上位ビットは1であるの
で、ステップS109へ移行する。 ステップS109:「VAL&0b11」は「0b0
1」でないので、ステップS111へ移行する。 ステップS111:「VAL&0b11」は「0b1
0」であるので、ステップS112へ移行する。 ステップS112:0x1200番地の命令で、オペラ
ンド1はReg9で値が3、オペランド2はReg2で
値が11、オペランド3はReg9で値が3である。
「オペランド3+オペランド2」を実行し、実行結果
「14」をUNDO処理実行後のレジスタReg9に入
れる。
【0084】以上説明してきたように本実施形態のシミ
ュレーション装置では、実行した命令の取り消しを数回
以上繰り返し行え、更に、命令の種類によって保存する
内容を変えるようにしてある。これにより、命令を取り
消す処理を行うために必要な1命令当たりのトレース情
報を少なく抑え、これにより多くの命令のトレース情報
を保存できる。
【0085】第3の実施形態 本実施形態のシミュレーション装置の構成図を図12に
示す。本実施形態のシミュレーション装置は、記憶装置
230、ディスプレイ220、CPU200、キーボー
ド210に接続されたエミュレーション装置240に、
第1又は第2の実施形態で説明したシミュレーション装
置250を接続して構成されている。
【0086】図12のシミュレーション装置の処理の流
れを示すフローチャートを図13に示す。図13を用い
て、図12のシミュレーション装置の処理の流れの概要
を説明する。
【0087】キーボード210から「ステップ実行」、
「UNDOステップ実行」、「UNDO実行」等の入力
が指定されると、ステップS133でシミュレーション
装置250及びエミュレーション装置240への入力を
読み込む。ステップS134で入力が「実行」であれ
ば、エミュレーション装置240で、実行モジュールを
ブレークポイントに達するまで、あるいは実行モジュー
ルが終了するまで「ステップ実行」を繰り返す(ステッ
プS135)。
【0088】ステップS136で入力が「ステップ実
行」であれば、エミュレーション装置240で実行モジ
ュールをステップ実行する(ステップS137)。この
際、第1、第2の実施形態のシミュレーション装置に於
いて、命令実行前にデータ格納テーブルに「命令の種
類」と「命令実行により更新される値」、「分岐元命令
の番地」を登録したのと同様に、エミュレーション装置
に於いて、命令を実行する前に、エミュレーション装置
240内、もしくは記憶装置230にデータ格納テーブ
ルを用意し、このテーブルに「命令の種類」「命令実行
により更新される値」「分岐元命令の番地」を格納す
る。
【0089】ステップS138で入力が「UNDO実
行」であれば、シミュレーション装置250で、実行モ
ジュールをUNDOブレークポイント、或いは実行モジ
ュールの先頭に達するまで、「UNDOステップ実行」
を繰り返す(ステップS139)。
【0090】ステップS140で入力が「UNDOステ
ップ実行」であれば、シミュレーション装置250で実
行モジュールをUNDOステップ実行する(ステップS
141)。この際、第1、第2の実施形態のシミュレー
ション装置に於いて、データ格納テーブルから「命令の
種類」を取り出し、それにより各命令の命令実行前の
「レジスタ」「メモリ」「フラグ」の値を復元し、ま
た、分岐元の番地に戻るのと同様のデータ復元処理を行
う。
【0091】シミュレーション装置250に於いて、U
NDO実行、UNDOステップ実行を行った後に、再度
エミュレーション装置240に於いて、実行モジュール
を実行、ステップ実行する場合には、UNDO処理で戻
されたPCから続けて実行を再開する。
【0092】このように、本実施形態のシミュレーショ
ン装置によれば、命令が可逆演算命令である場合には、
その逆演算を行ってデータを復元するようにしてあるの
で、トレース情報を更に小さい領域とすることができ
る。
【0093】なお、上述したシミュレーション方法を実
現するためのプログラムは記録媒体に保存することがで
きる。この記録媒体をコンピュータシステムによって読
み込ませ、前記プログラムを実行してコンピュータを制
御しながら上述したしシミュレーション方法を実現する
ことができる。ここに、前記記録媒体とは、メモリ装
置、磁気ディスク装置、光ディスク装置等、プログラム
を記録することができるような装置が含まれる。
【0094】
【発明の効果】以上説明してきたように、本発明に係る
シミュレーション装置、シミュレーション方法、シミュ
レーションプログラムを記録した機械読み取り可能な記
録媒体によれば、実行した命令の取り消しを数回以上繰
り返し行え、命令を取り消す処理を行うために必要な1
命令当たりのトレース情報を少なく抑えることができ
る。
【図面の簡単な説明】
【図1】第1の実施形態のシミュレーション装置の構成
を示すブロック図である。
【図2】第1の実施形態のシミュレーション方法の処理
を示すフローチャートである。
【図3】第1データ格納処理部142の処理を示すフロ
ーチャートである。
【図4】第1データ復元処理部151の処理を示すフロ
ーチャートである。
【図5】第1の実施形態で用いる入力プログラムを示す
図である。
【図6】図5の入力プログラムを実行し、データ格納処
理を行ったデータ格納テーブルを示す図である。
【図7】第2の実施形態のシミュレーション装置の構成
を示すブロック図である。
【図8】第2データ格納処理部145の処理を示すフロ
ーチャートである。
【図9】第2データ復元処理部152の処理を示すフロ
ーチャートである。
【図10】第2の実施形態で用いる入力プログラムを示
す図である。
【図11】図10の入力プログラムを実行し、データ格
納処理を行ったデータ格納テーブルを示す図である。
【図12】第3の実施形態のシミュレーション装置の構
成を示すブロック図である。
【図13】第3の実施形態のシミュレーション方法の処
理を示すフローチャートである。
【図14】従来の第1のシミュレーション装置の構成を
示すブロック図である。
【図15】従来の第1のシミュレーション方法の処理を
示すフローチャートである。
【図16】(a)は演算命令を実行した場合、(b)は
分岐命令を実行した場合の処理を説明するための図であ
る。
【図17】従来の第2のシミュレーション装置の構成を
示すブロック図である。
【図18】従来の第2のシミュレーション装置で保存す
るトレース情報を示す図である。
【符号の説明】
100 実行モジュール 110 実行プログラム読み込み部 120 初期化処理部 130 コマンド入力読み込み部 140,170,180 実行処理部 141,171,181 デコード処理部 142 第1データ格納処理部 143,172,183 命令実行処理部 144,173,184 PC更新処理部 145 第2データ処理部 150,190 UNDO実行処理部 151 第1データ復元処理部 152 第2データ可逆演算処理部 160 結果出力部 182 トレース情報抽出部 191 トレース情報復元処理部 200 CPU 210 キーボード 220 CRT 230 記憶装置 240 エミュレーション装置 250 シミュレーション装置

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 命令を実行する際に、命令の種類、及
    び、前記命令の実行により更新されるレジスタに格納さ
    れる値、フラグの値、分岐元の番地の値、もしくはメモ
    リに格納される値を命令の種類により選択的にトレース
    情報として登録し、前記命令が実行される前の状態を復
    元する際には、命令の種類により前記トレース情報を用
    いて復元処理を実行することを特徴とするシミュレーシ
    ョン装置。
  2. 【請求項2】 シミュレーションを行う実行モジュール
    を読み込む実行モジュール読み込み部と、 シミュレーションに使用する変数の初期化処理を行う初
    期化処理部と、 シミュレーション処理に関するコマンド入力を読み込む
    コマンド入力読み込み部と、 このコマンド入力読み込み部の入力によりコマンドが正
    順コマンドの場合には、前記命令の種類、及び、前記命
    令の実行により更新されるレジスタに格納される値、フ
    ラグの値、分岐元の番地の値、もしくはメモリに格納さ
    れる値を命令の種類により選択的にトレース情報として
    登録処理を行う実行処理部と、 前記コマンド入力読み込み部の入力によりコマンドが逆
    順コマンドの場合には、命令の種類により前記トレース
    情報を用いて前記命令が実行される前の状態を復元する
    データ復元処理を行うUNDO実行処理部と、 を具備することを特徴とするシミュレーション装置。
  3. 【請求項3】 前記実行処理部は、 前記コマンド入力読み込み部の入力によりコマンドが正
    順コマンドの場合に前記実行モジュールを実行する際
    に、 現在実行する命令の種類、及び、 命令の実行によりレジスタの値が更新される命令におい
    ては、レジスタ番号とレジスタの値を、 前記命令の実行によりフラグの値が更新される命令にお
    いては、フラグの値を、 前記命令の実行によりメモリの値が更新される命令にお
    いては、メモリの番地とその値を、 前記命令の実行により分岐が発生した分岐先の命令にお
    いては、分岐元の番地をトレース情報として選択的に登
    録処理を行う第1のデータ格納処理部を備えることを特
    徴とする請求項2記載のシミュレーション装置。
  4. 【請求項4】 前記UNDO処理部は、 前記コマンド入力読み込み部の入力によりコマンドが逆
    順コマンドの際に前記実行モジュールを復元する場合
    に、 前記第1のデータ格納処理部にて格納された復元する命
    令の種類から、 前記命令の実行によりレジスタの値が更新された命令に
    おいては、前記第1のデータ格納処理部に登録された命
    令レジスタ番号のレジスタに、登録されたレジスタの値
    を復元し、 前記命令の実行によりフラグの値が更新される命令にお
    いては、前記第1のデータ格納処理部に登録されたフラ
    グの値を復元し、 前記命令の実行によりメモリの値が更新される命令にお
    いては、前記第1のデータ格納処理部に登録されたメモ
    リの番地に、登録されたメモリの値を復元し、 前記命令の実行により分岐が発生した分岐先の命令にお
    いては、分岐元の番地をプログラムカウンタに復元する
    第1のデータ復元処理部を備えることを特徴とする請求
    項3記載のシミュレーション装置。
  5. 【請求項5】 前記実行処理部は、前記コマンド入力読
    み込み部の入力によりコマンドが正順コマンドの際に前
    記実行モジュールを実行する場合に、現在実行する命令
    の種類の登録処理を行う第2のデータ格納処理部を備
    え、 前記UNDO処理部は、前記命令が可逆演算命令である
    場合に、逆演算を行うことで前記命令が実行される前の
    状態に復元する第2のデータ復元処理部を備えることを
    特徴とする請求項2記載のシミュレーション装置。
  6. 【請求項6】 エミュレーション装置で命令を実行する
    際に、その命令に関する情報を登録し、その情報を用い
    て前記命令が実行される前の状態を復元するシミュレー
    ション装置であって、 前記命令の種類、及び、前記命令の実行により更新され
    るレジスタに格納される値、フラグの値、分岐元の番地
    の値、もしくはメモリに格納される値を命令の種類によ
    り選択的にトレース情報として登録し、前記エミュレー
    ション装置で命令をが実行される前の状態を復元する際
    には、前記トレース情報を用いてデータ復元処理を行う
    ことを特徴とするシミュレーション装置。
  7. 【請求項7】 命令を実行する際に、 シミュレーションを行う実行モジュールを読み込む実行
    モジュール読み込み、 シミュレーションに使用する変数の初期化処理を行い、 シミュレーション処理に関するコマンド入力を読み込む
    コマンド入力を読み込み、 前記読み込まれたコマンドが正順コマンドの場合には、
    前記命令の種類、及び、前記命令の実行により更新され
    るレジスタに格納される値、フラグの値、分岐元の番地
    の値、もしくはメモリに格納される値を命令の種類によ
    り選択的にトレース情報として登録し、 前記読み込まれたコマンドが逆順コマンドの場合には、
    命令の種類により前記トレース情報を用いてデータ復元
    することを特徴とするシミュレーション方法。
  8. 【請求項8】 命令を実行する際に、その命令に関する
    情報を登録し、その情報を用いて前記命令が実行される
    前の状態を復元するシミュレーションプログラムを記録
    した機械読み取り可能な記録媒体において、 シミュレーションを行う実行モジュールを読み込む実行
    モジュール読み込みステップと、 シミュレーションに使用する変数の初期化処理を行う初
    期化処理ステップと、 シミュレーション処理に関するコマンド入力を読み込む
    コマンド入力読み込みステップと、 このコマンド入力読み込みステップの入力によりコマン
    ドが正順コマンドの場合には、前記命令の種類、及び、
    前記命令の実行により更新されるレジスタに格納される
    値、フラグの値、分岐元の番地の値、もしくはメモリに
    格納される値を命令の種類により選択的にトレース情報
    として登録処理を行う実行処理ステップと、 前記コマンド入力読み込みステップの入力によりコマン
    ドが逆順コマンドの場合には、命令の種類により前記ト
    レース情報を用いて前記命令が実行される前の状態を復
    元するデータ復元処理を行うUNDO実行処理ステップ
    と、 を含むことを特徴とするシミュレーションプログラムを
    記録した機械読み取り可能な記録媒体。
JP9021793A 1997-02-04 1997-02-04 シミュレーション装置、シミュレーション方法、及び、シミュレーションプログラムを記録した機械読み取り可能な記録媒体 Pending JPH10222397A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP9021793A JPH10222397A (ja) 1997-02-04 1997-02-04 シミュレーション装置、シミュレーション方法、及び、シミュレーションプログラムを記録した機械読み取り可能な記録媒体
US09/017,240 US6240544B1 (en) 1997-02-04 1998-02-02 Simulation system, simulation evaluation system, simulation method, and computer-readable memory containing a simulation program, having less trace information for reverse execution

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9021793A JPH10222397A (ja) 1997-02-04 1997-02-04 シミュレーション装置、シミュレーション方法、及び、シミュレーションプログラムを記録した機械読み取り可能な記録媒体

Publications (1)

Publication Number Publication Date
JPH10222397A true JPH10222397A (ja) 1998-08-21

Family

ID=12064943

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9021793A Pending JPH10222397A (ja) 1997-02-04 1997-02-04 シミュレーション装置、シミュレーション方法、及び、シミュレーションプログラムを記録した機械読み取り可能な記録媒体

Country Status (2)

Country Link
US (1) US6240544B1 (ja)
JP (1) JPH10222397A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003122595A (ja) * 2001-10-11 2003-04-25 Mitsubishi Electric Corp ソフトウェア障害解析方法及び装置
JP2005165600A (ja) * 2003-12-02 2005-06-23 Nec Corp トランザクション処理システム、トランザクション処理方法およびプログラム
JP2006350221A (ja) * 2005-06-20 2006-12-28 Funai Electric Co Ltd 音声認識機能付きav機器

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197671B2 (en) * 2002-06-07 2007-03-27 Arm Limited Generation of trace elements within a data processing apparatus
US20050049814A1 (en) * 2003-08-26 2005-03-03 Ramchandani Mahesh A. Binding a GUI element to a control in a test executive application
JP2005128692A (ja) * 2003-10-22 2005-05-19 Matsushita Electric Ind Co Ltd シミュレータ及びシミュレーション方法
US7328429B2 (en) * 2003-11-13 2008-02-05 Intel Corporation Instruction operand tracing for software debug
US8132159B1 (en) 2004-07-23 2012-03-06 Green Hills Software, Inc. Post-execution software debugger with event display
US8271955B1 (en) 2004-07-23 2012-09-18 Green Hille Software, Inc. Forward post-execution software debugger
US8015552B1 (en) 2004-07-23 2011-09-06 Green Hills Software, Inc. Post-execution software debugger with coverage display
US8136096B1 (en) * 2004-07-23 2012-03-13 Green Hills Software, Inc. Backward post-execution software debugger
US7653899B1 (en) 2004-07-23 2010-01-26 Green Hills Software, Inc. Post-execution software debugger with performance display
US7640539B2 (en) * 2005-04-12 2009-12-29 International Business Machines Corporation Instruction profiling using multiple metrics
US7657875B2 (en) * 2005-04-12 2010-02-02 International Business Machines Corporation System and method for collecting a plurality of metrics in a single profiling run of computer code
US20060273944A1 (en) * 2005-05-13 2006-12-07 Swoboda Gary L System With Trace Capability Accessed Through the Chip Being Traced
US7831960B2 (en) * 2006-06-08 2010-11-09 Oracle America, Inc. Configuration tool with multi-level priority semantic
US8555247B2 (en) 2006-10-13 2013-10-08 International Business Machines Corporation Systems and methods for expressing temporal relationships spanning lifecycle representations
US8438609B2 (en) * 2007-03-22 2013-05-07 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US9558019B2 (en) 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US20080234998A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Coordinating instances of a thread or other service in emulation
US20080235000A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing security control practice omission decisions from service emulation indications
US8495708B2 (en) * 2007-03-22 2013-07-23 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US8874425B2 (en) 2007-03-22 2014-10-28 The Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US20080235001A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing emulation decisions in response to software evaluations or the like
US9378108B2 (en) * 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
CN102789418B (zh) * 2012-06-27 2015-09-30 北京大学深圳研究生院 处理器功能仿真模型生成装置、方法及功能验证方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870607A (en) * 1996-09-11 1999-02-09 Brown University Research Foundation Method and apparatus for selective replay of computer programs
US6014515A (en) * 1997-05-29 2000-01-11 Hewlett-Packard Company Enhanced stack unwind facility

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003122595A (ja) * 2001-10-11 2003-04-25 Mitsubishi Electric Corp ソフトウェア障害解析方法及び装置
JP2005165600A (ja) * 2003-12-02 2005-06-23 Nec Corp トランザクション処理システム、トランザクション処理方法およびプログラム
JP2006350221A (ja) * 2005-06-20 2006-12-28 Funai Electric Co Ltd 音声認識機能付きav機器

Also Published As

Publication number Publication date
US6240544B1 (en) 2001-05-29

Similar Documents

Publication Publication Date Title
JPH10222397A (ja) シミュレーション装置、シミュレーション方法、及び、シミュレーションプログラムを記録した機械読み取り可能な記録媒体
EP2569694B1 (en) Conditional compare instruction
US6334176B1 (en) Method and apparatus for generating an alignment control vector
JPH0816391A (ja) コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法
US20220261253A1 (en) Vector index registers
CN101320324A (zh) 处理机装置及复合条件处理方法
JPH05150979A (ja) 即値オペランド拡張方式
US4417305A (en) Method for evaluating boolean expressions
US5546551A (en) Method and circuitry for saving and restoring status information in a pipelined computer
US5634047A (en) Method for executing branch instructions by processing loop end conditions in a second processor
US5390306A (en) Pipeline processing system and microprocessor using the system
CN110998512B (zh) 在数据处理设备中对连续值进行匹配
US5121474A (en) Bit string data processor using dynamically addressable bit locations in memory so overlapping strings do not destroy data in memory
US6606703B2 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
EP0397414A2 (en) Control device having a function of modifying a microinstruction
JP2793342B2 (ja) 演算処理装置
US6099585A (en) System and method for streamlined execution of instructions
JPH1091395A (ja) プロセッサ
US4977497A (en) Data processor
JP5732139B2 (ja) データ要素の条件付き選択
US5812845A (en) Method for generating an object code for a pipeline computer process to reduce swapping instruction set
US6144321A (en) Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images
KR880000817B1 (ko) 데이터 처리장치 및 그 방법
JPS623341A (ja) 条件付制御方法
JP2781779B2 (ja) 分岐制御回路