(57)【要約】【課題】模擬対象プログラムが周辺リソースを管理するレジスタ へアクセスを行う際、レジスタへのアクセスサイズを考慮し、プログラム動作を模擬するソフトウエアシミュレータを提供する。【解決手段】ソフトウエアが模擬対象装置のレジスタへアクセスする際の、レジスタへのアクセスサイズを検知するサイズ検知手段と、レジスタへのアクセスサイズに関する制限を定義したサイズ制限情報と、サイズ検知手段によって検知されたアクセスサイズと、サイズ制限情報とに基づいて、ソフトウエアのレジスタへのアクセスが有効か無効かを判断するアクセス有効判断手段と、アクセス有効判断手段の判断結果に応じて、シミュレーションの動作を切替えるシミュレーション動作切替え手段とを備える。【選択図】図１
2019114117.tif 000002
【特許請求の範囲】
【請求項１】
装置を制御するソフトウエアを実行する該装置の制御部の動作をシミュレーションするソフトウエアシミュレータであって、
前記ソフトウエアが前記制御部のレジスタへアクセスする場合に、該レジスタへのアクセスサイズを検知するサイズ検知手段と、
前記サイズ検知手段によって検知されたアクセスサイズと、前記レジスタへのアクセスサイズに関する制限を定義したサイズ制限情報とに基づいて、前記ソフトウエアの前記レジスタへのアクセスが有効か無効かを判断するアクセス有効判断手段と、
前記アクセス有効判断手段の判断結果に応じて、前記シミュレーションの動作を切替えるシミュレーション動作切替え手段と、
を備えたことを特徴とするソフトウエアシミュレータ。
【請求項２】
前記サイズ制限情報は、制限の対象となる制限レジスタと、該制限レジスタに対する有効なアクセスサイズに関する情報を含み、
前記アクセス有効判断手段は、
前記ソフトウエアがアクセスしようとしているレジスタが、前記制限レジスタでない場合に、該アクセスは有効であると判断し、
前記ソフトウエアがアクセスしようとしているレジスタが、前記制限レジスタである場合には、前記サイズ検知手段によって検知されたアクセスサイズと、該制限レジスタに対する有効なアクセスサイズとが一致している場合に、該アクセスは有効であると判断することを特徴とする請求項１に記載のソフトウエアシミュレータ。
【請求項３】
前記サイズ制限情報において、制限の対象となる制限レジスタと、該制限レジスタへのアクセスサイズと、該制限レジスタへのアクセス種別と、を関連付けて、アクセスサイズに関する制限が定義されており、
前記ソフトウエアがレジスタへアクセスする場合に、アクセス種別を検知するアクセス種別検知手段を備え、
前記アクセス有効判断手段は、前記サイズ検知手段によって検知されたアクセスサイズと、前記アクセス種別検知手段によって検知されたアクセス種別と、前記サイズ制限情報に定義されたアクセスサイズとアクセス種別とに基づいて、前記ソフトウエアの前記レジスタへのアクセスが有効か無効かを判断することを特徴とする請求項１に記載のソフトウエアシミュレータ。
【請求項４】
前記サイズ制限情報は、前記制限レジスタと、該制限レジスタに対する有効なアクセスサイズ及び有効なアクセス種別を含み、
前記アクセス有効判断手段は、
前記ソフトウエアがアクセスしようとしているレジスタが、前記制限レジスタでない場合に、該アクセスは有効であると判断し、
前記ソフトウエアがアクセスしようとしているレジスタが、前記制限レジスタである場合には、前記サイズ検知手段によって検知されたアクセスサイズと、該制限レジスタに対する有効なアクセスサイズとが一致し、かつ、前記アクセス種別検知手段によって検知されたアクセス種別と、該制限レジスタに対する有効なアクセス種別とが一致している場合に、該アクセスは有効であると判断することを特徴とする請求項３に記載のソフトウエアシミュレータ。
【請求項５】
前記サイズ制限情報において、制限の対象となる制限レジスタと、該制限レジスタへのアクセスサイズと、該制限レジスタとは別の条件レジスタの値と、を関連付けて、アクセスサイズに関する制限が定義されており、
前記アクセス有効判断手段は、前記サイズ検知手段によって検知されたアクセスサイズ
と、前記サイズ制限情報に定義されたアクセスサイズと前記条件レジスタの値に基づいて、前記ソフトウエアのアクセスが有効か無効かを判断することを特徴とする請求項１に記載のソフトウエアシミュレータ。
【請求項６】
前記サイズ制限情報は、前記制限レジスタと、該制限レジスタに対する有効なアクセスサイズ及び有効な前記条件レジスタの値を含み、
前記アクセス有効判断手段は、
前記ソフトウエアがアクセスしようとしているレジスタが、前記制限レジスタでない場合に、該アクセスは有効であると判断し、
前記ソフトウエアがアクセスしようとしているレジスタが、前記制限レジスタである場合には、前記サイズ検知手段によって検知されたアクセスサイズと、該制限レジスタに対する有効なアクセスサイズとが一致し、かつ、前記条件レジスタの値が、該制限レジスタに対する有効な条件レジスタの値とが一致している場合に、該アクセスは有効であると判断することを特徴とする請求項５に記載のソフトウエアシミュレータ。
【請求項７】
前記サイズ制限情報において、制限の対象となる制限レジスタと、該制限レジスタへのアクセスサイズと、該制限レジスタへのアクセス種別と、該制限レジスタとは別の条件レジスタの値と、を関連付けて、アクセスサイズに関する制限が定義されており、
前記ソフトウエアがレジスタへアクセスする際の、アクセス種別を検知するアクセス種別検知手段を備え、
前記アクセス有効判断手段は、前記サイズ検知手段によって検知されたアクセスサイズと、前記アクセス種別検知手段によって検知されたアクセス種別と、前記サイズ制限情報に定義されたアクセスサイズとアクセス種別と前記条件レジスタの値に基づいて、前記ソフトウエアのアクセスが有効か無効かを判断することを特徴とする請求項１に記載のソフトウエアシミュレータ。
【請求項８】
前記サイズ制限情報は、前記制限レジスタと、該制限レジスタに対する有効なアクセスサイズ、有効なアクセス種別及び有効な前記条件レジスタの値を含み、
前記アクセス有効判断手段は、
前記ソフトウエアがアクセスしようとしているレジスタが、前記制限レジスタでない場合に、該アクセスは有効であると判断し、
前記ソフトウエアがアクセスしようとしているレジスタが、前記制限レジスタである場合には、前記サイズ検知手段によって検知されたアクセスサイズと、該制限レジスタに対する有効なアクセスサイズとが一致し、かつ、前記アクセス種別検知手段によって検知されたアクセス種別と、該制限レジスタに対する有効なアクセス種別とが一致し、かつ、前記条件レジスタの値が、該制限レジスタに対する有効な条件レジスタの値とが一致している場合に、該アクセスは有効であると判断することを特徴とする請求項７に記載のソフトウエアシミュレータ。
【請求項９】
前記シミュレーション動作切替え手段は、
前記アクセス有効判断手段の判断結果が有効である場合に、前記ソフトウエアのレジスタアクセスをシミュレーションすることを特徴とする請求項１乃至８のいずれか１項に記載のソフトウエアシミュレータ。
【請求項１０】
前記シミュレーション動作切替え手段は、
前記アクセス有効判断手段の判断結果が無効である場合に、前記ソフトウエアのレジスタアクセスを実行しないことを特徴とする請求項１乃至９のいずれか１項に記載のソフトウエアシミュレータ。
【請求項１１】
前記アクセス有効判断手段の判断結果が無効である場合に、前記ソフトウエアのレジス
タアクセスが無効である旨をユーザに報知する報知手段を備えたことを特徴とする請求項１乃至１０のいずれか１項に記載のソフトウエアシミュレータ。
【請求項１２】
前記ソフトウエアがアクセスしようとするレジスタの情報を記憶する記憶手段を備え、
前記記憶手段は、前記アクセス有効判断手段の判断結果に応じて、前記情報の記憶方法を切替えることを特徴とする請求項１乃至１１のいずれか１項に記載のソフトウエアシミュレータ。
【請求項１３】
前記記憶手段は、前記アクセス有効判断手段の判断結果が有効である場合に、前記ソフトウエアがアクセスするレジスタの情報を記憶することを特徴とする請求項１２に記載のソフトウエアシミュレータ。
【請求項１４】
前記記憶手段は、前記アクセス有効判断手段の判断結果が無効である場合に、前記ソフトウエアのよるレジスタへのアクセスが無効である旨を記憶することを特徴とする請求項１２又は１３に記載のソフトウエアシミュレータ。
【請求項１５】
前記サイズ制限情報を指定するためのサイズ制限指定手段を備えたことを特徴とする請求項１乃至１４のいずれか１項に記載のソフトウエアシミュレータ。
【請求項１６】
請求項１乃至１５のいずれか１項に記載のソフトウエアシミュレータとしてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサによるプログラムの実行をコンピュータ上で模擬するソフトウエアシミュレータ、及び、それを実現するプログラムに関するものである。
【背景技術】
【０００２】
装置の制御プログラムが動作するマイクロプロセッサは、プログラムの制御対象装置毎に異なるため、マイクロプロセッサ毎の仕様に合わせて、プログラムをコーディングしなくてはならない。また、制御プログラムの開発においては、バグの発生を防ぐことが重要であるものの、制御プログラムが周辺ハードウエアへのアクセスがマイクロプロセッサ仕様に違反する処理をしても、装置の明確な誤動作として表れにくく、評価で問題が顕在化しにくい。
このため、特許文献１は、制御プログラムの動作を汎用コンピュータ等の情報処理装置上で模擬し、制御プログラムの周辺ハードウエアへのアクセスが、マイクロプロセッサの仕様に違反していないかを確認する方法を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１５０５３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１は、制御プログラムが周辺ハードウエアへアクセスする際のアクセス種別、具体的にはリードアクセスかライトアクセスかが、マイクロプロセッサの仕様通りであるかを検証するのみである。よって、周辺ハードウエアへのアクセスサイズ違反を検出することはできない。
【０００５】
本発明は、模擬対象装置の制御プログラムが周辺リソースを管理するレジスタへアクセスを行う際、レジスタへのアクセスサイズを考慮し、プログラム動作を模擬するソフトウエアシミュレータを提供することを目的とする。また、本発明は、ソフトウエアシミュレータとしてコンピュータを機能させるプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は、
装置を制御するソフトウエアを実行する該装置の制御部の動作をシミュレーションするソフトウエアシミュレータであって、
前記ソフトウエアが前記制御部のレジスタへアクセスする場合に、該レジスタへのアクセスサイズを検知するサイズ検知手段と、
前記サイズ検知手段によって検知されたアクセスサイズと、前記レジスタへのアクセスサイズに関する制限を定義したサイズ制限情報とに基づいて、前記ソフトウエアの前記レジスタへのアクセスが有効か無効かを判断するアクセス有効判断手段と、
前記アクセス有効判断手段の判断結果に応じて、前記シミュレーションの動作を切替えるシミュレーション動作切替え手段と、
を備えたことを特徴とする。
【０００７】
また、本発明は、前記ソフトウエアシミュレータとしてコンピュータを機能させることを特徴とするプログラムである。
【発明の効果】
【０００８】
以上説明したように、本発明によれば、レジスタへのアクセスサイズ制限の定義により、アクセスサイズ制限を考慮しソフトウエア動作の模擬ができるソフトウエアシミュレータ及びこれを実現するプログラムを提供できる。
【図面の簡単な説明】
【０００９】
【図１】実施例１、３に係るソフトウエアシミュレータの機能構成図
【図２】実施例１〜４に係る情報処理装置のハードウエアの概略構成図
【図３】実施例１に係るアクセスサイズ制限情報の一例
【図４】実施例１に係るソフトウエアシミュレータの処理のフローチャート
【図５】実施例２に係るソフトウエアシミュレータの機能構成図
【図６】実施例２に係るソフトウエアシミュレータの処理のフローチャート
【図７】汎用レジスタの表記およびレジスタサイズの関係図
【図８】実施例２に係るアクセスサイズ制限情報の一例
【図９】実施例３に係るアクセスサイズ制限情報の一例
【図１０】実施例３に係るソフトウエアシミュレータの処理のフローチャート
【図１１】実施例４に係るソフトウエアシミュレータの機能構成図
【発明を実施するための形態】
【００１０】
以下に図面を参照して、この発明を実施するための形態を、実施例に基づいて例示的に詳しく説明する。本発明の趣旨を逸脱しない範囲内で実施例の構成を適宜変形したり変更したりすることにより得られる構成も本発明に含まれる。以下の複数の実施例の構成を適宜組み合わせて得られる構成も、本発明に含まれる。また、各実施例における機能および処理はそれぞれ単一のコンピュータ装置で実現してもよいし、必要に応じた複数のコンピュータ装置による分散処理によって実現するようにしてもよい。複数のコンピュータ装置で構成される場合は、互いに通信可能なようにＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）などで接続されている。あるいは、機能および処理の一部をクラウドコンピューティングによって実現してもよい。
【実施例１】
【００１１】
本発明において、ソフトウエアシミュレータは、汎用コンピュータ等の情報処理装置上でソフトウエア動作を模擬する。
ソフトウエアシミュレータは、上述した汎用コンピュータ等の情報処理装置上でプログラムを実行することで実現できる。
図２は、ソフトウエアシミュレータを実現する情報処理装置のハードウエア構成例である。
図２の本体部２０２のハードディスク２０２ｃには、情報処理装置の各機能を実現するためのプログラムや、模擬対象装置に関する情報を含む各種データが格納される。中央処理部（ＣＰＵ）２０２ａは、プログラム及び各種データを主記憶部２０２ｂにロードして実行し、これによりコンピュータシステム２０１は情報処理装置として動作する。なお、表示装置２０３は、本体部２０２からの指示により画面表示を行う。また、キーボード２０４は、このコンピュータシステム２０１にユーザの指示や文字情報を入力するためのものである。さらに、マウス２０５は、表示装置２０３上の任意の位置を指定することによりその位置に表示されていたアイコン等に応じた指示を入力するためのものである。
【００１２】
図１は、本実施例によるソフトウエアシミュレータの構成図である。
ソフトウエアシミュレータ１０１は、サイズ検知手段１０２とサイズ制限指定手段１０３とアクセス有効判断手段１０４とシミュレーション動作切替え手段１０５を備えている。
ソフトウエアシミュレータ１０１はシミュレーション対象装置に備えられているマイク
ロプロセッサ（制御部）向けの制御プログラムを入力すると、入力された制御プログラムに応じたマイクロプロセッサの動作を模擬するように設計されている。本実施例では、ソフトウエアシミュレータ１０１が、命令セットシミュレータであるとして説明する。
ここで、命令セットシミュレータについて、説明する。命令セットシミュレータは、模擬対象プログラムを情報処理装置上のメモリにロードし、ロードプログラムの動作をマイクロプロセッサの命令セット単位で模擬する。命令セット単位でのプログラム動作模擬では、まず、命令セットを情報処理装置上のメモリから取得（フェッチ）する。続けて、プログラムが動作するマイクロプロセッサの機械語で表現された命令コードを解釈し、情報処理装置上で実行可能なコードに変換する。そして、変換後の命令を読み取り、情報処理装置上のメモリへ展開し、命令の種類に応じた命令実行前のチェックを行い、チェック結果に応じて命令動作を模擬する。
【００１３】
サイズ検知手段１０２は、ソフトウエアシミュレータ１０１が、模擬対象ソフトウエアがマイクロプロセッサ上のレジスタへのアクセス命令セット取得後に、そのレジスタへのアクセスサイズを検知する手段である。レジスタへのアクセスサイズの検知方法については、後述する。
サイズ制限指定手段１０３は、アクセスサイズ制限情報１０６を指定する手段である。アクセスサイズ制限情報１０６は、関連付けられた以下２項目からなる。
・アクセスサイズに制限があるレジスタ（以下、単に制限レジスタと記す）のアドレスの情報
・レジスタへのアクセス可能なサイズの情報
例えば、ソフトウエアシミュレータ１０１のユーザがアクセスサイズ制限の情報を設定する場合、前記ユーザはソフトウエアシミュレータ１０１が実現されるコンピュータシステム２０１のキーボード２０４やマウス２０５を用いることができる。サイズ制限指定手段としてのキーボード２０４やマウス２０５により、ユーザがアクセスサイズ制限の情報を入力および修正する。
ここで、アクセスサイズ制限情報１０６について、マイクロプロセッサのレジスタへのアクセス制限の具体例を挙げて説明する。ソフトウエアが動作するマイクロプロセッサにおいて、レジスタへのアクセスに際し、以下の仕様がある場合のアクセスサイズ制限情報１０６を図３に示す。
・アドレス０ｘ０００１のレジスタへは、１バイトサイズでのみアクセス可能
・アドレス０ｘ０２００のレジスタへは、２バイトもしくは４バイトサイズでアクセス可能
以降、アドレス０ｘ＊＊＊＊のレジスタを［０ｘ＊＊＊＊］と記載する。このように、サイズ制限情報１０６には、
上記マイクロプロセッサのレジスタへのアクセス仕様は、［０ｘ０００１］へは、アクセスサイズが１バイトの時のみアクセスが有効になり、１バイトサイズ以外でアクセスした場合には、アクセスが無視されることを示している。例えば、［０ｘ０００１］へ値０ｘ０２をライトする際、アクセスサイズが１バイトであれば、［０ｘ０００１］のレジスタへ値０ｘ０２がライトされる。一方、アクセスサイズが１バイト以外、例えば２バイトであると、［０ｘ０００１］とその１バイト上位の［０ｘ０００２］へのアクセスが無視される。よって、［０ｘ０００１］だけでなく、［０ｘ０００２］へのライトアクセスも行われない。［０ｘ０００１］と同様に、［０ｘ０２００］は、アクセスサイズが２バイトもしくは４バイトサイズでアクセスが有効になる。
【００１４】
アクセス有効判断手段１０４は、サイズ検知手段１０２の検知結果とサイズ制限指定手段１０３にて指定されるアクセスサイズ制限情報１０６とを用いて、模擬対象ソフトウエアのレジスタアクセスが有効であるか無効であるかを判断する手段である。模擬対象ソフトウエアのレジスタアクセスとは、模擬対象ソフトウエアの命令セットがレジスタへのアクセス命令であることを示す。
シミュレーション動作切替え手段１０５は、アクセス有効判断手段１０４の判断結果に応じて、模擬対象ソフトウエアのシミュレーション動作を切替える手段である。具体的には、アクセス有効判断手段１０４がレジスタアクセス有効と判断すると、レジスタへのアクセス命令セットを実行し、レジスタアクセス無効と判断すると、レジスタへのアクセス命令セットを実行しない。また、命令セットを実行した場合には、ソフトウエアシミュレータ１０１はレジスタへのアクセス命令セットが実行されたことを、記憶手段（不図示）によってログとしてハードディスク２０２ｃ内に記憶する。これによって、ユーザはシミュレーションを実行後であっても出力されたログを確認することで、命令が意図する通りに実行されているかを確認することができるようになっている。ログは、本実施例においては命令セットが実行する旨が記載されることになる。命令セットが実行された場所をより詳しく知るために、たとえば、シミュレーション実行上の時刻、ソースコードのファイル名、ソースコード上の当該命令セットが記載されている行数などの情報をログに付加することが考えられる。
【００１５】
図４を用いて、ソフトウエアシミュレータ１０１を構成する各々の手段について説明する。図４は、本実施例におけるソフトウエア動作模擬時のソフトウエアシミュレータ１０１の処理のフローチャートである。まず、ソフトウエアシミュレータ１０１は、模擬対象ソフトウエアの命令セットを取得する（Ｓ４０１）。そして、Ｓ４０１で取得の命令セットがアクセス命令かを判断し（Ｓ４０２）、アクセス命令でない場合には、Ｓ４０１で取得の命令セットの模擬を実行し（Ｓ４０６）、Ｓ４０１の処理へ戻る。Ｓ４０２で、Ｓ４０１で取得の命令セットがアクセス命令であると判断した場合は、アクセス命令のアクセス対象が制限レジスタであるかをチェックする（Ｓ４０３）。制限レジスタであるかは、サイズ制限指定手段１０３にて定義するレジスタへのアクセスサイズ制限情報１０６を用いて判断する。具体的には、アクセスサイズ制限情報１０６のアクセスサイズに制限があるレジスタのアドレスへのアクセスに該当するか否かである。
Ｓ４０３で、命令のアクセス対象が制限レジスタでない場合は、後述のＳ４０６の処理を行う。
Ｓ４０３で、命令のアクセス対象が制限レジスタである時は、命令のアクセスサイズが制限レジスタへの有効なアクセスであるかを判断する（Ｓ４０５）。Ｓ４０５では、命令セットのアクセスサイズと制限レジスタへの有効なアクセスサイズの情報を用いて判断を行う。なお、前記命令セットのアクセスサイズは、Ｓ４０１にて取得した命令セットに対してサイズ検知手段１０２が検知したアクセスサイズであり、制限レジスタへの有効なアクセスサイズの情報は、サイズ制限手段１０３にて定義された情報である。このＳ４０５の判断を行うのが、アクセス有効判断手段１０４である。ここでは、命令セットのアクセス対象レジスタへのアクセス可能サイズは、アクセスサイズ制限情報１０６に指定されている、制限レジスタへのアクセス可能なサイズであるかをチェックし、制限レジスタへのアクセスが有効であるかを判断する。
Ｓ４０５にて、アクセスサイズ有効と判断すると、Ｓ４０１にて取得した命令セットを実行（Ｓ４０６）、すなわちアクセス動作を模擬し、Ｓ４０１の処理へ戻る。
Ｓ４０５にて、アクセスサイズ無効と判断すると、Ｓ４０１にて取得した命令セットは実行せずにＳ４０１の処理へ戻る。
以上のＳ４０１からＳ４０６の処理ステップを行うことで、制限レジスタへのアクセス動作模擬時は、アクセスサイズが有効である場合のみアクセス命令を実行することができる。
【００１６】
続いて、図４を用いて、ソフトウエアの具体例をあげて、本実施例を説明する。
例えば、模擬対象ソフトウエアのコードが以下の場合である。
#define  RegA  *((uint8_t*)  (0x0001))
#define  RegAB  *((uint16_t*)  (0x0001))
RegA = 0x02;          ・・・[1]
RegAB = 0xFF02;      ・・・[2]
次に、ソフトウエアコードの具体例［１］および［２］のアセンブリ命令展開例を示す。
＜具体例［１］のアセンブリ命令展開例＞
MOV.L r1, #0x02・・・[1]-A
MOV.B [0x0001], r100・・・[1]-B
＜具体例［２］のアセンブリ命令展開例＞
MOV.L r1, #0xFF02・・・[2]-A
MOV.W [0x0001], r10・・・[2]-B
なお、ＭＯＶ命令は、データ転送命令であり、本例においてＭＯＶ命令の書式は以下とする。
−ＭＯＶ．幅拡張子  ディスティネーションレジスタ，＃値または［アドレス］・・・書式１
−ＭＯＶ．幅拡張子  ［アドレス］，ソースレジスタ・・・書式２
書式１は、幅拡張子のサイズで、値をディスティネーションレジスタへ格納する命令セットであり、書式２は、ソースレジスタの値を、幅拡張子のサイズで［アドレス］にて指定されるレジスタ上へ格納する命令セットである。
書式中のＭＯＶ．に続く“幅拡張子”は、以下である。
−Ｂ  アクセスサイズ１バイト
−Ｗ  アクセスサイズ２バイト
−Ｌ  アクセスサイズ４バイト
アセンブリ命令中のｒ１、ｒ１０、ｒ１００は汎用レジスタを指す。アセンブリ命令中の汎用レジスタの表記およびレジスタサイズの関係を図７に示す。図７中の“＊”は任意の数値（例えば“＊”は０〜７の値で、計８個のレジスタ）を示す。ｒ＊のレジスタサイズは４バイトである。ｒ＊の、下位２バイトをｒ＊０、上位２バイトをｒ＊１と表記する。また、ｒ＊０の下位１バイトをｒ＊００、上位１バイトをｒ＊０１と表記する。同様に、ｒ＊１の下位１バイトをｒ＊１０、上位１バイトをｒ＊１１と表記する。
ここで、汎用レジスタについて説明する。汎用レジスタは、演算対象のデータもしくは演算結果を格納するレジスタである。そして、マイクロプロセッサの通常レジスタと異なり、マイクロプロセッサの記憶装置上に配置されないため、アドレスをもたない。そのため、アセンブリ命令での汎用レジスタへのアクセスは、汎用レジスタ名で行い、アドレス値を指定して行うことはできない。
【００１７】
アセンブリ命令への展開では、ＭＯＶ命令の書式１では、ディスティネーションレジスタへ格納する値によらず、１つの汎用レジスタのサイズ４バイトで行われる。一方、ＭＯＶ命令の書式２は、値書込み対象のレジスタサイズに応じてＭＯＶ命令の実行サイズが決まる。
命令セット［１］−Ａ，［１］−Ｂ，［２］−Ａ，［２］−Ｂの各々の意味は以下のようになる。
命令セット［１］−Ａ：値０ｘ０２を４バイトサイズでｒ１へ格納
命令セット［１］−Ｂ：ｒ１００に格納されている値を、１バイトサイズでアドレス０ｘ０００１のレジスタ上へ格納
命令セット［２］−Ａ：値０ｘＦＦ０２を４バイトサイズでｒ１へ格納
命令セット［２］−Ｂ：ｒ１０の値を、２バイトサイズでアドレス０ｘ０００１のメモリ上へ格納
【００１８】
ここで、アクセスサイズ制限の情報は図３に示すものとし、図４の処理フローチャートを用いて具体例［１］、［２］の場合を説明する。
＜具体例［１］の場合＞
ソフトウエアシミュレータ１０１は、Ｓ４０１にて命令セット［１］−Ａを取得し、Ｓ
４０２にて、ｒ１へのアクセス命令であると判断する。Ｓ４０３では、ｒ１が制限レジスタであるかチェックする。ｒ１は汎用レジスタであり、マイクロプロセッサの記憶装置上にマッピングされていない、すなわち、図３に示す制限レジスタのアドレス情報にない領域へのアクセスであるため、Ｓ４０６へ進む。Ｓ４０６からはＳ４０１のステップへ戻り、命令セット［１］−Ｂを取得する。Ｓ４０２にて、アドレス０ｘ０００１およびｒ１００へのアクセス命令であると判断する。アドレス０ｘ０００１が図３に示す制限レジスタのアドレス情報にあることから、命令セット［１］−Ｂが制限レジスタへのアクセス命令であるとＳ４０３で判断し、Ｓ４０５へ進む。Ｓ４０５では、アクセス有効判断手段１０４が命令セット［１］−Ｂが有効なアクセスであるかを判断する。なお、サイズ検知手段１０２はＳ４０１時点で、命令セット［１］−ＢがＭＯＶ．Ｂとサイズ拡張子が“Ｂ”であることから、アクセスサイズが１バイトと検知する。アクセス有効判断手段１０４は、制限レジスタのアドレス０ｘ０００１のアクセス可能サイズ：１バイトとチェック対象の命令セットのアクセスサイズ：１バイトであることから、当該命令セットのアクセス有効と判断する（Ｓ４０５）。そして、［１］−Ｂの命令セットを実行する（Ｓ４０６）。
よって、ソフトウエアシミュレータ１０１が命令セット［１］−Ｂの模擬完了時点で、アドレス０ｘ０００１の値は、０ｘ０２となる。
＜具体例［２］の場合＞
例［１］と同様に、ソフトウエアシミュレータ１０１は、Ｓ４０１にて命令セット［２］−Ａを取得し、Ｓ４０２にて、ｒ１へのアクセス命令であると判断する。Ｓ４０３では、ｒ１が制限レジスタであるかチェックする。ｒ１は汎用レジスタであり、図３に示す制限レジスタのアドレス情報にないため、Ｓ４０６のステップへ進む。続いて、Ｓ４０６からＳ４０１のステップへ戻り、命令セット［２］−Ｂを取得する。Ｓ４０２にて、アドレス０ｘ０００１へのアクセス命令であると判断する。アドレス０ｘ０００１が制限レジスタのアドレス情報にあることから、命令セット［２］−Ｂが制限レジスタへのアクセス命令であるとＳ４０３で判断し、Ｓ４０５へ進む。Ｓ４０５では、アクセス有効判断手段１０４が命令セット［２］−Ｂが有効なアクセスであるかを判断する。なお、サイズ検知手段１０２はＳ４０１時点で、命令セット［２］−ＢがＭＯＶ．Ｗとサイズ拡張子が“Ｗ”であることから、アクセスサイズは２バイトと検知する。ここでは、制限レジスタのアドレス０ｘ０００１のアクセス可能サイズ：１バイトとチェック対象の命令セットのアクセスサイズ：２バイトである。従って、アクセス有効判断手段１０４は、当該命令セットのアクセス無効と判断し（Ｓ４０５）、［２］−Ｂの命令セットを実行せずに、次の命令セットの取得処理（Ｓ４０１）へ戻る。
よって、ソフトウエアシミュレータ１０１が命令セット［２］−Ｂの模擬完了時点で、アドレス０ｘ０００１の値は、命令セット［２］−Ａを行う前から変わらない。
【００１９】
なお、図３に示すアクセスサイズ制限情報１０６をもつマイクロプロセッサ上でソフトウエアが動作すると、具体例［１］のソフトウエア実行により、［０ｘ０００１］へ値０ｘ０２がライトされる。一方、具体例［２］のソフトウエアを実行しても、［０ｘ０００１］、および［０ｘ０００２］の値は変化しない。これは、［０ｘ０００１］は制限レジスタであり、当該レジスタへのアクセス可能サイズが１バイトであるにも関わらず、アセンブリ命令では［０ｘ０００１］へのアクセスサイズが２バイトであるためである。よって、具体例［２］では、［０ｘ０００１］と［０ｘ０００２］へ一括で値０ｘＦＦ０２をライトしようとしているが、アクセスが無効になるため、［０ｘ０００１］だけでなく［０ｘ０００２］への値ライトアクセスも行われない。
また、本実施例の具体例では、アクセス可能サイズが１つのみである場合を例に挙げたが、アクセス可能サイズが複数あってもよい。これは図３のアクセスサイズ制限の情報において、制限レジスタのアドレスが０ｘ０２００のアクセス可能サイズが２バイトと４バイトである場合である。アクセス可能サイズが複数の場合においても、図４のＳ４０５の処理におけるアクセス有効判断手段１０４による判断は同様に行われる。すなわち、命令セットのアクセスサイズが、アクセス可能サイズで定義されるサイズであれば、アクセス
有効判断手段１０４が、当該命令のアクセスサイズは有効、すなわちレジスタへのアクセスは有効と判断する（Ｓ４０５）。
【００２０】
以上、模擬対象ソフトウエアの命令が制限レジスタへのアクセス命令である場合、当該命令実行前に命令上で制限レジスタへのアクセスサイズが有効であるか無効であるかを判断し、判断結果に応じて命令を実行するか否かを切替える。
この構成により、シミュレーション対象の制御プログラムが動作するマイクロプロセッサの仕様で、レジスタへのアクセスサイズに制限がある場合でも、マイクロプロセッサの仕様通りにソフトウエア動作を模擬することができる。したがって、実際のマイクロプロセッサがなくとも、情報処理装置上でソフトウエアの動作検証時に、実際のマイクロプロセッサと同じ動作結果を得ることができる。
【実施例２】
【００２１】
実施例１においては、制限レジスタへのアクセス時に、レジスタへのアクセスが有効であるか、無効であるかを判断し、アクセス命令の模擬を行っていた。しかし、マイクロプロセッサの仕様上、レジスタへのアクセス種別（リードアクセス、またはライトアクセス）毎にアクセス可能サイズが異なる場合がある。そこで、本実施例では、ソフトウエアの命令模擬時に、レジスタへのアクセス種別毎にアクセス可能サイズ条件を保持し、アクセス命令の模擬をするものである。なお、本実施例でも、実施例１同様、アドレス０ｘ＊＊＊＊のレジスタを［０ｘ＊＊＊＊］と記載する。
【００２２】
本実施例のソフトウエアシミュレータ１０１の機能構成図を図５に示す。
以下では、実施例１との相違点を中心に説明する。
図５のソフトウエアシミュレータ１０１は、サイズ検知手段１０２、サイズ制限指定手段１０３、アクセス有効判断手段１０４、シミュレーション動作切替え手段１０５およびアクセス種別検知手段５０７から構成される。
サイズ検知手段１０２とシミュレーション動作切替え手段１０５は、実施例１と同様の動きをする。
サイズ制限指定手段１０３は、アクセス種別の情報も取り扱う点が実施例１と異なる。具体的には、アクセスサイズ制限情報１０６は、実施例１での２項目（制限レジスタのアドレスとアクセス可能サイズ）に、アクセス種別を新たに加えて関連付けられた３項目から構成される。
ここで、マイクロプロセッサのレジスタへのアクセス制限の具体例を挙げて説明する。マイクロプロセッサのレジスタへのアクセスに際し、以下の仕様があるとする。
・［０ｘ０００１］へのライトアクセスは、１バイトサイズでのみ可能
レジスタへの上記アクセス仕様は、［０ｘ０００１］へのライトは、アクセスサイズが１バイトの時のみアクセスが有効になり、１バイトサイズ以外でライトした場合には、アクセスが無視されることを示している。これは、例えば、［０ｘ０００１］へ値０ｘ０２をライトする際、アクセスサイズが１バイトであれば、［０ｘ０００１］のレジスタへ値０ｘ０２がライトされる。一方、アクセスサイズが１バイト以外、例えば２バイトであると、［０ｘ０００１］とその１バイト上位の［０ｘ０００２］へのアクセスが無視されるため、［０ｘ０００１］だけでなく、［０ｘ０００２］へのライトアクセスも行われない。但し、［０ｘ０００１］へのリードは、アクセスサイズに制限がなく、何バイトアクセスでも、リードアクセスは無効にならない。
上記具体例のレジスタアクセス仕様の場合のアクセスサイズ制限情報１０６を図８に示す。
【００２３】
アクセス種別検知手段５０７は、ソフトウエアシミュレータ１０１が、模擬対象ソフトウエアがマイクロプロセッサ上のレジスタへのアクセス命令セット取得後に、そのレジスタへのアクセス種別を検知する手段である。レジスタへのアクセス種別は、命令コード解
釈時、命令セットのオペランドから検知する。例えば、ＭＯＶ命令の第一オペランド、すなわちディスティネーションレジスタがアクセス対象レジスタである場合には、アクセス種別がライトであると検知する。そして、ＭＯＶ命令の第二オペランド、すなわちソースレジスタがアクセス対象レジスタである場合、アクセス種別がリードであると検知する。
アクセス有効判断手段１０４は、実施例１と同様に、模擬対象ソフトウエアのレジスタアクセスが有効であるか無効であるかを判断する手段である。ここでは、サイズ検知手段１０２の検知結果と、アクセス種別検知手段５０７と、サイズ制限指定手段１０３にて定義されるアクセスサイズ制限情報１０６とを用いて、模擬対象ソフトウエアのレジスタアクセスが有効であるか無効であるかを判断する。実施例１との違いは、アクセスサイズだけではなく、レジスタへのアクセス種別も含めて、レジスタアクセスが有効か無効かを判断することである。
ここで、図６を用いて、本実施例でのソフトウエアがシミュレータ１０１を構成する各々の手段について説明する。図６は本実施例におけるソフトウエア動作模擬時のソフトウエアシミュレータ１０１の処理のフローチャートである。図６中の図４と同じステップ番号Ｓ４０１〜Ｓ４０３およびＳ４０５、Ｓ４０６は図４と同じ処理である。本実施例では、ソフトウエアシミュレータ１０１は、Ｓ４０３の処理後、Ｓ６０４の処理を行う。すなわち、アクセスサイズ制限情報１０６の命令セットのアクセス対象レジスタのアドレスに対して定義されているアクセス種別の情報が、命令セットのアクセス種別と一致するかをチェックする（Ｓ６０４）。なお、前記命令セットのアクセス対象レジスタへのアクセス種別は、Ｓ４０１にて取得した命令セットに対してアクセス種別検知手段５０７が検知したアクセス種別である。Ｓ６０４でアクセスサイズ制限情報１０６のアクセス種別の情報と一致する場合、Ｓ４０５へ進む。Ｓ６０４でアクセスサイズ制限情報１０６のアクセス種別の情報と一致しない場合には、Ｓ４０６の処理へ進む。
【００２４】
続いて、図６を用いて、ソフトウエアの具体例をあげて、本実施例を説明する。
例えば、模擬対象ソフトウエアのコードが以下の場合である。
#define  RegA  *((uint8_t*)  (0x0001))
#define  RegCD  *((uint16_t*)  (0x0003))
RegA＝0x02    ・・・[1]
RegCD=RegA    ・・・[3]
次に、ソフトウエアコードの具体例［３］のアセンブリ命令展開例を示す。
なお、ソフトウエアコードの具体例［２］のアセンブリ命令展開例は実施例１で既述の通りである。
＜具体例［３］のアセンブリ命令展開例＞
MOV.L  r1,[0x0001]・・・[3]-A
MOV.W  [0x0003],r10・・・[3]-B
アセンブリ命令中のｒ１，ｒ１０は汎用レジスタであり、実施例１で図７を用いて説明した通りである。同様に、ＭＯＶ命令についても、実施例１で説明の通りである。
アセンブリ命令への展開では、ＭＯＶ命令の書式１では、実施例１記載の通り、ディスティネーションレジスタへ格納する値によらず、サイズ４バイトで行われ、ＭＯＶ命令の書式２は、値書込み対象のレジスタサイズに応じてＭＯＶ命令の実行サイズが決まる。
命令セット［３］−Ａ，［３］−Ｂの各々の意味は以下のようになる。
命令セット［３］−Ａ：アドレス０ｘ０００１の値を４バイトサイズでｒ１へ格納
命令セット［３］−Ｂ：ｒ１０に格納されている値を２バイトサイズでアドレス０ｘ０００３へ格納
【００２５】
ここで、アクセスサイズ制限情報１０６は、本実施例の具体例のレジスタアクセス仕様である場合であるものとし、具体例［１］および［３］の場合を説明する。
＜具体例［１］の場合＞
ソフトウエアシミュレータ１０１は、Ｓ４０１にて命令セット［１］−Ａを取得し、Ｓ
４０２にて、ｒ１へのアクセス命令であると判断する。Ｓ４０３では、ｒ１が制限レジスタであるかチェックする。ｒ１は汎用レジスタであり、マイクロプロセッサの記憶装置上にマッピングされていない、すなわち、図８に示す制限レジスタのアドレス情報にない領域へのアクセスであるため、Ｓ４０６へ進む。Ｓ４０６からはＳ４０１のステップへ戻り、命令セット［１］−Ｂを取得する。
Ｓ４０２にて、アドレス０ｘ０００１へのアクセス命令であると判断する。アドレス０ｘ０００１が図８に示す制限レジスタのアドレス情報にあることから、命令セット［１］−Ｂが制限レジスタへのアクセス命令であるとＳ４０３で判断し、Ｓ６０４へ進む。Ｓ６０４では、命令セットでのアドレス０ｘ０００１へのアクセス種別が、アクセスサイズ制限情報１０６に指定されているアクセス種別と一致するかチェックする。なお、命令セットでのアドレス０ｘ０００１へのアクセス種別は、Ｓ４０１の時点で、アクセス種別検知手段５０７が検知する。アクセス種別検知手段５０７は、アドレス０ｘ０００１がＭＯＶ命令の第一オペランド、すなわちディスティネーションレジスタであるため、アクセス種別『ライト』と検知する。アクセス制限情報１０６のアドレス０ｘ０００１のアクセス種別が『ライト』であり、命令セットのアクセス種別とアクセス制限情報１０６のアクセス種別が一致するので、Ｓ４０５へ進む。Ｓ４０５では、命令セットのアドレス０ｘ０００１のアクセスサイズが１バイトであることから、当該命令セットのアクセス有効と判断し（Ｓ４０５）、［１］−Ｂの命令セットを実行する（Ｓ４０６）。
よって、ソフトウエアシミュレータ１０１が命令セット［１］−Ｂの模擬完了時点で、アドレス０ｘ０００１の値は、０ｘ０２となる。
【００２６】
＜例［３］の場合＞ソフトウエアシミュレータ１０１は、Ｓ４０１にて命令セット［３］−Ａを取得し、Ｓ４０２にて、アドレス０ｘ０００１およびｒ１へのアクセス命令であると判断する。Ｓ４０３では、アドレス０ｘ０００１およびｒ１が制限レジスタであるかチェックする。ｒ１は汎用レジスタであり、マイクロプロセッサの記憶装置上にマッピングされていない、すなわち、図８に示す制限レジスタのアドレス情報にない領域へのアクセスである。一方、アドレス０ｘ０００１は図８に示す制限レジスタのアドレス情報にあることから、制限レジスタへのアクセスであると判断し、Ｓ６０４へ進む。Ｓ６０４では、命令セットでのアドレス０ｘ０００１へのアクセス種別が、アクセスサイズ制限情報１０６に指定されているアクセス種別と一致するかチェックする。なお、命令セットでのアドレス０ｘ０００１へのアクセス種別は、Ｓ４０１の時点で、アクセス種別検知手段５０７が検知する。アクセス種別検知手段５０７は、アドレス０ｘ０００１がＭＯＶ命令の第二オペランド、すなわちソースレジスタであるため、アクセス種別『リード』と検知する。Ｓ６０４でのチェックでは、図８に示すアクセスサイズ制限情報１０６のアドレス０ｘ０００１は、『ライト』アクセス時にアクセスサイズがある制限レジスタである。従って、この場合には、命令セットのアクセス種別『リード』とアクセスサイズ制限情報のアクセス種別『ライト』が一致しないため、Ｓ４０６へ進む。Ｓ４０６からはＳ４０１のステップへ戻り、命令セット［３］−Ｂを取得する。
Ｓ４０２にて、ｒ１０およびアドレス０ｘ０００３へのアクセス命令であると判断する。ｒ１０およびアドレス０ｘ０００３が図８に示す制限レジスタのアドレス情報にないことから、命令セット［３］−Ｂが制限レジスタへのアクセス命令でないとＳ４０３で判断し、Ｓ４０６へ進む。
よって、ソフトウエアシミュレータ１０１が命令セット［３］−Ｂの模擬完了時点で、アドレス０ｘ０００３の値は、０ｘ０２となる。
以上、ソフトウエアの命令模擬時に、当該命令のレジスタへのアクセス種別を考慮することで、制限レジスタのアクセス種別毎に異なるアクセスサイズ制限を模擬することができる。
【実施例３】
【００２７】
実施例１、２では制限レジスタへのアクセスサイズ、および、または、アクセス種別を
用いて、制限レジスタへのアクセス有効または無効を判断していた。しかし、制限レジスタへアクセスの際、アクセス対象レジスタ以外のレジスタの値が所定値でないと、アクセスが無効になる場合がある。そこで、本実施例では、制限レジスタへのアクセスサイズに加え、制限レジスタ以外のレジスタの値を加味し、制限レジスタへのアクセス有効または無効の判断を行い、ソフトウエアの命令の模擬をするものである。
【００２８】
本実施例のソフトウエアシミュレータ１０１の機能構成図は図１と同じである。
以下、図１中の各機能で、実施例１との機能の違いについて説明する。
アクセスサイズ制限情報１０６は、実施例１での２項目（制限レジスタのアドレスとアクセス可能サイズ）に、制限レジスタ以外のレジスタ値を新たに加えて関連付けられた３項目から構成される。ここでは、その値が加味される、制限レジスタ以外のレジスタが条件レジスタに対応する。
ここで、マイクロプロセッサのレジスタへのアクセスに際し、以下の仕様があるとする。
・［０ｘ０００１］へのアクセスは、［０ｘ００１０］の値が０ｘ０１であり、かつ、アクセスサイズが１バイトサイズでのみ可能である
上記レジスタアクセス仕様は、［０ｘ０００１］へのアクセスサイズが１バイトであっても、［０ｘ００１０］の値が０ｘ０１以外である場合は、［０ｘ０００１］へのアクセスが無視されることを示している。例えば、［０ｘ０００１］へ値０ｘ０２をライトする際、アクセスサイズが１バイトであっても、［０ｘ００１０］の値が０ｘ１０であると、［０ｘ０００１］へのアクセスが無視され、［０ｘ０００１］へ値０ｘ０２のライトが行われない。
上記レジスタアクセス仕様の場合のアクセスサイズ制限情報１０６を図９に示す。
アクセス有効判断手段１０４は、模擬対象ソフトウエアのレジスタアクセス時点での、制限レジスタ以外のレジスタ値を加味し判断する点が実施例１と異なる。具体的には、模擬擬対象ソフトウエアのレジスタアクセス命令模擬時、サイズ検知手段１０２の検知結果と、アクセス命令模擬時点の他レジスタの値と、アクセスサイズ制限情報１０６とを用いてレジスタアクセスへの有効であるか無効であるかを判断する。
【００２９】
図１０を用いて、ソフトウエアシミュレータ１０１を構成する各々の手段について説明する。図１０は、本実施例におけるソフトウエア動作模擬時のソフトウエアシミュレータ１０１の処理のフローチャートである。
図１０中の図４と同じステップ番号Ｓ４０１〜Ｓ４０３およびＳ４０５、Ｓ４０６は図４と同じ処理である。本実施例では、ソフトウエアシミュレータ１０１は、Ｓ４０３の処理後、Ｓ１００４の処理を行う。すなわち、アクセスサイズ制限情報１０６のうち、他レジスタの条件、具体的にはアクセスサイズ制限情報１０６で指定される制限レジスタ以外の他レジスタの値の条件が成立しているかチェックする（Ｓ１００４）。Ｓ１００４で、他レジスタ条件成立の場合には、Ｓ４０５へ進む。Ｓ１００４で、他レジスタ条件が成立していない場合には、Ｓ４０１へ戻る。なお、Ｓ１００４およびＳ４０５の判断を行うのがアクセス有効判断手段１０４である。
【００３０】
ここで、アクセスサイズ制限情報１０６は、図９に示すものとし、図１０の処理フローチャートを用いて実施例１でのソフトウエアコードの具体例［１］の場合を説明する。
＜具体例［１］の場合＞
ソフトウエアシミュレータ１０１は、Ｓ４０１にて命令セット［１］−Ａを取得し、Ｓ４０２にて、ｒ１へのアクセス命令であると判断する。Ｓ４０３では、ｒ１が制限レジスタであるかチェックする。ｒ１は汎用レジスタであり、図１０に示す制限レジスタのアドレス情報にない領域へのアクセスであるため、Ｓ４０６へ進む。Ｓ４０６からはＳ４０１のステップへ戻り、命令セット［１］−Ｂを取得する。Ｓ４０２にて、アドレス０ｘ０００１およびｒ１０へのアクセス命令であると判断する。アドレス０ｘ０００１が図１０に
示す制限レジスタのアドレス情報にあることから、命令セット［１］−Ｂが制限レジスタへのアクセス命令であるとＳ４０３で判断し、Ｓ１００４へ進む。Ｓ１００４で、制限レジスタの他レジスタ条件での指定アドレス０ｘ００１０の値を取得し、前記取得の値が０ｘ０１であれば、他レジスタ条件成立のためＳ４０５へ進み、命令のアクセスサイズが有効であるかをチェックする。アドレス０ｘ０００１へのアクセスサイズは１バイトであり、図１０に示すアクセスサイズ制限情報１０６のアクセス可能サイズと一致するため、命令のアクセスサイズは有効と判断し、Ｓ４０６へ進む。そして、Ｓ４０６で命令セット［１］−Ｂを実行する。なお、Ｓ１００４で、制限レジスタの他レジスタ条件での指定アドレス０ｘ００１０の値が０ｘ０１以外であれば、命令セット実行することなく、Ｓ４０１へ戻る。
よって、命令セット［１］−Ｂ模擬時点で、アドレス０ｘ０１０の値が０ｘ０１であれば、アドレス０ｘ０００１の値は、０ｘ０２となる。一方、アドレス０ｘ０１０の値が０ｘ０１以外であれば、アドレス０ｘ０００１へのライトが行われないため、ソフトウエアコードの具体例［１］模擬前後でアドレス０ｘ０００１の値は変わらない。
なお、本実施例では、アクセスサイズ制限情報１０６での他レジスタ条件を一意の値を指定しているが、所定ビットの値を指定してもよい。
【００３１】
以上、模擬対象ソフトウエアの命令が制限レジスタへのアクセス命令である場合、まず、当該命令実行前に命令上で制限レジスタ以外のレジスタの値が所定条件を満たしているかをチェックしている。そして、前記条件を満たしている場合に、制限レジスタへのアクセスサイズが有効であるか無効であるかを判断し、判断結果に応じて命令を実行するか否かを切替える。
この構成により、ソフトウエア動作を模擬することができるのは、シミュレーション対象の制御プログラムが動作するマイクロプロセッサが次のような仕様の場合である。すなわち、レジスタへのアクセスサイズに制限があり、かつ、レジスタへのアクセス時に、当該レジスタ以外のレジスタの値に所定条件を満たしている時のみ、アクセス有効となる使用の場合である。
【００３２】
また、アクセスサイズ制限情報１０６が、制限レジスタのアドレスの情報及び制限レジスタへのアクセス可能なサイズの２項目に加えて、実施例２及び実施例３で説明した項目をから構成することも可能である。この場合には、上述２項目に、アクセス種別及び制限レジスタ以外のレジスタ値が関係付けられて、アクセスサイズ制限情報１０６が構成され、アクセス有効判断手段１０４によるアクセスの有効、無効の判断もこれらの制限に基づいて判断される。この場合の、ソフトウエアシミュレータ１０１の構成は、図５及び図１１の両者を備えた構成であり、処理手順は図６と図１０の処理を併せた手順となる。
【実施例４】
【００３３】
本実施例は、アクセス有効判断手段の判断結果に応じて、ソフトウエア動作の模擬方法の変更に加え、アクセス異常にユーザへ警告報知を行うものである。
本実施例のソフトウエアシミュレータ１０１の機能構成図を図１１に示す。
実施例１の機能構成に警告報知手段１１０７が追加されたものが、本実施例の機能構成である。
以下、実施例１との違いについて説明する。
警告報知手段１１０７は、アクセス有効判断手段１０４が、ソフトウエア模擬時にレジスタアクセス無効と判断時に、レジスタアクセスが無効である旨をユーザへ報知する手段である。
アクセス有効判断手段１０４は、ソフトウエアシミュレータ１０１動作中、レジスタアクセス無効と判断すると、警告報知手段１１０７にレジスタアクセス無効を通知する。警告報知手段１１０７は、アクセス有効判断手段１０４から通知を受けると、表示部２０３に無効なレジスタアクセスが発生した旨を表示する。
また、警告報知手段１１０７は、ソフトウエアシミュレータ１０１はレジスタへのアクセス命令セットが無効であったことを、記憶手段（不図示）によってログとしてハードディスク２０２ｃ内に記憶する。これによって、ユーザはシミュレーションを実行後であっても、出力されたログを確認することで無効なアクセスを実行しようとするコードが存在するか否かを確認することができるようになっている。ログは、本実施例においては命令セットが実行されなかった旨が記載されることになる。命令セットが実行されなかった場所をより詳しく知るために、たとえば、シミュレーション実行上の時刻、ソースコードのファイル名、ソースコード上の当該命令セットが記載されている行数などの情報をログに付加することが考えられる。
【符号の説明】
【００３４】
２０１…コンピュータシステム、２０２…本体部、２０２ａ…中央処理部、２０２ｂ…主記憶部、２０２ｃ…ハードディスク、２０３…表示部、２０４…キーボード、２０５…マウス、１０１…ソフトウエアシミュレータ、１０２…サイズ検知手段、１０４…アクセス有効判断手段、１０５…シミュレーション動作切替え手段、１０６…アクセスサイズ制限情報
【図１】
2019114117.tif 000003
【図２】
2019114117.tif 000004
【図３】
2019114117.tif 000005
【図４】
2019114117.tif 000006
【図５】
2019114117.tif 000007
【図６】
2019114117.tif 000008
【図７】
2019114117.tif 000009
【図８】
2019114117.tif 000010
【図９】
2019114117.tif 000011
【図１０】
2019114117.tif 000012
【図１１】
2019114117.tif 000013