(57)【特許請求の範囲】
【請求項１】
ターゲットシステム上で動作するマイクロコンピュータのプログラム開発を行うためにエミュレーションプログラムによって前記マイクロコンピュータを動作させるエミュレータ装置において、
前記マイクロコンピュータのシステムバスに接続され、実行中の前記エミュレーションプログラムがリードアクセスをしたか、ライトアクセスをしたかを判別するリード・ライトアクセス判別手段と、
前記リード・ライトアクセス判別手段による判別の結果、実行中の前記エミュレーションプログラムが前記マイクロコンピュータのメモリアドレスをライトアクセスした場合に、ライトアクセスしたアドレスに対応づけてライトアクセスがあったことを示す情報を格納するアクセス情報格納手段と、
前記リード・ライトアクセス判別手段による判別の結果、実行中の前記エミュレーションプログラムが前記マイクロコンピュータのメモリアドレスをリードアクセスしたときに、リードアクセスされたアドレスにライトアクセスがあったことを示す情報が前記アクセス情報格納手段に格納されていない場合には前記エミュレーションプログラムの実行をブレークするブレーク手段と、
前記マイクロコンピュータのシステムバスに接続され、前記エミュレーションプログラムが実行中に前記マイクロコンピュータから前記システムバスに出力されたデータの値が「０」であるか否かを判別するデータ判別手段とを具備し、
前記アクセス情報格納手段は、
前記リード・ライトアクセス判別手段による判別の結果、実行中の前記エミュレーションプログラムが前記マイクロコンピュータのメモリアドレスをライトアクセスした場合であって、前記データ判別手段の判別の結果、前記ライトアクセスによって書き込まれたデータの値が「０」である場合には、ライトアクセスしたアドレスと対応づけて、値が「０」のデータが前記ライトアクセスしたアドレスに書き込まれた回数に関する情報を格納し、
前記ブレーク手段は、
前記リード・ライトアクセス判別手段による判別の結果、実行中の前記エミュレーションプログラムが前記マイクロコンピュータのメモリアドレスをリードアクセスしたときに、前記アクセス情報格納手段に格納されている情報が前記リードアクセスされたアドレスに値が「０」のデータが１回しか格納されていないことを示す場合には前記エミュレーションプログラムをブレークすることを特徴とするエミュレータ装置。
【請求項２】
エミュレーションプログラムに規定された大域変数のアドレス範囲のアドレスに実行中のエミュレーションプログラムによってリードアクセスまたはライトアクセスが発生したか否かを判別するアドレス判別手段を有し、アクセス情報格納手段は前記アドレス判別手段が前記大域変数の前記アドレス範囲のアドレスに対してライトアクセスした場合に、ライトアクセスしたアドレスと対応づけてライトアクセスがあったことを示す情報を格納することを特徴とする請求項１記載のエミュレータ装置。
【請求項３】
アクセス情報格納手段はマイクロコンピュータのメモリアドレスに１対１に対応したアドレスを有するアクセス情報メモリを含み、実行中のエミュレーションプログラムが前記マイクロコンピュータのメモリアドレスをライトアクセスした場合にライトアクセスしたアドレスに対応する、前記アクセス情報メモリのアドレスにライトアクセスがあったことを示す情報を格納することを特徴とする請求項１または請求項２記載のエミュレータ装置。
【請求項４】
アクセス情報格納手段はエミュレーションプログラムが規定する各々の大域変数が占めるアドレス範囲毎にライトアクセスがあったことを示す情報を格納することを特徴とする請求項１または請求項２記載のエミュレータ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、マイクロコンピュータ等のプログラム開発を支援するエミュレータ装置に関するものである。
【０００２】
【従来の技術】
マイクロコンピュータ等のプログラム開発では、開発途中のプログラムの誤りを発見して修正するためにエミュレータ装置が開発支援システムとして用いられる。
【０００３】
図４は従来のエミュレータ装置を用いたプログラム開発システムの構成を示す図である。図において、１０はホストコンピュータ、１１はエミュレータ装置、１２は開発の対象となるマイクロコンピュータを搭載したターゲットシステム、１３はホストコンピュータ１０とエミュレータ装置１１との間でデータを送受信するための通信ケーブル、１４はエミュレータ装置１１をターゲットシステム１２に電気的に接続するプローブをそれぞれ示している。なお、プローブの先端にはターゲットシステム１２で動作するマイクロコンピュータ１４ａが設けられてターゲットシステム１２のソケットに挿入して接続される。
【０００４】
次に動作について説明する。
ホストコンピュータ１０上でデバッグソフトウエアを起動し、そのソフトウエアを操作することによってエミュレータ装置１１を制御する。なお、ホストコンピュータ１０はエミュレータ装置１１を制御する前にプログラムを作成するためにも使用する。
【０００５】
マイクロプロセッサのプログラム開発では、プログラミング言語を使用してプログラムを記述する。プログラムの記述ではホストコンピュータ１０上で動作するワードプロセッサを使用する。ワードプロセッサによって作成したデータファイルからマイクロプロセッサが直接実行可能な機械語情報を得るためにはコンパイラまたはアセンブラ等の翻訳用ソフトウエアツールを用いる。この翻訳用ソフトウエアツールはワードプロセッサによって作成したデータファイルを読み込み、プログラム記述に対応した機械語データを作成して出力する。
【０００６】
エミュレータ装置１１はマイクロコンピュータのプログラム開発において作成したプログラムの誤り等を発見するデバッグ作業をする場合に使用する。エミュレータ装置１１の主要な機能には、プログラムの実行機能とプログラムのブレーク機能の２つの機能がある。
【０００７】
まず、プログラムの実行機能について説明する。例えば、複写機、エアコン等のターゲットシステムではプログラムを最終的にリードオンリメモリ（以下、ＲＯＭと記す）に書き込んでマイクロコンピュータを動作させるが、エミュレータ装置ではプログラムをＲＯＭに書き込まずに作成したプログラムを実行させることができる。
【０００８】
次に、プログラムのブレーク機能について説明する。上述したようにしてプログラムを実行した結果、ターゲットシステムが正しく動作しなかった場合、プログラムの間違った箇所を発見し、修正する必要がある。デバッグではプログラムの実行を途中で停止させるブレーク機能を用いる。ブレーク機能を用いてプログラムを少しずつ実行し、ターゲットシステムの動きやプログラムの実行アドレス等を確認することによってプログラムの間違った箇所が発見できる。ブレーク機能では特定のアドレスにリード、ライト、命令フェッチ等のバスアクセスが発生した際にブレークするようにブレーク条件が指定できる。
【０００９】
図５は従来のエミュレータ装置の構成を示すブロック図である。図において、２０はホストコンピュータ１０から発せられたコマンドを解釈し、コマンドに応じた処理を実行するモニタ回路、２１はホストコンピュータ１０とモニタ回路２０との間の通信インターフェイス、２２はホストコンピュータ１０から転送されてくるエミュレーションのためのプログラム情報を格納するエミュレーションメモリ、２３はブレーク条件を満たすアクセスが発生したときにプログラムをブレークすることを判断しモニタ回路２０に通知するブレーク回路、２４はシステムバス２５のアクセス制御をするバス制御回路である。
【００１０】
なお、ブレーク回路２３は、モニタ回路２０から送られてきたブレーク条件のうちのアドレス情報を記憶し、システムバス２５上に出力されたアドレスを毎回検出してブレーク条件に合致するか否かを比較するアドレス比較回路３０、システムバス２５のリード・ライト信号を検出することによってエミュレーションプログラムのアクセスがリードアクセスであるか、ライトアクセスであるかを判定するリードライト信号比較回路３１と、アドレス比較回路３０およびリードライト信号比較回路３１の比較結果からブレーク信号をモニタ回路２０に転送するフレーク判定回路３２とを具備している。
【００１１】
まず、ブレーク回路２３にはモニタ回路２０からブレーク条件が送られてくる。すなわち、所望のアドレスと所望のアクセスタイプが転送されてくる。アクセスタイプはリードアクセス、ライトアクセスがある。そして、ブレーク条件が設定されたアドレスに設定されたアクセスタイプのアクセスがあった場合にはブレーク回路２３はマイクロコンピュータのエミュレーションプログラムの動作をブレークするためのブレーク信号をモニタ回路２０に送出する。
【００１２】
以上説明したような従来のエミュレータ装置では、初期化されていない大域変数の読み込みが行われても正常な動作とみなされ、ブレークすることができなかった。このように大域変数が初期化されていない状態で読み込まれた場合にはプログラムの実行時に、本来、意図した値ではなく、未確定な値をもとにプログラムが動作し、予期せぬ不具合を引き起こすことになる。
【００１３】
【発明が解決しようとする課題】
従来のエミュレータ装置は以上のように構成されているので、初期化されていない大域変数の読み込みが行われても正常な動作とみなされ、ブレークすることができないという課題があった。
【００１４】
この発明は以上のような課題を解決するためになされたもので、初期化されていない大域変数の読み込みが行われた場合にブレークできるエミュレータ装置を提供することを目的とする。
【００１５】
【課題を解決するための手段】
請求項１記載の発明に係るエミュレータ装置は、マイクロコンピュータのシステムバスに接続され、実行中のエミュレーションプログラムがリードアクセスをしたか、ライトアクセスをしたかを判別するリード・ライトアクセス判別手段と、リード・ライトアクセス判別手段による判別の結果、実行中のエミュレーションプログラムがマイクロコンピュータのメモリアドレスをライトアクセスした場合に、ライトアクセスしたアドレスと対応づけてライトアクセスがあったことを示す情報を格納するアクセス情報格納手段と、リード・ライトアクセス判別手段による判別の結果、実行中のエミュレーションプログラムがマイクロコンピュータのメモリアドレスをリードアクセスしたときに、リードアクセスされたアドレスにライトアクセスがあったことを示す情報がアクセス情報格納手段に格納されていない場合にはエミュレーションプログラムの実行をブレークするブレーク手段と、マイクロコンピュータのシステムバスに接続され、エミュレーションプログラムが実行中にマイクロコンピュータからシステムバスに出力されたデータの値が「０」であるか否かを判別するデータ判別手段とを具備し、アクセス情報格納手段が、リード・ライトアクセス判別手段による判別の結果、実行中のエミュレーションプログラムがマイクロコンピュータのメモリアドレスをライトアクセスした場合であって、データ判別手段の判別の結果、ライトアクセスによって書き込まれたデータの値が「０」である場合には、ライトアクセスしたアドレスと対応づけて、値が「０」のデータが前記ライトアクセスしたアドレスに書き込まれた回数に関する情報を格納し、ブレーク手段が、リード・ライトアクセス判別手段による判別の結果、実行中のエミュレーションプログラムがマイクロコンピュータのメモリアドレスをリードアクセスしたときに、アクセス情報格納手段に格納されている情報がリードアクセスされたアドレスに値が「０」のデータが１回しか格納されていないことを示す場合にはエミュレーションプログラムをブレークするものである。
【００１６】
請求項２記載の発明に係るエミュレータ装置は、エミュレーションプログラムに規定された大域変数のアドレス範囲のアドレスに実行中のエミュレーションプログラムによってリードアクセスまたはライトアクセスが発生したか否かを判別するアドレス判別手段を有し、アクセス情報格納手段はアドレス判別手段が大域変数のアドレス範囲のアドレスに対してライトアクセスした場合に、ライトアクセスしたアドレスと対応づけてライトアクセスがあったことを示す情報を格納するように構成したものである。
【００１７】
請求項３記載の発明に係るエミュレータ装置は、アクセス情報格納手段がマイクロコンピュータのメモリアドレスに１対１に対応したアドレスを有するアクセス情報メモリを含み、実行中のエミュレーションプログラムがマイクロコンピュータのメモリアドレスをライトアクセスした場合にライトアクセスしたアドレスに対応する、アクセス情報メモリのアドレスにライトアクセスがあったことを示す情報を格納するように構成したものである。
【００１８】
請求項４記載の発明に係るエミュレータ装置は、アクセス情報格納手段がエミュレーションプログラムが規定する各々の大域変数が占めるアドレス領域毎にライトアクセスがあったことを示す情報を格納するように構成したものである。
【００２０】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１におけるエミュレータ装置の構成を示すブロック図である。なお、エミュレータ装置１１１は従来のエミュレータ装置１１と同様に、図４に示すようにホストコンピュータ１０に接続するとともに、ターゲットシステム１２に、マイクロコンピュータ１４ａを有するプローブ１４により接続して使用する。
【００２１】
図において、１２０はホストコンピュータ１０から発せられたコマンドを解釈し、コマンドに応じた処理を実行するモニタ回路、１２１はホストコンピュータ１０とモニタ回路１２０との間の通信インターフェイスをとる通信インターフェイス回路、１２２はホストコンピュータ１０から転送されてくるエミュレーションのためのプログラム情報を格納するエミュレーションメモリ、１２３はブレーク条件を満たすアクセスが発生したときにプログラムがブレークの実行を判断しモニタ回路１２０に通知するブレーク回路（ブレーク手段）、１２４はシステムバス１２５のアクセス制御をするバス制御回路である。
【００２２】
なお、ブレーク回路１２３は、モニタ回路１２０から送られてきたブレーク条件のうちのアドレス情報を記憶し、システムバス１２５上に出力されたアドレスを検出してブレーク条件に合致するか否かを比較するアドレス比較回路（アドレス判別手段）２０１、システムバス１２５のリード・ライト信号を検出することによってエミュレーションプログラムのアクセスがリードアクセスであるか、ライトアクセスであるかを判定するリード・ライト信号比較回路（リード・ライトアクセス判別手段）２０２と、マイクロコンピュータ１４ａのメモリ空間のアドレスに対応づけられ１ビットの情報を格納するアクセス情報メモリ（アクセス情報格納手段）２０３と、このアクセス情報メモリ２０３のデータの書き込みの制御を行うアクセス情報リード・ライト回路（アクセス情報格納手段）２０４と、アドレス比較回路２０１、リード・ライト信号比較回路２０２の比較結果およびアクセス情報メモリ２０３に格納されている情報に基づいてブレークの判定を行うブレーク判定回路（ブレーク手段）２０５とを有している。
【００２３】
アクセス情報メモリ２０３のアドレスはマイクロコンピュータ１４ａのメモリ空間のアドレスに１対１に対応して設けられている。例えば、マイクロコンピュータ１４ａの１６ビットアドレス空間であるならばアクセス情報メモリ２０３は００００Ｈ番地からＦＦＦＦＨ番地に対応して６４Ｋビットの情報の書き込みができるように構成されている。
【００２４】
また、アクセス情報リード・ライト回路２０４の制御により、プログラムのリセットが行われたときに全てのアドレスに「０」を書き込み、マイクロコンピュータ１４ａのメモリ空間のあるアドレスに対して書き込み動作が発生した場合にアクセス情報メモリ２０３の対応のアドレスに「１」が書き込まれるように構成されている。
【００２５】
次に動作について説明する。
まず、エミュレーションプログラムがエミュレータ装置１１１に転送されてきた場合やユーザが意図的にリセットした場合などプログラムのリセットが行われたときにはアクセス情報メモリ２０３の全てのアドレスに「０」を格納する。次に、プログラムが実行される前に、ユーザが設定した大域変数のメモリ領域範囲、すなわち、ユーザが設定した大域変数がマイクロコンピュータ１４ａのメモリ空間のどのアドレス範囲にあるかを示す情報がホストコンピュータ１０からエミュレータ装置１１１に転送される。転送された情報は通信インターフェイス１２１を介してモニタ回路１２０に送られ、モニタ回路１２０の制御によりアドレス比較回路２０１に設定される。
【００２６】
以上の初期設定後にエミュレーションプログラムが実行される。プログラム実行中はアドレス比較回路２０１とリード・ライト信号比較回路２０２がシステムバス１２５を監視し、アドレス比較回路２０１に設定されたアドレス範囲に対するリードアクセス、あるいはライトアクセスがあった場合にはブレーク判定回路２０５にその情報が転送される。ブレーク判定回路２０５では大域変数の領域範囲に書き込みがあった場合にはアクセス情報リード・ライト回路２０４によりアクセス情報メモリ２０３の対応するアドレスに「１」を格納する。例えば、マイクロコンピュータ１４ａのメモリ空間の「０００ＦＨ」番地にデータの書き込みがあった場合にはアクセス情報メモリ２０３の「０００ＦＨ」番地に「１」を書き込む。
【００２７】
マイクロコンピュータ１４ａのメモリ領域の大域変数のアドレス範囲に対してデータの読み込み動作が行われた場合にはアクセス情報リード・ライト回路２０４の制御によってアクセス情報メモリ２０３の対応するアドレスのデータを読み込む。ブレーク判定回路２０５はこのデータが「０」であれば大域変数が初期化されずに読み込まれたと判断してモニタ回路１２０に対してブレーク信号を送出する。このブレーク信号を受けたモニタ回路１２０は現在実行中のプログラムをブレークする。さらに、ブレークしたアドレスはモニタ回路１２０、通信インターフェイス１２１を介してホストコンピュータ１０に転送される。ホストコンピュータ１０上で動作しているデバッガ等のエミュレーションコントロールソフトウエアは取得したアドレスがどの大域変数に相当するかを判断して表示する。
【００２８】
一方、マイクロコンピュータ１４ａのメモリ領域の大域変数のアドレス範囲に対してデータの読み込み動作が行われた場合にアクセス情報メモリ２０３の対応するアドレスのデータが「１」であった場合には大域変数が初期化されていると判断してブレーク信号は送出しない。
【００２９】
実施の形態２．
図２はこの発明の実施の形態２におけるエミュレータ装置の構成を示すブロック図である。なお、図１と同一部分には同一符号を付し重複する説明は省略する。図において、１２３ａはこの実施の形態のブレーク回路、２０３ａはアドレス「０」からアドレス「ＡＤＥＮＤ」までのアドレスを有し、各々のアドレスに１ビットのアクセス情報を書き込むことができるアクセス情報メモリである。２０４ａはアクセス情報メモリ２０３ａに格納するアクセス情報のリード・ライトの制御を行うアクセス情報リード・ライト回路、２０５ａは大域変数のアドレス範囲毎に１ビットのアクセス情報を格納するためのアドレスを割り当てるとともに、アドレス比較回路２０１とリード・ライト信号比較回路２０２とからの比較結果、およびアクセス情報メモリ２０３ａに格納されているアクセス情報に基づいてブレークの判定を行うブレーク判定回路である。
【００３０】
次に動作について説明する。
まず、エミュレーションプログラムがエミュレータ装置１１１ａに転送された場合やユーザが意図的にリセットした場合など、プログラムのリセットが行われたときには、アクセス情報リード・ライト回路２０４ａはアクセス情報メモリ２０３ａのすべてのアドレスに「０」を格納する。次にプログラムが実行される前にユーザが設定したそれぞれの大域変数に対して、大域変数の先頭アドレスと大域変数のデータの大きさ等の大域変数情報がホストコンピュータ１０から通信インターフェイス１２１を介してモニタ回路１２０に転送される。この大域変数情報はさらにブレーク判定回路２０５ａに転送される。また、ブレーク判定回路２０５ａからアドレス比較回路２０１にも大域変数情報は転送される。ブレーク判定回路２０５ａは大域変数情報に基づいて各々の大域変数毎にアクセス情報メモリ２０３ａのアドレスに１ビットずつ対応させる。なお、配列変数の場合には配列の要素毎に１ビットをアクセス情報メモリ２０３ａの各アドレスに割り当てる。
【００３１】
以上の初期設定後にエミュレーションプログラムが実行される。プログラム実行中はアドレス比較回路２０１とリード・ライト信号比較回路２０２がシステムバス１２５を監視し、アドレス比較回路２０１に設定されたアドレス範囲に対するリードアクセス、あるいはライトアクセスがあった場合にはブレーク判定回路２０５ａにその情報が転送される。ブレーク判定回路２０５ａでは大域変数のアドレス範囲に書き込みがあった場合にはアクセス情報リード・ライト回路２０４ａによりアクセス情報メモリ２０３ａの、大域変数のアドレス範囲に割り当てられたアドレスに「１」を格納する。例えば、アクセスのあったアドレスが、ある大域変数のアドレス範囲内にあった場合、そのアドレス範囲に対応するアクセス情報メモリ２０３ａのメモリアドレスに「１」を格納する。すなわち、アクセス情報メモリ２０３ａではマイクロコンピュータ１４ａのメモリ空間のアドレス毎ではなく大域変数毎にアクセス情報を格納する。
【００３２】
マイクロコンピュータ１４ａのメモリ領域の大域変数のアドレス範囲に対してデータの読み込み動作が行われた場合にはアクセス情報リード・ライト回路２０４ａの制御によってアクセス情報メモリ２０３ａの大域変数のアドレス範囲に対応するアドレスのデータを読み込む。ブレーク判定回路２０５ａはこのデータが「０」であれば大域変数が初期化されずに読み込まれたと判断してモニタ回路１２０に対してブレーク信号を送出する。このブレーク信号を受けたモニタ回路１２０は現在実行中のプログラムをブレークする。さらに、ブレークしたアドレスはモニタ回路１２０、通信インターフェイス１２１を介してホストコンピュータ１０に転送される。ホストコンピュータ１０上で動作しているデバッガ等のエミュレーションコントロールソフトウエアは取得したアドレスがどの大域変数に相当するかを判断して表示する。
【００３３】
一方、マイクロコンピュータ１４ａのメモリ領域の大域変数のアドレス範囲に対してデータの読み込み動作が行われた場合にアクセス情報メモリ２０３ａの対応するアドレスのデータが「１」であった場合には大域変数が初期化されていると判断してブレーク信号は送出しない。
【００３４】
すなわち、この実施の形態２では、マイクロコンピュータ１４ａの全てのアドレスに対して１ビットのメモリを予め割り当てておくのではなく、大域変数の先頭アドレスと大域変数の大きさとから大域変数毎に１ビットを割り当てて初期化されたか否かの判定を行うようにしている。このため、アクセス情報メモリ２０３ａのメモリ容量を小さくすることが可能である。
【００３５】
実施の形態３．
図３はこの発明の実施の形態３におけるエミュレータ装置の構成を示すブロック図である。なお、図１と同一部分には同一符号を付し重複する説明は省略する。図において、１２３ｂはこの実施の形態のブレーク回路、２０３ｂは００００ＨからＦＦＦＦＨまでのアドレスを有し、各々のアドレスに１バイトのアクセス情報を書き込むことができるアクセス情報メモリである。２０４ｂはアクセス情報メモリ２０３ｂに格納するアクセス情報のリード・ライトの制御を行うアクセス情報リード・ライト回路、２０５ｂはアドレス比較回路２０１の比較結果、リード・ライト信号比較回路２０２の比較結果およびアクセス情報メモリ２０３ｂに格納されている情報に基づいてブレークの判定を行うブレーク判定回路、２０６はシステムバス１２５のうちのデータバスに出力しているデータの値が「０」であるか否かを比較して比較結果をブレーク判定回路２０５ｂに出力するデータ比較回路を示している。
【００３６】
次に動作について説明する。
ユーザプログラムの初期化ファイル、すなわち、プログラムが１番最初に実行するルーチン中でデータ領域を「０」に初期化し、次に大域変数をプログラム中で任意の「０」以外の値に設定してからプログラムを動作させるような場合もある。このような場合、「０」がメモリに書き込まれた後では実施の形態１のエミュレータ装置１１１ではプログラム中で任意の値で初期化されたかどうかを検出することはできない。これは「０」で１度最初に初期化されているためである。このような場合、プログラム中での初期化がされていない変数を参照してプログラムが動作すると予期しない不具合が生じる可能性がある。そこで、この実施の形態３では、アクセス情報メモリ２０３ｂに格納する情報として実施の形態１で説明したマイクロコンピュータ１４ａの各々アドレスに対してライトアクセスがあったか否かを示す１ビットの情報の他に「０」で書き込まれた回数に関する２ビットの情報を付加するようにしている。
【００３７】
まず、プログラムがエミュレータ装置１１１ｂに転送されてきた場合やユーザが意図的にリセットした場合などプログラムのリセットが行われたときにはアクセス情報メモリ２０３ｂの全てのアドレスに「０」を格納する。つぎに、プログラムが実行される前に、ユーザが設定した大域変数のメモリアドレス範囲、すなわち、ユーザが設定した大域変数がマイクロコンピュータ１４ａのメモリ空間のどのアドレス範囲にあるかを示す情報がホストコンピュータ１０からエミュレータ装置１１１ｂに転送される。転送された情報は通信インターフェイス１２１を介してモニタ回路１２０に送られ、モニタ回路１２０の制御によりブレーク判定回路２０５ｂおよびアドレス比較回路２０１に転送される。
【００３８】
以上の初期設定後にエミュレーションプログラムが実行される。プログラム実行中はアドレス比較回路２０１とリード・ライト信号比較回路２０２がシステムバス１２５を監視し、アドレス比較回路２０１に設定されたアドレス範囲に対するリードアクセス、あるいはライトアクセスがあった場合にはブレーク判定回路２０５ｂにその情報が転送される。ブレーク判定回路２０５ｂは、大域変数のアドレス範囲に書き込みがあった場合にはアクセス情報リード・ライト回路２０４ｂによりアクセス情報メモリ２０３ｂの対応するアドレスの第１ビットに「１」を格納する。例えば、マイクロコンピュータ１４ａのアドレス空間の「０００ＦＨ」番地にデータの書き込みがあった場合にはアクセス情報メモリ２０３ｂの「０００ＦＨ」番地の第１ビットに「１」を書き込む。
【００３９】
また、大域変数のアドレス範囲に書き込みがあった場合であって、さらにデータ比較回路２０６によって書き込まれたデータが「０」であると判定された場合にはさらに「０」で書き込まれた回数に関する２ビットの情報をアクセス情報メモリ２０３ｂの対応するアドレスの第２、第３ビットに書き込む。すなわち、「０」で書き込まれた回数が１回目である場合にはアクセス情報メモリ２０３ｂの対応するアドレスの第２、第３ビットに「０」、「１」をそれぞれ書き込む。一方、「０」で書き込まれた回数が２回以上の場合には第２、第３ビットに「１」、「０」をそれぞれ書き込む。なお、大域変数のアドレス範囲に書き込みがあった場合であって、「０」以外の値でのみ書き込みがあった場合には第２、第３ビットは「０」、「０」のままである。
【００４０】
マイクロコンピュータ１４ａのメモリ領域の大域変数の領域範囲に対してデータの読み込み動作が行われた場合にはアクセス情報リード・ライト回路２０４ｂの制御によってアクセス情報メモリ２０３ｂの対応するアドレスのデータを読み込む。ブレーク判定回路２０５ｂはこのデータの第１ビットが「０」であれば大域変数が初期化されずに読み込まれたと判断してモニタ回路１２０に対してブレーク信号を送出する。また、第１ビットが「１」であっても第２ビット、第３ビットがそれぞれ、「０」、「１」である場合には未初期化変数を参照しようとしたと判断して、モニタ回路に対してブレーク信号を送出する。このブレーク信号を受けたモニタ回路１２０は現在実行中のプログラムをブレークする。さらに、ブレークしたアドレスはモニタ回路１２０、通信インターフェイス１２１を介してホストコンピュータ１０に転送される。ホストコンピュータ１０上で動作しているデバッガ等のエミュレーションコントロールソフトウエアは取得したアドレスがどの大域変数に相当するかを判断して表示する。
【００４１】
一方、マイクロコンピュータ１４ａのメモリ領域の大域変数のアドレス範囲に対してデータの読み込み動作が行われた場合に、アクセス情報メモリ２０３ｂの対応するアドレスデータの第１、第２、第３ビットがそれぞれ「１」、「１」、「０」、すなわち、「０」で２回以上書き込まれた場合、または、第１、第２、第３ビットがそれぞれ「１」、「０」、「０」、すなわち、「０」以外の値のみで書き込みが行われた場合には大域変数が初期化されていると判断してブレーク信号は送出しない。
【００４２】
また、実施の形態３ではアクセス情報メモリ２０３ｂは実施の形態１のようにマイクロコンピュータ１４ａのメモリ空間のアドレスに１対１に対応するものであったが、実施の形態２で示したアクセス情報メモリ２０３ａのように各々の大域変数のアドレス範囲毎に「０」でライトアクセスされた回数に関する情報を格納するようにしてもよい。さらに、メモリ管理の容易さからアクセス情報メモリ２０３ｂはアドレス毎に１バイト、すなわち、８ビットの領域を確保するようにしたが、アドレス毎に３ビットの領域を確保するようにしてもよい。
【００４３】
【発明の効果】
以上のように、請求項１記載の発明によれば、実行中のエミュレーションプログラムがマイクロコンピュータのメモリアドレスをリードアクセスしたときに、リードアクセスされたアドレスにライトアクセスがあったことを示す情報がアクセス情報格納手段に格納されていない場合には、エミュレーションプログラムの実行をブレークするように構成したので、初期化していない変数をプログラムが参照していることをエミュレータ装置で認識することができる効果がある。また、ブレーク手段を、リード・ライトアクセス判別手段による判別の結果、実行中のエミュレーションプログラムがマイクロコンピュータのメモリアドレスをリードアクセスしたときに、アクセス情報格納手段に格納されている情報が、リードアクセスされたアドレスに値が「０」のデータが１回しか格納されていないことを示す場合には、エミュレーションプログラムをブレークするように構成したので、ユーザプログラムの初期化ファイルでデータ領域を「０」としてからプログラム中で大域変数の値を設定する場合であっても、大域変数が設定されずに読み出された場合にブレークすることができる効果がある。
【００４４】
請求項２記載の発明によれば、アクセス情報格納手段をアドレス判別手段が大域変数のアドレス範囲のアドレスに対してライトアクセスした場合に、ライトアクセスしたアドレスと対応づけてライトアクセスがあったことを示す情報を格納するように構成したので、初期化していない大域変数をプログラムが参照していることをエミュレータ装置で認識することができる効果がある。
【００４５】
請求項３記載の発明によれば、アクセス情報格納手段がマイクロコンピュータのメモリアドレスに１対１に対応したアドレスを有するアクセス情報メモリを含み、実行中のエミュレーションプログラムがマイクロコンピュータのメモリアドレスをライトアクセスした場合に、ライトアクセスしたアドレスに対応するアクセス情報メモリのアドレスにライトアクセスがあったことを示す情報を格納するように構成したので、マイクロコンピュータのメモリアドレスを変換する等の構成を必要とせずに初期化していない変数をプログラムが参照していることをエミュレータ装置で認識することができる効果がある。
【００４６】
請求項４記載の発明によれば、アクセス情報格納手段をエミュレーションプログラムが規定する各々の大域変数が占めるアドレス領域毎にライトアクセスがあったことを示す情報を格納するように構成したので、アクセス情報格納手段のメモリ容量を小さくできる効果がある。
【図面の簡単な説明】
【図１】この発明の実施の形態１におけるエミュレータ装置の構成を示すブロック図である。
【図２】この発明の実施の形態２におけるエミュレータ装置の構成を示すブロック図である。
【図３】この発明の実施の形態３におけるエミュレータ装置の構成を示すブロック図である。
【図４】従来のエミュレータ装置を用いたプログラム開発システムの構成を示す図である。
【図５】従来のエミュレータ装置の構成を示すブロック図である。
【符号の説明】
１４ａ  マイクロコンピュータ、１１１，１１１ａ，１１１ｂ  エミュレータ装置、１２３，１２３ａ，１２３ｂ  ブレーク回路（ブレーク手段）、１２５  システムバス、２０１  アドレス比較回路（アドレス判別手段）、２０２  リード・ライト信号比較回路（リード・ライトアクセス判別手段）、２０３，２０３ａ，２０３ｂ  アクセス情報メモリ（アクセス情報格納手段）、２０４，２０４ａ，２０４ｂ  アクセス情報リード・ライト回路（アクセス情報格納手段）、２０５，２０５ａ，２０５ｂ  ブレーク判定回路（ブレーク手段）、２０６  データ比較回路（データ判別手段）。
【図１】
0003565987.tif 000002
【図２】
0003565987.tif 000003
【図３】
0003565987.tif 000004
【図４】
0003565987.tif 000005
【図５】
0003565987.tif 000006