JP2886191B2 - 命令解析装置及び方法 - Google Patents

命令解析装置及び方法

Info

Publication number
JP2886191B2
JP2886191B2 JP1206576A JP20657689A JP2886191B2 JP 2886191 B2 JP2886191 B2 JP 2886191B2 JP 1206576 A JP1206576 A JP 1206576A JP 20657689 A JP20657689 A JP 20657689A JP 2886191 B2 JP2886191 B2 JP 2886191B2
Authority
JP
Japan
Prior art keywords
instruction
mark
block
memory
state 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
JP1206576A
Other languages
English (en)
Other versions
JPH0281140A (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.)
HP Inc
Original Assignee
HP Inc
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 HP Inc filed Critical HP Inc
Publication of JPH0281140A publication Critical patent/JPH0281140A/ja
Application granted granted Critical
Publication of JP2886191B2 publication Critical patent/JP2886191B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/25Testing of logic operation, e.g. by logic analysers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明はマイクロプロセッサ・ベース・システムの開
発に使用されるエミュレーション・ミステム(エミュレ
ータ)に関し、とくにデキューイング(dequeuing)動
作及びトレース動作中に解析の目的でエミュレータ内で
使用されるエミュレーション解析ステートにメモリ中で
追加マーキングを与えるための技術とハードウェアに関
する。
[従来技術及びその問題点] エミュレータは何かハードウェアができ上がる以前に
ソフトウェア(ターゲット・プログラム)をロードして
実行させる手段を設計者に提供することによって、マイ
クロプロセッサ・ベース・システム(ターゲット・シス
テム)の開発を支援するものである。エミュレータはタ
ーゲット・システムの一部または全部を置き換えること
ができる。エミュレータはシステムの開発のどの時点で
もターゲット・システムに接続できる。第6図はマイク
ロプロセッサ10と、メモリ12と、入出力装置14とを有す
る一般的なマイクロプロセッサ・ベース・システムのブ
ロック図である。第7図はエミュレータ18と、ホスト・
コンピュータ20とユーザ・ターミナル22とを有するエミ
ュレーション・システムのブロック図である。第8図は
マイクロプロセッサ・ベース・システムに接続されたエ
ミュレータのブロック図である。エミュレータはターゲ
ット・システム内のマイクロプロセッサ用のソケット1
6、第6図に示すマイクロプロセッサ10の代わりに挿入
され、ホスト・コンピュータ20によって支援される。エ
ミュレータはターゲット・システムにかわってマイクロ
プロセッサ機能及びメモリの一部を提供する。と言うの
も、ユーザはターゲット・システムのメモリ機能の一部
又は全部を持っていないかもしれないからである。開発
が完成に近づくにつれて、エミュレータによって実行さ
れる機能は次第にターゲット・システムに移行される。
開発中、エミュレータはターゲット・ソフトウェアの問
題についてのトラブルシューディングに有効な通常は利
用できないマイクロプロセッサ制御を更に追加提供す
る。このような制御としては、シングル・ステップ動
作、あるメモリ・アドレスについてのブレーク・ポイン
ト、不適正なメモリ・アドレスについてのブレーク・ポ
イント、内部レジスタの表示と修正等がある。
有用なマイクロプロセッサ制御のひとつに「命令解析
(instruction analysis)」と呼ばれるものがある。命
令解析は、ターゲット・プログラムの実行中のステート
の集まりを獲得する「トレース」と、マイクロプロセッ
サによるターゲット・プログラムの実行の後、獲得され
たステートの集まりの解析である逆アセンブルから成っ
ている。命令解析は実際の命令の過程を再現させようと
する。標準的な獲得のやり方では、実行に先立ってフェ
ッチされた命令を調べてステート情報を得る。この情報
は通常、単一のマイクロプロセッサ・サイクルのアドレ
ス、データ及び状態情報を含む。しかし、フェッチされ
る命令と実行される命令の間には著しい差があり得る。
命令のフェッチから命令の実行を再現させようとするプ
ロセスは「デキューイング(dequeuing)と呼ばれる。
従来教示されているデキューイング方法のひとつは
「ハードウェア・デキューイング」と呼ばれる。このデ
キューイング法は、マイクロプロセッサのキューを回路
によって再現させようとするものだった。この方法は達
成が困難であり、従って時間がかなり、費用が高くつ
き、必ずしも正確でない。各ハードウエア・デキューイ
ング部はそのターゲット・プロセッサのアーキテクチャ
に依拠しており、その結果エミュレータをうまく動作さ
せるという困難な作業は新たなエミュレータの設計ごと
にくりかえされる。この設計に必要なマイクロプロセッ
サ・アーキテクチャに関する重要な情報はしばしば入手
できず、他の多くのプロセッサは上述のやり方では再現
できないキューを持っている。
従来の別のデキューイング法は「ソフトウェア・デキ
ューイング」として知られている。このデキューイング
法では、トレースで捕獲された命令フェッチ情報をデコ
ードすることによってマイクロプロセッサのキューを再
現しようとする。この方法はハードウエア・デキューイ
ング法よりも、実現のコストが大幅に安いが、正確さの
点で重大な問題があった。不正確になる主要な理由は、
分岐命令や条件付き分岐命令のデキューイングにある。
というのは、プリフェッチ・キューを持つマイクロプロ
セッサ内で分岐が起こるといくつもの命令フェッチが使
われなくなってしまい、その結果命令フェッチの順序と
は異なる順序で命令が実行されるからである。
別の問題の原因として、命令には単語長、倍長語長、
又は長語長(4倍語長)のものがあり、また命令にはそ
れに関連するアーギュメント(オペランド)をもつもの
がある(たとえば、定数加算命令のような)ということ
がある。命令フェッチ情報の取り込みは、一般にユーザ
がターゲット・プログラム内に選択した位置から始まる
ので、最初の語が命令の先頭の語であるかどうかを判断
する方法がなかった。最初の語が命令の先頭の語ではな
い場合も、デキューイング部はそれにはかまわずそれを
命令の先頭語であると解釈してしまう。その結果、しば
しば、デコードされた命令フェッチ情報がプロセッサに
よってターゲット・プログラム中で実際に実行された命
令とはほとんど似ても似つかないものになってしまう。
その結果、ソフトウェア・デキューイング法はハードウ
ェア・デキューイング法よりもずっと安価だが、極めて
信頼性に欠けるものである。
[発明の目的] 本発明は上述した従来技術の問題点を解消し、正確な
命令解析を安価に行うことを目的とする。
[発明の概要] 本発明の一実施例によれば、ターゲット・プログラム
からの命令に対応する所定のコード化方式に従って決定
されたマークを保持する追加メモリをエミュレータに備
えることによってエミュレータ内の命令解析を改良して
いる。このマークは付加的なステート情報を命令解析中
にエミュレータのホスト・コントローラに与え、ターゲ
ット・プロセッサがターゲット・プログラムを実行中に
生成されたステート情報を、ターゲット・プロセッサ手
段によって実行されたテスト・プログラムに対応するス
テートのリストへもっと正確に変換する。
このマーキングシステムは任意のプロセッサに応用で
き、また最小の追加コストで最大の結果を達成できる任
意のコーディング方式に従ってよい。
マーキング用のメモリとそのために必要なソフトウェ
アのために余計にかかるコストは小さいので、本発明は
従来の比較的高価なハードウェア・デキューイング法よ
りもすぐれ、しかもその結果得られるトレース情報の精
度はハードウェア・デキューイング方式に近いので、従
来のソフトウェア・デキューイング法よりもまたすぐれ
ている。
[発明の実施例] 第1図はマーキング・ハードウェアを有するエミュレ
ータの好適な実施例のブロック図である。以下に各ブロ
ックの説明を行う。
ホスト・コントローラ・デコーディング・ブロック24 このブロックはホスト・コントローラ・コマンドを受
け取ってエミュレータ内の種々のブロック用の適切な信
号を生成する。例えば、マークをロードせよというコマ
ンド(load mark command)がこのブロックに送られる
と、このブロックはデュアル・ポート・アクセス制御ブ
ロック34に対しては書込みストローブを、アドレス選択
ブロック40に対してはマーク・アドレス・ブロック信号
を、またマーク・メモリ・ブロック38に対してはイネー
ブル信号をそれぞれ生成する。このブロックは更に、制
御レジスタ及びステータス・バッファ28からステータス
を読出し、また同じブロックの制御レジスタへ情報を書
込むことができる。
ROMモジュール26(エミュレータ固有) このブロックには、エミュレータの動作に必要なエミ
ュレータ固有の全てのソフトウェアが入っている。例え
ば、このROMにはマーキング固有の全てのソフトウェア
が、ブレークを起こしレジスタを読み出しエミュレータ
の構成を定めるためのソフトウェアと共に入っている。
制御レジスタ及びステータス・バッファ28 このブロッックはエミュレータを種々の動作モードに
構成するエミュレータ制御レジスタを含んでいる。例え
ば、これにはリセット信号が含まれており、この信号が
アサートされるとエミュレータがリセットされる。この
ブロックには更にステータス・レジスタも入っている。
このレジスタはホスト・コントローラ・デコーディング
・ブロック24が随時読み出してエミュレータがどの状態
にあるか(例えばフォアグラウンドで動作中であると
か、リセットされてバックグラウンド状態にある等)を
判定することができる。
解析部30 このブロックはプロセッサ52(80C196)が出したアド
レス、データ及びステータスを受け取って記憶し後に検
査する。このブロックは更に、マーク・メモリから出さ
れ、命令コードのロケーションに関する重要な情報を提
供するマークを受け取る。
ホスト・データ・バッファ/ラッチ32 このブロックはデュアルポート・メモリ・アクセス制
御ブロックと共働して、ホスト・コントローラが、本実
施例では80C196であるプロセッサ52がアクセス可能であ
るものと同じメモリをアクセスできるようにする。この
ブロックは適当な時点で利用できるようにホスト・コン
トローラ・データを各種のメモリ・ブロックにバッファ
しラッチする。
デュアル・ポート・アクセス制御ブロック34 このブロックはホスト・コントローラとプロセッサ52
からのアクセスを仲裁して、双方が例えばエミュレーシ
ョン・メモリ36やモニタ・メモリ42のような各種のメモ
リ・ブロックへアクセスできるようにする。このブロッ
クはメモリ・ブロックへの読み出しストローブ及び書き
込みストローブを生成し、かつ要求元のブロックへ戻す
必要なタイミング・ウエイト信号を生成する。
エミュレーション・メモリ36 このブロックはプロセッサがフォアグラウンド・エミ
ュレーション・メモリで動作中に使用されるメモリを含
んでいる。
マーク・メモリ38 このブロックはマーク・タグを保持するために使用さ
れるメモリを含んでいる。このメモリにロードするのは
ホスト・コントローラ・デコーディング・ブロック24だ
けであり(80C196プロセッサ52はこれに書込むことはで
きない)、読み出しを行うのは解析部30だけである。ホ
スト・コントローラ・デコーディング・ブロッック24は
マーク・メモリ38の特定のアドレスにマーク・タグをロ
ードするので、プロセッサ52が同一のアドレスを出力す
ると、所望のマーク・タグが解析部30へ送り出される。
マーク・メモリ38は、エミュレータが初期化されたと
き、またはエミュレーション・メモリ・ロケーションが
マークされた後に変更されると、空のタグ値(マークが
付けられていない)に初期化される。
アドレス選択ブロック40 このブロックはデュアル・ポート・アクセス制御ブロ
ック34と共働して、適切な時点に妥当なアドレスを各種
のメモリ・ブロックへ供給する。このブロックは書き込
むべき正しいメモリ・ブロック及びそのブロックの適切
なアドレスを選択する。
モニタ・メモリ42 このブロックはプロセッサがバックグラウンド・エミ
ュレーション・メモリで動作中に使用されるメモリを含
んでいる。このメモリはモニタ・コードを含み、またホ
スト・コントローラ・デコーディング・ブロック24との
通信には使用される通信用メモリも含んでいる。
モニタ・マーク・メモリ44 このブロックはモニタが適正に動作するために用いら
れるマークを含んでいる。このメモリ44内の信号はモニ
タにある間のフォアグラウンド・メモリへのアクセスを
制御し、かつモニタ(バックグラウンド)状態から脱け
出ることも制御する。
カバレージ・メモリ46 このメモリ・ブロックはアドレス・ロケーション・ア
クセス・ステータスに関する情報を含んでいる。これは
ホスト・コントローラ・デコーディング・ブロック24に
よってリセット可能である。
プロセッサ・データ・バッファ/ラッチ48 このブロックはデユアル・ポート・メモリ・アクセス
制御ブロック34と共働して、80C196プロセッサ52が、ホ
スト・コントローラ・デコーディング・ブロック24がア
クセスできるメモリと同じメモリをアクセスできるよう
にする。このブロックはプロセッサ・データを各種メモ
リ・ブロックにバッファしラッチして、適切な時点で使
用できるようにする。
プロセッサ・ストローブ発生部50 このブロックはプロセッサ・ストローブをインターセ
プトして、例えばデユアル・ポート・アクセス制御ブロ
ック34や解析部30用のタイミング・ストローブのよう
な、エミュレータ全体を通して利用できる更に適切なタ
イミングと機能を有するストローブを生成する。
プロセッサ52(80196) これはターゲット・プログラム、モニタ及び他の機能
を実行するターゲット・プロセッサである。
ブレーク制御ブロック54 このブロックは、所望の時点でユーザ・コードの実行
を中断させて、レジスタやメモリをモニタしたりあるい
は80C196プロセッサ52の現在の状態の変更を行うことが
できる。中断は、モニタ(バックグラウンド)状態を脱
け出るときに現在の状態を正しく復元できるように注意
深く行われる。
ポート複製ブロック54 このブロックはプロセッサ52の内部機能を複製するこ
とによって、80C196プロセッサ・ポート・ピンの動作を
シミュレートする。これによって、エミュレータのユー
ザ・プローブは機能上はあたかも80C196プロセッサ52の
ように動作でき他の機能は実際には内部的にはエミュレ
ータ中で行われている。
ユーザ・プローブ・バッファ/ラッチ58 このブロックはユーザのターゲット・システム(エミ
ュレータが挿入されるシステム)上に存在するコードの
実行ができるのに必要なメモリ・アドレス/データ・バ
ス制御を行う。
ユーザ・プローブ60 これはユーザのターゲット・システムに挿入する物理
的なユニットである。ユーザはそのターゲット・システ
ムから80C196プロセッサを取りはずし、その代わりにエ
ミュレータのユーザ・プローブ60を差し込む。
マーキングハードウェアの好適な実施例はマークを生
成しまたデコードするために4つの別個のソフトウェア
・ブロックを使用する。オプション・モジュールはマー
クを作成する際に使用される種々のオプションを定義す
るために用いられる。マークを生成するため、次の2つ
のモジュールが使用される。すなわち、アドレスの適当
な範囲をテストするための構文モジュール(syntax mod
ule)と、命令コード情報を抽出し、マークを生成しか
つメモリ中の好適なロケーションにマークを記憶するた
めの状態機械モジュールである。マーキング・ソフトウ
ェア逆アセンブリ・モジュールは第4のモジュールであ
り、マークを抽出し、それを使って逆アセンブルされた
命令コード情報を作成するために用いられる。
第2図はオプションモジュールのフローチャートを示
す。このモジュールは解析ステータスの逆アセンブルに
先立って逆アセンブラによって呼出されて、ユーザが選
択した各種オプションを実際に設定する。ユーザがモジ
ュールをアクセスする(ブロック62)と、オプション変
数をチェックし、逆アセンブリ構成に変化が生じたか否
かの判定を行う(ブロック64)。オプション変数がセッ
トされていない場合は、逆アセンブリ構成を変更せず
(ブロック68)、オプション・モジュールを終結する
(ブロック70)。オプション変数がセットされている場
合は変数を検査し、選択されたオプションが正しいか否
かの判定がなされる(ブロック66)。オプション変数が
不当にセットされている場合は、逆アセンブリ構成は変
更せず(ブロック72)、ユーザに対してエラーが表示さ
れ、オプション・モジュールを終結する(ブロック7
4)。オプション変数が正しくセットされている場合
は、適切な逆アセンブラ・フラグ変数を変更して(ブロ
ック76)、オプション・モジュールを終結する(ブロッ
ク78)。
第3図は構文モジュールのフローチャートを示してい
る。マーク・コマンドが実行されると構文モジュールが
呼出される(ブロック80)。先ずコマンドのパラメータ
を獲得し(ブロック82)、正当アドレス範囲についてチ
ェックする。(ブロック84)。アドレス範囲が正当でな
い場合は、コマンドをアボートし、ユーザに対してエラ
ーを指示し、構文モジュールを終結させる(ブロック8
6)。アドレス範囲が正当である場合は、マーキング・
ソフトウェア状態機械モジュールを呼出す(ブロック8
8)。状態機械モジュールが状態機械モジュール内の問
題によってエラー状態を戻した場合は、ユーザに対して
エラーを指示してこのコマンドをアポートする(ブロッ
ク90)。状態機械モジュールがエラーを戻さない場合
は、状態機械モジュールはアドレス範囲についてメモリ
内に適切なマークを置いた後に戻る。構文モジュールは
メモリの更に別の範囲がマークされるように指定されて
いるか否かを判定する(ブロック92)。メモリの更に別
の範囲がマークされることになっている場合は、この範
囲の正当性を判定する(ブロック84)。メモリの更に別
の範囲をマークすることになっていない場合は、構文モ
ジュールはユーザに対してエラーがないことを表示して
終結する(ブロック94)。
第4図はマーキング・ソフトウェア状態機械モジュー
ルのフローチャートを示す。このモジュールが前述の構
文モジュールによって呼出される(ブロック96)と、マ
ーク・ポインタをマークされるべきアドレスについての
先頭アドレス、すなわちスタート・アドレスに初期設定
する(ブロック98)。読み出しポインタもスタート・ア
ドレスに初期設定する(ブロック100)。命令コード情
報を、読み出しポインタによって指示されたメモリロケ
ーションから抽出し(ブロック102)、ルックアップ・
テーブルを参照することによって適切なマーク・コード
を生成する(ブロック104)。このルックアップ・テー
ブルはエミュレーション解析ステートのマーキングを行
うため予め定められたコーディング・スキーマを含んで
いる。本実施例については、プロセッサは最大サイズの
命令フェッチの場合2バイトを使用するものと想定さ
れ、3ビットが以下のような定義でマーキングのために
用いられる。
000− 空(NULL)(これまでにマーキングされていな
い、またはこれまでに作用を受けていない) 001− 低位バイトだけが命令コードである 010− 高位バイトだけが命令コードである 011− 両バイトとも命令コードである 100− どのバイトも命令コードではないがマーキング
されている(オペランド) 残りの定義は利用されない。命令コードが正しくない
場合は、マーク・コマンドはアボートされ、エラーが構
文モジュールに戻される(ブロック106)。命令コード
が正しいものである場合は、参照されたマークをマーク
・メモリ中のマーク・ポインタのロケーションにロード
する(ブロック108)。
抽出された命令コード情報が正当な非命令コード(つ
まりオペランド)である場合は、非命令コード・マーク
情報がマーク・メモリ中のマーク・ポインタの指すメモ
リ・ロケーションにロードされる(ブロック108)。ポ
インタをルックアップ・テーブルに基づく適切な数値だ
けインクリメントする。これらのインクリメント量は命
令コードとオペランド(もしあれば)のバイト・サイズ
によって決まる(ブロック110)。次にポインタをアド
レス範囲と比較して、マーク・コマンドを終結すべきか
否かが判定される(ブロック112)。アドレス範囲が終
了していない場合は、状態機械モジュールは、読み出し
ポインタの現在位置によって指定された読み出し位置か
ら命令コード情報を抽出するという以前のステップに戻
り(ブロック102)、上に述べたのと同様に動作を継続
する。アドレス範囲が終了している場合は、状態機械モ
ジュールはユーザに対して首尾よく完了した旨を指示
し、マーク・コマンドと状態機械モジュールを終結し
て、構文モジュールに戻る(ブロック114)。
第5図はマーキング・ソフトウェア逆アセンブリ・モ
ジュールのフローチャートである。このモジュールはト
レースが実行されるときにユーザによって呼出される
(ブロック116)。逆アセンブリ・モジュールは単一の
ステートを逆アセンブルするために使用される。逆アセ
ンブリ・モジュールは、一連のステートを逆アセンブル
するために他のモジュールからくり返し呼出される。逆
アセンブラが先ず初期状態にされる(ブロック118)。
オプション・フラグ・セッティングを抽出して検査し、
マーキングがこのコマンドについてイネーブルされてい
るかどうか判定する(ブロック120)。マーキングがイ
ネーブルされていない場合は、ソフトウェア・デキュー
イング(又はバス・モード逆アセンブラ)を適用して命
令コード又はオペランドを判定し(ブロック122)、ま
た逆アセンブリ・モジュールを終結させる(ブロック12
4)。このアドレスに対してマーキングがイネーブルさ
れている場合は、マーク情報が抽出される(ブロック12
6)。抽出されたマーク情報がこの特定のアドレスにマ
ークが存在しないことを示している場合は、前述のよう
にバス・モード逆アセンブリが適用される(ブロック12
2)。抽出されたマーク情報が、この特定のアドレスに
マークが存在することを示している場合は、マークを検
査し、それが非命令コード・マークか正規命令コード・
マークであるか、特別命令コード・マークであるかの判
定を行う(ブロック126)。マークが非命令コード・マ
ークである場合は、オペランド・フェッチ・ステータス
を示して(ブロック128)、モジュールを終結する(ブ
ロック130)。マークが例えば空命令コードマークのよ
うに特別命令コード・マークである場合は、判定及び命
令コードを示すために特別マーク逆アセンブリを適用し
(ブロック132)、モジュールを終結させる(ブロック1
34)。マークが標準の命令コード・マークである場合
は、命令コード逆アセンブリを適用して逆アセンブルし
た命令コードを表示し(ブロック136)、モジュールを
終結させる。(ブロック138)。
以下に示すマーキングの例では、コード(Cで書かれ
ている)のトレースと、次に実際に実行された命令シー
ケンスと、マーキングをイネーブルにしたときのトレー
ス・リスト表示と、従来のソフトウェア・デキューイン
グ法と同様な、マーキングをディスエーブルしたときの
トレース・リスト表示を示す。
以下に示した2つのトレース・リストは同一のプロセ
ッサ・ステップ動作のリストであり、第1のリストはマ
ーキングをイネーブルしたものであり、第2のリストは
マーキングをディスエーブルしたものである。トレース
されているコードを以下に示す。
CMPB 1C,#41;レジスタ1Cのバイトを値41H ;と比較 JE 42D ;等しい場合はアドレス42Dに ;ジャンプ CMPB 1C,#42;レジスタ1Cのバイトを値42H ;と比較 JE 433 ;等しい場合はアドレス433に ;ジャンプ SJMP 43F ;そうでない場合はアドレス43F ;にジャンプ 42D LDB 1D,#12 ;レジスタ1Dに値12Hをロード LD 1E,#0512;語レジスタ1Eに値512Hをロー ;ド SCALL 443 ;アドレス443にあるルーチン ;を呼出し 443 LD 20,#601 ;語レジスタ20に値601Hをロー ;ド 実際の命令シーケンスは以下の様になる。
CMPB 1C,#41;レジスタ1Cのバイトを値41H ;と比較 JE 42D ;比較が成功した場合は42Dに ;ジャンプ 42D LDB 1D,#12;レジスタに値12Hをロード LD 1E,#0512;語レジスタに値512Hをロード SCALL 443 ;アドレス443にあるルーチン ;を呼出し 443 LD 20,#601;語レジスタ20に値#601Hロー ;ド マーキングをイネーブルにした場のトレース・リスト
は、実行された実際の命令を適切な順序で極めて正確に
表現している。マーキング・タグはターゲット・プロセ
ッサ装置によって実行されるテスト・プログラムに対応
する状態リストへの変換中に使用するための追加状態情
報を提供する。
マーキングをイネーブルにした場合のトレース・リス
トとは対称的に、マーキングンをディステーブルにした
場合のトレース・リストは、状態情報を実行された命令
のリストへと正しく変換するための充分な情報が不足し
ている。マーキングをディステーブルしたトレースは、
行4での非命令コードフェッチで開始されると、実行さ
れないバイトを実行されたAND命令であるとして誤って
ディスアセンブルし、最初のJE(等しい場合にジャンプ
せよ)命令を見落としてしまう。トレース・リストは結
局行8で正しい状態に回復し、LDB(レジスタにロード
せよ)命令を正しく識別する。しかし、行13と14で再度
誤りが起る。その結果、トレース・リストがいつ信頼で
き、いつ信頼できないかをユーザが知ることは困難であ
る。マーキングを使用すれば、完璧ではないにせよ、信
頼性が大幅に高まる。
[発明の効果] 以上詳細に説明したように、本発明によれば、簡単な
構成でトレース結果の信頼性を大幅に向上させることが
できる。
【図面の簡単な説明】
第1図は本発明の一実施例のブロック図、第2図ないし
第5図は本発明の一実施例の動作を説明するフローチャ
ート、第6図ないし第8図は本発明を適用することので
きるシステムを説明するための図である。 10:マイクロプロセッサ 12:メモリ 14:入出力装置 16:ソケット 18:エミュレータ 20:ホスト・コンピュータ 22:ユーザ・ターミナル 24:ホスト・コントローラ・デコーディング・ブロック 26:ROMモジュール 28:制御レジスタ及びステータス・バッファ 30:解析部 32:ホスト・データ・バッファ/ラッチ 34:デュアル・ポート・アクセス制御ブロック 36:エミュレーション・メモリ 38:マーク・メモリ 40:アドレス選択ブロック 42:モニタ・メモリ 44:モニタ・マーク・メモリ 46:カバレージ・メモリ 48:プロセッサ・データ・バッファ/ラッチ 50:プロセッサ・ストローブ発生部 52:プロセッサ 54:ブレーク制御ブロック 56:ポート複製ブロック 58:ユーザ・プローブ・バッファ/ラッチ 60:ユーザ・プローブ

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】以下の(a)ないし(d)を含み、命令解
    析に使用され、複数の個別命令を含む被試験プログラム
    からのエミュレーション状態にマーキングし、被試験プ
    ログラムの少なくとも一部に対応する命令のリストをこ
    のようなエミュレーション状態から再生する命令解析装
    置: (a)前記被試験プログラム中の前記個別命令に対応す
    るマークをストアするメモリ; (b)前記被試験プログラムを実行し、前記被試験プロ
    グラム中の前記個別命令の実行に対応するエミュレーシ
    ョン状態情報を送信するターゲット・プロセッサ; (c)前記ターゲット・プロセッサ及び前記メモリに接
    続され、前記ターゲット・プロセッサからの前記エミュ
    レーション状態情報を収集するとともに、前記メモリか
    ら前記マークを読み出すアナライザ; (d)前記メモリ及び前記アナライザに接続され、前記
    アナライザ中に収集される前記エミュレーション状態情
    報を解析するため、前記エミュレーション・プロセッサ
    による実行に先立って予め定められたコーディング方式
    に従って前記個別命令に対応するマークを生成するホス
    ト・コントローラ:前記ホスト・コントローラは前記マ
    ークを前記メモリ中にストアするとともに、前記アナラ
    イザによって収集されたエミュレーション状態情報を前
    記被試験プログラムの少なくとも一部についての個別の
    命令に対応する命令のリストへとデキューイングし、前
    記デキューイングは前記状態情報及び特定の命令に対応
    する前記マークに基づいて行われ、特定の命令に対応し
    たエミュレーション状態情報についてデキューイングが
    生起しようとするときには当該特定の命令に対応したマ
    ークが使用される。
  2. 【請求項2】前記エミュレーション状態情報は、アドレ
    ス、データ及びステータス情報を含むことを特徴とする
    請求項1記載の命令解析装置。
  3. 【請求項3】前記エミュレーション状態情報は命令コー
    ド情報を含み、前記ホスト・コントローラは前記命令コ
    ード情報に関するマークを発生することを特徴とする請
    求項1記載の命令解析装置。
  4. 【請求項4】以下の(a)ないし(d)のステップを設
    け、トレースを行って獲得されたところの、被試験プロ
    グラムで実行されたそれぞれの命令についてのエミュレ
    ーション状態情報に基づいて、実行された命令のリスト
    を得る命令解析方法: (a)コードのロケーションを表すマークをそれぞれの
    命令に対応付ける; (b)前記マークをストアする; (c)前記トレースを行う; (d)前記トレースによって得られたエミュレーション
    状態情報を前記ストアされたマークを参照して逆アセン
    ブルする。
  5. 【請求項5】前記エミュレーション状態情報は、アドレ
    ス、データ及びステータス情報を含むことを特徴とする
    請求項4記載の命令解析方法。
JP1206576A 1988-08-09 1989-08-09 命令解析装置及び方法 Expired - Lifetime JP2886191B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/230,807 US5073968A (en) 1988-08-09 1988-08-09 Method and apparatus for marking emulation analysis states
US230,807 1988-08-09

Publications (2)

Publication Number Publication Date
JPH0281140A JPH0281140A (ja) 1990-03-22
JP2886191B2 true JP2886191B2 (ja) 1999-04-26

Family

ID=22866657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1206576A Expired - Lifetime JP2886191B2 (ja) 1988-08-09 1989-08-09 命令解析装置及び方法

Country Status (4)

Country Link
US (1) US5073968A (ja)
EP (1) EP0354654B1 (ja)
JP (1) JP2886191B2 (ja)
DE (1) DE68924507T2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581695A (en) * 1990-05-09 1996-12-03 Applied Microsystems Corporation Source-level run-time software code debugging instrument
US5228039A (en) * 1990-05-09 1993-07-13 Applied Microsystems Corporation Source-level in-circuit software code debugging instrument
US5488688A (en) * 1994-03-30 1996-01-30 Motorola, Inc. Data processor with real-time diagnostic capability
US5446876A (en) * 1994-04-15 1995-08-29 International Business Machines Corporation Hardware mechanism for instruction/data address tracing
TW247949B (en) * 1994-11-10 1995-05-21 Motorola Inc Data processor with transparent operation during a background mode and method therefor
US5941995A (en) * 1997-05-20 1999-08-24 Hewlett-Packard Company Reloading state analyzer
US5938778A (en) * 1997-11-10 1999-08-17 International Business Machines Corporation System and method for tracing instructions in an information handling system without changing the system source code
US5968188A (en) * 1998-03-10 1999-10-19 Grammar Engine System for providing real-time code coverage
DE10021517C1 (de) * 2000-05-03 2002-01-10 Kuelps Heinz Juergen Zurückdrängung und Verminderung der Hochtemperatur-Halogen-Korrosion in Verbrennungsanlagen durch den Einsatz von Wirkstoffen sowie Wirkstoff-Mischungen
US7409711B1 (en) * 2002-12-24 2008-08-05 The Chamberlain Group, Inc. Method and apparatus for troubleshooting a security gate system remotely
US7290174B1 (en) * 2003-12-03 2007-10-30 Altera Corporation Methods and apparatus for generating test instruction sequences
US7403887B1 (en) 2004-01-14 2008-07-22 Microsoft Corporation Emulated memory management

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4205370A (en) * 1975-04-16 1980-05-27 Honeywell Information Systems Inc. Trace method and apparatus for use in a data processing system
US4419368A (en) * 1978-06-05 1983-12-06 Syntex (U.S.A.) Inc. Naphthoquinone anti-psoriatic agents
US4694420A (en) * 1982-09-13 1987-09-15 Tektronix, Inc. Inverse assembly method and apparatus
US4488228A (en) * 1982-12-03 1984-12-11 Motorola, Inc. Virtual memory data processor
JPS59133610A (ja) * 1983-01-19 1984-08-01 Omron Tateisi Electronics Co プログラマブルコントロ−ラ
US4636940A (en) * 1983-03-31 1987-01-13 Hewlett-Packard Company Logic analyzer using source program or other user defined symbols in the trace specification and the trace listing
US4636941A (en) * 1983-05-24 1987-01-13 Iwatsu Electric Co., Ltd. Method and apparatus for analysis of microprocessor operation
US4598364A (en) * 1983-06-29 1986-07-01 International Business Machines Corporation Efficient trace method adaptable to multiprocessors
JPS60238944A (ja) * 1984-05-14 1985-11-27 Mitsubishi Electric Corp トレ−ス用記憶装置
JPS62214443A (ja) * 1986-03-17 1987-09-21 Fanuc Ltd エミユレ−シヨン実行方法
FR2598001B1 (fr) * 1986-04-23 1990-11-02 Dassault Electronique Dispositif pour le controle de logiciels industriels, en particulier de logiciels operant en temps reel, et procede correspondant
US4802165A (en) * 1986-10-08 1989-01-31 Enteleki, Inc. Method and apparatus of debugging computer programs

Also Published As

Publication number Publication date
EP0354654A3 (en) 1991-07-17
DE68924507D1 (de) 1995-11-16
DE68924507T2 (de) 1996-04-04
EP0354654B1 (en) 1995-10-11
JPH0281140A (ja) 1990-03-22
US5073968A (en) 1991-12-17
EP0354654A2 (en) 1990-02-14

Similar Documents

Publication Publication Date Title
JP4190114B2 (ja) マイクロコンピュータ
EP0241946B1 (en) Information processing system
EP1130518B1 (en) Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
US6915416B2 (en) Apparatus and method for microcontroller debugging
KR100350568B1 (ko) 디버그기능을수행하기위한데이타처리시스템및방법
JP3846939B2 (ja) データプロセッサ
US6052774A (en) Apparatus and method for identifying exception routines indicated by instruction address issued with an instruction fetch command
US20020147965A1 (en) Tracing out-of-order data
JP2776602B2 (ja) 試験システムおよび命令実行シーケンス判定方法
JP2886191B2 (ja) 命令解析装置及び方法
US6247146B1 (en) Method for verifying branch trace history buffer information
US6173395B1 (en) Mechanism to determine actual code execution flow in a computer
JP2006127553A (ja) プログラムのテスト及びデバッギングが容易な中央処理装置
US20050273666A1 (en) Information processing apparatus and test method for programs
US11409636B2 (en) Processor including debug unit and debug system
US5185745A (en) Scan path diagnostic method
US20030061020A1 (en) Test and debug processor and method
US20060259750A1 (en) Selectively embedding event-generating instructions
US20020129336A1 (en) Automatic symbol table selection in a multi-cell environment
EP1209567B1 (en) Method and system for real time debugging a source program, particularly for DSP
US20050086454A1 (en) System and methods for providing a debug function built-in type microcomputer
CN115758963A (zh) 芯片eda仿真中打印信息的处理装置、方法及系统
US7886194B2 (en) Event-generating instructions
KR950001057B1 (ko) 마이크로 프로세서(micro processor)
JPH06282599A (ja) 論理検証方法および装置