(57)【要約】【課題】シミュレータデバッガにおいて、現在のフレーム番号など処理対象データの属性を、プログラムのデバッグ時に判りやすく表示する。【解決手段】メモリへの初期値設定時に、ストリームタグ情報ファイル１０６からデータの属性値を読み込み、メモリの値に属性値の対応付けを行う。デバッガ内のシミュレータではメモリ、レジスタの属性値情報を管理し、命令実行時に、入力となるメモリ、レジスタの属性値から演算結果の属性値を決定し、演算結果の出力となる属性値を更新する。デバッガでの変数などデータ表示の際に、データが配置されているメモリあるいはレジスタの属性値を取得し、その属性値に応じて表示方法を変えて表示する。【選択図】      図１
2005025579.tif 000002
【特許請求の範囲】
【請求項１】
プログラムをデバッグするシミュレータデバッガであって、
入力データに属性値を対応付ける手段と、
シミュレーション実行時に入力データの属性値から演算結果の属性値を決定する手段と、
前記演算結果の属性値にもとづきプログラムの変数の属性値を求める手段と、前記プログラムの変数の属性値に応じて表示方法を変えてその変数の値を表示する手段とを備えることを特徴とするシミュレータデバッガ。
【請求項２】
プログラムをデバッグするシミュレータデバッガであって、
入力データに属性値を対応付ける手段と、
シミュレーション実行時に入力データの属性値から演算結果の属性値を決定する手段と、
前記演算結果の属性値にもとづきメモリ内容の属性値を求める手段と、
前記メモリ内容の属性値に応じて表示方法を変えてメモリの値を表示する手段とを備えることを特徴とするシミュレータデバッガ。
【請求項３】
プログラムをデバッグするシミュレータデバッガであって、
メモリマップの領域情報を入力する手段と、
前記入力したデータに属性値を対応付ける手段と、
前記属性値に応じて表示方法を変えてメモリマップを表示する手段とを備えることを特徴とするシミュレータデバッガ。
【請求項４】
入力データに属性値を対応付ける手段が、データに対応する属性値情報を入力する手段であることを特徴とする請求項１から３までのいずれか１項記載のシミュレータデバッガ。
【請求項５】
シミュレーション実行時に入力データの属性値から演算結果の属性値を決定する手段は、入力データの属性値でもっとも小さい値と、入力データの属性値でもっとも大きい値と、入力データの属性値の中央値と、入力データの属性値の平均値とのいずれかを演算結果の属性値とするものであることを特徴とする請求項１から４までのいずれか１項記載のシミュレータデバッガ。
【請求項６】
プログラムの変数の属性値に応じて表示方法を変えてその変数の値を表示する手段が、前記属性値によってフォントあるいは色を変えて値を表示するものであることを特徴とする請求項１記載のシミュレータデバッガ。
【請求項７】
メモリ内容の属性値に応じて表示方法を変えてメモリの値を表示する手段が、前記属性値によってフォントあるいは色を変えて値を表示するものであることを特徴とする請求項２記載のシミュレータデバッガ。
【請求項８】
属性値に応じて表示方法を変えてメモリマップを表示する手段が、前記属性値によってフォントあるいは色を変えて値を表示するものであることを特徴とする請求項３記載のシミュレータデバッガ。
【請求項９】
プログラムの変数の属性値に応じて表示方法を変えてその変数の値を表示する手段が、前記変数の値とともに属性値も表示するものであることを特徴とする請求項１記載のシミュレータデバッガ。
【請求項１０】
メモリ内容の属性値に応じて表示方法を変えてメモリの値を表示する手段が、前記メモリの値とともに属性値も表示するものであることを特徴とする請求項２記載のシミュレータデバッガ。
【請求項１１】
シミュレーション実行時に入力データの属性値から演算結果の属性値を決定する手段が、コンパイラが生成する情報から演算の入出力データの情報を入力する手段と、その入出力データの情報から前記属性値を決定する手段とを備えることを特徴とする請求項１から１０までのいずれか１項記載のシミュレータデバッガ。
【請求項１２】
コンピュータを請求項１から１１までのいずれか１項記載のシミュレータデバッガが備える手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はシミュレータデバッガに関し、特にプロセッサ上で実行されるメディア処理プログラムのデバッグを行うシミュレータデバッガに関する。
【０００２】
【従来の技術】
近年の電子技術の発展により、映像機器などの家電機器においてもプロセッサを組み込み、ソフトウエアによるメディア処理機能を実現する機器開発が行われている。
【０００３】
このような機器開発におけるソフトウエア開発では、開発者は、デバッガを用いて、開発したプログラムが設計した意図通りに動作しているどうかを確認することにより、プログラムの検証、デバッグを行う。例えば、プログラムの任意の場所にブレークポイントを設定し、プログラムをその場所まで実行し、その状態での変数の値やメモリの値を確認する表示機能や、プログラムの実行結果の系列を表示するトレース機能と呼ばれるデバッガの機能を用いて、プログラムの動作を確認することが行われている。
【０００４】
ノイマン型のプロセッサにおいて、メディア処理のプログラムを実現する場合、データをフレームといった単位に分け、フレーム毎に繰り返し処理を実行することが多い。つまり、ソフトウエア開発者がデバッグする際には、プログラムの処理シーケンスとともに現在処理されているデータがどのフレームに属するかを注目することが重要である。
【０００５】
メディア処理向けの情報処理装置としては、データフロー処理型のものがあり、これに対応するシミュレーション装置に関する先行技術文献として特許文献１がある。
【０００６】
【特許文献１】
特公平６−１０１０４５号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、上記構成のデバッガにおいては、現在のフレーム番号などの情報を得るためには、ソフトウエア開発者がその都度フレーム番号が格納されている変数あるいはメモリの値を表示させて計算、確認するなどの必要があり、デバッグの効率が悪いという問題があった。
【０００８】
本発明の目的は、前記課題に鑑み、メディア処理プログラムのデータ表示を判り易く行うことができるシミュレータデバッガを提供することを目的とする。
【０００９】
【課題を解決するための手段】
前記課題を解決するために、請求項１に記載の本発明は、プログラムをデバッグするシミュレータデバッガが、入力データに属性値を対応付ける手段と、シミュレーション実行時に入力データの属性値から演算結果の属性値を決定する手段と、前記演算結果の属性値にもとづきプログラムの変数の属性値を求める手段と、前記プログラムの変数の属性値に応じて表示方法を変えてその変数の値を表示する手段とを備えるようにしたものである。
【００１０】
これによれば、プログラムの変数を表示する場合にその属性値に応じて表示方法を変えることができ、利用者が変数の値を確認する際にその属性値も同時に判り、このためデバッグの効率をあげることができる。
【００１１】
請求項２に記載の本発明は、プログラムをデバッグするシミュレータデバッガが、入力データに属性値を対応付ける手段と、シミュレーション実行時に入力データの属性値から演算結果の属性値を決定する手段と、前記演算結果の属性値にもとづきメモリ内容の属性値を求める手段と、前記メモリ内容の属性値に応じて表示方法を変えてメモリの値を表示する手段とを備えるようにしたものである。
【００１２】
これによれば、メモリの値を表示する場合にその属性値に応じて表示方法を変えることができ、利用者がメモリの値を確認する際にその属性値も同時に判り、このためデバッグの効率をあげることができる。
【００１３】
請求項３に記載の本発明は、プログラムをデバッグするシミュレータデバッガが、メモリマップの領域情報を入力する手段と、前記入力したデータに属性値を対応付ける手段と、前記属性値に応じて表示方法を変えてメモリマップを表示する手段とを備えるようにしたものである。
【００１４】
これによれば、メモリマップの表示を行う際に、メモリの属性値に対応した表示を行うことができ、利用者がメモリの使用状況などを属性値とともに確認することができ、このためデバッグの効率をあげることができる。
【００１５】
請求項４に記載の本発明は、上記において、入力データに属性値を対応付ける手段が、データに対応する属性値情報を入力する手段であるようにしたものである。
【００１６】
請求項５に記載の本発明は、上記において、シミュレーション実行時に入力データの属性値から演算結果の属性値を決定する手段が、入力データの属性値でもっとも小さい値と、入力データの属性値でもっとも大きい値と、入力データの属性値の中央値と、入力データの属性値の平均値とのいずれかを演算結果の属性値とするものである。
【００１７】
これによれば、デバッグ対象とするメディア処理プログラムが複数のフレームのデータから演算する場合に、最も先行して処理されるフレームの情報の観点、または最も後に処理されるフレームの情報の観点の観点、または中心のフレームの情報の観点で、変数あるいはメモリを確認することができ、したがってデバッグの効率をあげることができる。
【００１８】
請求項６に記載の本発明は、上記において、プログラムの変数の属性値に応じて表示方法を変えてその変数の値を表示する手段が、前記属性値によってフォントあるいは色を変えて値を表示するものである。
【００１９】
これによれば、プログラムの変数を表示する場合にその属性値に応じてフォントあるいは色を変えて値を表示するものであるため、利用者が変数の値を確認する際にその属性値も同時に判り、このためデバッグの効率をあげることができる。
【００２０】
請求項７に記載の本発明は、上記において、メモリ内容の属性値に応じて表示方法を変えてメモリの値を表示する手段が、前記属性値によってフォントあるいは色を変えて値を表示するものである。
【００２１】
これによれば、メモリの値を表示する場合にその属性値に応じてフォントあるいは色を変えて値を表示するものであるため、利用者がメモリの値を確認する際にその属性値も同時に判り、このためデバッグの効率をあげることができる。
【００２２】
請求項８に記載の本発明は、上記において、属性値に応じて表示方法を変えてメモリマップを表示する手段が、前記属性値によってフォントあるいは色を変えて値を表示するものである。
【００２３】
これによれば、メモリマップの表示を行う際に、メモリの属性値によってフォントあるいは色を変えて値を表示するものであるため、利用者がメモリの使用状況などを属性値とともに確認することができ、このためデバッグの効率をあげることができる。
【００２４】
請求項９に記載の本発明は、上記において、プログラムの変数の属性値に応じて表示方法を変えてその変数の値を表示する手段が、前記変数の値とともに属性値も表示するものである。
【００２５】
請求項１０に記載の本発明は、上記において、メモリ内容の属性値に応じて表示方法を変えてメモリの値を表示する手段が、前記メモリの値とともに属性値も表示するものである。
【００２６】
請求項１１に記載の本発明は、上記において、シミュレーション実行時に入力データの属性値から演算結果の属性値を決定する手段が、コンパイラが生成する情報から演算の入出力データの情報を入力する手段と、その入出力データの情報から前記属性値を決定する手段とを備えるものである。
【００２７】
これによれば、複数のフレームのデータから演算する場合に処理の中心となるフレームの情報の観点で変数あるいはメモリを確認することができ、デバッグの効率をあげることができる。
【００２８】
請求項１２に記載の本発明のコンピュータ読み取り可能な記録媒体は、コンピュータを請求項１から１１までのいずれか１項記載のシミュレータデバッガが備える手段として機能させるためのプログラムを記録したものである。
【００２９】
【発明の実施の形態】
（第１の実施の形態）
以下、本発明の第１の実施の形態について説明する。
【００３０】
図１に、本発明の第１の実施の形態におけるシミュレータデバッガのシステムの構成を示す。ここで１０１はＣソースプログラムであり、ソフトウエア開発者が開発対象のメディア処理等の応用システムを実現するプログラムである。
【００３１】
１０２はコンパイラであり、Ｃソースプログラム１０１を入力とし、開発対象の応用システムで用いるプロセッサ用の実行コードとデバッグ情報からなるオブジェクトファイル１０３を出力する。１０４はデバッガであり、オブジェクトファイル１０３を入力し、ソフトウエア開発者からの指示をコンソール１０７などユーザインターフェイス部から入力し、その結果や情報をディスプレイ１０８に表示する。
【００３２】
１０５は、デバッグ対象のプログラムの入力データとなるストリームデータを格納したストリームファイルである。１０６は、ストリームデータに関するタグ情報を格納したストリームタグ情報ファイルである。
【００３３】
ソフトウエア開発者は、ストリームデータを入力として与え、デバッグ対象となるプログラムを実行して、動作の検証、デバッグを行う。
以下、デバッガ１０４を詳細に説明する。
【００３４】
図２に、デバッガ１０４の機能ブロック図を示す。ここで、２０１はデバッガ制御部であり、コマンド入力部２０２から利用者であるソフトウエア開発者からのデバッガコマンドの入力を行い、デバッグ機能の実行処理を行い、表示部２０３により利用者に結果を表示する。
【００３５】
２０４は実行ターゲット環境部で、オブジェクトファイル１０３に格納されているプログラムが実行される環境であり、例えば計算機上に構築されたプロセッサのソフトウエアシミュレータである。なお、実行ターゲット環境部２０４は、ターゲットとなるプロセッサやメモリを搭載した評価ボードでもよい。前記デバッガ制御部２０１は、この実行ターゲット環境部２０４を制御することにより、デバッグの機能を実現する。
【００３６】
実行ターゲット環境部２０４において、２０５はシミュレーション制御部であり、デバッガ制御部２０１からの制御を受け、プロセッサのシミュレーション実行およびシミュレーション環境の初期設定などを行う。２０６はシミュレーション実行部であり、プロセッサの命令実行のシミュレーションを行う。２０７はレジスタイメージであり、プロセッサの内部レジスタの値を保持する。２０８はメモリイメージであり、プロセッサのメモリの値を保持する。２０９はレジスタタグ情報であり、プロセッサの内部レジスタの値に対応するタグ情報を保持する。
２１０はメモリタグ情報であり、プロセッサのメモリの値に対応するタグ情報を保持する。２１１はメモリ領域情報であり、メモリ領域を管理するための情報を保持する。
【００３７】
図３に、図２の実行ターゲット環境部２０４におけるレジスタイメージ２０７（図３（ａ））、メモリイメージ２０８（図３（ｂ））、レジスタタグ情報２０９（図３（ｃ））、メモリタグ情報２１０（図３（ｄ））の一例を示す。ここで、３０１はレジスタ種別、３０２はレジスタ値、３０３、３０４、３０５はメモリ領域ごとに管理している個々のメモリイメージ情報、３０６はレジスタ種別、３０７はレジスタタグ値、３０８、３０９、３１０はメモリ領域ごとに管理している個々のメモリタグ情報である。
【００３８】
図４に、デバッガ１０４の処理フローを示す。デバッガ１０４が起動された後、ステップＳ４０１では、デバッガ１０４の作業用メモリの初期化や表示用ウィンドウの描画などの初期処理を行う。次にステップＳ４０２では、利用者から、デバッガコマンドの入力を受け付ける。ここで、利用者は、デバッグ対象プログラムのオブジェクトコードの読込みコマンドや、プログラムの実行開始やブレークポイントの設定、メモリのダンプなどデバッグに必要なコマンドを入力する。
次にステップＳ４０３では、入力されたコマンドを解釈し、ステップＳ４０４では、入力されたコマンドに対応するそれぞれの処理を行う。次にステップＳ４０５では、デバッガの表示更新処理を行う。この表示更新処理は、コードを表示するコードウインドウで、プログラム実行が停止したアドレスの前後のコードを表示するよう表示内容を更新し、また、メモリ内容を表示するメモリウインドウで、メモリ内容の変更に伴い表示内容を更新するなどの処理である。ステップＳ４０４で終了コマンドが入力された場合は、ステップＳ４０６でデバッガの作業領域の解放や実行ターゲット環境との接続の切断などの終了処理を行い、処理を終了する。
【００３９】
図５に、図４におけるステップＳ４０４での各コマンドごとの処理のフローを示す。ステップＳ５０１では、図４のステップＳ４０２で入力されたコマンドの種別により、それに対応したステップＳ５０２からステップＳ５０８までの適宜のものに進み、処理を行う。終了コマンドの場合は、終了する。
【００４０】
詳細には、タグ情報ファイルの入力コマンドが入力された場合は、ステップＳ５０２に進み、タグ情報ファイルの入力処理を行う。デバッグ対象プログラムの実行コマンドが入力された場合は、ステップＳ５０３に進み、シミュレーション実行処理を行う。変数表示コマンドが入力された場合は、ステップＳ５０４に進み、変数の表示処理を行う。メモリダンプコマンドが入力された場合は、ステップＳ５０５に進み、メモリ値の表示処理を行う。メモリマップ情報の入力コマンドが入力された場合は、ステップＳ５０６に進み、メモリマップ情報の入力処理を行う。メモリマップ情報の表示コマンドが入力された場合は、ステップＳ５０７に進み、メモリマップ情報の表示処理を行う。
【００４１】
上記以外のコマンドの場合は、ステップＳ５０８で、対応する処理を行う。なお、その処理内容は、従来から公知の技術であるので、ここでは詳細な説明を割愛する。
【００４２】
次に、ステップＳ５０２でのタグ情報ファイルの入力処理について説明する。図６に、ステップＳ５０２の処理フローを示す。すなわち、ステップＳ６０１で、ステップＳ５０２で指定されたタグ情報ファイルの内容を読み込む。ステップＳ６０２で、読み込んだタグ情報の内容を図２のメモリタグ情報２１０に設定する。
【００４３】
以降、具体例を挙げて動作を説明する。
図７（ａ）にタグ情報ファイルの指定コマンドの例を示す。「ｒｅａｄ＿ｆｉｌｅ」は、メモリに読み込むファイルとメモリタグ情報２１０に読み込むファイルとを指定するコマンドである。この例では、ファイルｄａｔａ．ｍｏｔの内容をメモリ値として図２のメモリイメージ２０８に読み込み、同時に、ファイルｄａｔａ．ｔａｇをメモリタグ情報として図２のメモリタグ情報２１０に読み込む。
【００４４】
図７（ｂ）に、図１のストリームデータ１０５、ストリームタグ情報ファイル１０６の例を示す。
図７（ｃ）にストリームタグ情報ファイルｄａｔａ．ｔａｇの例を示す。ファイルには、アドレスとそれに対応するタグ情報値が記述されている。本例では、アドレス  ０ｘ００００００００から、０ｘ０００００００Ｆのタグ値は０であり、０ｘ００００００１０から０ｘ００００００１Ｆのタグ値は１である。
【００４５】
図７（ｄ）に、設定されたメモリタグ情報の例を示す。メモリタグ情報には、アドレス領域０ｘ００００００００から０ｘ００００３ＦＦＦについて、対応するアドレスのタグ情報が格納されている。各数値は対応するタグ情報値を表し、”−”は対応するタグ情報が未定義であることを表す。
【００４６】
図８に、図５のステップＳ５０３におけるシミュレーション実行処理の処理フローを示す。
ステップＳ８０１で、現在のＰＣ（プログラムカウンタ）がブレークポイント設定などの停止アドレスかどうかを判定し、停止アドレスであれば終了する。次にステップＳ８０２でＰＣの現在の命令コードを読み込み、ステップＳ８０３でその命令コードをデコードする。ステップＳ８０４では、デコードした結果から、命令の入力元および出力先がレジスタであるかメモリであるかを判定する。ステップＳ８０５では、ステップＳ８０４で求めた入力元から、対応するタグの値を求める。入力元がレジスタの場合は図２のレジスタタグ情報２０９を参照し、入力元がメモリの場合は図２のメモリタグ情報２１０を参照する。ステップＳ８０６では、命令の演算処理を実行する。すなわち入力元からデータを読み込み、出力先に演算結果データを書き込む。
【００４７】
次に、ステップＳ８０７では、ステップＳ８０５で求めた入力元のタグ値の内、最小のものを演算結果のタグ値として決定する。ステップＳ８０８では、ステップＳ８０７で決定した演算結果のタグ値を、ステップＳ８０４で求めた出力先の種別により、その出力先に対応したタグ情報に書き込む。すなわち、出力先がレジスタの場合は図２のレジスタタグ情報２０９を変更し、出力先がメモリの場合はメモリタグ情報２１０を変更する。
【００４８】
なお、ステップＳ８０７では演算結果のタグ値を入力元のタグ値の内で最小の値としたが、最大の値でもよいし、また、中間の値、あるいは平均値としてもよい。また、入力元のタグ値が未定義の場合は、定義されている値の中から求めればよい。
【００４９】
以降、図５のステップＳ５０３のシミュレーション実行処理について、具体例を挙げてその動作を説明する。
図９（ａ）（ｂ）に、命令の例を示す。図９（ａ）に示すＡＤＤ命令は、レジスタから値を入力し、加算を行い、演算結果をレジスタに出力する命令である。図９（ｂ）に示すＬＤ命令は、メモリから値を入力し、レジスタに格納する命令である。
【００５０】
図９（ｃ）は、命令実行前のレジスタタグ情報の具体例を示す。図９（ｄ）は、命令実行前のメモリタグ情報の具体例を示す。図８のステップＳ８０１、Ｓ８０２、Ｓ８０３で、現ＰＣの命令コードとして、図９（ａ）に示すＡＤＤ命令を読み込み、デコードする。ステップＳ８０４では、たとえばこのＡＤＤ命令の入力元がレジスタＲ１、Ｒ２であること、出力先がレジスタＲ０であることが判る。ステップＳ８０５では、入力元のタグ値として、図９（ｃ）に示すレジスタタグ情報を参照し、それぞれ２、３を得る。ステップＳ８０６では、図９（ａ）のＡＤＤ命令の演算を行う。ステップＳ８０７では、入力元のタグ値２、３で最小の値である２を、演算結果のタグ値として決定する。ステップＳ８０８では、出力先のレジスタＲ０に対応するタグ情報を２として、図２に示すレジスタタグ情報２０９を更新する。図９（ｅ）に、更新後のレジスタタグ情報を示す。
【００５１】
同様に、図９（ｂ）に示すＬＤ命令の場合は、図８のステップＳ８０４で入力元がメモリ０ｘ００００００００から０ｘ０００００００３であることが判り、ステップＳ８０５で、入力元のタグ値として図２のメモリタグ情報２１０を参照し、０、０、０、０を得る。そしてステップＳ８０７で、演算結果のタグ値として０を決定する。ステップＳ８０８では、出力先のレジスタＲ３に対応するタグ情報を０として、図２のレジスタタグ情報２０９を更新する。図９（ｆ）に、更新後のレジスタタグ情報を示す。
【００５２】
図１０に、図５のステップＳ５０４における変数表示処理のフローを示す。
まず、ステップＳ１００１で、表示対象の変数が割付けられている資源を、図１のオブジェクトファイル１０３内のデバッグ情報から求める。次にステップＳ１００２で、ステップＳ１００１の結果により、対応する割付け資源が存在しない場合は終了し、存在する場合はステップＳ１００３に進む。
【００５３】
ステップＳ１００３では、図２のレジスタイメージ２０７あるいはメモリイメージ２０８を参照して、対応する資源の値を求める。次にステップＳ１００４では、図２のレジスタタグ情報２０９あるいはメモリタグ情報２１０を参照して、対応する資源のタグ値を求める。ステップＳ１００５では、対応する資源の値を、図２の表示部２０３により表示する。ステップＳ１００６では、対応するタグの値を、表示部２０３により表示する。
【００５４】
以降、変数表示処理について、具体例を挙げてその動作を説明する。
図１２に、デバッグ情報の例を示す。この図１２において、各行の左端の『数字：』は、説明のために付与した行番号である。デバッグ情報は、高級言語上の変数名をプロセッサ上でのレジスタやメモリなどの資源と対応付けるための情報である。図１２において、１行目から３行目では、変数″ｄａｔａｘ″がレジスタＲ６に配置されており、その型がｉｎｔ（整数）型であることを示している。
同様に、５行目から７行目では、変数  ″ｂｕｆＡ″がメモリ０ｘ４１０番地に配置されおり、その型がｉｎｔ（整数）のポインタ型であることを示している。
【００５５】
図１３（ａ）、（ｂ）、（ｃ）に、変数表示の例を示す。
図１３（ａ）は、デバッガの変数表示コマンドによる、変数の値表示の例を示す。なお、″％″は、デバッガのコマンド入力プロンプトを示し、下線が付与されているのは利用者の入力を示し、付与されていないものはデバッガの出力結果を示す。
【００５６】
デバッガの変数表示コマンドとして  ″ｐｒｉｎｔ  ｄａｔａｘ″が入力された場合、図１０のステップＳ１００１で、表示対象の変数ｄａｔａｘについて、図１２のデバッグ情報を検索する。この検索によって、変数ｄａｔａｘの割付け資源がレジスタＲ６であることを求める。そしてステップＳ１００３で、変数ｄａｔａｘが割付けられている資源であるレジスタＲ６の値を、図２のレジスタイメージ２０７を参照することにより求める。ここでは、図１３に示すように例えば１２８が得られたとする。ステップＳ１００４では、対応する資源であるレジスタＲ６のタグ値を、図２のレジスタタグ情報２０９を参照することにより、５と求める。ステップＳ１００５では変数の値として１２８を表示し、ステップＳ１００６ではタグ値として５を表示する。
【００５７】
同様に、″ｐｒｉｎｔ  ｂｕｆＡ［０］″が入力された場合は、図１０のステップＳ１００１で、表示対象の変数ｂｕｆＡ［０］について、図１２のデバッグ情報を検索し、アドレス０ｘ４１０のメモリに割付けられていることを求める。
ステップＳ１００３では、図２のメモリイメージ２０８を参照することにより、アドレス０ｘ４１０のメモリの値を求める。ステップＳ１００４では、アドレス０ｘ４１０のタグの値を図２のメモリタグ情報２１０を参照することにより求める。ステップＳ１００５、Ｓ１００６でメモリ値とタグ値を表示する。
【００５８】
なお、図１３（ｂ）に示すように、ステップＳ１００５、ステップＳ１００６での表示は、変数表示ウィンドウに対する表示でもよい。同様に、図１３（ｃ）に示すように、ウィンドウ上で変数を表示している領域でマウスポインタでクリックした際にタグの値をポップアップ表示する方法でもよい。また、タグの値に応じて、変数名、変数値の表示のフォントや表示色を変更する方法でも良い。
【００５９】
図１１に、図５のステップＳ５０５のメモリ値表示処理のフローを示す。
まず、ステップＳ１１０１で、図２のメモリイメージ２０８を参照して表示対象のメモリの値を求める。またステップＳ１１０２で、図２のメモリタグ情報２１０を参照して、表示対象のメモリに対応するタグの値を求める。ステップＳ１１０３では、ステップＳ１１０１で求めた値を、図２の表示部２０３により表示する。ステップＳ１１０４では、ステップＳ１１０２で求めたタグ値を、表示部２０３により表示する。
【００６０】
以降、メモリ値表示処理について、具体例を挙げて動作を説明する。
図１５（ａ）に、図２のメモリイメ−ジ２０８の一例を示す。図１５（ｂ）に、メモリタグ情報２１０の一例を示す。図１５（ａ）、（ｂ）に示す状態で、図２のデバッガ１０４のメモリ内容表示コマンドとして、″ｄｕｍｐ  ０ｘＥ８０００６Ｃ０，０ｘＥ８０００７１Ｆ″が入力された場合、図１５（ａ）に示すメモリイメージ２０８を参照して、図１１のステップＳ１１０１で、メモリ領域０ｘＥ８０００６Ｃ０〜０ｘＥ８０００７１Ｆに対応するメモリ値を求める。ステップＳ１１０２では、図１５（ｂ）に示すメモリタグ情報２１０を参照して、メモリ領域０ｘＥ８０００６Ｃ０〜０ｘＥ８０００７１Ｆに対応するタグ値を求める。次に、ステップＳ１１０３では、ステップＳ１１０１で求めた値を表示し、またステップＳ１１０４では、ステップＳ１１０２で求めたタグ値に応じたメモリ値の背景色を変えて表示する。このようにして、求めたタグ値によってステップＳ１１０４においてメモリ値の表示部の背景色を変えて表示した例を、図１４（ａ）に示す。
【００６１】
なお、ステップＳ１１０４において、図１４（ｂ）に示すように、ウィンドウ上でメモリ値を表示している領域でマウスポインタでクリックした際に、求めたタグの値をポップアップ表示するよう構成してもよい。また、タグの値に応じて、メモリ値の表示のフォントや表示色を変更するよう構成してもよい。
【００６２】
図１６に、図５のステップＳ５０７のメモリマップ情報表示処理のフローを示す。
まず、ステップＳ１６０１で、メモリ領域の情報を図２のメモリ領域情報２１１から読み込む。次にステップＳ１６０２で、前記メモリ領域に対応する矩形を表示する。ステップＳ１６０３では、前記メモリ領域に対応するメモリのタグ値を図２のメモリタグ情報２１０から求める。ステップＳ１６０４では、前記矩形の中を、ステップＳ１６０３で求めたタグ値に応じて斜線やドットなどで塗り潰し、タグの値を表示する。
【００６３】
以降、メモリマップ情報表示処理について、具体例を挙げてその動作を説明する。
図１７（ａ）に、デバッガのメモリマップ情報入力コマンドの一例を示す。この図１７（ａ）に示すコマンドが入力された場合、図５のステップＳ５０６で、入力された内容を図２のメモリ領域情報２１１に格納する。図１７（ｂ）に、格納されたメモリ領域情報２１１の例を示す。１７０１はメモリ領域の開始番地であり、１７０２は終了番地であり、１７０３はメモリの種別を表す。
【００６４】
メモリ領域がこのような構成である場合、メモリマップ情報表示コマンドが入力されると、図１６のステップＳ１６０１で、図１７（ｂ）に示す通りのメモリ領域情報２１１を読み込む。ステップＳ１６０２では、ステップＳ１６０１で求めたメモリ領域について領域を表す矩形を表示する。ステップＳ１６０３では、そのメモリ領域について、図２のメモリタグ情報２１０を参照しタグ値を求める。ステップＳ１６０４では、そのタグ値に対応して、表示色を変えて領域を塗り潰す。図１７（ｃ）に、その表示例を示す。
（第２の実施の形態）
次に本発明の第２の実施の形態について説明する。この第２の実施の形態は、第１の実施の形態とは、図１のコンパイラ１０２で行われるコンパイル処理と、図５のステップＳ５０３でのシミュレーション実行処理との処理内容が異なる。
【００６５】
図１８に、本発明の第２の実施の形態におけるシステムの構成を示す。Ｃソースプログラム１０１、コンパイラ１０２、オブジェクトファイル１０３、デバッガ１０４、ストリームファイル１０５、ストリームタグ情報ファイル１０６、コンソール１０７、ディスプレイ１０８は、図１で説明したものと同じである。相違点として、１０９は式情報であり、実行コードとデバッグ情報とに加えてオブジェクトファイル１０３に格納される。
【００６６】
図１９に、コンパイラ１０２の機能ブロック図を示す。この図１９において、１９０１は構文解析部で、Ｃ言語で記述されたＣソースプログラム２０１を入力し、Ｃ言語の文法に基づき構文解析を行う。１９０２は式情報出力部で、構文解析部１９０１で解析された式の情報を式情報１０９としてオブジェクトファイル１０３に出力する。
【００６７】
１９０３はプログラム変換部で、Ｃソースプログラム２０１を中間記述レベル表現に変換する。１９０４はプログラム最適化部で、中間記述レベル表現のプログラム中のオペレーションを移動して実行順序を変更することや、不要なオペレーションを削除することによって、最適化を行ないつつ実行コードを生成する。
１９０５は実行コード出力部で、プログラム最適化部１９０４によって生成された実行コードをオブジェクトコードとしてオブジェクトファイル１０３に出力する。１９０６はデバッグ情報生成部で、デバッグに必要な識別子や行番号と実行コードとの関連づけなどの、デバッグ情報を生成する。１９０７はデバッグ情報出力部で、デバッグ情報生成部１９０６によって生成されたデバッグ情報をオブジェクトファイル１０３の中に追記してデバッグ情報として出力する。
【００６８】
以降、具体例を挙げて動作を説明する。
図２０に、ソースプログラム２０１上での演算式の一例を示す。また、この演算式を構文解析部１９０１で解析した結果を図２１に示す。この解析結果は、図示のように、木構造データによって表現される。２１０１、２１０２、２１０３、２１０４、２１０５、２１０６、２１０７は、木構造のノードであり、式の各要素を格納する。図２２に、上記の木構造データを式情報出力部１９０２により図１９の式情報１０９としてオブジェクトファイル１０３に出力した結果を示す。図２２に示す式情報は、上記の木構造データと本質的に同一のものであり、ファイル出力できる形式に変換したものである。なお、本実施の形態ではソースプログラム２０１はＣ言語としたが、他の言語でもよい。
【００６９】
図２５に、第２の実施の形態における図５のステップＳ５０３のシミュレーション実行処理のフローを示す。すなわち、ステップＳ２５０１で、現在のＰＣがブレークポイント設定などの停止アドレスかどうかを判定し、停止アドレスであれば終了する。
【００７０】
次にステップＳ２５０２では、現ＰＣの命令コードを読み込み、ステップＳ２５０３でその命令コードをデコードする。ステップＳ２５０４では、デコードした結果から命令の出力先を求め、オブジェクトファイル１０３内のデバッグ情報を検索し、出力先と対応するシンボルを求める。対応するシンボルが存在しない場合は、ステップＳ２５１２に進む。対応するシンボルが存在する場合は、ステップＳ２５０５に進む。
【００７１】
ステップＳ２５０５では、オブジェクトファイル１０３における式情報１０９を検索し、ステップＳ２５０４で求めたシンボルが代入式の左辺オペランドになっている式を求める。前記シンボルが代入式の左辺オペランドとして存在しない場合はステップＳ２５１２に進み、存在する場合はステップＳ２５０６に進む。
【００７２】
ステップＳ２５０６では、ステップＳ２５０５で求めた式情報から右辺オペランドを全て求める。次にステップＳ２５０７では、ステップＳ２５０６で求めた全ての右辺オペランドについて、オブジェクトファイル１０３内のデバッグ情報を参照し、対応する資源を求める。ステップＳ２５０８では、ステップＳ２５０７で求めた全ての資源に対して、資源がレジスタの場合は図２のレジスタタグ情報２０９を参照し、資源がメモリである場合は図２のメモリタグ情報２１０を参照し、対応するタグ値を求める。ステップＳ２５０９では、命令の演算処理を実行して、入力元からデータを読み込み、また出力先に演算結果データを書き込む。ステップＳ２５１０では、ステップＳ２５０８で求めた入力元のタグ値の内、最小のものを、演算結果のタグ値として決定する。ステップＳ２５１１では、ステップＳ２５１０で決定した演算結果のタグ値を、出力先の種別により対応したタグ情報に書き込む。すなわち、出力先がレジスタの場合は図２におけるレジスタタグ情報２０９を変更し、出力先がメモリの場合はメモリタグ情報２１０を変更する。
【００７３】
ステップＳ２５１２は、ステップＳ２５０９と同じ処理であり、命令の演算処理を実行する。すなわち、入力元からデータを読み込み、出力先に演算結果データを書き込む。
【００７４】
なお、ステップＳ２５１０では、演算結果のタグ値を入力元のタグ値の内の最小の値としたが、最大の値としてもよいし、また、中間の値、あるいは平均値としてもよい。また、入力元のタグ値が未定義の場合は、定義されている値の中から求めればよい。
【００７５】
再び、具体例を挙げて動作を説明する。
図２４に、図２０に示すＣ言語での演算式に対応する機械語コードを示す。図２３には、デバッグ情報の一例を示す。
【００７６】
図２４の１行目に示すｍｏｖ命令をシミュレーションする場合は、図２５のステップＳ２５０３で命令をデコードすると、出力先がＲ１レジスタであることが判る。次にステップＳ２５０４で、出力先Ｒ１レジスタに対応するシンボルがあるか否かを判定するために、図２３に示すデバッグ情報を検索する。図２３ではＲ１レジスタに対応するシンボルが存在しないことが判り、ステップＳ２５１２に進む。ステップＳ２５１２でｍｏｖ命令の処理を実行すると、図２４の１行目に示す機械語コードのシミュレーション処理は完了する。
【００７７】
続いて、２行目、３行目、４行目に示す命令も同様に処理する。
次に、５行目に示すａｄｄ命令をシミュレーションする場合は、図２５のステップＳ２５０３で命令をデコードして、出力先がＲ６レジスタであることが判る。次にステップＳ２５０４で、図２３に示すデバッグ情報に対して、出力先Ｒ６レジスタに対応するシンボルがあるか否かを検索する。この場合、Ｒ６レジスタに対応するシンボルとして変数ａが見つかり、ステップＳ２５０５に進む。ステップＳ２５０５では、式情報１０９に対して、変数ａが代入式の左辺オペランドとなっている式情報を検索する。検索の結果、図２２、２３に示す式情報が見つかり、ステップＳ２５０６に進む。ステップＳ２５０６では、前記式情報から、全ての右辺オペランドとして変数ｂ、ｃ、ｄを得る。ステップＳ２５０７では、図２３に示すデバッグ情報を参照し、変数ｂ、ｃ、ｄに対応する資源として、それぞれメモリ０ｘ０１０番地、０ｘ０１４番地、０ｘ０１８番地を得る。ステップＳ２５０８では、図２のメモリタグ情報２１０を参照し、メモリ０ｘ０１０番地、０ｘ０１４番地、０ｘ０１８番地のタグ値として、それぞれ１、１、１を得る。次にステップＳ２５０９で、ａｄｄ命令の演算処理を行う。ステップＳ２５１０では、ステップＳ２５０８で求めたタグ値の中での最小値１を求め、演算結果のタグ値とする。ステップＳ２５１１では、出力先Ｒ６レジスタに対応する図２のレジスタタグ情報２１０に、１を格納する。
【００７８】
【発明の効果】
以上説明したように、本発明によれば、メディア処理プログラムのシミュレーション実行時に属性値も同時に決定し、変数やメモリ値の表示の際に該当する属性値を取得して、その属性値に応じて表示方法を変更し表示することができ、したがって利用者が属性値の情報も同時に判別することができ、このためメディア処理プログラムのデバッグの効率をあげることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態のシミュレータデバッガのシステムの構成を示す図
【図２】図１におけるデバッガの機能ブロック図
【図３】図１におけるレジスタイメージ、メモリイメージ、レジスタタグ情報、メモリタグ情報の一例を示す図
【図４】図１および図２のデバッガの処理フロー図
【図５】図４における各コマンドごとの処理についての詳細なフロー図
【図６】図５におけるタグ情報ファイル入力処理についての詳細なフロー図
【図７】本発明の第１の実施の形態のシュミレータデバッガにおけるタグ情報ファイルの指定コマンド、ストリームデータ、ストリームタグ情報ファイル、ストリームタグ情報、メモリタグ情報のそれぞれ一例を示す図
【図８】図５におけるシミュレーション実行処理についての詳細なフロー図
【図９】本発明の第１の実施の形態のシュミレータデバッガにおける命令、他の命令、レジスタタグ情報、メモリタグ情報、他のレジスタタグ情報、さらに他のレジスタタグ情報のそれぞれ一例を示す図
【図１０】図５における変数表示処理についての詳細なフロー図
【図１１】図５におけるメモリ値表示処理についての詳細なフロー図
【図１２】本発明の第１の実施の形態のシュミレータデバッガにおけるデバッグ情報の一例を示す図
【図１３】本発明の第１の実施の形態のシュミレータデバッガにおける変数表示の例を示す図
【図１４】本発明の第１の実施の形態のシュミレータデバッガにおけるメモリ値表示の例を示す図
【図１５】本発明の第１の実施の形態のシュミレータデバッガにおけるメモリイメージ、メモリタグ情報のそれぞれ一例を示す図
【図１６】図５におけるメモリマップ情報表示処理についての詳細なフロー図
【図１７】本発明の第１の実施の形態のシュミレータデバッガにおけるメモリマップ情報入力コマンド、メモリ領域情報、メモリマップ情報表示のそれぞれ一例を示す図
【図１８】本発明の第２の実施の形態のシミュレータデバッガのシステムの構成を示す図
【図１９】図１８におけるコンパイラの機能ブロック図
【図２０】本発明の第２の実施の形態のシミュレータデバッガにおける演算式の一例を示す図
【図２１】図２０の演算式についての木構造データの一例を示す図
【図２２】図２０の演算式についての式情報の一例を示す図
【図２３】図２０の演算式に対応するデバック情報の一例を示す図
【図２４】図２０の演算式に対応する機械語コードの一例を示す図
【図２５】本発明の第２の実施の形態のシミュレータデバッガにおけるシミュレーション実行処理についての詳細なフロー図
【符号の説明】
１０３  オブジェクトファイル
１０４  デバッガ
１０５  ストリームファイル
１０６  ストリームタグ情報ファイル
１０８  ディスプレイ
１０９  式情報
２０１  デバッガ制御部
２０２  コマンド入力部
２０３  表示部
２０４  実行ターゲット環境部
２０５  シミュレーション制御部
２０６  シミュレーション実行部
２０７  レジスタイメージ
２０８  メモリイメージ
２０９  レジスタタグ情報
２１０  メモリタグ情報
２１１  メモリ領域情報
【図１】
2005025579.tif 000003
【図２】
2005025579.tif 000004
【図３】
2005025579.tif 000005
【図４】
2005025579.tif 000006
【図５】
2005025579.tif 000007
【図６】
2005025579.tif 000008
【図７】
2005025579.tif 000009
【図８】
2005025579.tif 000010
【図９】
2005025579.tif 000011
【図１０】
2005025579.tif 000012
【図１１】
2005025579.tif 000013
【図１２】
2005025579.tif 000014
【図１３】
2005025579.tif 000015
【図１４】
2005025579.tif 000016
【図１５】
2005025579.tif 000017
【図１６】
2005025579.tif 000018
【図１７】
2005025579.tif 000019
【図１８】
2005025579.tif 000020
【図１９】
2005025579.tif 000021
【図２０】
2005025579.tif 000022
【図２１】
2005025579.tif 000023
【図２２】
2005025579.tif 000024
【図２３】
2005025579.tif 000025
【図２４】
2005025579.tif 000026
【図２５】
2005025579.tif 000027