JPH1011315A - インサーキットエミュレータ装置およびインサーキットエミュレーション方法 - Google Patents

インサーキットエミュレータ装置およびインサーキットエミュレーション方法

Info

Publication number
JPH1011315A
JPH1011315A JP8167273A JP16727396A JPH1011315A JP H1011315 A JPH1011315 A JP H1011315A JP 8167273 A JP8167273 A JP 8167273A JP 16727396 A JP16727396 A JP 16727396A JP H1011315 A JPH1011315 A JP H1011315A
Authority
JP
Japan
Prior art keywords
instruction
program
break
register
monitor
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.)
Withdrawn
Application number
JP8167273A
Other languages
English (en)
Inventor
Mamoru Tsunoda
田 護 角
Yasuo Yamada
田 泰 生 山
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.)
JFE Steel Corp
Original Assignee
Kawasaki Steel 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 Kawasaki Steel Corp filed Critical Kawasaki Steel Corp
Priority to JP8167273A priority Critical patent/JPH1011315A/ja
Publication of JPH1011315A publication Critical patent/JPH1011315A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

(57)【要約】 【課題】モニタープログラムを簡単化することができる
インサーキットエミュレータ装置およびインサーキット
エミュレーション方法を提供すること。 【解決手段】モニタープログラムを格納するエミュレー
ションメモリと、ブレークが発生したエミュレーション
メモリのアドレスに元々格納されていたユーザープログ
ラムの本来の命令を格納するためのレジスタと、切替信
号に応じて、エミュレーションメモリの出力およびレジ
スタの出力のいずれか一方を選択出力するマルチプレク
サと、モニタープログラムからユーザープログラムに復
帰した後の最初の命令として、ブレークが発生したアド
レスに置換されているブレークを発生する命令の代わり
に、ユーザープログラムの本来の命令を出力するように
制御する切替信号を生成するコントロール回路とを有す
ることにより、上記課題を解決する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サ(以下、CPUという)を用いた装置の開発支援ツー
ルの1つであるインサーキットエミュレータ装置(以
下、ICEという)およびこのICEによるインサーキ
ットエミュレーション方法に関するものである。
【0002】
【従来の技術】従来より、様々な種類のCPUが開発さ
れており、このCPUを用いたシステム(以下、ターゲ
ットという)に係わるハードウェアおよびソフトウェア
を開発するための開発支援ツールの1つとしてICEが
知られている。このICEには、CPUの代わりにIC
Eのプローブを差し込んで動作させる一般的なICE
と、ユーザープログラムが格納されるROMの代わりに
ICEのプローブを差し込んで動作させるROMICE
と呼ばれるものとが存在する。
【0003】ICEは、基本的に、エミュレーションメ
モリおよびエミュレーションメモリ内で動作するモニタ
ープログラムを有している。モニタープログラムは、例
えばユーザープログラムの実行を一旦停止させるアドレ
スを指定するブレークポイントの設定および解除、ユー
ザーメモリ内で動作するユーザープログラムの任意のア
ドレス(番地)からの実行、停止およびステップ実行、
エミュレーションメモリやCPUの内部レジスタへのラ
イトおよび参照等の機能を有している。
【0004】ICEにおいては、例えばユーザープログ
ラムの任意のアドレスにブレークポイントを設定した
後、ユーザープログラムを任意のアドレスから、前記ブ
レークポイントが設定された所定のアドレスまで実行さ
せると、ブレークポイントにおいてブレークが発生し、
CPUは、ユーザープログラムからモニタープログラム
に移行してモニタープログラムが実行される。以後、ユ
ーザーの指示に応じて上記各種の機能が実行される。
【0005】このように、ユーザープログラムの任意の
アドレスにブレークポイントを設定し、ブレークポイン
トにおいてブレークが発生したときにユーザープログラ
ムからモニタープログラムへ移行することを、一般的に
モニター導入と呼んでいる。このモニター導入の方法に
ついては、大別して、上記ブレークを発生させるために
専用のハードウェアを必要とする方法、専用のハードウ
ェアを必要とせず、ソフトウェアのみでモニター導入さ
せる方法の2種類がある。
【0006】ハードウェアブレークには、例えばハード
ウェアにより別の命令をCPUに取り込ませる命令すり
替え法、割り込みを発生させる方法、メモリ空間を切り
替える方法等の方法が用いられているが、いずれも高価
で回路が複雑になるという欠点がある。一方、ソフトウ
ェアブレークにおいては、ユーザープログラムの任意の
アドレスの命令を、リスタート命令等のブレークを発生
させるための命令に置換してモニター導入させるという
のが一般的な方法である。
【0007】ソフトウェアブレークを利用するICEに
おいては、安価で回路も簡単に構成することができると
いう利点がある。しかしながら、ソフトウェアブレーク
においては、以下に説明するように、ソフトウェアによ
ってブレークを発生させているため、当然、モニタープ
ログラムが複雑化して、そのプログラムサイズが増大し
てしまい、モニタープログラムを格納するエミュレーシ
ョンメモリが増大するという問題点がある。
【0008】以下に、上記ソフトウェアブレークを利用
するICEの問題点について、具体的なプログラムを挙
げて説明する。なお、下記プログラム1〜4は、汎用的
な8ビットCPUの代表例としてZ80CPUのアセン
ブリ言語のニーモニックを用いて記述してある。
【0009】
【0010】上記プログラム1は、ポート(port)
の値をレジスタAに入力し、レジスタAの値と数値「0
1」とのANDを取って、その結果が「0(Z)」の場
合には、loopにジャンプ(JR)して以下同様に上
記動作を繰り返し行い、逆に、「1」の場合には、
「…」で示される以降のプログラムを実行する、即ち、
ポートの値の最下位ビットが「1」になるまで上記動作
を繰り返し実行するというプログラムである。
【0011】プログラム1において、例えば命令「AN
D 01」にブレークポイントを設定した後、即ち、モ
ニタープログラムによって、命令「AND 01」がブ
レークを発生させる命令(以下、ブレーク命令という)
に置換された後、モニタープログラムからプログラム1
に移行させると、まず、命令「IN A,(por
t)」が実行され、次いで、ブレーク命令に置換された
命令「AND 01」のところでブレークが発生してモ
ニター導入される。
【0012】ここで、ユーザーは、モニタープログラム
において、CPUのレジスタを参照する等の所定の作業
を行った後、再度、モニタープログラムからプログラム
1に移行させて、プログラム1のブレークが発生したと
ころの続きから、即ち、命令「AND 01」から実行
させるとする。
【0013】しかしながら、命令「AND 01」がブ
レーク命令に置換されたままの状態では、モニタープロ
グラムからプログラム1に移行した後、何も実行されず
に再度モニター導入されてしまうし、ブレーク命令に置
換されたところを本来の命令「AND 01」に再置換
して、モニタープログラムからプログラム1に移行させ
ると、プログラム1は、ブレークが発生されずに最後ま
で実行されてしまうという問題点がある。
【0014】このため、ソフトウェアブレークを利用す
るモニタープログラムにおいては、一旦、ブレーク命令
に置換されたところを本来の命令「AND 01」に置
換するとともに、その次の命令「JR Z,loop」
のところを強制的にブレーク命令に置換した後、モニタ
ープログラムからプログラム1に移行させることによっ
て、まず、命令「AND 01」を実行させ、ブレーク
命令に置換された命令「JR Z,loop」のところ
で再度モニター導入させる。
【0015】次いで、モニタープログラムによって、再
度、命令「AND 01」のところをブレーク命令に置
換するとともに、ブレーク命令に置換された命令「JR
Z,loop」のところを本来の命令に戻した後、モ
ニタープログラムからプログラム1に移行させることに
よって、命令「JR Z,loop」を実行させ、以下
同様にして、プログラム1を実行させるというように、
プログラム内にループ命令がある場合には、モニタープ
ログラムが複雑化してしまう。
【0016】
【0017】上記プログラム2は、レジスタBに数値
「100(10進数)」を入力し、レジスタBの値を1
つ減算して、その結果が「0」の場合には、「…」で示
される以降のプログラムを実行し、逆に、「0」でない
場合には、waitにジャンプして以下同様に上記動作
を繰り返し実行する、即ち、レジスタBに数値「10
0」を設定して、レジスタBの値を1つずつ減じながら
レジスタBが「0」になるまでウェイトするというプロ
グラムである。
【0018】プログラム2において、例えば命令「wa
it:DJNZ wait」にブレークポイントを設定
した後、モニタープログラムからプログラム2に移行さ
せると、同様に、ブレーク命令に置換された命令「wa
it:DJNZ wait」のところでブレークが発生
してモニター導入される。ここで、再度、プログラム2
のブレークが発生したところの続きから実行させようと
すると、上記プログラム1の場合と全く同様の問題が発
生する。
【0019】しかしながら、プログラム2においては、
命令「wait:DJNZ wait」の次の命令は、
命令「wait:DJNZ wait」であるため、即
ち、この命令は自分自身に戻ってくるセルフジャンプ命
令になることがあるため、プログラム1のように、ブレ
ークが発生したところを本来の命令に戻すとともに、そ
の次の命令のところを強制的にブレーク命令に置換する
ことができず、上記問題点を解決することはできない。
【0020】このように、セルフジャンプ命令になるこ
とがある命令の場合、例えばICEの仕様上、セルフジ
ャンプ命令のところにブレークポイントを設定すること
はできないというようにしてしまうか、あるいは、セル
フジャンプ命令を実行せずに別の命令に置換する、例え
ば上記DJNZであれば、レジスタBから1を減じる命
令「DEC B」と、条件ジャンプ命令「JR NZ,
wait」とを組み合わせて、擬似的に同じ結果が得ら
れるようにする必要がある。
【0021】
【0022】上記プログラム3は、レジスタBCに最初
に設定された数値「10」から、1ずつ減算した数値を
順次加算することによって、「10+9+…+2+1」
を計算し、その結果をレジスタHLに保持するというプ
ログラムである。プログラム3においては、レジスタH
Lに数値「0」を、レジスタBCに数値「10(10進
数)」を入力した後、サブルーチンSUMがコール(C
ALL)される。
【0023】サブルーチンSUMにおいては、まず、レ
ジスタHLの値にレジスタBCの値を加えて、その結果
をレジスタHLに入力した後、レジスタBCの値を1つ
減じ、次いで、レジスタBの値をレジスタAに入力し、
レジスタAの値とレジスタCの値のORを取って、その
結果が「0」でない(NZ)場合には、サブルーチンS
UMを再びコールして以下同様に上記動作を繰り返し実
行し、逆に、「0」の場合には、命令「RET」によっ
て復帰する。
【0024】このように、サブルーチンSUMにおいて
は、レジスタBCの値が「0」になるまで、命令「CA
LL NZ,SUM」によって合計9回、自分自身を再
帰的にサブルーチンコールしているため、プログラム3
において、レジスタBCの値が「0」となって命令「R
ET」が実行されると、サブルーチンSUM内の命令
「CALL NZ,SUM」に対応する命令「RET」
の復帰先は、命令「CALL NZ,SUM」の次の命
令である命令「RET」自身になる。
【0025】従って、例えば命令「RET」にブレーク
ポイントを設定した場合には、命令「RET」の復帰先
が自分自身、即ち、セルフジャンプ命令になってしまう
ため、上記プログラム2の場合と全く同じ問題が発生す
る。
【0026】(プログラム4) DB DD LD A, H …
【0027】Z80CPUには、未定義命令といって、
公式にはサポートされていないが、動作する命令が存在
している。例えば、命令「LD A,IXh 」は未定義
命令の1つであって、インデックスレジスタIXの上位
側の8ビットをレジスタAに入力する命令である。プロ
グラム4は、アセンブリ言語のニーモニックとしては未
定義の上記未定義命令「LD A,IXh 」を、アセン
ブリ言語の別のニーモニックで疑似的に定義したもので
ある。
【0028】ところで、ソフトウェアブレークを利用す
るICEのモニタープログラムは、上記プログラム1〜
3のような問題点を回避するために、ブレークポイント
が設定されたアドレスの命令を判断して、ブレーク命令
に置換される前の元の命令に応じて処理を決定してい
る。このため、モニタープログラムには、例えばZ80
CPUのあらゆる命令に対応することができるように、
個々の命令に対する処理方法が定義されている。
【0029】しかしながら、上記プログラム4のよう
に、未定義命令のアドレスにブレークポイントを設定し
てしまうと、モニタープログラムでは未定義命令を判別
することができず、対応することができないという問題
点がある。また、このことは、例えば独自にCPUを開
発していて、その上位バージョンのCPUにおいて新し
い命令を追加したときにも同様のことが言え、モニター
プログラムが改良されるまで、これらの命令にブレーク
ポイントを設定することはできない。
【0030】以上のように、ソフトウェアブレークを利
用するICEのモニタープログラムは、CPUのあらゆ
る命令に対応する必要があるため、複雑化するとともに
そのプログラムサイズも増大してしまう。このため、エ
ミュレーションメモリが増大するという問題点がある
し、あるいはエミュレーションメモリとユーザーメモリ
とを兼用して、モニタープログラムをユーザープログラ
ムと同じユーザーメモリに格納する場合には、ユーザー
プログラム領域が圧迫されてしまうという問題点があっ
た。
【0031】
【発明が解決しようとする課題】本発明の目的は、前記
従来技術に基づく問題点をかえりみて、簡単な回路構成
のハードウェアを付加することによって、モニタープロ
グラムを簡単化することができるインサーキットエミュ
レータ装置およびインサーキットエミュレーション方法
を提供することにある。
【0032】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、ブレークポイントが設定されたユーザー
プログラムの命令を、ブレークを発生させる命令に置換
して前記ブレークを発生させるモニタープログラムによ
って、マイクロプロセッサを用いる装置および前記ユー
ザープログラムのエミュレーションを行うインサーキッ
トエミュレータ装置であって、前記モニタープログラム
を格納するエミュレーションメモリと、前記ブレークが
発生した前記エミュレーションメモリのアドレスに元々
格納されていた前記ユーザープログラムの本来の命令を
格納するためのレジスタと、切替信号に応じて、前記エ
ミュレーションメモリの出力および前記レジスタの出力
のいずれか一方を選択出力するマルチプレクサと、前記
モニタープログラムから前記ユーザープログラムに復帰
した後の最初の命令として、前記ブレークが発生したア
ドレスに置換されている前記ブレークを発生する命令の
代わりに、前記ユーザープログラムの本来の命令を出力
するように制御する前記切替信号を生成するコントロー
ル回路とを有することを特徴とするインサーキットエミ
ュレータ装置を提供するものである。
【0033】また、本発明は、モニタープログラムによ
って、ユーザープログラムのブレークポイントが設定さ
れた全てのアドレスの命令を、ブレークを発生させる命
令に置換して前記ブレークを発生させるインサーキット
エミュレーション方法であって、前記ブレークが発生し
て、前記ユーザープログラムから前記モニタープログラ
ムに移行した後、前記ブレークポイントが設定された全
てのアドレスの前記ブレークを発生させる命令を前記ユ
ーザープログラムの本来の命令に置換し、前記ユーザー
プログラムの前記ブレークが発生したアドレスの前記本
来の命令をレジスタに格納した後、前記ユーザープログ
ラムのブレークポイントが設定されていた全てのアドレ
スの前記本来の命令を、前記ブレークを発生させる命令
に置換し、前記モニタープログラムから前記ユーザープ
ログラムの前記ブレークが発生したアドレスに復帰した
後の最初の命令として、前記ブレークが発生したアドレ
スの前記ブレークを発生させる命令を実行する代わり
に、前記レジスタに格納した前記ユーザープログラムの
本来の命令を実行することを特徴とするインサーキット
エミュレーション方法を提供するものである。
【0034】
【発明の実施の形態】以下に、添付の図面に示す好適実
施例に基づき、本発明のインサーキットエミュレータ装
置およびインサーキットエミュレーション方法について
詳細に説明する。
【0035】図1は、本発明のインサーキットエミュレ
ータ装置の一実施例のブロック図である。図示例のイン
サーキットエミュレータ装置(以下、ICEという)1
0は、図示例においては、マイクロプロセッサ(以下、
CPUという)12を使用する装置の開発を支援するも
のであって、基本的に、エミュレーションメモリ14、
レジスタ16、マルチプレクサ(以下、MUXという)
18およびコントロール回路20を有して構成されてい
る。
【0036】また、CPU12の出力は、データバスD
Bを経由してエミュレーションメモリ14およびレジス
タ16に入力されている。エミュレーションメモリ14
の出力はMUX18の入力端子0に入力され、同様に、
レジスタ16の出力はMUX18の入力端子1に入力さ
れている。MUX18の選択端子にはコントロール回路
20の出力である切替信号SELが入力され、MUX1
8の出力はデータバスDBを介してCPU12に入力さ
れている。
【0037】ICE10において、エミュレーションメ
モリ14は、モニタープログラムを格納するための、例
えばRAM,ROM等のメモリであって、本実施例にお
いては、開発している装置の既存のユーザーメモリと兼
用して、モニタープログラムとユーザープログラムとを
ユーザーメモリの中に格納するものとする。エミュレー
ションメモリ14として専用のメモリを設けてももちろ
んよいが、ユーザーメモリと兼用することにより、IC
E10の装置構成を削減することができる。
【0038】また、レジスタ16は、ブレークが発生し
たアドレス(番地)の本来の命令、即ち、リスタート命
令等のブレークを発生するための命令(以下、ブレーク
命令という)に置換される前のユーザープログラムの本
来の命令を保持するものである。なお、レジスタ16の
サイズは、ブレーク命令のワード長に応じて設けられ、
例えばユーザープログラムの本来の命令が3ワードで
も、置換するブレーク命令が1ワードであれば、レジス
タ16のサイズも同様に1ワードでよい。
【0039】レジスタ16には、ブレークが発生してユ
ーザープログラムからモニタープログラムに移行(以
下、モニター導入という)した後、モニタープログラム
によって、ユーザープログラムのブレークが発生したア
ドレスに本来格納されているべき命令が書き込まれる。
一方、レジスタ16に格納された命令は、モニタープロ
グラムからユーザープログラムに移行した後の最初の命
令として、ブレーク命令の代わりにユーザープログラム
の命令として実行される。
【0040】MUX18は、コントロール回路20から
出力される切替信号SELに応じて、エミュレーション
メモリ14の出力およびレジスタの出力のいずれか一方
を選択出力するマルチプレクサであって、図示例におい
ては、切替信号SELがローレベル(0)のときにエミ
ュレーションメモリ14の出力が選択出力され、逆に、
切替信号SELがハイレベル(1)のときにレジスタ1
6の出力が選択出力される。
【0041】コントロール回路20は、モニタープログ
ラムからユーザープログラムに移行した後の最初の命令
として、レジスタ16に格納した命令が選択出力される
ように切替信号SELを生成するものである。ここで、
図2に、上記コントロール回路20の一実施例の構成回
路図を示す。同図において、コントロール回路20は、
NANDゲート22、フリップフロップ(FF)24お
よびANDゲート26を有して構成されている。
【0042】また、NANDゲート22の反転入力端子
にはメモリリクエストMEMRQ ̄およびリード信号R
D ̄が入力され、FF24のデータ入力端子、クロック
端子およびリセット端子には、それぞれモニター信号M
ON、NANDゲート22の出力およびリセット信号R
ESET ̄が入力されている。ANDゲート26の反転
入力端子および入力端子にはモニター信号およびFF2
4の出力が入力され、ANDゲート26からは選択信号
SELが出力されている。
【0043】図示例のコントロール回路20において、
リセット信号RESET ̄は、FF24をリセットする
ための信号であって、例えばシステムリセット信号等が
用いられる。メモリリクエストMEMRQ ̄は、CPU
12がエミュレーションメモリ14をアクセスをすると
きにアクティブ状態であるローレベルとされる信号であ
って、同様に、リード信号RD ̄は、CPU12がエミ
ュレーションメモリ14をリードするときにアクティブ
状態であるローレベルとされる信号である。
【0044】また、モニター信号MONは、通常、IC
E10には必ず設けられている信号であって、現在、C
PU12がモニタープログラムを実行しているのか、あ
るいは、ユーザープログラムを実行しているのかを区別
するためのものである。図示例においては、CPU12
は、モニター信号MONがハイレベル(1)のときにモ
ニタープログラムを実行中であり、逆に、モニター信号
MONがローレベル(0)のときにユーザープログラム
を実行中であるとする。
【0045】図示例のコントロール回路20において、
まず、ICE10の起動直後は、モニタープログラムが
起動されて、モニター信号MONがハイレベルになると
ともに、リセット信号RESET ̄が一旦ローレベルに
なって、FF24の出力はローレベルになる。従って、
ANDゲート26の出力、即ち、切替信号SELもロー
レベルになり、マルチプレクサ18からはエミュレーシ
ョンメモリ14の出力が選択出力される。
【0046】リセット信号RESET ̄がハイレベルに
なった後、CPU12は、モニタープログラムを実行さ
せるために、エミュレーションメモリ14に対してリー
ド動作を行う。これにより、メモリリクエストMEMR
Q ̄およびリード信号RD ̄にローレベルのパルスが出
力されて、NANDゲート22からローレベルのパルス
が出力され、FF24の出力は、モニター信号MONの
ハイレベルをラッチしてハイレベルになる。
【0047】次いで、ユーザーによって、モニタープロ
グラムからユーザープログラムへの移行が指示される
と、モニター信号MONがローレベルになり、従って、
モニター信号MONのローレベルおよびFF24の出力
のローレベルによって切替信号SELはハイレベルにな
り、マルチプレクサ18からはレジスタ16の出力が選
択出力される。ここで、CPU12は、ユーザープログ
ラムを実行させるために、エミュレーションメモリ14
に対してリード動作を行う。
【0048】まず、1回目のリード動作において、マル
チプレクサ18からは、切替信号SELのハイレベルに
応じてレジスタ16の出力が選択出力され、CPU12
に読み込まれる。その後、FF24の出力は、モニター
信号MONのローレベルをラッチしてローレベルにな
り、切替信号SELもローレベルになる。従って、2回
目以降のリード動作において、マルチプレクサ18から
は、切替信号SELのローレベルに応じてエミュレーシ
ョンメモリ14の出力が選択出力される。
【0049】このように、図示例のコントロール回路2
0においては、モニタープログラムからユーザープログ
ラムに移行した後の最初の命令の1ワードだけがレジス
タ16から読み出され、これ以降の命令が全てエミュレ
ーションメモリ14から読み出されるように切替信号S
ELを生成する。なお、コントロール回路20によっ
て、レジスタ16から読み出されるワード数は、レジス
タ16のサイズと同じように、ブレーク命令のワード長
に応じて設けられる。
【0050】本発明のインサーキットエミュレータ装置
は以上のように構成される。次に、図3〜図10に示さ
れる概念図を参照しながら、本発明のインサーキットエ
ミュレーション方法について説明する。なお、本実施例
においては、ユーザーメモリをエミュレーションメモリ
14として兼用しており、モニタープログラムは、エミ
ュレーションメモリ14に予めロードされているものと
する。
【0051】まず、モニタープログラムによって、エミ
ュレーションメモリ14にユーザープログラムをロード
する。図3に示されるように、ユーザープログラムのア
ドレス0000〜0002h番地には、Z80CPUの
命令「LD SP,0000h」に対応する機械語命令
である「31h」,「00h」,「00h」が、アドレ
ス0100〜0101h番地には、命令「wait:D
JNZ,wait」の機械語命令である「10h」,
「FEh」が、アドレス0200h番地には、命令「J
P (HL)」の機械語命令である「E9h」がそれぞ
れ格納されている。
【0052】なお、命令「LD SP,0000h」
は、レジスタSPに数値「0000h(16進数)」を
入力する命令であって、この命令により、スタックポイ
ンタはアドレス0000h番地となる。また、命令「w
ait:DJNZ,wait」は、従来技術の説明で述
べたように、レジスタBの値を1つ減算して、その結果
が「0」でない間はwaitにジャンプする命令であ
り、命令「JP (HL)」は、レジスタHLの値のア
ドレスにジャンプする命令である。
【0053】次いで、モニタープログラムによって、ユ
ーザープログラムの実行開始アドレスの命令の内、ブレ
ーク命令のワード長に相当するワード数をレジスタ16
に格納する。図4に示されるように、ユーザープログラ
ムの実行開始アドレスがアドレス0000h番地である
とすると、エミュレーションメモリのアドレス0000
h番地に格納されている機械語命令「31h」をレジス
タ16に格納する。
【0054】次いで、ブレークポイントを設定する全て
のアドレスの命令をブレーク命令に置換し、命令のすり
替えを行う。図5に示されるように、本実施例において
は、アドレス0100h番地、0200h番地をブレー
クポイントに設定するものとし、リスタート命令として
命令「RST 38」を使用する。従って、アドレス0
100h番地、0200h番地は、命令「RST 3
8」の機械語命令である「FFh」に置換される。
【0055】なお、ブレーク命令となるリスタート命令
「RST 38」は、ジャンプ命令の1つであって、ア
ドレス38番地にジャンプする1ワードの命令である。
本実施例においては、アドレス38番地には、同様にジ
ャンプ命令が予め格納されており、このジャンプ命令に
よってモニター導入が行われるものとする。また、リス
タート命令「RST 38」に置換されるアドレスおよ
び置換される前の命令は、例えばエミュレーションメモ
リ14の別のアドレスに退避しておく。
【0056】次いで、モニタープログラムからユーザー
プログラムに移行して、その実行開始アドレスからプロ
グラムを実行させる。このとき、モニタープログラムか
らユーザープログラムに移行した直後の最初の命令は、
エミュレーションメモリ14の実行開始アドレスからで
はなく、レジスタ16から読み出されてCPU12に読
み込まれる。また、これ以降の命令は、通常通り、エミ
ュレーションメモリ14から読み出される。
【0057】図6に示されるように、コントロール回路
20から出力される切替信号SELに応じて、ユーザー
プログラムの最初の命令「LD SP,0000h」の
機械語命令である「31h」,「00h」,「00h」
の内、リスタート命令「RST 38」の機械語命令
「FFh」のワード長に相当する1ワード分の機械語命
令「31h」はレジスタ16から、残りの機械語命令
「00h」,「00h」はエミュレーションメモリ14
から、それぞれマルチプレクサ18を介して読み出され
る。
【0058】次いで、ユーザープログラムがブレークポ
イントに到達したときにブレークが発生してモニター導
入が行われる。
【0059】図7に示されるように、ユーザープログラ
ムがアドレス0100h番地に到達したとき、アドレス
0100h番地に本来あるべき命令「wait:DJN
Z,wait」の機械語命令である「10h」,「FE
h」の内、機械語命令「10h」の代わりに置換された
リスタート命令「RST 38」の機械語命令である
「FFh」が読み出され、モニター導入が行われる。こ
のとき、ブレークが発生したアドレスは、例えばスタッ
クポインタの値から得ることができる。
【0060】次いで、モニタープログラムによって、ま
ず、全てのブレークポイントを解除する、即ち、ブレー
クポイントが設定された全てのアドレスのブレーク命令
をユーザープログラムの本来の命令に戻す。図8に示さ
れるように、ブレークポイントであるアドレス0100
h番地、0200h番地の内容は、リスタート命令「R
ST 38」の機械語命令である「FFh」から、それ
ぞれユーザープログラムの本来の命令の機械語命令であ
る「10h」、「E9h」に置換される。
【0061】ここで、モニタープログラムは、ユーザー
のコマンド入力待機状態になり、ユーザーは、モニター
プログラムによって、例えばCPU12の内部レジスタ
およびエミュレーションメモリ14へのデータの書き込
みおよびデータの参照等の各種の機能を実行することが
できる。
【0062】次いで、ユーザーによって、例えばモニタ
ープログラムからユーザープログラムのブレークが発生
したアドレスへの復帰が指示されると、ユーザープログ
ラムのブレークが発生したアドレスに再置換された本来
の命令の内、ブレーク命令のワード長に相当するワード
数をレジスタ16に格納した後、ブレークポイントが設
定されていた全てのアドレスの命令をブレーク命令に再
置換し、命令のすり替えを行う。
【0063】図9に示されるように、ブレークが発生し
たアドレス0100h番地に格納されている命令「wa
it:DJNZ,wait」の機械語命令である「10
h」,「FEh」の内、機械語命令「10h」をレジス
タ16に格納した後、ブレークポイントが設定されてい
たアドレス0100h番地、0200h番地の機械語命
令「10h」、「E9h」をともに命令「RST 3
8」の機械語命令である「FFh」に置換する。
【0064】その後、モニタープログラムからユーザー
プログラムのブレークが発生したアドレスに復帰して、
そのアドレスからプログラムを再実行させる。このと
き、モニタープログラムからユーザープログラムに移行
した直後の最初の命令は、エミュレーションメモリ14
のブレークが発生したアドレスからではなく、レジスタ
16から読み出されてCPU12に読み込まれる。ま
た、これ以降の命令は、通常通り、エミュレーションメ
モリ14から読み出される。
【0065】図9においては、コントロール回路20か
ら出力される切替信号SELに応じて、復帰後のユーザ
ープログラムの最初の命令「wait:DJNZ,wa
it」の機械語命令である「10h」,「FEh」の
内、リスタート命令「RST38」の機械語命令「FF
h」のワード長に相当する1ワード分の機械語命令「1
0h」はレジスタ16から、残りの機械語命令「FE
h」はエミュレーションメモリ14から、それぞれマル
チプレクサ18を介して読み出される。
【0066】ここで、命令「wait:DJNZ,wa
it」を実行したときに、例えばレジスタBの値が
「0」でない場合には、アドレス0101h番地からア
ドレス0100h番地へのジャンプが発生する。このと
き、図10に示すように、今度はレジスタ16からでは
なく、エミュレーションメモリ14のアドレス0100
h番地から、リスタート命令「RST 38」の機械語
命令「FFh」が読み出されることによってモニター導
入が行われ、以後同様に動作する。
【0067】
【発明の効果】以上詳細に説明した様に、本発明のイン
サーキットエミュレータ装置およびインサーキットエミ
ュレーション方法によれば、モニタープログラムからユ
ーザープログラムに移行した後の最初の命令を、エミュ
レーションメモリからではなくレジスタから読み出して
実行するようにしたため、例えば上記実施例のように、
セルフジャンプを行う命令のところにブレークポイント
を設定した場合であっても、何らモニタープログラムを
修正することなく、ユーザープログラムのエミュレーシ
ョンを正しく実行することができる。
【0068】また、本発明のインサーキットエミュレー
タ装置によれば、割り込み等のCPUの信号には変更が
不要なので、余分なピンや信号を追加接続する必要がな
く、特に、ROMICEにおいて、既存のシステムを生
かしながら本発明を実施することができるため、ソフト
ウェアブレークを容易に実現することができる。さら
に、本発明によれば、モニタープログラムを簡単化する
ことができるため、そのプログラムサイズを削減するこ
とができ、エミュレーションメモリのサイズが増大する
ことがない、ユーザーメモリをエミュレーションメモリ
として兼用するときに、ユーザープログラム領域を圧迫
することがない等の効果がある。
【図面の簡単な説明】
【図1】 本発明のインサーキットエミュレータ装置の
一実施例のブロック図である。
【図2】 コントロール回路の一実施例の構成回路図で
ある。
【図3】 本発明のインサーキットエミュレーション方
法を説明する一実施例の概念図である。
【図4】 本発明のインサーキットエミュレーション方
法を説明する一実施例の概念図である。
【図5】 本発明のインサーキットエミュレーション方
法を説明する一実施例の概念図である。
【図6】 本発明のインサーキットエミュレーション方
法を説明する一実施例の概念図である。
【図7】 本発明のインサーキットエミュレーション方
法を説明する一実施例の概念図である。
【図8】 本発明のインサーキットエミュレーション方
法を説明する一実施例の概念図である。
【図9】 本発明のインサーキットエミュレーション方
法を説明する一実施例の概念図である。
【図10】 本発明のインサーキットエミュレーション
方法を説明する一実施例の概念図である。
【符号の説明】
10 インサーキットエミュレータ装置(ICE) 12 マイクロプロセッサ(CPU) 14 エミュレーションメモリ 16 レジスタ 18 マルチプレクサ(MUX) 20 コントロール回路 22 NANDゲート 24 フリップフロップ(FF) 26 ANDゲート

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】ブレークポイントが設定されたユーザープ
    ログラムの命令を、ブレークを発生させる命令に置換し
    て前記ブレークを発生させるモニタープログラムによっ
    て、マイクロプロセッサを用いる装置および前記ユーザ
    ープログラムのエミュレーションを行うインサーキット
    エミュレータ装置であって、 前記モニタープログラムを格納するエミュレーションメ
    モリと、前記ブレークが発生した前記エミュレーション
    メモリのアドレスに元々格納されていた前記ユーザープ
    ログラムの本来の命令を格納するためのレジスタと、切
    替信号に応じて、前記エミュレーションメモリの出力お
    よび前記レジスタの出力のいずれか一方を選択出力する
    マルチプレクサと、前記モニタープログラムから前記ユ
    ーザープログラムに復帰した後の最初の命令として、前
    記ブレークが発生したアドレスに置換されている前記ブ
    レークを発生する命令の代わりに、前記ユーザープログ
    ラムの本来の命令を出力するように制御する前記切替信
    号を生成するコントロール回路とを有することを特徴と
    するインサーキットエミュレータ装置。
  2. 【請求項2】モニタープログラムによって、ユーザープ
    ログラムのブレークポイントが設定された全てのアドレ
    スの命令を、ブレークを発生させる命令に置換して前記
    ブレークを発生させるインサーキットエミュレーション
    方法であって、 前記ブレークが発生して、前記ユーザープログラムから
    前記モニタープログラムに移行した後、前記ブレークポ
    イントが設定された全てのアドレスの前記ブレークを発
    生させる命令を前記ユーザープログラムの本来の命令に
    置換し、前記ユーザープログラムの前記ブレークが発生
    したアドレスの前記本来の命令をレジスタに格納した
    後、前記ユーザープログラムのブレークポイントが設定
    されていた全てのアドレスの前記本来の命令を、前記ブ
    レークを発生させる命令に置換し、前記モニタープログ
    ラムから前記ユーザープログラムの前記ブレークが発生
    したアドレスに復帰した後の最初の命令として、前記ブ
    レークが発生したアドレスの前記ブレークを発生させる
    命令を実行する代わりに、前記レジスタに格納した前記
    ユーザープログラムの本来の命令を実行することを特徴
    とするインサーキットエミュレーション方法。
JP8167273A 1996-06-27 1996-06-27 インサーキットエミュレータ装置およびインサーキットエミュレーション方法 Withdrawn JPH1011315A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8167273A JPH1011315A (ja) 1996-06-27 1996-06-27 インサーキットエミュレータ装置およびインサーキットエミュレーション方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8167273A JPH1011315A (ja) 1996-06-27 1996-06-27 インサーキットエミュレータ装置およびインサーキットエミュレーション方法

Publications (1)

Publication Number Publication Date
JPH1011315A true JPH1011315A (ja) 1998-01-16

Family

ID=15846693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8167273A Withdrawn JPH1011315A (ja) 1996-06-27 1996-06-27 インサーキットエミュレータ装置およびインサーキットエミュレーション方法

Country Status (1)

Country Link
JP (1) JPH1011315A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005284542A (ja) * 2004-03-29 2005-10-13 Nec Electronics Corp プログラムデバッグ方法、デバッグプログラムおよびプログラムデバッグ装置
JP2013192786A (ja) * 2012-03-21 2013-09-30 Sophia Co Ltd 遊技機
JP2019177204A (ja) * 2019-06-25 2019-10-17 株式会社ユニバーサルエンターテインメント 遊技機
JP2021118878A (ja) * 2017-06-14 2021-08-12 株式会社ユニバーサルエンターテインメント 遊技機
JP2021118877A (ja) * 2017-06-14 2021-08-12 株式会社ユニバーサルエンターテインメント 遊技機

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005284542A (ja) * 2004-03-29 2005-10-13 Nec Electronics Corp プログラムデバッグ方法、デバッグプログラムおよびプログラムデバッグ装置
JP2013192786A (ja) * 2012-03-21 2013-09-30 Sophia Co Ltd 遊技機
JP2021118878A (ja) * 2017-06-14 2021-08-12 株式会社ユニバーサルエンターテインメント 遊技機
JP2021118877A (ja) * 2017-06-14 2021-08-12 株式会社ユニバーサルエンターテインメント 遊技機
JP2019177204A (ja) * 2019-06-25 2019-10-17 株式会社ユニバーサルエンターテインメント 遊技機

Similar Documents

Publication Publication Date Title
US4879646A (en) Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging
US4866665A (en) Break points system in a software monitor where entry address of break point routing equals op code of call instruction
US6467083B1 (en) Debugging system for computer program, method for checking target program and information storage medium for storing checking program
US4323963A (en) Hardware interpretive mode microprocessor
US4274138A (en) Stored program control system with switching between instruction word systems
US6611909B1 (en) Method and apparatus for dynamically translating program instructions to microcode instructions
US4780819A (en) Emulator system utilizing a program counter and a latch coupled to an emulator memory for reducing fletch line of instructions stored in the emulator memory
JPH0193837A (ja) デバッグ用マイクロプロセッサ
US4747045A (en) Information processing apparatus having an instruction prefetch circuit
US4394729A (en) Jump return stack
US6839869B2 (en) Trace control circuit for tracing CPU operation in real time
JP2513417B2 (ja) 情報処理装置
US5963741A (en) Information processor which rewrites instructions in program to dynamically change program structure and method therefor
JPH1011315A (ja) インサーキットエミュレータ装置およびインサーキットエミュレーション方法
US6233675B1 (en) Facility to allow fast execution of and, or, and test instructions
US5819081A (en) Method of executing a branch instruction of jumping to a subroutine in a pipeline control system
KR950001057B1 (ko) 마이크로 프로세서(micro processor)
JP3097602B2 (ja) データ処理装置
JP2000029508A (ja) プログラマブルコントローラ
KR20080044652A (ko) Cpu에서의 스택을 이용한 디버깅 방법
KR20020029921A (ko) 정적 기억 장치 내의 마이크로 명령어를 수정하는 방법 및장치
JP2666737B2 (ja) トレースメモリ内蔵マイクロプロセッサおよびトレース方法
US5864691A (en) Central processing unit with a selector that bypasses circuits where processing is not required
JPH06222917A (ja) 電子装置
JP2701799B2 (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20030902