(57)【要約】  【課題】  ソフトウエア開発者が意図しないリソースへのアクセスをチェックする機能を備えたシミュレータを提供する。  【解決手段】  プロセッサの動作をソフトウエアで模擬するシミュレータである。入力コマンドの解析／処理を行うコマンド入力手段１１１、プロセッサの実行命令やデータを格納するメモリ要素１００、演算用データを格納するレジスタ要素１０１、実行命令に応じてメモリ要素及びレジスタ要素にアクセスするコントロール要素１０２、指定したリソース情報とリソース情報毎のＲ／Ｗ情報を格納するリソース情報記憶手段１０３、コントロール要素におけるメモリ要素及びレジスタ要素へのアクセス先並びにＲ／Ｗ種別とリソース情報記憶手段に格納されたリソース情報及びＲ／Ｗ情報とを比較し、アクセス先がリソース情報及びＲ／Ｗ情報で許可されているどうかのリソースアクセス分析を行うリソースアクセス分析手段１０４とを有する。【選択図】  図１
2005128692.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを含む要素を複数の模擬要素で表現して、前記プロセッサの動作をシミュレートするシミュレータであって、
前記複数の模擬要素は、
前記プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、
前記プロセッサのレジスタを表現するレジスタ要素と、
前記メモリ要素及び／又は前記レジスタにアクセスするコントローラを表現するコントロール要素とを有し、
前記シミュレータは、
入力されたコマンドを解析し前記複数の模擬要素を操作するコマンド入力手段と、
前記コントロール要素が、前記メモリ要素及び／又は前記レジスタ要素へアクセスを行うリソースアクセスをチェックする手段とを備えるシミュレータ。
【請求項２】
前記リソースアクセスをチェックする手段は、
前記メモリ要素のメモリ領域範囲及び前記メモリ要素の読み書き種別と、前記レジスタ要素のレジスタ種別及び前記レジスタ要素の読み書き種別とを含む、リソース情報を記憶するリソース情報記憶手段と、
前記リソース情報を参照しリソースアクセスの適否を分析するリソースアクセス分析手段とを備える請求項１記載のシミュレータ。
【請求項３】
前記リソース情報は、前記コマンドにより指定される請求項１から２記載のシミュレータ。
【請求項４】
前記リソース情報は、データとして用意され、前記データは、前記コマンドにより指定される請求項１から２記載のシミュレータ。
【請求項５】
前記リソース情報記憶手段は、さらに、前記プロセッサの実行命令のアドレス範囲情報を記憶し、
前記リソースアクセス分析手段は、さらに、前記プロセッサの実行命令のアドレス範囲情報を参照して実行命令の適否を分析する請求項２から４記載のシミュレータ。
【請求項６】
プロセッサを含む要素を複数の模擬要素で表現して、前記プロセッサの動作をシミュレートするシミュレータであって、
前記複数の模擬要素は、
前記プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、
前記プロセッサのレジスタを表現するレジスタ要素と、
前記メモリ要素及び／又は前記レジスタにアクセスするコントローラを表現するコントロール要素とを有し、
前記シミュレータは、
入力されたコマンドを解析し前記複数の模擬要素を操作するコマンド入力手段と、
前記コントロール要素が、前記メモリ要素及び／又は前記レジスタ要素へアクセスを行うデータアクセスをチェックする手段とを備えるシミュレータ。
【請求項７】
前記データアクセスをチェックする手段は、
前記メモリ要素のメモリ領域範囲及び前記メモリ要素の読み書き種別と、前記レジスタ要素のレジスタ種別及び前記レジスタ要素の読み書き種別とを含む、データ情報を記憶するデータ情報記憶手段と、
前記データ情報を参照しデータアクセスの適否を分析するデータアクセス分析手段とを備える請求項６記載のシミュレータ。
【請求項８】
前記データ情報は、前記コマンドにより指定される請求項６から７記載のシミュレータ。
【請求項９】
前記データ情報は、データとして用意され、前記データは、前記コマンドにより指定される請求項６から７記載のシミュレータ。
【請求項１０】
前記データ情報記憶手段は、さらに、前記プロセッサの実行命令のアドレス範囲情報を記憶し、
前記データアクセス分析手段は、さらに、前記プロセッサの実行命令のアドレス範囲情報を参照して実行命令の適否を分析する請求項７から９記載のシミュレータ。
【請求項１１】
プロセッサを含む要素を複数の模擬要素で表現して、前記プロセッサの動作をシミュレートするシミュレータであって、
前記複数の模擬要素は、
前記プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、
前記プロセッサのレジスタを表現するレジスタ要素と、
前記メモリ要素及び／又は前記レジスタにアクセスするコントローラを表現するコントロール要素とを有し、
前記シミュレータは、
入力されたコマンドを解析し前記複数の模擬要素を操作するコマンド入力手段と、
前記メモリ要素及び／又は前記レジスタ要素が初期化されているか否かをチェックする手段とを備えるシミュレータ。
【請求項１２】
前記メモリ要素及び／又は前記レジスタ要素が初期化されているか否かをチェックする手段は、
前記メモリ要素及び／又は前記レジスタ要素が初期化されているか否かを示す情報を記憶するリソース初期化情報格納手段と、
前記リソース初期化情報格納手段を参照し、前記コントロール要素が、前記メモリ要素及び／又は前記レジスタ要素へアクセスする際にアクセス先が初期化されているか否かを分析するリソース初期化分析手段とを備える請求項１１記載のシミュレータ。
【請求項１３】
プロセッサを含む要素を複数の模擬要素で表現して、前記プロセッサの動作をシミュレートするシミュレータであって、
前記複数の模擬要素は、
前記プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、
前記プロセッサのレジスタを表現するレジスタ要素と、
前記メモリ要素及び／又は前記レジスタにアクセスするコントローラを表現するコントロール要素とを有し、
前記シミュレータは、
入力されたコマンドを解析し前記複数の模擬要素を操作するコマンド入力手段と、
前記コントロール要素が実行する条件付命令の実行状態をチェックする手段とを備えるシミュレータ。
【請求項１４】
前記コントロール要素が実行する条件付命令の実行状態をチェックする手段は、
前記コントロール要素が条件付命令を実行する際に、条件付命令のアドレス情報及び実行時に参照したレジスタ値を記憶する条件付命令実行状態分析手段を備える請求項１３記載のシミュレータ。
【請求項１５】
プロセッサを含む要素を複数の模擬要素で表現して、前記プロセッサの動作をシミュレートするシミュレーション方法であって、
前記複数の模擬要素は、
前記プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、
前記プロセッサのレジスタを表現するレジスタ要素と、
前記メモリ要素及び／又は前記レジスタにアクセスし、前記レジスタ要素のレジスタ値に応じた条件付命令を実行するコントローラを表現するコントロール要素とを有し、
前記シミュレーション方法は、
入力されたコマンドを解析し前記複数の模擬要素を操作するコマンド入力ステップと、
前記条件付命令に係る実行状態の情報を記憶する条件付命令実行状態分析ステップとを含むシミュレーション方法。
【請求項１６】
プロセッサを含む要素を複数の模擬要素で表現して、前記プロセッサの動作をシミュレートするシミュレーション方法であって、
前記複数の模擬要素は、
前記プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、
前記プロセッサのレジスタを表現するレジスタ要素と、
前記メモリ要素及び／又は前記レジスタにアクセスするコントローラを表現するコントロール要素とを有し、
前記シミュレーション方法は、
入力されたコマンドを解析し前記複数の模擬要素を操作するコマンド入力ステップと、
前記コントロール要素が、前記メモリ要素及び／又は前記レジスタ要素へアクセスを行うリソースアクセスをチェックするステップとを含むシミュレーション方法。
【請求項１７】
前記リソースアクセスをチェックするステップは、
前記メモリ要素のメモリ領域範囲及び前記メモリ要素の読み書き種別と、前記レジスタ要素のレジスタ種別及び前記レジスタ要素の読み書き種別とを含む、リソース情報を記憶するリソース情報記憶ステップと、
前記リソース情報を参照しリソースアクセスの適否を分析するリソースアクセス分析ステップとを含む請求項１６記載のシミュレーション方法。
【請求項１８】
前記リソース情報は、前記コマンドにより指定される請求項１６から１７記載のシミュレーション方法。
【請求項１９】
前記リソース情報は、データとして用意され、前記データは、前記コマンドにより指定される請求項１６から１７記載のシミュレーション方法。
【請求項２０】
前記リソース情報記憶ステップでは、さらに、前記プロセッサの実行命令のアドレス範囲情報を記憶し、
前記リソースアクセス分析ステップでは、さらに、前記プロセッサの実行命令のアドレス範囲情報を参照して実行命令の適否を分析する請求項１７から１９記載のシミュレーション方法。
【請求項２１】
プロセッサを含む要素を複数の模擬要素で表現して、前記プロセッサの動作をシミュレートするシミュレーション方法であって、
前記複数の模擬要素は、
前記プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、
前記プロセッサのレジスタを表現するレジスタ要素と、
前記メモリ要素及び／又は前記レジスタにアクセスするコントローラを表現するコントロール要素とを有し、
前記シミュレーション方法は、
入力されたコマンドを解析し前記複数の模擬要素を操作するコマンド入力ステップと、
前記コントロール要素が、前記メモリ要素及び／又は前記レジスタ要素へアクセスを行うデータアクセスをチェックするステップとを含むシミュレーション方法。
【請求項２２】
前記データアクセスをチェックするステップは、
前記メモリ要素のメモリ領域範囲及び前記メモリ要素の読み書き種別と、前記レジスタ要素のレジスタ種別及び前記レジスタ要素の読み書き種別とを含む、データ情報を記憶するデータ情報記憶ステップと、
前記データ情報を参照しデータアクセスの適否を分析するデータアクセス分析ステップとを含む請求項２１記載のシミュレーション方法。
【請求項２３】
前記データ情報は、前記コマンドにより指定される請求項２１から２２記載のシミュレーション方法。
【請求項２４】
前記データ情報は、データとして用意され、前記データは、前記コマンドにより指定される請求項２１から２２記載のシミュレーション方法。
【請求項２５】
前記データ情報記憶ステップでは、さらに、前記プロセッサの実行命令のアドレス範囲情報を記憶し、
前記データアクセス分析ステップでは、さらに、前記プロセッサの実行命令のアドレス範囲情報を参照して実行命令の適否を分析する請求項２２から２４記載のシミュレーション方法。
【請求項２６】
プロセッサを含む要素を複数の模擬要素で表現して、前記プロセッサの動作をシミュレートするシミュレーション方法であって、
前記複数の模擬要素は、
前記プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、
前記プロセッサのレジスタを表現するレジスタ要素と、
前記メモリ要素及び／又は前記レジスタにアクセスするコントローラを表現するコントロール要素とを有し、
前記シミュレーション方法は、
入力されたコマンドを解析し前記複数の模擬要素を操作するコマンド入力ステップと、
前記メモリ要素及び／又は前記レジスタ要素が初期化されているか否かをチェックするステップとを含むシミュレーション方法。
【請求項２７】
前記メモリ要素及び／又は前記レジスタ要素が初期化されているか否かをチェックするステップは、
前記メモリ要素及び／又は前記レジスタ要素が初期化されているか否かを示す情報を記憶するリソース初期化情報格納ステップと、
前記リソース初期化情報格納手段を参照し、前記コントロール要素が、前記メモリ要素及び／又は前記レジスタ要素へアクセスする際にアクセス先が初期化されているか否かを分析するリソース初期化分析ステップとを含む請求項２６記載のシミュレーション方法。
【請求項２８】
プロセッサを含む要素を複数の模擬要素で表現して、前記プロセッサの動作をシミュレートするシミュレーション方法であって、
前記複数の模擬要素は、
前記プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、
前記プロセッサのレジスタを表現するレジスタ要素と、
前記メモリ要素及び／又は前記レジスタにアクセスし、前記レジスタ要素のレジスタ値に応じた条件付命令を実行するコントローラを表現するコントロール要素とを有し、
前記シミュレーション方法は、
入力されたコマンドを解析し前記複数の模擬要素を操作するコマンド入力ステップと、
前記条件付命令に係る実行状態の情報を記憶する条件付命令実行状態分析ステップとを含むシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等のプロセッサの動作をソフトウエアで模擬するシミュレータ及びその関連技術に関するものである。
【背景技術】
【０００２】
組み込み向けソフトウエア開発においては、次の手順を踏む。まず、Ｃ／Ｃ＋＋等の高級言語を用いてソースコードを記述する。また、性能（処理量、リソース使用量など）を重視する部分については、アセンブラ言語を用いたコーディングが行われる。
【０００３】
次に、コーディングしたソフトウエアを、ターゲットであるＤＳＰ等のリソース（レジスタ、メモリ等）や動作を模擬するシミュレータ上で実行し、ソースコードのデバッグ等が行われる。
【０００４】
ここで、シミュレータはデバッグ時に使用され、パーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）等のホストプロセッサ上で動作し、実行中のソフトウエアをあるタイミングで停止させたり、各種リソース（レジスタ、メモリ等）の状態を参照したり、各種リソースに値をセットしたりするなどの機能を備える。
【０００５】
また特許文献１（特開平５−２３３３１７号公報）は、ソフトウエア実行後に、予めコマンドで指定したメモリへ書き込みを行った関数名を表示する機能を備えるシミュレータを開示する。
【０００６】
以下、特許文献１に示されるソフトウエアシミュレータについて説明する。
【０００７】
図３３（ａ）は、特許文献１のソフトウエアシミュレータのフローチャートであり、図３３（ｂ）は、特許文献１に示されるソフトウエアシミュレータで作成される領域アクセス用テーブルを示す。
【０００８】
図３３（ａ）のステップ３３００で、コマンドが入力され、ステップ３３０１にて、入力されたコマンドが解析される。
【０００９】
解析の結果、入力されたコマンドが、領域アクセスコマンドであれば、ステップ３３０３で領域アクセスコマンドの処理が行われる。
【００１０】
ステップ３３０３において、入力されたコマンドがｓｅｔａｃｃコマンドの場合、コマンドで指定されるアドレス情報を基にして、図３３（ｂ）に示す領域アクセス用テーブル３３０８が作成される。
【００１１】
また入力されたコマンドがｓｅｔａｃｃコマンドではなく、ｇｅｔａｃｃコマンドである場合は、領域アクセス用テーブル３３０８において、コマンドで指定されるアドレス情報と一致する関数名が表示される。
【００１２】
次に、ステップ３３０４で、命令の実行コマンドかどうかの判定が行われ、命令の実行コマンドでない場合、ステップ３３００へ処理が戻る。
【００１３】
命令の実行コマンドの場合は、ステップ３３０５で１命令が実行され、ステップ３３０６で、ｓｅｔａｃｃコマンドで指定した領域に書き込みが行われたか否かの判定が行われる。
【００１４】
ステップ３３０６では、実行された命令がメモリアクセス命令かどうかが判定され、メモリアクセス命令ではない場合は処理が終了する。
【００１５】
実行された命令がメモリアクセス命令であり、書き込み先が領域アクセス用テーブル３３０８に格納されているアドレス情報に含まれる場合、実行命令を含む関数名が、領域アクセス用テーブル３３０８に格納される。
【００１６】
次に、ステップ３３０７で、命令の実行が終了かどうかが判断され、命令の実行を続ける場合は、ステップ３３０５へ処理が進み、終了の場合は、ステップ３３００へ処理が戻る。
【００１７】
以上のような構成で、特許文献１のシミュレータは、ソフトウエア実行後に、予めコマンドで指定したメモリへ書き込みを行った関数名を表示するようになっている。
【特許文献１】特開平５−２３３３１７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、従来のシミュレータでは、ソフトウエア開発者が意図しないリソース（レジスタ、メモリ等）へのアクセス（読み出し、書き込み）をチェックする機能やリソース（レジスタ、メモリ等）へのアクセス（読み出し・書き込み）時のデータがソフトウエア開発者が意図した値かどうかをチェックする機能を備えていない。意図しないアクセスやデータが原因でソフトウエアが異常動作を起こした場合、ソフトウエア開発者は、ソフトウエアの実行、停止、リソース状態の参照を繰り返し、ソフトウエア上の問題個所を特定する必要があり、ソフトウエア開発効率が著しく低下する。
【００１９】
また従来のシミュレータは、シミュレーション時に、実行命令単位で、ある命令が実行されたか否かのチェック及び履歴を残す機能を有する。しかしながら、実行命令があるレジスタ値に応じて処理を切り替える（例えばレジスタ値が０の場合は指定されたアドレスに分岐する等）条件付命令の場合に、条件付命令がどういう条件で実行されたかどうかをチェックする機能はなかったため、開発したソフトウエアがあらゆる条件で意図した動作をしているかどうかの確認ができなかった。
【００２０】
特許文献１に示されるソフトウエアシミュレータにおいても、レジスタへのアクセス及びメモリからの読み出しはチェックできない。さらにメモリへの書き込みに対しても、ソフトウエア実行後に関数名の履歴を表示するのみであるので、どこが問題のある書き込みかを特定できない。
【００２１】
本発明は、ソフトウエア開発効率を向上できるシミュレータを提供することを第１の目的とする。また本発明は、開発されたソフトウエアの完成度を向上できるシミュレータを提供することを第２の目的とする。
【課題を解決するための手段】
【００２２】
請求項１記載のシミュレータは、プロセッサを含む要素を複数の模擬要素で表現して、プロセッサの動作をシミュレートするシミュレータであって、複数の模擬要素は、プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、プロセッサのレジスタを表現するレジスタ要素と、メモリ要素及び／又はレジスタにアクセスするコントローラを表現するコントロール要素とを有し、シミュレータは、入力されたコマンドを解析し複数の模擬要素を操作するコマンド入力手段と、コントロール要素が、メモリ要素及び／又はレジスタ要素へアクセスを行うリソースアクセスをチェックする手段とを備える。
【００２３】
請求項２記載のシミュレータでは、リソースアクセスをチェックする手段は、メモリ要素のメモリ領域範囲及びメモリ要素の読み書き種別と、レジスタ要素のレジスタ種別及びレジスタ要素の読み書き種別とを含む、リソース情報を記憶するリソース情報記憶手段と、リソース情報を参照しリソースアクセスの適否を分析するリソースアクセス分析手段とを備える。
【００２４】
請求項３記載のシミュレータでは、リソース情報は、コマンドにより指定される。
【００２５】
請求項４記載のシミュレータでは、リソース情報は、データとして用意され、データは、コマンドにより指定される。
【００２６】
請求項５記載のシミュレータでは、リソース情報記憶手段は、さらに、プロセッサの実行命令のアドレス範囲情報を記憶し、リソースアクセス分析手段は、さらに、プロセッサの実行命令のアドレス範囲情報を参照して実行命令の適否を分析する。
【００２７】
これらの構成により、実行命令アドレス範囲、アクセスを許可するリソース、アクセス種別（読み出し、書き込み）等のアロケーション情報を、予め指定しておき、命令の実行を行える。したがって、指定したアロケーション情報に反する処理を検出でき、また、ソフトウエア開発者に対する通知を行える。その結果、ソフトウエアの問題から、意図しないリソースへのアクセスが発生した場合に、問題個所の特定が容易となり、ソフトウエア開発効率が向上する。
【００２８】
請求項６記載のシミュレータは、プロセッサを含む要素を複数の模擬要素で表現して、プロセッサの動作をシミュレートするシミュレータであって、複数の模擬要素は、プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、プロセッサのレジスタを表現するレジスタ要素と、メモリ要素及び／又はレジスタにアクセスするコントローラを表現するコントロール要素とを有し、シミュレータは、入力されたコマンドを解析し複数の模擬要素を操作するコマンド入力手段と、コントロール要素が、メモリ要素及び／又はレジスタ要素へアクセスを行うデータアクセスをチェックする手段とを備える。
【００２９】
請求項７記載のシミュレータでは、データアクセスをチェックする手段は、メモリ要素のメモリ領域範囲及びメモリ要素の読み書き種別と、レジスタ要素のレジスタ種別及びレジスタ要素の読み書き種別とを含む、データ情報を記憶するデータ情報記憶手段と、データ情報を参照しデータアクセスの適否を分析するデータアクセス分析手段とを備える。
【００３０】
請求項８記載のシミュレータでは、データ情報は、コマンドにより指定される。
【００３１】
請求項９記載のシミュレータでは、データ情報は、データとして用意され、データは、コマンドにより指定される。
【００３２】
請求項１０記載のシミュレータでは、データ情報記憶手段は、さらに、プロセッサの実行命令のアドレス範囲情報を記憶し、データアクセス分析手段は、さらに、プロセッサの実行命令のアドレス範囲情報を参照して実行命令の適否を分析する。
【００３３】
これらの構成により、実行命令アドレス範囲、アクセスを許可するリソース、データ範囲（最小値、最大値）等のアロケーション情報を、予め指定しておき、命令の実行を行える。したがって、指定したアロケーション情報に反する処理を検出でき、ソフトウエア開発者に対する通知を行うことができる。その結果、ソフトウエアの問題から、意図しないリソースへのデータアクセスが発生した場合に、問題個所の特定が容易となり、ソフトウエア開発効率が向上する。
【００３４】
請求項１１記載のシミュレータでは、プロセッサを含む要素を複数の模擬要素で表現して、プロセッサの動作をシミュレートするシミュレータであって、複数の模擬要素は、プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、プロセッサのレジスタを表現するレジスタ要素と、メモリ要素及び／又はレジスタにアクセスするコントローラを表現するコントロール要素とを有し、シミュレータは、入力されたコマンドを解析し複数の模擬要素を操作するコマンド入力手段と、メモリ要素及び／又はレジスタ要素が初期化されているか否かをチェックする手段とを備える。
【００３５】
請求項１２記載のシミュレータでは、メモリ要素及び／又はレジスタ要素が初期化されているか否かをチェックする手段は、メモリ要素及び／又はレジスタ要素が初期化されているか否かを示す情報を記憶するリソース初期化情報格納手段と、リソース初期化情報格納手段を参照し、コントロール要素が、メモリ要素及び／又はレジスタ要素へアクセスする際にアクセス先が初期化されているか否かを分析するリソース初期化分析手段とを備える。
【００３６】
これらの構成により、各リソースに対する初期化情報を用意し、リソースへのアクセスを行う命令実行時に未初期化リソースへのアクセス処理を検出でき、また、ソフトウエア開発者に対する通知を行える。その結果、ソフトウエアの問題から、未初期化リソースへのアクセスが発生した場合に、問題個所の特定が容易となり、ソフトウエア開発効率が向上する。
【００３７】
請求項１３記載のシミュレータは、プロセッサを含む要素を複数の模擬要素で表現して、プロセッサの動作をシミュレートするシミュレータであって、複数の模擬要素は、プロセッサの実行命令及びデータを記憶するメモリを表現するメモリ要素と、プロセッサのレジスタを表現するレジスタ要素と、メモリ要素及び／又はレジスタにアクセスするコントローラを表現するコントロール要素とを有し、シミュレータは、入力されたコマンドを解析し複数の模擬要素を操作するコマンド入力手段と、コントロール要素が実行する条件付命令の実行状態をチェックする手段とを備える。
【００３８】
請求項１４記載のシミュレータでは、コントロール要素が実行する条件付命令の実行状態をチェックする手段は、コントロール要素が条件付命令を実行する際に、条件付命令のアドレス情報及び実行時に参照したレジスタ値を記憶する条件付命令実行状態分析手段を備える。
【００３９】
これらの構成により、レジスタ等を参照した結果に応じて処理を実行する条件付命令実行時に、条件付命令のメモリアドレスや条件判定のために参照したレジスタ値を記憶でき、また、記憶した情報をソフトウエア開発者に通知できる。したがって、ソフトウエア開発者は、条件付命令の実行状態を確認でき、ソフトウエアが全ての条件で開発者の意図通りに動作しているかどうかを検証でき、ソフトウエアの完成度（動作の確かさ）が向上する。
【発明の効果】
【００４０】
本発明によれば、次の効果がある。
【００４１】
ソフトウエアの問題から、意図しないリソースへのアクセスが発生した場合に、問題個所の特定が容易となり、ソフトウエア開発効率が向上する。
【００４２】
ソフトウエアの問題から、未初期化リソースへのアクセスが発生した場合に、問題個所の特定が容易となり、ソフトウエア開発効率が向上する。
【００４３】
ソフトウエア開発者は、条件付命令の実行状態を確認でき、ソフトウエアが全ての条件で開発者の意図通りに動作しているかどうかを検証することができ、ソフトウエアの完成度（動作の確かさ）が向上する。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の実施の形態について図面を参照して説明する。
【００４５】
（実施の形態１）
以下図１〜図１３を参照しながら、本発明の実施の形態１について説明する。
【００４６】
図１は、本発明の実施の形態１におけるシミュレータのブロック図である。
【００４７】
メモリ要素１００は、プロセッサの実行命令やデータを格納するメモリを表現する。
【００４８】
レジスタ要素１０１は、演算用データを格納する少なくとも一つのレジスタを表現する。
【００４９】
コントロール要素１０２は、メモリ要素１００に格納された実行命令を読み出し、実行命令に応じてメモリ要素１００及びレジスタ要素１０１にアクセスしデータ読み出し、書き込みを行うコントローラを表現する。
【００５０】
メモリ要素１００、レジスタ要素１０１及びコントロール要素１０２は、プロセッサ及びその周辺を構成する要素を表現する模擬要素である。
【００５１】
リソース情報記憶手段１０３は、指定したメモリ要素１００のメモリ領域範囲及びレジスタ要素１０１に含まれるレジスタ種別（リソース情報）とリソース情報毎の読み出し・書き込み種別（Ｒｅａｄ／Ｗｒｉｔｅ情報）を格納する。
【００５２】
リソースアクセス分析手段１０４は、コントロール要素１０２におけるメモリ要素１００及びレジスタ要素１０１へのアクセス先並びに読み出し・書き込み種別とリソース情報記憶手段１０３に格納されたリソース情報及びＲｅａｄ／Ｗｒｉｔｅ情報とを比較し、アクセス先がリソース情報に含まれない、又は、アクセス先がリソース情報に含まれるかつ読み出し・書き込み種別とＲｅａｄ／Ｗｒｉｔｅ情報が異なるかどうかのリソースアクセス分析を行う。
【００５３】
コマンド入力手段１１１は、入力されたコマンドを解析し、コントロール要素１０２、メモリ要素１００及びレジスタ要素１０１を操作し、コマンドに応じた処理を実行する。
【００５４】
また、コントロール要素１０２とメモリ要素１００は、コントロール要素１０２からメモリ要素１００にアクセスする場合に指定するアドレスを送信するアドレス線１０５、並びに読み出し、書き込みデータを送受信するデータ線１０６、アクセスが読み出しか書き込みかを示すＲＷ線１０７、アクセス中か否かを示すイネーブル線１１２によって接続される。
【００５５】
同様に、コントロール要素１０２とレジスタ要素１０１は、コントロール要素１０２からレジスタ要素１０１にアクセスする場合に指定するレジスタ種別を送信するセレクト線１０８、並びに読み出し、書き込みデータを送受信するデータ線１０９、アクセスが読み出しか書き込みかを示すＲＷ線１１０、アクセス中か否かを示すイネーブル線１１３によって接続される。
【００５６】
これらの線１０５、１０６、１０７、１１２、１０８、１０９、１１０、１１３も、模擬要素に含まれる。
【００５７】
なお、図１に示すシミュレータは、パーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）等のホストプロセッサ上で動作するソフトウエアモジュール群により実現される。
【００５８】
このように、本形態のシミュレータでは、リソースアクセスをチェックする手段が、メモリ要素のメモリ領域範囲及びメモリ要素の読み書き種別と、レジスタ要素のレジスタ種別及びレジスタ要素の読み書き種別とを含む、リソース情報を記憶するリソース情報記憶手段１０３と、リソース情報を参照しリソースアクセスの適否を分析するリソースアクセス分析手段１０４とを備える。
【００５９】
ここで、リソース情報は、コマンドにより指定されてもよいし、リソース情報は、データとして用意され、このデータが、コマンドにより指定されるようにしてもよい。また、リソース情報記憶手段１０３は、プロセッサの実行命令のアドレス範囲情報を記憶し、リソースアクセス分析手段１０４は、プロセッサの実行命令のアドレス範囲情報を参照して実行命令の適否を分析する。
【００６０】
図２は、本発明の実施の形態１におけるシミュレータが対応するコマンド一覧図である。本形態では、”ＬＯＡＤコマンド”、”ＧＯコマンド”、”ＡＬＬＯＣコマンド”、”ＬＯＡＤＡＬＬＯＣコマンド”、”ＱＵＩＴコマンド”に対応する。しかしながら、これは一例に過ぎず、種々変更できる。
【００６１】
以下、各コマンドの書式並びに機能について説明する。
【００６２】
まず”ＬＯＡＤコマンド”は、”ＬＯＡＤ  ＜ｆｉｌｅ＞”と入力され、ファイル名＜ｆｉｌｅ＞で指定されたプログラムファイルから実行命令がメモリ要素１００にロードされる。例えば、プログラムファイルがファイル名”ｐｒｏｇｒａｍ．ｌｓｔ”として用意されていた場合には、”ＬＯＡＤ  ｐｒｏｇｒａｍ．ｌｓｔ”と入力される。
【００６３】
次に”ＧＯコマンド”は、”ＧＯ”と入力され、この入力があると、コントロール要素１０２は、メモリ要素１００に格納されている実行命令を実行する。
【００６４】
次に”ＡＬＬＯＣコマンド”は、リソースアクセス分析を行うためのリソース情報、ＰＣ情報、Ｒｅａｄ／Ｗｒｉｔｅ情報を設定するものである。指定するリソースがメモリ要素１００の場合は、”ＡＬＬＯＣ  ＭＥＭ  ＜ＳＡ＞  ＜ＥＡ＞  ＜ＳＰＣ＞  ＜ＥＰＣ＞  ＜ＲＷ＞”と入力する。
【００６５】
＜ＳＡ＞、＜ＥＡ＞はリソースアクセス分析を行うメモリ領域範囲（スタートアドレス、エンドアドレス）であり、１６進数で指定する。＜ＳＰＣ＞、＜ＥＰＣ＞はリソースアクセス分析を行う実行命令のアドレス範囲（スタートアドレス、エンドアドレス）であり、１６進数で指定する。＜ＲＷ＞は、＜ＳＡ＞及び＜ＥＡ＞で指定したメモリ領域へのアクセス権を指定するもので、読み出しのみ許可する場合には”Ｒ”、書き込みのみ許可する場合には”Ｗ”、読み出し、書き込み両方許可する場合には”ＲＷ”と指定する。例えば、メモリ要素１００のアドレス０ｘ０００〜０ｘ００Ｆに格納されている１６個の実行命令に対し、メモリ要素１００のアドレス０ｘ１００〜０ｘ１ＦＦへ読み出しのみ許可する場合には、”ＡＬＬＯＣ  ＭＥＭ  １００  １ＦＦ  ０  Ｆ  Ｒ”と指定する。
【００６６】
また”ＡＬＬＯＣコマンド”で指定するリソースがレジスタ要素１０１の場合は、”ＡＬＬＯＣ  ＲＥＧ  ＜ＲＥＧＮＡＭＥ＞  ＜ＳＰＣ＞  ＜ＥＰＣ＞  ＜ＲＷ＞”と入力する。＜ＲＥＧＮＡＭＥ＞は、リソースアクセス分析を行うレジスタ種別であり、レジスタ名（ＲＥＧ０、ＲＥＧ１）で指定する。＜ＳＰＣ＞、＜ＥＰＣ＞、＜ＲＷ＞は指定するリソースがメモリ時と同様である。
【００６７】
次に”ＬＯＡＤＡＬＬＯＣコマンド”は、”ＬＯＡＤＡＬＬＯＣ  ＜ｆｉｌｅ＞”と入力され、この入力があると、ファイル名＜ｆｉｌｅ＞で指定されたアロケーションファイルから、リソースアクセス分析を行うためのリソース情報、ＰＣ情報、Ｒｅａｄ／Ｗｒｉｔｅ情報が読み出され、所定の設定が行われる。
【００６８】
次に”ＱＵＩＴコマンド”は、”ＱＵＩＴ”と入力され、この入力があると、シミュレータそのものが終了する。
【００６９】
図３は、図１のコマンド入力手段１１１の処理の流れを示す。
【００７０】
コマンド入力手段１１１は、図２に示す５つのコマンド（ＬＯＡＤ等）に対応する。図３に示すように、まずシミュレータが起動されたら、ステップ３００にて、コマンド入力待ち状態となる。そして何らかのコマンドが入力された場合、ステップ３０１〜３０５において、入力コマンドに応じて処理が分岐する。
【００７１】
入力コマンドが”ＬＯＡＤコマンド”の場合、ステップ３０１からステップ３０６へ処理が遷移する。
【００７２】
ここで図４を用いて、ステップ３０６の処理内容について説明する。図４は、ステップ３０６の処理の流れを示す。
【００７３】
本処理では、まずステップ４００において、”ＬＯＡＤコマンド”で指定されたプログラムファイル名が取得される。”ＬＯＡＤコマンド”によるファイル名の指定方法は上述した通りである。
【００７４】
次に、ステップ４０１において、ステップ４００で取得されたファイルが開かれ、このファイルは読み出し可能な状態になる。
【００７５】
ここで図５を用いて、”ＬＯＡＤコマンド”で指定するプログラムファイルについて説明する。
【００７６】
図５は、本発明の実施の形態１におけるプログラムファイルを例示する。ここでは、プログラムファイル５００は、テキストデータであるものとする。
【００７７】
プログラムファイル５００の各行は、一つの実行命令を示し、各行の一番左の４桁の文字列（００００、０００１、．．（１６進数））をロード先のメモリアドレスとし、その右側に一つ以上のスペースを挟み、次の文字列（０８０００９００、．．（１６進数））を実行命令を示すコードとする。プログラムファイル５００の右側の記述は、プログラムファイル５００中の各行の実行命令コードが、どのようなアセンブラ記述であり、どのような処理を実行するものかどうかを示す。
【００７８】
実際のソフトウエア開発では、アセンブラ記述を用いたソースコードファイルを作成し、それをプログラムファイル５００に示すような各実行命令に対応するコードに翻訳する”アセンブラ”と呼ばれるツールを使用して、プログラムファイルが生成される。
【００７９】
但し”アセンブラ”を用いたソースコードファイル→プログラムファイル変換処理は、本発明の骨子とは関係しないから、その詳細な説明を省略する。
【００８０】
ここで例えば、プログラムファイル５００の先頭行に記述されている実行命令コード”０８０００９００”は、”ＬＤ  ＲＥＧ０  ＭＥＭ（０ｘ１００）”というアセンブラ記述であるとする。このとき、メモリ要素１００のアドレス０ｘ１００番地からデータが読み出され、このデータが、レジスタ要素１０１のレジスタＲＥＧ０に書き込まれる。以下同様に、ロード先メモリアドレス、実行命令コードの組が、プログラムファイル５００の各行に配置される。
【００８１】
ここで、本形態では、プログラムファイル５００がテキストデータであるとしたが、バイナリデータであっても何ら問題ない。またプログラムファイル５００が、各行にロード先メモリアドレスと実行命令コードの１組を配置するとしているが、各行に１つのロード先メモリアドレスと複数の実行命令コードを配置し、全実行命令をロード先メモリアドレスを先頭にアドレスを１ずつインクリメントしながらロードさせても差し支えない。
【００８２】
図４の説明に戻る。ステップ４０２において、ステップ４０１で開かれたプログラムファイル５００から１行のデータが読み出される。図５のプログラムファイル５００ならば、”００００  ０８０００９００”が読み出される。
【００８３】
次に、ステップ４０３において、ステップ４０２で読み出された行が、ファイル終端かどうかがチェックされ、終端ならば、ステップ４０７に処理が分岐し、そうでなければ、ステップ４０４へ処理が移る。
【００８４】
次に、ステップ４０４において、ステップ４０２で読み出された１行：”００００  ０８０００９００”より、ロード先メモリアドレスが取得される。ここでは、ロード先メモリアドレスは”００００”となる。
【００８５】
次に、ステップ４０５において、ステップ４０２で読み出された”００００  ０８０００９００”より、実行命令コードが取得される。ここでは、実行命令コードは”０８０００９００”となる。
【００８６】
次に、ステップ４０６において、ステップ４０４並びにステップ４０５で取得されたロード先メモリアドレス及び実行命令コードを基に、メモリ要素１００の指定アドレスに実行命令がセットされる。
【００８７】
そして、ステップ４０２〜ステップ４０６が、ファイル終端に至るまで繰り返される。ファイル終端まで至ったら、ステップ４０７において、ステップ４０１で開かれたプログラムファイルが閉じられ、処理が終了する。
【００８８】
図３の説明に戻る。入力コマンドが”ＡＬＬＯＣコマンド”の場合、ステップ３０２からステップ３０７へ処理が遷移する。
【００８９】
ここで図６を用いて、ステップ３０７の処理内容について説明する。
【００９０】
図６は、ステップ３０７の処理の流れを示す。
【００９１】
本処理では、まずステップ６００において、”ＡＬＬＯＣコマンド”で指定されたリソースが、メモリ（ＭＥＭ）かレジスタ（ＲＥＧ）かが判定される。指定されたリソースがメモリ（ＭＥＭ）の場合は、ステップ６０１に処理が遷移する。
【００９２】
次に、ステップ６０１において、リソース種別（メモリ）がアロケーション情報テーブルに格納される。
【００９３】
ここで図７を用いて、アロケーション情報テーブルについて説明する。
【００９４】
図７は、本発明の実施の形態１におけるアロケーション情報テーブルの説明図である。
【００９５】
一つのアロケーション情報テーブル７００は、以下の要素、即ち、”リソース種別”、”レジスタ種別”、”メモリ領域範囲（スタートアドレス）”、”メモリ領域範囲（エンドアドレス）”、”実行命令アドレス範囲（スタートアドレス）”、”実行命令アドレス範囲（エンドアドレス）”、”Ｒｅａｄ／Ｗｒｉｔｅ情報”、”次のテーブルへのポインタ”から成る。
【００９６】
”リソース種別”要素には、”ＡＬＬＯＣコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣコマンド”で指定されるリソース種別が格納される。リソース種別は、メモリ（ＭＥＭ）の場合”０”とし、レジスタ（ＲＥＧ）の場合”１”とする。
【００９７】
”レジスタ種別”要素には、”ＡＬＬＯＣコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣコマンド”でリソース種別がレジスタ（ＲＥＧ）の場合に指定されるレジスタ種別が格納される。レジスタ種別は、ＲＥＧ０の場合”０”とし、ＲＥＧ１の場合”１”とする。
【００９８】
”メモリ領域範囲（スタートアドレス）”及び”メモリ領域範囲（エンドアドレス）”要素には、”ＡＬＬＯＣコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣコマンド”でリソース種別がメモリ（ＭＥＭ）の場合に指定されるメモリ領域範囲（スタートアドレス）及びメモリ領域範囲（エンドアドレス）がセットされる。
【００９９】
”実行命令アドレス範囲（スタートアドレス）”及び”実行命令アドレス範囲（エンドアドレス）”要素には、”ＡＬＬＯＣコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣコマンド”で指定される実行命令のアドレス範囲（スタートアドレス）及び実行命令のアドレス範囲（エンドアドレス）がセットされる。
【０１００】
”Ｒｅａｄ／Ｗｒｉｔｅ情報”要素には、”ＡＬＬＯＣコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣコマンド”で指定されるリソースへのアクセス権を格納する。アクセス権が読み出しのみ許可（Ｒ）の場合には”０”、書き込みのみ許可（Ｗ）の場合には”１”、読み出し、書き込み許可（ＲＷ）の場合には”２”がセットされる。
【０１０１】
”次のテーブルへのポインタ”要素には、複数の”ＡＬＬＯＣコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣコマンド”で複数のアロケーション情報が指定された場合に、次のテーブルへのポインタをセットする。初期値はｎｕｌｌとする。
【０１０２】
本アロケーション情報テーブル７００、７０１・・・は、リソース情報記憶手段１０３に配置される。
【０１０３】
図６の説明に戻る。次に、ステップ６０２において、”ＡＬＬＯＣコマンド”で指定されたメモリ領域範囲（スタートアドレス）及びメモリ領域範囲（エンドアドレス）が取得される。
【０１０４】
次に、ステップ６０３において、ステップ６０２で取得されたメモリ領域範囲（スタートアドレス）及びメモリ領域範囲（エンドアドレス）がアロケーション情報テーブルにセットされる。
【０１０５】
また、ステップ６００において、”ＡＬＬＯＣコマンド”で指定されたリソースがレジスタ（ＲＥＧ）の場合は、ステップ６０４に処理が遷移する。
【０１０６】
次に、ステップ６０４において、リソース種別（レジスタ）がアロケーション情報テーブルに格納される。
【０１０７】
次に、ステップ６０５において、”ＡＬＬＯＣコマンド”で指定されたレジスタ種別（ＲＥＧ０、ＲＥＧ１）が取得される。
【０１０８】
次に、ステップ６０６において、ステップ６０５で取得されたレジスタ種別がアロケーション情報テーブルにセットされる。
【０１０９】
次に、ステップ６０７において、”ＡＬＬＯＣコマンド”で指定された実行命令アドレス範囲（スタートアドレス）及び実行命令アドレス範囲（エンドアドレス）が取得される。
【０１１０】
次に、ステップ６０８において、ステップ６０７で取得された実行命令アドレス範囲（スタートアドレス）及び実行命令アドレス範囲（エンドアドレス）がアロケーション情報テーブルにセットされる。
【０１１１】
次に、ステップ６０９において、”ＡＬＬＯＣコマンド”で指定されたアクセス権情報（Ｒ、Ｗ、ＲＷ）が取得される。
【０１１２】
次に、ステップ６１０において、ステップ６０９で取得されたアクセス権情報がアロケーション情報テーブルにセットされ、処理が終了する。
【０１１３】
図３の説明に戻る。入力コマンドが”ＬＯＡＤＡＬＬＯＣコマンド”の場合、ステップ３０３からステップ３０８へ処理が遷移する。
【０１１４】
ここで図８を用いて、ステップ３０８の処理内容について説明する。
【０１１５】
図８は、ステップ３０８の処理の流れを示す。
【０１１６】
本処理では、まずステップ８００において、”ＬＯＡＤＡＬＬＯＣコマンド”で指定されたアロケーションファイル名が取得される。
【０１１７】
次に、ステップ８０１において、ステップ８００で取得されたアロケーションファイルが開かれ、読み出し可能な状態になる。
【０１１８】
ここで図９を用いて、アロケーションファイルについて説明する。
【０１１９】
図９は、本発明の実施の形態１におけるアロケーションファイルの説明図である。
【０１２０】
ここでは、アロケーションファイル９００は、テキストデータであるものとする。このアロケーションファイル９００の各行は、一つのアロケーション情報（リソース種別、メモリ領域範囲（スタートアドレス、エンドアドレス）、レジスタ種別、実行命令アドレス範囲（スタートアドレス、エンドアドレス）、アクセス権）を含む。
【０１２１】
各行の一番左（第１項）に、”リソース種別”が記述される。ここでは、指定するリソースがメモリの場合”ＭＥＭ”、レジスタの場合”ＲＥＧ”となる。それ以降の設定は、リソース種別がメモリ（ＭＥＭ）の場合とレジスタ（ＲＥＧ）の場合とで異なる。なお各設定（第ｘ項）間は、一つ以上の区切子（ここでは、スペース）で区切られているものとする。
【０１２２】
まず、リソース種別がメモリ（ＭＥＭ）の場合について説明する。
【０１２３】
”リソース種別”の右側の第２項、第３項には、リソースアクセス分析を行う”メモリ領域範囲（スタートアドレス）”及び”メモリ領域範囲（エンドアドレス）”を１６進数で続けて指定される。
【０１２４】
また”メモリ領域範囲（エンドアドレス）”の右側の第４項、第５項には、リソースアクセス分析を行う”実行命令のアドレス範囲（スタートアドレス）”及び”実行命令のアドレス範囲（エンドアドレス）”が１６進数で続けて指定される。
【０１２５】
そして”実行命令のアドレス範囲（エンドアドレス）”の右側の第６項は、上記メモリ領域範囲（スタートアドレス、エンドアドレス）で指定したメモリ領域へのアクセス権を指定するもので、読み出しのみ許可する場合には”Ｒ”とし、書き込みのみ許可する場合には”Ｗ”とし、読み出し、書き込み両方許可する場合には”ＲＷ”と指定する。
【０１２６】
一方、リソース種別がレジスタ（ＲＥＧ）の場合、”リソース種別”の右側の第２項は、リソースアクセス分析を行う”レジスタ種別”であり、レジスタ名（ＲＥＧ０、ＲＥＧ１）で指定される。
【０１２７】
また”レジスタ種別”の右側の第３項、第４項には、リソースアクセス分析を行う”実行命令のアドレス範囲（スタートアドレス）”及び”実行命令のアドレス範囲（エンドアドレス）”が１６進数で続けて指定される。
【０１２８】
そして”実行命令のアドレス範囲（エンドアドレス）”の右側の第５項は、上記レジスタ種別で指定したレジスタへのアクセス権を指定するもので、読み出しのみ許可する場合には”Ｒ”とし、書き込みのみ許可する場合には”Ｗ”とし、読み出し、書き込み両方許可する場合には”ＲＷ”と指定する。
【０１２９】
ここで、本形態では、アロケーションファイル９００は、テキストデータであるとしたが、バイナリデータであっても何ら問題ない。またアロケーションファイル９００に記述される各設定のフォーマットは、任意に変更できる。
【０１３０】
図８の説明に戻る。次に、ステップ８０２において、ステップ８０１で開かれたファイルから１行のデータが読み出される。図９に示すアロケーションファイル９００を例にとると、”ＭＥＭ  １００  ２００  ０  ５  Ｒ”が読み出される。
【０１３１】
次に、ステップ８０３において、ステップ８０２で読み出された際にファイル終端に至っていれば、ステップ８０５に処理が移り、そうでなければ、ステップ８０４へ処理が移る。
【０１３２】
次に、ステップ８０４において、ステップ８０２で取得されたアロケーション情報がアロケーション情報テーブルに格納される。処理内容は、上述したステップ３０７と同様である。
【０１３３】
そして、ステップ８０２〜ステップ８０４が、ファイル終端まで繰り返される。ファイル終端まで至ったら、ステップ８０５において、ステップ８０１で開かれたアロケーションファイルが閉じられ、処理が終了する。
【０１３４】
図３の説明に戻る。入力コマンドが”ＧＯコマンド”の場合、ステップ３０４からステップ３０９へ処理が遷移する。
【０１３５】
ここで図１０を用いて、ステップ３０９の処理内容について説明する。
【０１３６】
図１０は、ステップ３０９の処理の流れを示す。
【０１３７】
本処理では、まずステップ１０００において、メモリ要素１００に格納されている実行命令が１命令実行される。ここでは、メモリ要素１００のアドレス０ｘ０００から実行を開始するものとする。図５に示すプログラムファイル５００がメモリ要素１００にロードされていた場合を例にとると、”ＬＤ  ＲＥＧ０，ＭＥＭ（０ｘ１００）”（メモリ要素１００の０ｘ１００番地からデータを読出しレジスタＲＥＧ０に書き込む）命令が実行される。
【０１３８】
次に、ステップ１００１において、ステップ１０００で実行された命令がＨＯＬＤ命令の場合、命令の実行が停止する。ＨＯＬＤ命令ではなかった場合、ステップ１０００に戻り次の命令が実行される。
【０１３９】
図５に示すプログラムファイル５００では、”ＬＤ  ＲＥＧ０，ＭＥＭ（０ｘ１００）”命令の後、”ＳＴＲ  ＭＥＭ（０ｘ１００），ＲＥＧ０”命令、．．、”ＨＯＬＤ”命令実行後に停止する。
【０１４０】
”ＧＯコマンド”による命令実行中は、リソースアクセス分析手段１０４において、上述した”ＡＬＬＯＣコマンド”及び”ＬＯＡＤＡＬＬＯＣコマンド”でアロケーション情報テーブルに指定されたアロケーション情報に基づいて、リソースへのアクセス状況のチェックが実施される。
【０１４１】
次に、図１１、図１２、図１３を用いて、リソースアクセス分析手段１０４における処理内容を説明する。
【０１４２】
図１１は、リソースアクセス分析手段１０４の処理の流れを示す。
【０１４３】
本処理では、まずステップ１１００において、コントロール要素１０２が現在実行している命令アドレスが取得される。
【０１４４】
次に、ステップ１１０１において、実行命令がメモリ要素１００にアクセスする（イネーブル線１１２が有効）かどうかを判定し、アクセスする場合には、ステップ１１０３に処理が遷移する。
【０１４５】
ここで図１２を用いて、ステップ１１０３の処理内容について説明する。図１２は、ステップ１１０３の処理の流れを示す。
【０１４６】
本処理では、まずステップ１２００において、リソースアクセス分析手段１０４は、アドレス線１０５をチェックし、実行命令がアクセスするメモリ要素１００のアドレスを取得する。
【０１４７】
次に、ステップ１２０１において、リソースアクセス分析手段１０４は、ＲＷ線１０７をチェックし、実行命令のアクセス種別（読み出し、書き込み）を取得する。
【０１４８】
次に、ステップ１２０２において、リソースアクセス分析手段１０４は、リソース情報記憶手段１０３に配置されるアロケーション情報テーブルにアロケーション情報が設定されているかどうかを確認する。
【０１４９】
具体的には、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”リソース種別”要素がｎｕｌｌの場合はアロケーション情報無し、それ以外の場合はアロケーション情報有りと判定する。アロケーション情報無しの場合、処理が終了する。またアロケーション情報有りの場合、ステップ１２０３へ処理が遷移する。
【０１５０】
次に、ステップ１２０３において、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”リソース種別”要素の設定がメモリ（ＭＥＭ）かどうかを判定する。”リソース種別”要素がメモリ（ＭＥＭ）でない場合、ステップ１２１１へ処理が分岐する。また”リソース種別”要素がメモリ（ＭＥＭ）の場合は、ステップ１２０４へ処理が遷移する。
【０１５１】
”リソース種別”要素がメモリ（ＭＥＭ）の場合、ステップ１２０４において、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”実行命令アドレス範囲（スタートアドレス）”及び”実行命令アドレス範囲（エンドアドレス）”要素から実行命令アドレス範囲を取得する。
【０１５２】
次に、ステップ１２０５において、リソースアクセス分析手段１０４は、ステップ１１００で取得された実行命令のアドレスがステップ１２０４で取得された実行命令アドレス範囲に含まれるかどうかを判定する。アドレスが含まれない場合、ステップ１２１１へ処理が分岐する。またアドレスが含まれる場合、ステップ１２０６に処理が遷移する。
【０１５３】
アドレスが含まれる場合、ステップ１２０６において、アロケーション情報テーブルの”メモリ領域範囲（スタートアドレス）”及び”メモリ領域範囲（エンドアドレス）”要素からメモリ領域範囲が取得される。
【０１５４】
次に、ステップ１２０７において、リソースアクセス分析手段１０４は、ステップ１２００で取得された実行命令がアクセスするアドレスが、ステップ１２０６で取得されたメモリ領域範囲に含まれるかどうかを、判定する。アドレスが含まれない場合、ステップ１２１１へ処理が分岐する。またアドレスが含まれる場合、ステップ１２０８に処理が遷移する。
【０１５５】
アドレスが含まれる場合、ステップ１２０８において、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”Ｒｅａｄ／Ｗｒｉｔｅ情報”要素からアクセス権情報を取得する。
【０１５６】
次に、ステップ１２０９において、リソースアクセス分析手段１０４は、ステップ１２０１で取得された実行命令のアクセス種別と、ステップ１２０８で取得されたアクセス権が一致するかどうかを判定する。一致する場合、ステップ１２１１へ処理が分岐する。また一致しない場合、ステップ１２１０へ処理が遷移する。
【０１５７】
一致しない場合、ステップ１２１０において、リソースアクセス分析手段１０４は、アロケーション情報により許可しないリソースへのアクセスが行われたことをソフトウエア開発者に通知する。通知方法は、任意だが、例えば、図示しないディスプレイ等の出力装置への表示などが考えられる。
【０１５８】
ステップ１２１１においては、リソースアクセス分析手段１０４は、アロケーション情報テーブル”次テーブルへのポインタ”要素から次のアロケーション情報テーブルへのポインタを取得する。
【０１５９】
次に、ステップ１２１２において、リソースアクセス分析手段１０４は、さらにアロケーション情報テーブルが存在するかどうかを判定する。具体的には、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”次テーブルへのポインタ”要素がｎｕｌｌの場合は次アロケーション情報テーブル無し、それ以外の場合は次アロケーション情報テーブル有りと判定する。
【０１６０】
次アロケーション情報テーブル有りの場合、ステップ１２０２に戻る。次アロケーション情報テーブル無しの場合、処理が終了する。
【０１６１】
図１１の説明に戻る。ステップ１１０２において、リソースアクセス分析手段１０４は、実行命令がレジスタ要素１０１にアクセスする（イネーブル線１１３が有効）かどうかを判定し、アクセスする場合には、ステップ１１０４に処理が遷移する。
【０１６２】
ここで図１３を用いて、ステップ１１０４の処理内容について説明する。図１３は、ステップ１１０４の処理の流れを示す。
【０１６３】
本処理では、まずステップ１３００において、リソースアクセス分析手段１０４は、セレクト線１０８をチェックし、実行命令がアクセスするレジスタ要素１０１のレジスタ種別を取得する。
【０１６４】
次に、ステップ１３０１において、リソースアクセス分析手段１０４は、ＲＷ線１０９をチェックし、実行命令のアクセス種別（読み出し、書き込み）を取得する。
【０１６５】
次に、ステップ１３０２において、リソースアクセス分析手段１０４は、リソース情報記憶手段１０３に配置されるアロケーション情報テーブルにアロケーション情報が設定されているかどうかを確認する。具体的には、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”リソース種別”要素がｎｕｌｌの場合はアロケーション情報無し、それ以外の場合はアロケーション情報有りと判定する。
【０１６６】
アロケーション情報無しの場合、処理が終了する。またアロケーション情報有りの場合ステップ１３０３へ処理が遷移する。
【０１６７】
次に、ステップ１３０３において、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”リソース種別”要素の設定がレジスタ（ＲＥＧ）かどうかを判定する。”リソース種別”要素がレジスタ（ＲＥＧ）でない場合、ステップ１３１１へ処理が分岐する。また”リソース種別”要素がレジスタ（ＲＥＧ）の場合は、ステップ１３０４へ処理が遷移する。
【０１６８】
”リソース種別”要素がレジスタ（ＲＥＧ）の場合、ステップ１３０４において、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”実行命令アドレス範囲（スタートアドレス）”及び”実行命令アドレス範囲（エンドアドレス）”要素から実行命令アドレス範囲を取得する。
【０１６９】
次に、ステップ１３０５において、リソースアクセス分析手段１０４は、ステップ１１００で取得された実行命令のアドレスがステップ１３０４で取得された実行命令アドレス範囲に含まれるかどうかを判定する。アドレスが含まれない場合、ステップ１３１１へ処理が分岐する。またアドレスが含まれる場合、ステップ１３０６に処理が遷移する。
【０１７０】
アドレスが含まれる場合、ステップ１３０６において、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”レジスタ種別”要素からレジスタ種別を取得する。
【０１７１】
次に、ステップ１３０７において、リソースアクセス分析手段１０４は、ステップ１３００で取得された実行命令がアクセスするレジスタが、ステップ１３０６で取得されたレジスタ種別と一致するかどうかを判定する。一致しない場合、ステップ１３１１へ処理が分岐する。また一致する場合、ステップ１３０８に処理が遷移する。
【０１７２】
一致した場合、ステップ１３０８において、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”Ｒｅａｄ／Ｗｒｉｔｅ情報”要素からアクセス権情報を取得する。
【０１７３】
次に、ステップ１３０９において、リソースアクセス分析手段１０４は、ステップ１３０１で取得された実行命令のアクセス種別と、ステップ１３０８で取得されたアクセス権が一致するかどうかを判定する。一致する場合、ステップ１３１１へ処理が分岐する。また一致しない場合、ステップ１３１０へ処理が遷移する。
【０１７４】
一致しない場合、ステップ１３１０において、リソースアクセス分析手段１０４は、アロケーション情報により許可しないリソースへのアクセスが行われたことをソフトウエア開発者に通知する。通知方法は、任意だが、例えば、図示しないディスプレイ等の出力装置への表示などが考えられる。
【０１７５】
ステップ１３１１においては、リソースアクセス分析手段１０４は、アロケーション情報テーブル”次テーブルへのポインタ”要素から次のアロケーション情報テーブルへのポインタを取得する。
【０１７６】
次に、ステップ１３１２において、リソースアクセス分析手段１０４は、さらにアロケーション情報テーブルが存在するかどうかを判定する。具体的には、リソースアクセス分析手段１０４は、アロケーション情報テーブルの”次テーブルへのポインタ”要素がｎｕｌｌの場合は次アロケーション情報テーブル無し、それ以外の場合は次アロケーション情報テーブル有りと判定する。次アロケーション情報テーブル有りの場合、ステップ１３０２に戻る。次アロケーション情報テーブル無しの場合、処理が終了する。
【０１７７】
図３の説明に戻る。入力コマンドが”ＱＵＩＴコマンド”の場合、シミュレータそのものが終了する。
【０１７８】
以上のように、本形態のシミュレータは、予め対象の実行命令アドレス範囲、アクセスを許可するリソース、アクセス種別（読み出し、書き込み）等のアロケーション情報を指定しておき、命令の実行を行うことで、指定したアロケーション情報に反する処理の検出並びにソフトウエア開発者に対する通知を行う。本シミュレータを用いたソフトウエア開発を実施することで、ソフトウエアの問題から、意図しないリソースへのアクセスが発生した場合に、問題個所の特定が容易となり、ソフトウエア開発効率が向上する。
【０１７９】
（実施の形態２）
以下図１１、図１４〜図２２を参照しながら、本発明の実施の形態２について説明する。
【０１８０】
図１４は、本発明の実施の形態２におけるシミュレータのブロック図である。
【０１８１】
メモリ要素１４００は、プロセッサの実行命令やデータを格納するメモリを表現する。
【０１８２】
レジスタ要素１４０１は、演算用データを格納する少なくとも一つのレジスタを表現する。
【０１８３】
コントロール要素１４０２は、メモリ要素１４００に格納された実行命令を読み出し、実行命令に応じてメモリ要素１４００及びレジスタ要素１４０１にアクセスしデータ読み出し、書き込みを行うコントローラを表現する。
【０１８４】
メモリ要素１４００、レジスタ要素１４０１及びコントロール要素１４０２は、プロセッサ及びその周辺を構成する要素を表現する模擬要素である。
【０１８５】
データ情報記憶手段１４０３は、指定したメモリ要素１４００のメモリ領域範囲及びレジスタ要素１４０１に含まれるレジスタ種別（リソース情報）とリソース情報毎のデータ範囲を格納する。
【０１８６】
データアクセス分析手段１４０４は、コントロール要素１４０２におけるメモリ要素１４００及びレジスタ要素１４０１へのアクセス先並びにデータとデータ情報記憶手段１４０３に格納されたリソース情報及びデータ範囲とを比較し、アクセス先がリソース情報に含まれない、又は、アクセス先がリソース情報に含まれるかつアクセス時のデータがデータ範囲に含まれるかどうかのデータアクセス分析を行う。
【０１８７】
コマンド入力手段１４１１は、入力されたコマンドを解析し、コントロール要素１４０２、メモリ要素１４００及びレジスタ要素１４０１を操作し、コマンドに応じた処理を実行する。
【０１８８】
また、コントロール要素１４０２とメモリ要素１４００は、コントロール要素１４０２からメモリ要素１４００にアクセスする場合に指定するアドレスを送信するアドレス線１４０５、並びに読み出し、書き込みデータを送受信するデータ線１４０６、アクセスが読み出しか書き込みかを示すＲＷ線１４０７、アクセス中か否かを示すイネーブル線１４１２によって接続される。
【０１８９】
同様に、コントロール要素１４０２とレジスタ要素１４０１は、コントロール要素１４０２からレジスタ要素１４０１にアクセスする場合に指定するレジスタ種別を送信するセレクト線１４０８、並びに読み出し、書き込みデータを送受信するデータ線１４０９、アクセスが読み出しか書き込みかを示すＲＷ線１４１０、アクセス中か否かを示すイネーブル線１４１３によって接続される。
【０１９０】
これらの線１４０５、１４０６、１４０７、１４１２、１４０８、１４０９、１４１０、１４１３も、模擬要素に含まれる。
【０１９１】
なお、図１４に示すシミュレータは、パーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）等のホストプロセッサ上で動作するソフトウエアモジュール群により実現される。
【０１９２】
このように、本形態のシミュレータでは、データアクセスをチェックする手段が、メモリ要素のメモリ領域範囲及びメモリ要素の読み書き種別と、レジスタ要素のレジスタ種別及びレジスタ要素の読み書き種別とを含む、データ情報を記憶するデータ情報記憶手段１４０３と、データ情報を参照しデータアクセスの適否を分析するデータアクセス分析手段１４０４とを備える。ここで、データ情報は、コマンドにより指定されてもよいし、データ情報は、データとして用意され、このデータが、コマンドにより指定されるようにしてもよい。
【０１９３】
データ情報記憶手段１４０３は、プロセッサの実行命令のアドレス範囲情報を記憶し、データアクセス分析手段１４０４は、プロセッサの実行命令のアドレス範囲情報を参照して実行命令の適否を分析する。
【０１９４】
図１５は、本発明の実施の形態２におけるシミュレータが対応するコマンド一覧図である。本形態では、”ＬＯＡＤコマンド”、”ＧＯコマンド”、”ＡＬＬＯＣＤコマンド”、”ＬＯＡＤＡＬＬＯＣＤコマンド”、”ＱＵＩＴコマンド”に対応する。勿論、対応するコマンドを変更しても良い。
【０１９５】
以下、各コマンドの書式並びに機能について説明する。”ＬＯＡＤコマンド”、”ＧＯコマンド”、”ＱＵＩＴコマンド”は、実施の形態１と同様である。
【０１９６】
次に”ＡＬＬＯＣＤコマンド”は、データアクセス分析を行うためのリソース情報、ＰＣ情報、データ範囲を設定するもので、指定するリソースがメモリ要素１４００の場合は、”ＡＬＬＯＣＤ  ＭＥＭ  ＜ＳＡ＞  ＜ＥＡ＞  ＜ＳＰＣ＞  ＜ＥＰＣ＞  ＜ＭＩＮ＞  ＜ＭＡＸ＞”と入力する。＜ＳＡ＞、＜ＥＡ＞はデータアクセス分析を行うメモリ領域範囲（スタートアドレス、エンドアドレス）であり、１６進数で指定される。
【０１９７】
＜ＳＰＣ＞、＜ＥＰＣ＞はデータアクセス分析を行う実行命令のアドレス範囲（スタートアドレス、エンドアドレス）であり、１６進数で指定される。＜ＭＩＮ＞、＜ＭＡＸ＞は、＜ＳＡ＞及び＜ＥＡ＞で指定したメモリ領域へのアクセス時に許可するデータ範囲（最小値、最大値）であり、１６進数で指定される。例えば、メモリ要素１４００のアドレス０ｘ０００〜０ｘ００Ｆに格納されている１６個の実行命令に対し、メモリ要素１４００のアドレス０ｘ１００〜０ｘ１ＦＦへアクセスし０ｘ１〜０ｘ２のデータ範囲のみ許可する場合には、”ＡＬＬＯＣＤ  ＭＥＭ  １００  １ＦＦ  ０  Ｆ  １  ２”と指定される。
【０１９８】
また”ＡＬＬＯＣＤコマンド”で指定されるリソースが、レジスタ要素１４０１の場合、”ＡＬＬＯＣＤ  ＲＥＧ  ＜ＲＥＧＮＡＭＥ＞  ＜ＳＰＣ＞  ＜ＥＰＣ＞  ＜ＭＩＮ＞  ＜ＭＡＸ＞”とされる。＜ＲＥＧＮＡＭＥ＞は、リソースアクセス分析を行うレジスタ種別であり、レジスタ名（ＲＥＧ０、ＲＥＧ１）で指定される。＜ＳＰＣ＞、＜ＥＰＣ＞、＜ＭＩＮ＞、＜ＭＡＸ＞は、指定されるリソースがメモリの場合と同様である。
【０１９９】
次に”ＬＯＡＤＡＬＬＯＣＤコマンド”は、”ＬＯＡＤＡＬＬＯＣＤ  ＜ｆｉｌｅ＞”と入力され、ファイル名＜ｆｉｌｅ＞で指定されたアロケーションファイルから、データアクセス分析を行うためのリソース情報、ＰＣ情報、データ範囲の読み出し、設定を行うものである。
【０２００】
図１６は、図１４のコマンド入力手段１４１１の処理の流れを示す。
【０２０１】
コマンド入力手段１４１１は、図１５に示す５つのコマンド（ＬＯＡＤ等）に対応するものとする。
【０２０２】
図１６に示すように、まずシミュレータが起動されたら、ステップ１６００にてコマンド入力待ち状態となる。そして何らかのコマンドが入力された場合、ステップ１６０１〜１６０５において、入力されたコマンドに応じて処理が分岐する。
【０２０３】
入力コマンドが”ＬＯＡＤコマンド”、”ＧＯコマンド”、”ＱＵＩＴコマンド”の場合の処理は、実施の形態１と同様である。
【０２０４】
入力コマンドが”ＡＬＬＯＣＤコマンド”の場合、ステップ１６０２からステップ１６０７へ処理が遷移する。
【０２０５】
ここで図１７を用いて、ステップ１６０７の処理内容について説明する。図１７は、ステップ１６０７の処理の流れを示す。
【０２０６】
本処理では、まずステップ１７００において、”ＡＬＬＯＣＤコマンド”で指定されたリソースがメモリ（ＭＥＭ）かレジスタ（ＲＥＧ）かが判定される。指定されたリソースがメモリ（ＭＥＭ）の場合は、ステップ１７０１に処理が遷移する。
【０２０７】
次に、ステップ１７０１において、リソース種別（メモリ）がアロケーション情報テーブルに格納される。
【０２０８】
ここで図１８を用いて、アロケーション情報テーブルについて説明する。図１８は、本発明の実施の形態２におけるアロケーション情報テーブルの説明図である。
【０２０９】
一つのアロケーション情報テーブル１８００は、以下の要素、即ち、”リソース種別”、”レジスタ種別”、”メモリ領域範囲（スタートアドレス）”、”メモリ領域範囲（エンドアドレス）”、”実行命令アドレス範囲（スタートアドレス）”、”実行命令アドレス範囲（エンドアドレス）”、”データ範囲（最小値）”、”データ範囲（最大値）”、”次のテーブルへのポインタ”から成る。
【０２１０】
”リソース種別”要素には、”ＡＬＬＯＣＤコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣＤコマンド”で指定されるリソース種別が格納される。リソース種別がメモリ（ＭＥＭ）の場合は”０”とし、レジスタ（ＲＥＧ）の場合は”１”とする。
【０２１１】
”レジスタ種別”要素には、”ＡＬＬＯＣＤコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣＤコマンド”でリソース種別がレジスタ（ＲＥＧ）の場合に指定されるレジスタ種別が格納される。レジスタ種別がＲＥＧ０の場合は”０”とし、ＲＥＧ１の場合は”１”とする。
【０２１２】
”メモリ領域範囲（スタートアドレス）”及び”メモリ領域範囲（エンドアドレス）”要素には、”ＡＬＬＯＣＤコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣＤコマンド”でリソース種別がメモリ（ＭＥＭ）の場合に指定されるメモリ領域範囲（スタートアドレス）及びメモリ領域範囲（エンドアドレス）がセットされる。
【０２１３】
”実行命令アドレス範囲（スタートアドレス）”及び”実行命令アドレス範囲（エンドアドレス）”要素には、”ＡＬＬＯＣＤコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣＤコマンド”で指定される実行命令のアドレス範囲（スタートアドレス）及び実行命令のアドレス範囲（エンドアドレス）がセットされる。
【０２１４】
”データ範囲（最小値）”及び”データ範囲（最大値）”要素には、”ＡＬＬＯＣＤコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣＤコマンド”で指定されるリソースへのアクセス時に許可するデータ範囲（最小値、最大値）が格納される。
【０２１５】
”次のテーブルへのポインタ”要素には、複数の”ＡＬＬＯＣＤコマンド”又は後述する”ＬＯＡＤＡＬＬＯＣＤコマンド”で複数のアロケーション情報が指定された場合、次のテーブルへのポインタがセットされる。初期値はｎｕｌｌとする。本アロケーション情報テーブルは、データ情報記憶手段１４０３に配置される。
【０２１６】
図１７の説明に戻る。ステップ１７０２において、”ＡＬＬＯＣＤコマンド”で指定されたメモリ領域範囲（スタートアドレス）及びメモリ領域範囲（エンドアドレス）が取得される。
【０２１７】
次に、ステップ１７０３において、ステップ１７０２で取得されたメモリ領域範囲（スタートアドレス）及びメモリ領域範囲（エンドアドレス）がアロケーション情報テーブルにセットされる。
【０２１８】
また、ステップ１７００において、”ＡＬＬＯＣＤコマンド”で指定されたリソースがレジスタ（ＲＥＧ）の場合、ステップ１７０４に処理が遷移する。
【０２１９】
次に、ステップ１７０４において、リソース種別（レジスタ）がアロケーション情報テーブルに格納される。
【０２２０】
次に、ステップ１７０５において、”ＡＬＬＯＣＤコマンド”で指定されたレジスタ種別（ＲＥＧ０、ＲＥＧ１）が取得される。
【０２２１】
次に、ステップ１７０６において、ステップ１７０５で取得されたレジスタ種別がアロケーション情報テーブルにセットされる。
【０２２２】
次に、ステップ１７０７において、”ＡＬＬＯＣＤコマンド”で指定された実行命令アドレス範囲（スタートアドレス）及び実行命令アドレス範囲（エンドアドレス）が取得される。
【０２２３】
次に、ステップ１７０８において、ステップ１７０７で取得された実行命令アドレス範囲（スタートアドレス）及び実行命令アドレス範囲（エンドアドレス）がアロケーション情報テーブルにセットされる。
【０２２４】
次に、ステップ１７０９において、”ＡＬＬＯＣＤコマンド”で指定されたデータ範囲（最小値、最大値）が取得される。
【０２２５】
次に、ステップ１７１０において、ステップ１７０９で取得されたデータ範囲（最小値、最大値）がアロケーション情報テーブルにセットされ、処理が終了する。
【０２２６】
図１６の説明に戻る。入力コマンドが”ＬＯＡＤＡＬＬＯＣＤコマンド”の場合、ステップ１６０３からステップ１６０８へ処理が遷移する。
【０２２７】
ここで図１９を用いて、ステップ１６０８の処理内容について説明する。図１９は、ステップ１６０８の処理の流れを示す。
【０２２８】
本処理では、まずステップ１９００において、”ＬＯＡＤＡＬＬＯＣＤコマンド”で指定されたアロケーションファイル名が取得される。
【０２２９】
次に、ステップ１９０１において、ステップ１９００で取得されたアロケーションファイルが、開かれ読み出し可能な状態になる。
【０２３０】
ここで図２０を用いて、アロケーションファイルについて説明する。図２０は、本発明の実施の形態２におけるアロケーションファイルの説明図である。
【０２３１】
ここでは、アロケーションファイル２０００は、テキストデータであるものとする。アロケーションファイル２０００の各行は、一つのアロケーション情報（リソース種別、メモリ領域範囲（スタートアドレス、エンドアドレス）、レジスタ種別、実行命令アドレス範囲（スタートアドレス、エンドアドレス）、データ範囲（最小値、最大値））を含む。
【０２３２】
各行の一番左（第１項）に、”リソース種別”が記述される。ここでは、指定するリソースがメモリの場合”ＭＥＭ”とし、レジスタの場合”ＲＥＧ”とする。それ以降の設定は、リソース種別がメモリ（ＭＥＭ）の場合とレジスタ（ＲＥＧ）の場合とで異なる。なお各設定（第ｘ項）間は、一つ以上の区切子（ここではスペース）で区切られているものとする。
【０２３３】
まずリソース種別がメモリ（ＭＥＭ）の場合について説明する。”リソース種別”の右側の第２項、第３項には、リソースアクセス分析を行う”メモリ領域範囲（スタートアドレス）”及び”メモリ領域範囲（エンドアドレス）”が１６進数で続けて指定される。
【０２３４】
また”メモリ領域範囲（エンドアドレス）”の右側の第４項、第５項には、リソースアクセス分析を行う”実行命令のアドレス範囲（スタートアドレス）”及び”実行命令のアドレス範囲（エンドアドレス）”が１６進数で続けて指定される。
【０２３５】
そして”実行命令のアドレス範囲（エンドアドレス）”の右側の第６項、第７項には、上記メモリ領域範囲（スタートアドレス、エンドアドレス）で指定したメモリ領域へのアクセスを許可する”データ範囲（最小値）”及び”データ範囲（最大値）”が１６進数で続けて指定される。
【０２３６】
次に、リソース種別がレジスタ（ＲＥＧ）の場合について説明する。”リソース種別”の右側の第２項は、リソースアクセス分析を行う”レジスタ種別”であり、レジスタ名（ＲＥＧ０、ＲＥＧ１）で指定される。
【０２３７】
また”レジスタ種別”の右側の第３項、第４項には、リソースアクセス分析を行う”実行命令のアドレス範囲（スタートアドレス）”及び”実行命令のアドレス範囲（エンドアドレス）”が１６進数で続けて指定される。
【０２３８】
そして”実行命令のアドレス範囲（エンドアドレス）”の右側の第５項、第６項には、上記レジスタ種別で指定したレジスタへのアクセスを許可する”データ範囲（最小値）”及び”データ範囲（最大値）”が１６進数で続けて指定される。
【０２３９】
ここで、本形態では、アロケーションファイル２０００が、テキストデータであるとしたが、バイナリデータであっても何ら問題ない。またアロケーションファイル２０００に記述される各設定のフォーマットは任意であり、種々変更できる。
【０２４０】
図１９の説明に戻る。次に、ステップ１９０２において、ファイルオープン処理ステップ１９０１で開かれたファイルから１行のデータが読み出される。図２０に示すアロケーションファイル２０００を例にとると、”ＭＥＭ  １００  ２００  ０  ５  ０  Ｆ”が読み出される。
【０２４１】
次に、ステップ１９０３において、ステップ１９０２でファイル終端であれば、ステップ１９０５に処理が分岐する。
【０２４２】
次に、ステップ１９０４に処理が遷移し、ステップ１９０２で取得されたアロケーション情報がアロケーション情報テーブルに格納される。処理内容は、ステップ１６０７と同様である。
【０２４３】
そして、ステップ１９０２〜ステップ１９０４が、ファイル終端まで繰り返される。ファイル終端まで至ったら、ステップ１９０５において、ステップ１９０１で開かれたアロケーションファイルが閉じられ、処理が終了する。
【０２４４】
”ＧＯコマンド”による命令実行中は、データアクセス分析手段１４０４が、上述した”ＡＬＬＯＣＤコマンド”及び”ＬＯＡＤＡＬＬＯＣＤコマンド”でアロケーション情報テーブルに指定されたアロケーション情報に基づいて、リソースへのアクセス状況をチェックする。
【０２４５】
次に図１１、図２１、図２２を用いて、データアクセス分析手段１４０４における処理内容を説明する。図１１は、図１４のデータアクセス分析手段１４０４の処理の流れを示す。
【０２４６】
本処理では、まずステップ１１００において、データアクセス分析手段１４０４は、コントロール要素１４０２が現在実行している命令アドレスを取得する。
【０２４７】
次に、ステップ１１０１において、データアクセス分析手段１４０４は、実行命令がメモリ要素１４００にアクセスする（イネーブル線１４１２が有効）かどうかを判定し、アクセスする場合には、ステップ１１０３に処理が遷移する。
【０２４８】
ここでステップ１１０３の処理内容について図２１を用いて説明する。図２１は、ステップ１１０３の処理の流れを示す。
【０２４９】
本処理では、まずステップ２１００において、データアクセス分析手段１４０４は、アドレス線１４０５をチェックし、実行命令がアクセスするメモリ要素１４００のアドレスを取得する。
【０２５０】
次に、ステップ２１０１において、データアクセス分析手段１４０４は、データ線１４０６をチェックし、実行命令のアクセス時のデータを取得する。
【０２５１】
次に、ステップ２１０２において、データアクセス分析手段１４０４は、データ情報記憶手段１４０３に配置されるアロケーション情報テーブルにアロケーション情報が設定されているかどうかを確認する。
【０２５２】
具体的には、データアクセス分析手段１４０４は、アロケーション情報テーブルの”リソース種別”要素がｎｕｌｌの場合はアロケーション情報無し、それ以外の場合はアロケーション情報有りと判定する。アロケーション情報無しの場合、処理が終了する。またアロケーション情報有りの場合ステップ２１０３へ処理が遷移する。
【０２５３】
次に、ステップ２１０３において、データアクセス分析手段１４０４は、アロケーション情報テーブルの”リソース種別”要素の設定がメモリ（ＭＥＭ）かどうかを判定する。”リソース種別”要素がメモリ（ＭＥＭ）でない場合、ステップ２１１１へ処理が分岐する。また”リソース種別”要素がメモリ（ＭＥＭ）の場合は、ステップ２１０４へ処理が遷移する。
【０２５４】
”リソース種別”要素がメモリ（ＭＥＭ）の場合、次にステップ２１０４において、データアクセス分析手段１４０４は、アロケーション情報テーブルの”実行命令アドレス範囲（スタートアドレス）”及び”実行命令アドレス範囲（エンドアドレス）”要素から実行命令アドレス範囲を取得する。
【０２５５】
次に、ステップ２１０５において、データアクセス分析手段１４０４は、実ステップ１１００で取得された実行命令のアドレスがステップ２１０４で取得された実行命令アドレス範囲に含まれるかどうかを判定する。アドレスが含まれない場合、ステップ２１１１へ処理が分岐する。またアドレスが含まれる場合、ステップ２１０６に処理が遷移する。
【０２５６】
アドレスが含まれる場合、ステップ２１０６において、データアクセス分析手段１４０４は、アロケーション情報テーブルの”メモリ領域範囲（スタートアドレス）”及び”メモリ領域範囲（エンドアドレス）”要素からメモリ領域範囲を取得する。
【０２５７】
次に、ステップ２１０７において、データアクセス分析手段１４０４は、ステップ２１００で取得された実行命令がアクセスするアドレスが、ステップ２１０６で取得されたメモリ領域範囲に含まれるかどうかを判定する。アドレスが含まれない場合、ステップ２１１１へ処理が分岐する。またアドレスが含まれる場合、ステップ２１０８に処理が遷移する。
【０２５８】
アドレスが含まれる場合、ステップ２１０８において、データアクセス分析手段１４０４は、アロケーション情報テーブルの”データ範囲（最小値）”及び”データ範囲（最大値）”要素からデータ範囲情報を取得する。
【０２５９】
次に、ステップ２１０９において、データアクセス分析手段１４０４は、ステップ２１０１で取得された実行命令のアクセス時のデータが、ステップ２１０８で取得されたデータ範囲に含まれるかどうかを判定する。含まれる場合、ステップ２１１１へ処理が分岐する。また含まれない場合、ステップ２１１０へ処理が遷移する。
【０２６０】
含まれない場合、ステップ２１１０において、データアクセス分析手段１４０４は、アロケーション情報により許可しないリソースへのデータアクセスが行われたことをソフトウエア開発者に通知する。通知方法は、任意であるが、例えば、図示しないディスプレイ等の出力装置への表示などが考えられる。
【０２６１】
ステップ２１１１においては、データアクセス分析手段１４０４は、アロケーション情報テーブル”次テーブルへのポインタ”要素から次のアロケーション情報テーブルへのポインタを取得する。
【０２６２】
次に、ステップ２１１２において、データアクセス分析手段１４０４は、さらにアロケーション情報テーブルが存在するかどうかを判定する。具体的には、データアクセス分析手段１４０４は、アロケーション情報テーブルの”次テーブルへのポインタ”要素がｎｕｌｌの場合は次アロケーション情報テーブル無し、それ以外の場合は次アロケーション情報テーブル有りと判定する。次アロケーション情報テーブル有りの場合、ステップ２１０２に戻る。次アロケーション情報テーブル無しの場合、処理が終了する。
【０２６３】
図１１の説明に戻る。ステップ１１０２において、データアクセス分析手段１４０４は、実行命令がレジスタ要素１０１にアクセスする（イネーブル線１４１３が有効）かどうかを判定し、アクセスする場合には、ステップ１１０４に処理が遷移する。
【０２６４】
ここで図２２を用いて、ステップ１１０４の処理内容について説明する。図２２は、ステップ１１０４の処理の流れを示す。
【０２６５】
本処理では、まずステップ２２００において、データアクセス分析手段１４０４は、セレクト線１４０８をチェックし、実行命令がアクセスするレジスタ要素１４０１のレジスタ種別を取得する。
【０２６６】
次に、ステップ２２０１において、データアクセス分析手段１４０４は、データ線１４０９をチェックし、実行命令のアクセス時のデータを取得する。
【０２６７】
次に、ステップ２２０２において、データアクセス分析手段１４０４は、データ情報記憶手段１４０３に配置されるアロケーション情報テーブルにアロケーション情報が設定されているかどうかを確認する。
【０２６８】
具体的には、データアクセス分析手段１４０４は、アロケーション情報テーブルの”リソース種別”要素がｎｕｌｌの場合はアロケーション情報無し、それ以外の場合はアロケーション情報有りと判定する。アロケーション情報無しの場合、処理が終了する。またアロケーション情報有りの場合ステップ２２０３へ処理が遷移する。
【０２６９】
次に、ステップ２２０３において、データアクセス分析手段１４０４は、アロケーション情報テーブルの”リソース種別”要素の設定がレジスタ（ＲＥＧ）かどうかを判定する。”リソース種別”要素がレジスタ（ＲＥＧ）でない場合、ステップ２２１１へ処理が分岐する。また”リソース種別”要素がレジスタ（ＲＥＧ）の場合は、ステップ２２０４へ処理が遷移する。
【０２７０】
”リソース種別”要素がレジスタ（ＲＥＧ）の場合、ステップ２２０４において、データアクセス分析手段１４０４は、アロケーション情報テーブルの”実行命令アドレス範囲（スタートアドレス）”及び”実行命令アドレス範囲（エンドアドレス）”要素から実行命令アドレス範囲を取得する。
【０２７１】
次に、ステップ２２０５において、データアクセス分析手段１４０４は、ステップ１１００で取得された実行命令のアドレスがステップ２２０４で取得された実行命令アドレス範囲に含まれるかどうかを判定する。アドレスが含まれない場合、ステップ２２１１へ処理が分岐する。またアドレスが含まれる場合、ステップ２２０６に処理が遷移する。
【０２７２】
アドレスが含まれる場合、ステップ２２０６において、データアクセス分析手段１４０４は、アロケーション情報テーブルの”レジスタ種別”要素からレジスタ種別を取得する。
【０２７３】
次に、ステップ２２０７において、データアクセス分析手段１４０４は、ステップ２２００で取得された実行命令がアクセスするレジスタが、ステップ２２０６で取得されたレジスタ種別と一致するかどうかを判定する。一致しない場合、ステップ２２１１へ処理が分岐する。また一致する場合、ステップ２２０８に処理が遷移する。
【０２７４】
一致した場合、ステップ２２０８において、データアクセス分析手段１４０４は、アロケーション情報テーブルの”データ範囲（最小値）”及び”データ範囲（最大値）”要素からデータ範囲情報を取得する。
【０２７５】
次に、ステップ２２０９において、データアクセス分析手段１４０４は、ステップ２２０１で取得された実行命令のアクセス時のデータが、ステップ２２０８で取得されたデータ範囲に含まれるかどうかを判定する。含まれる場合、ステップ２２１１へ処理が分岐する。また含まれない場合、ステップ２２１０へ処理が遷移する。
【０２７６】
含まれない場合、ステップ２２１０において、データアクセス分析手段１４０４は、アロケーション情報により許可しないリソースへのデータアクセスが行われたことをソフトウエア開発者に通知する。通知方法は、任意だが、例えば、図示しないディスプレイ等の出力装置への表示などが考えられる。
【０２７７】
ステップ２２１１においては、データアクセス分析手段１４０４は、アロケーション情報テーブル”次テーブルへのポインタ”要素から次のアロケーション情報テーブルへのポインタを取得する。
【０２７８】
次に、ステップ２２１２において、データアクセス分析手段１４０４は、さらにアロケーション情報テーブルが存在するかどうかを判定する。
【０２７９】
具体的には、データアクセス分析手段１４０４は、アロケーション情報テーブルの”次テーブルへのポインタ”要素がｎｕｌｌの場合は次アロケーション情報テーブル無し、それ以外の場合は次アロケーション情報テーブル有りと判定する。次アロケーション情報テーブル有りの場合、ステップ２２０２に戻る。次アロケーション情報テーブル無しの場合、処理が終了する。
【０２８０】
以上のように、本形態のシミュレータは、予め対象の実行命令アドレス範囲、アクセスを許可するリソース、データ範囲（最小値、最大値）等のアロケーション情報を指定しておき、命令の実行を行うことで、指定したアロケーション情報に反する処理の検出並びにソフトウエア開発者に対する通知を行う。本シミュレータを用いたソフトウエア開発を実施することで、ソフトウエアの問題から、意図しないリソースへのデータアクセスが発生した場合に、問題個所の特定が容易となり、ソフトウエア開発効率が向上する。
【０２８１】
（実施の形態３）
以下図１１、図２３〜図２９を参照しながら、本発明の実施の形態３について説明する。
【０２８２】
図２３は、本発明の実施の形態３におけるシミュレータのブロック図である。  メモリ要素２３００は、プロセッサの実行命令やデータを格納するメモリを表現する。
【０２８３】
レジスタ要素２３０１は、演算用データを格納する少なくとも一つのレジスタを表現する。
【０２８４】
コントロール要素２３０２は、メモリ要素２３００に格納された実行命令を読み出し、実行命令に応じてメモリ要素２３００及びレジスタ要素２３０１にアクセスしデータ読み出し、書き込みを行うコントローラを表現する。
【０２８５】
メモリ要素２３００、レジスタ要素２３０１及びコントロール要素２３０２は、プロセッサ及びその周辺を構成する要素を表現する模擬要素である。
【０２８６】
リソース初期化情報格納手段２３０３は、メモリ要素２３００の各メモリ領域やレジスタ要素２３０１に含まれる各レジスタが初期化されているか否かを示す情報を格納する。
【０２８７】
リソース初期化分析手段２３０４は、コントロール要素２３０２におけるメモリ要素２３００及びレジスタ要素２３０１へのアクセス先に対応するリソース初期化情報記憶手段２３０３に格納された初期化情報とをチェックし、アクセス先が初期化されているかどうかのリソース初期化分析を行う。
【０２８８】
コマンド入力手段２３１１は、入力されたコマンドを解析し、コントロール要素２３０２、メモリ要素２３００及びレジスタ要素２３０１を操作し、コマンドに応じた処理を実行する。
【０２８９】
また、コントロール要素２３０２とメモリ要素２３００は、コントロール要素２３０２からメモリ要素２３００にアクセスする場合に指定するアドレスを送信するアドレス線２３０５、並びに読み出し、書き込みデータを送受信するデータ線２３０６、アクセスが読み出しか書き込みかを示すＲＷ線２３０７、アクセス中か否かを示すイネーブル線２３１２によって接続される。
【０２９０】
同様に、コントロール要素２３０２とレジスタ要素２３０１は、コントロール要素２３０２からレジスタ要素２３０１にアクセスする場合に指定するレジスタ種別を送信するセレクト線２３０８、並びに読み出し、書き込みデータを送受信するデータ線２３０９、アクセスが読み出しか書き込みかを示すＲＷ線２３１０、アクセス中か否かを示すイネーブル線２３１３によって接続される。
【０２９１】
これらの線２３０５、２３０６、２３０７、２３１２、２３０８、２３０９、２３１０、２３１３も、模擬要素に含まれる。
【０２９２】
なお、図２３に示すシミュレータは、パーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）等のホストプロセッサ上で動作するソフトウエアモジュール群により実現される。
【０２９３】
本形態のシミュレータは、メモリ要素及びレジスタ要素が初期化されているか否かをチェックする手段とを備える。このチェックする手段は、メモリ要素及びレジスタ要素が初期化されているか否かを示す情報を記憶するリソース初期化情報格納手段２３０３と、リソース初期化情報格納手段を参照し、コントロール要素が、メモリ要素及びレジスタ要素へアクセスする際にアクセス先が初期化されているか否かを分析するリソース初期化分析手段２３０４とを備える。
【０２９４】
図２４は、本発明の実施の形態３のシミュレータが対応するコマンド一覧図である。本形態では、”ＬＯＡＤコマンド”、”ＧＯコマンド”、”ＳＥＴコマンド”、”ＱＵＩＴコマンド”に対応するが、種々変更しても良い。
【０２９５】
以下、各コマンドの書式並びに機能について説明する。”ＬＯＡＤコマンド”、”ＧＯコマンド”、”ＱＵＩＴコマンド”は、実施の形態１あるいは２と同様である。
【０２９６】
次に、”ＳＥＴコマンド”は、指定したリソース（メモリ、レジスタ）に指定したデータを設定するものである。指定するリソースがメモリ要素２３００の場合は、”ＳＥＴ  ＭＥＭ  ＜ＡＤＤＲ＞  ＜ＤＡＴＡ＞”と入力する。
【０２９７】
＜ＡＤＤＲ＞はデータをセットするメモリ領域アドレスであり、１６進数で指定する。＜ＤＡＴＡ＞は、メモリ要素２３００の＜ＡＤＤＲ＞で指定したアドレスにセットするデータであり、１６進数で指定する。例えば、メモリ要素２３００のアドレス０ｘ０００に対し、データ０ｘ１をセットする場合には、”ＳＥＴ  ＭＥＭ  ０  １”と指定する。
【０２９８】
また、”ＳＥＴコマンド”で指定するリソースがレジスタ要素２３０１の場合は、”ＳＥＴ  ＲＥＧ  ＜ＲＥＧＮＡＭＥ＞  ＜ＤＡＴＡ＞”と入力する。＜ＲＥＧＮＡＭＥ＞は、データをセットするレジスタ種別であり、レジスタ名（ＲＥＧ０、ＲＥＧ１）で指定する。＜ＤＡＴＡ＞は、指定するリソースがメモリ時と同様である。
【０２９９】
図２５は、コマンド入力手段２３１１の処理の流れを示す。
【０３００】
コマンド入力手段２３１１は、図２４に示す４つのコマンドに対応するものとする。図２５に示すように、まずシミュレータが起動されたら、ステップ２５００にてコマンド入力待ち状態となる。そして何らかのコマンドが入力された場合、ステップ２５０１〜２５０４において、入力されたコマンドに応じて処理が分岐する。
【０３０１】
入力コマンドが”ＬＯＡＤコマンド”、”ＧＯコマンド”、”ＱＵＩＴコマンド”の場合の処理は、実施の形態１あるいは２と同様である。
【０３０２】
入力コマンドが”ＳＥＴコマンド”の場合、ステップ２５０２からステップ２５０６へ処理が遷移する。
【０３０３】
ここで図２６を用いて、ステップ２５０６の処理内容について説明する。図２６は、ステップ２５０６の処理の流れを示す。
【０３０４】
本処理では、まずステップ２６００において、”ＳＥＴコマンド”で指定されたリソース種別がメモリ（ＭＥＭ）であるかレジスタ（ＲＥＧ）であるかが判定される。メモリ（ＭＥＭ）の場合、ステップ２６０１に処理が分岐する。またレジスタ（ＲＥＧ）の場合、ステップ２６０４に処理が分岐する。
【０３０５】
リソース種別がメモリ（ＭＥＭ）の場合、ステップ２６０１において、”ＳＥＴコマンド”で指定されたデータをセットするアドレス情報が取得される。
【０３０６】
次に、ステップ２６０２において、”ＳＥＴコマンド”で指定されたデータが取得される。
【０３０７】
次に、ステップ２６０３において、メモリ要素２３００のうち、ステップ２６０１で取得されたアドレス領域に、ステップ２６０２で取得されたデータがセットされる。
【０３０８】
次に、ステップ２６０７において、リソース初期化情報格納手段２３０３に配置されているリソース初期化情報テーブルのうち、ステップ２６０１で取得されたメモリアドレス領域に対応する初期化情報に、初期化済（１）がセットされ、処理が終了する。リソース初期化情報テーブルに関する説明は後述する。
【０３０９】
一方、リソース種別がレジスタ（ＲＥＧ）の場合、ステップ２６０４において、”ＳＥＴコマンド”で指定されたレジスタ種別が取得される。
【０３１０】
次に、ステップ２６０５において、”ＳＥＴコマンド”で指定されたデータが取得される。
【０３１１】
次に、ステップ２６０６において、レジスタ要素２３０１のうち、ステップ２６０４で取得されたレジスタに、データ取得処理ステップ２６０５で取得されたデータがセットされる。
【０３１２】
次に、ステップ２６０８において、リソース初期化情報格納手段２３０３に配置されているリソース初期化情報テーブルのうち、ステップ２６０４で取得されたレジスタに対応する初期化情報に、初期化済（１）がセットされ、処理が終了する。
【０３１３】
”ＧＯコマンド”による命令実行中は、リソース初期化分析手段２３０４が、アクセス先リソース（メモリ、レジスタ）の初期化済状況をチェックする。
【０３１４】
次に図１１、図２７〜図２９を用いて、リソース初期化分析手段２３０４における処理内容を説明する。図１１は、リソース初期化分析手段２３０４の処理の流れを示す。
【０３１５】
本処理では、まず実行命令アドレス取得処理ステップ１１００において、リソース初期化分析手段２３０４は、コントロール要素２３０２が現在実行している命令アドレスを取得する。
【０３１６】
次に、ステップ１１０１において、リソース初期化分析手段２３０４は、実行命令がメモリ要素２３００にアクセスする（イネーブル線２３１２が有効）かどうかを判定し、アクセスする場合には、ステップ１１０３に処理が遷移する。
【０３１７】
ここで図２７を用いて、ステップ１１０３の処理内容について説明する。図２７は、ステップ１１０３の処理の流れを示す。
【０３１８】
本処理では、まずステップ２７００において、リソース初期化分析手段２３０４は、アドレス線２３０５をチェックし、実行命令がアクセスするメモリ要素２３００のアドレスを取得する。
【０３１９】
次に、ステップ２７０１において、リソース初期化分析手段２３０４は、ＲＷ線２３０７をチェックし、実行命令のアクセス種別（読み出し、書き込み）を取得する。
【０３２０】
次に、ステップ２７０２において、リソース初期化分析手段２３０４は、ステップ２７０１で取得されたアクセス種別をチェックする。読み出しアクセスの場合、ステップ２７０３へ処理が分岐する。また書き込みアクセスの場合、ステップ２７０６へ処理が分岐する。
【０３２１】
まず読み出しアクセスの場合の処理について説明する。ステップ２７０３において、リソース初期化分析手段２３０４は、リソース初期化情報格納手段２３０３に配置されているリソース初期化情報テーブルを参照し、ステップ２７００で取得されたメモリアドレス領域に対応する初期化情報を取得する。
【０３２２】
ここで図２８を用いて、リソース初期化情報テーブルについて説明する。図２８は、本発明の実施の形態３におけるリソース初期化情報テーブルの説明図である。
【０３２３】
リソース初期化情報テーブル２８００は、図２３に示すシミュレータが模擬するプロセッサのリソース（メモリ、レジスタ）に対する初期化情報が登録されたテーブルである。
【０３２４】
第１インデックスにリソース種別（メモリ（ＭＥＭ）又はレジスタ（ＲＥＧ））、第２インデックスにリソース種別がメモリ（ＭＥＭ）の場合はメモリアドレス、リソース種別がレジスタ（ＲＥＧ）の場合レジスタ名が、それぞれ登録され、各リソース毎の初期化情報（初期化未：０、初期化済：１）がセットされる。
【０３２５】
シミュレータ起動時には、全リソース初期化未（０）がセットされる。但し、図２３に示すシミュレータが模擬するプロセッサが、電源投入時やリセット時にハードウエア的に何らかの値に初期化するリソースに関しては、その限りではない。
【０３２６】
リソース初期化情報テーブル２８００から各リソースに対する初期化情報の取得（セット）を行う場合には、まず指定するリソース種別（メモリ、レジスタ）に応じて対応する第１インデックスが選択され、次にリソース種別がメモリの場合には指定されたアドレス、レジスタの場合には指定されたレジスタ名に対応した第２インデックスが選択され、対象のリソース初期化情報（初期化未：０、初期化済：１）へのアクセスが実施される。
【０３２７】
図２７の説明に戻る。ステップ２７０４において、リソース初期化分析手段２３０４は、ステップ２７０３で取得された初期化情報が初期化未（０）あるいは初期化済（１）かどうかを判定する。初期化済（１）の場合、処理が終了する。また初期化未（０）の場合、ステップ２７０５へ処理が遷移する。
【０３２８】
実行命令によるアクセス先リソースが初期化未（０）の場合、ステップ２７０５において、リソース初期化分析手段２３０４は、一度も初期化されていないリソースへのアクセスが発生したことを、ソフトウエア開発者に通知する。通知方法は、任意だが、例えば、図示しないディスプレイ等の出力装置への表示などが考えられる。
【０３２９】
次に、書き込みアクセスの場合の処理について説明する。ステップ２７０６において、リソース初期化分析手段２３０４は、リソース初期化情報格納手段２３０３に配置されているリソース初期化情報テーブルのうち、ステップ２７００で取得されたメモリアドレス領域に対応する初期化情報に、初期化済（１）をセットし、処理が終了する。
【０３３０】
図１１の説明に戻る。ステップ１１０２において、リソース初期化分析手段２３０４は、実行命令がレジスタ要素２３０１にアクセスする（イネーブル線２３１３が有効）かどうかを判定し、アクセスする場合には、ステップ１１０４に処理が遷移する。
【０３３１】
ここで図２９を用いて、ステップ１１０４の処理内容について説明する。図２９は、ステップ１１０４の処理の流れを示す。
【０３３２】
本処理では、まずステップ２９００において、リソース初期化分析手段２３０４は、セレクト線２３０８をチェックし、実行命令がアクセスするレジスタ要素２３０１のレジスタ種別を取得する。
【０３３３】
次に、ステップ２９０１において、リソース初期化分析手段２３０４は、ＲＷ線２３１０をチェックし、実行命令のアクセス種別（読み出し、書き込み）を取得する。
【０３３４】
次に、ステップ２９０２において、リソース初期化分析手段２３０４は、ステップ２９０１で取得されたアクセス種別をチェックする。読み出しアクセスの場合、ステップ２９０３へ処理が分岐する。また書き込みアクセスの場合、ステップ２９０６へ処理が分岐する。
【０３３５】
まず読み出しアクセスの場合の処理について説明する。ステップ２９０３において、リソース初期化分析手段２３０４は、リソース初期化情報格納手段２３０３に配置されているリソース初期化情報テーブルを参照し、ステップ２９００で取得されたレジスタに対応する初期化情報を取得する。
【０３３６】
次に、ステップ２９０４において、リソース初期化分析手段２３０４は、リソース初期化情報取得処理ステップ２９０３で取得された初期化情報が初期化未（０）あるいは初期化済（１）かどうかを判定する。
【０３３７】
初期化済（１）の場合、処理が終了する。また初期化未（０）の場合、ステップ２９０５へ処理が遷移する。
【０３３８】
実行命令によるアクセス先リソースが初期化未（０）の場合、ステップ２９０５において、リソース初期化分析手段２３０４は、一度も初期化されていないリソースへのアクセスが発生したことを、ソフトウエア開発者に通知する。通知方法は任意だが、例えば、図示しないディスプレイ等の出力装置への表示などが考えられる。
【０３３９】
次に、書き込みアクセスの場合の処理について説明する。ステップ２９０６において、リソース初期化分析手段２３０４は、リソース初期化情報格納手段２３０３に配置されているリソース初期化情報テーブルのうち、ステップ２９００で取得されたレジスタに対応する初期化情報に、初期化済（１）をセットし、処理が終了する。
【０３４０】
以上のように、本形態のシミュレータは、各リソースに対する初期化情報用意し、リソースへのアクセスを行う命令実行時に未初期化リソースへのアクセス処理の検出並びにソフトウエア開発者に対する通知を行う。本シミュレータを用いたソフトウエア開発を実施することで、ソフトウエアの問題から、未初期化リソースへのアクセスが発生した場合に、問題個所の特定が容易となり、ソフトウエア開発効率が向上する。
【０３４１】
（実施の形態４）
以下図３０〜図３２を参照しながら、本発明の実施の形態４について説明する。
【０３４２】
図３０は、本発明の実施の形態４におけるシミュレータのブロック図である。
【０３４３】
メモリ要素３０００は、プロセッサの実行命令やデータを格納するメモリを表現する。
【０３４４】
レジスタ要素３００１は、演算用データを格納する少なくとも一つのレジスタを表現する。
【０３４５】
コントロール要素３００２は、メモリ要素３０００に格納された実行命令を読み出し、実行命令に応じてメモリ要素３０００及びレジスタ要素３００１へのアクセス処理、並びにレジスタ要素３００１に含まれるレジスタを参照した結果に応じた実行命令の分岐処理（条件付命令）を行うコントローラを表現する。
【０３４６】
メモリ要素３０００、レジスタ要素３００１及びコントロール要素３００２は、プロセッサ及びその周辺を構成する要素を表現する模擬要素である。
【０３４７】
条件付命令実行状態分析手段３００４は、コントロール要素３００２で実行される命令がレジスタ要素３００１に含まれるレジスタを参照した結果に応じて処理を実行する条件付命令時に、条件付命令のアドレス情報及び実行時に参照したレジスタ値を記憶する。
【０３４８】
コマンド入力手段３０１１は、入力されたコマンドを解析し、コントロール要素３００２、メモリ要素３０００及びレジスタ要素３００１を操作し、コマンドに応じた処理を実行する。
【０３４９】
また、コントロール要素３００２とメモリ要素３０００は、コントロール要素３００２からメモリ要素３０００にアクセスする場合に指定するアドレスを送信するアドレス線３００５、並びに読み出し、書き込みデータを送受信するデータ線３００６、アクセスが読み出しか書き込みかを示すＲＷ線３００７、アクセス中か否かを示すイネーブル線３０１２によって接続される。
【０３５０】
同様に、コントロール要素３００２とレジスタ要素３００１は、コントロール要素３００２からレジスタ要素３００１にアクセスする場合に指定するレジスタ種別を送信するセレクト線３００８、並びに読み出し、書き込みデータを送受信するデータ線３００９、アクセスが読み出しか書き込みかを示すＲＷ線３０１０、アクセス中か否かを示すイネーブル線３０１３によって接続される。
【０３５１】
これらの線３００５、３００６、３００７、３０１２、３００８、３００９、３０１０、３０１３も、模擬要素に含まれる。
【０３５２】
なお、図３０に示すシミュレータは、パーソナルコンピュータ（ＰＣ）やワークステーション（ＷＳ）等のホストプロセッサ上で動作するソフトウエアモジュール群により実現される。
【０３５３】
また、図３０に示すシミュレータは、図２４に示したコマンドに対応し、各コマンド実行時の処理内容は、実施の形態２と同様である。
【０３５４】
”ＧＯコマンド”による命令実行中は、条件付命令実行状態分析手段３００４が、条件付命令のアドレス情報及び実行時に参照されたレジスタ値を記憶する。
【０３５５】
次に、図３１を用いて、条件付命令実行状態分析手段３００４における処理内容を説明する。図３１は、条件付命令実行状態分析手段３００４の処理の流れを示す。
【０３５６】
本処理では、まずステップ３１００において、条件付命令実行状態分析手段３００４は、コントロール要素３００２が実行している命令コードを取得する。ここでは、命令コードが図５のプログラムファイル５００に示すような３２ビットのコードであるものとする。コントロール要素３００２は、この命令コードに応じた処理を実行する。
【０３５７】
図３０のシミュレータが模擬するプロセッサは、条件付命令（レジスタ要素３００１に含まれるレジスタを参照した結果に応じる処理）を実行する。そして、このプロセッサは、指定された条件に応じて指定されたアドレスに実行命令を分岐する命令”ＪＰ／ＣＣ”に対応しているものとする。
【０３５８】
次に、図３２を用いて、条件付命令”ＪＰ／ＣＣ”について説明する。図３２は、条件付命令”ＪＰ／ＣＣ”を例示する。
【０３５９】
まず、条件付命令”ＪＰ／ＣＣ”のアセンブラソースコードにおける書式並びに機能は、機能説明３２００に従う。アセンブラソースコードでの書式は”ＪＰ／ＣＣ  ＡＤＤＲ”であり、”ＣＣ”で指定した条件が成立した場合、”ＡＤＤＲ”で指定したアドレスに実行命令が分岐する。
【０３６０】
上記の通り”ＣＣ”は、分岐条件を指定するもので、”ＣＣ”として、”ＺＲ０”、”ＮＺ０”、”ＺＲ１”、”ＮＺ１”が指定可能である。”ＺＲ０”が指定された場合、レジスタ要素３００１のレジスタＲＥＧ０が０の場合に条件が成立し実行命令が分岐する。”ＮＺ０”が指定された場合、レジスタ要素３００１のレジスタＲＥＧ０が０以外の場合に条件が成立し実行命令が分岐する。”ＺＲ１”が指定された場合、レジスタ要素３００１のレジスタＲＥＧ１が０の場合に条件が成立し実行命令が分岐する。”ＮＺ１”が指定された場合、レジスタ要素３００１のレジスタＲＥＧ１が０以外の場合に条件が成立し実行命令が分岐する。
【０３６１】
また”ＡＤＤＲ”は、上記”ＣＣ”で指定した条件が成立した場合に分岐するアドレスであり、１６進数で指定する。例えば、レジスタ要素３００１のレジスタＲＥＧ０が０の場合にアドレス０ｘ０００５へ分岐する命令の場合、”ＪＰ／ＺＲ０  ０ｘ０００５”となる。
【０３６２】
次に上記書式で記述された条件付命令”ＪＰ／ＣＣ”と、メモリ要素３０００にロードされる命令コードの対応について、ビットマップ３２０１、３２０２を用いて説明する。ビットマップ３２０１は、条件付命令”ＪＰ／ＣＣ”命令コード（３２ビット）を示したものである。
【０３６３】
ｂｉｔ３１〜ｂｉｔ２２は、”１１００１００００１”（２進数）であり、この命令コードが”ＪＰ／ＣＣ”命令であることを示す。ｂｉｔ２１〜ｂｉｔ１６は”ＣＣ”の指定を表すビットであり、設定されるコードは、ビットマップ３２０２で表される。
【０３６４】
ｂｉｔ２１〜ｂｉｔ１６が”００００００”（２進数）の場合”ＺＲ０”、”０００００１”（２進数）の場合”ＮＺ０”、”００００１０”（２進数）の場合”ＺＲ１”、”００００１１”（２進数）の場合”ＮＺ１”であることを示す。ｂｉｔ１５〜ｂｉｔ０は”ＣＣ”で指定した条件成立時に分岐するアドレスである。
【０３６５】
図３１の説明に戻る。ステップ３１０１において、条件付命令実行状態分析手段３００４は、ステップ３１００で取得された命令が、レジスタ要素３００１に含まれるレジスタを参照した結果に応じて処理を実行する条件付命令かどうかを判定する。
【０３６６】
具体的には、条件付命令実行状態分析手段３００４は、ステップ３１００で取得された命令コード（３２ビット）のｂｉｔ３１〜ｂｉｔ２２が”１１００１００００１”（２進数）の場合、条件付命令”ＪＰ／ＣＣ”と判定する。ここで条件付命令でない場合、処理が終了する。また条件付命令である場合、ステップ３１０２に処理が遷移する。
【０３６７】
条件付命令である場合、ステップ３１０２において、条件付命令実行状態分析手段３００４は、実行命令のメモリ要素３０００におけるアドレスを取得する。
【０３６８】
次に、ステップ３１０３において、条件付命令実行状態分析手段３００４は、ステップ３１００で取得された条件付命令が条件判定用に参照するレジスタ値（レジスタ要素３００１に含まれる）を取得する。
【０３６９】
具体的には、条件付命令実行状態分析手段３００４は、ステップ３１００で取得された命令コード（３２ビット）のｂｉｔ２１〜ｂｉｔ１６を参照し、”００００００”（２進数）又は”０００００１”（２進数）の場合はレジスタＲＥＧ０のデータを、また”００００１０”（２進数）又は”００００１１”（２進数）の場合はレジスタＲＥＧ１のデータを取得する。
【０３７０】
次に、ステップ３１０４において、条件付命令実行状態分析手段３００４は、ステップ３１０２で取得された実行命令アドレスと、ステップ３１０３で取得された参照レジスタ値とを、対応付けて記憶する。
【０３７１】
次に、ステップ３１０５において、条件付命令実行状態分析手段３００４は、ステップ３１０４で記憶した実行命令アドレスと参照レジスタ値とを、ソフトウエア開発者に通知する。
【０３７２】
通知方法は任意だが、例えば、図示しないディスプレイ等の出力装置への表示などが考えられる。なお本形態では、条件付命令実行時に毎回実行命令アドレス及び参照レジスタ値を通知しているが、それ以外に、条件付命令実行時は実行命令アドレス及び参照レジスタ値の記憶のみ実行し、プログラム終了後にコマンド等により、記憶した情報を出力しても差し支えない。
【０３７３】
以上のように、本形態のシミュレータは、レジスタ等を参照した結果に応じて処理を実行する条件付命令実行時に、条件付命令のメモリアドレス及び条件判定のために参照したレジスタ値の記憶並びにソフトウエア開発者に対する通知を行う。本シミュレータを用いたソフトウエア開発を実施し、条件付命令の実行状態を確認することが可能となり、ソフトウエアが全ての条件で開発者の意図通りに動作しているかどうかを検証することができるため、ソフトウエアの完成度（動作の確かさ）が向上する。
る。
【０３７４】
勿論、実施の形態１から４は、適宜組み合わせて実施することができる。
【産業上の利用可能性】
【０３７５】
本発明に係るシミュレータは、例えば、組み込みソフトウエアの開発あるいはその関連技術分野において好適に利用できる。
【図面の簡単な説明】
【０３７６】
【図１】本発明の実施の形態１におけるシミュレータのブロック図
【図２】本発明の実施の形態１におけるコマンド一覧図
【図３】本発明の実施の形態１におけるコマンド入力手段のフローチャート
【図４】本発明の実施の形態１におけるステップ３０６のフローチャート
【図５】本発明の実施の形態１におけるプログラムファイルの説明図
【図６】本発明の実施の形態１におけるステップ３０７のフローチャート
【図７】本発明の実施の形態１におけるアロケーション情報テーブルの説明図
【図８】本発明の実施の形態１におけるステップ３０８のフローチャート
【図９】本発明の実施の形態１におけるアロケーションファイルの説明図
【図１０】本発明の実施の形態１におけるステップ３０９のフローチャート
【図１１】本発明の実施の形態１におけるリソースアクセス分析手段のフローチャート
【図１２】本発明の実施の形態１におけるステップ１１０３のフローチャート
【図１３】本発明の実施の形態１におけるステップ１１０４のフローチャート
【図１４】本発明の実施の形態２におけるシミュレータのブロック図
【図１５】本発明の実施の形態２におけるコマンド一覧図
【図１６】本発明の実施の形態２におけるコマンド入力手段のフローチャート
【図１７】本発明の実施の形態２におけるステップ１６０７のフローチャート
【図１８】本発明の実施の形態２におけるアロケーション情報テーブルの説明図
【図１９】本発明の実施の形態２におけるステップ１６０８のフローチャート
【図２０】本発明の実施の形態２におけるアロケーションファイルの説明図
【図２１】本発明の実施の形態２におけるステップ１１０３のフローチャート
【図２２】本発明の実施の形態２におけるステップ１１０４のフローチャート
【図２３】本発明の実施の形態３におけるシミュレータのブロック図
【図２４】本発明の実施の形態３におけるコマンド一覧図
【図２５】本発明の実施の形態３におけるコマンド入力手段のフローチャート
【図２６】本発明の実施の形態３におけるステップ２５０６のフローチャート
【図２７】本発明の実施の形態３におけるステップ１１０３のフローチャート
【図２８】本発明の実施の形態３におけるリソース初期化情報テーブルの説明図
【図２９】本発明の実施の形態３におけるステップ１１０４のフローチャート
【図３０】本発明の実施の形態４におけるシミュレータのブロック図
【図３１】本発明の実施の形態４における条件付命令実行状態分析手段のフローチャート
【図３２】本発明の実施の形態４における条件付命令”ＪＰ／ＣＣ”の説明図
【図３３】（ａ）従来のシミュレータのフローチャート  （ｂ）従来の領域アクセス用テーブルの説明図
【符号の説明】
【０３７７】
１００、１４００、２３００、３０００  メモリ要素
１０１、１４０１、２３０１、３００１  レジスタ要素
１０２、１４０２、２３０２、３００２  コントロール要素
１０３  リソース情報記憶手段
１０４  リソースアクセス分析手段
１０５、１４０５、２３０５、３００５  アドレス線
１０６、１４０６、２３０６、３００６  データ線
１０７、１４０７、２３０７、３００７  ＲＷ線
１０８、１４０８、２３０８、３００８  セレクト線
１０９、１４０９、２３０９、３００９  データ線
１１０、１４１０、２３１０、３０１０  ＲＷ線
１１１、１４１１、２３１１、３０１１  コマンド入力手段
１１２、１１３、１４１２、１４１３、２３１２、２３１３、３０１２、３０１３  イネーブル線
２００、１５００、２４００  コマンド一覧
５００  プログラムファイル
７００、７０１、１８００、１８０１  アロケーション情報テーブル
９００、２０００  アロケーションファイル
１４０３  データ情報記憶手段
１４０４  データアクセス分析手段
２３０３  リソース初期化情報格納手段
２３０４  リソース初期化分析手段
３２００  機能説明
３２０１、３２０２  条件付命令”ＪＰ／ＣＣ”ビットマップ
３３００  コマンド入力部
３３０１  コマンド解析部
３３０２  各コマンド処理部
３３０３  領域アクセス処理部
３３０４  命令実行コマンド判定部
３３０５  １命令実行処理部
３３０６  領域アクセスチェック処理部
３３０７  命令実行終了判定部
３３０８  領域アクセス用テーブル
【図１】
2005128692.tif 000003
【図２】
2005128692.tif 000004
【図３】
2005128692.tif 000005
【図４】
2005128692.tif 000006
【図５】
2005128692.tif 000007
【図６】
2005128692.tif 000008
【図７】
2005128692.tif 000009
【図８】
2005128692.tif 000010
【図９】
2005128692.tif 000011
【図１０】
2005128692.tif 000012
【図１１】
2005128692.tif 000013
【図１２】
2005128692.tif 000014
【図１３】
2005128692.tif 000015
【図１４】
2005128692.tif 000016
【図１５】
2005128692.tif 000017
【図１６】
2005128692.tif 000018
【図１７】
2005128692.tif 000019
【図１８】
2005128692.tif 000020
【図１９】
2005128692.tif 000021
【図２０】
2005128692.tif 000022
【図２１】
2005128692.tif 000023
【図２２】
2005128692.tif 000024
【図２３】
2005128692.tif 000025
【図２４】
2005128692.tif 000026
【図２５】
2005128692.tif 000027
【図２６】
2005128692.tif 000028
【図２７】
2005128692.tif 000029
【図２８】
2005128692.tif 000030
【図２９】
2005128692.tif 000031
【図３０】
2005128692.tif 000032
【図３１】
2005128692.tif 000033
【図３２】
2005128692.tif 000034
【図３３】
2005128692.tif 000035