(57)【要約】【課題】  リファレンスとなる装置Ａで動作するプログラムのメモリアクセスが開発の初期段階にある装置Ｂの仕様に違反していないかについて、簡便かつ短時間に確認することを課題とする。【解決手段】  装置Ａで動作するプログラムがアクセスしたアクセス先のアドレス及びリード・ライト等のアクセス種類の情報を有するアクセス先アドレスリストを生成する。アクセス先アドレスリストから、アクセス種類が連続する所定のアドレス範囲であるページごとに、ページＩＤ及びアクセス種類の情報を有するアクセスアドレス情報ファイルを生成する。また、装置Ｂのメモリマップ仕様に基づいて、ページごとのアクセス属性制約を有する構成マップ制約ファイルを生成する。そして、アクセスアドレス情報ファイルのアクセス種類が構成マップ制約ファイルのアクセス属性制約に違反しないか否かをページごとに検証する。【選択図】図１
2012150535.tif 000002
【特許請求の範囲】
【請求項１】
既存装置で動作するプログラムを、前記既存装置と異なり、装置仕様が既知の対象装置で動作可能か否かをコンピュータにより検証するプログラム検証方法であって、
前記プログラムがアクセスするアクセス先のアドレス及び前記アドレスに前記プログラムがアクセスする際にリード・ライトいずれのアクセスを行うのかを示すアクセス種類の情報を有するアクセス先アドレスリストから、同じアクセス種類が連続する所定のアドレスの範囲であるページごとに、各ページのアドレス範囲の識別情報であるページＩＤと各ページのアクセス種類の情報とを有するアクセスアドレス情報ファイルを生成し、
前記対象装置のメモリ領域ごとのリード・ライト等のアクセス可否を示すアクセス属性の情報を有するメモリマップに含まれる複数のアドレス範囲を前記ページで分割した際のページごとに、各ページのアドレス範囲の識別情報であるページＩＤと各ページのアクセス属性の制約の情報を有する構成マップ制約ファイルを生成し、
前記アクセスアドレス情報ファイルのアクセス種類が前記構成マップ制約ファイルのアクセス属性の制約に違反しないか否かを検証する検証処理をページＩＤごとに行う
ことを特徴とするプログラム検証方法。
【請求項２】
請求項１に記載のプログラム検証方法であって、
前記アクセスアドレス情報ファイルの生成において、前記アクセス先アドレスリストに含まれるアドレスの各々を、前記ページの大きさを示す値であるページデータで割り、商を前記ページＩＤとすると共に、余りをオフセットアドレスとし、前記ページＩＤ及び前記ページＩＤに係るアクセス種類の情報を有するページアクセス情報と、前記ページＩＤに係るオフセットアドレス及び各オフセットアドレスに係るアクセス種類の情報を有する詳細情報とを生成し、
前記検証処理において、ページＩＤごとの検証処理で前記アクセスアドレス情報ファイルのアクセス種類が前記構成マップ制約ファイルのアクセス属性の制約に違反していることを示すアクセス属性制約違反を検出した場合、アクセス属性制約違反を検出したページＩＤに係る詳細情報に含まれる個々のオフセットアドレスごとにアクセス種類が前記アクセス属性制約に違反しないか否かを検証し、
前記個々のオフセットアドレスごとの検証で検出したアクセス属性制約違反となるオフセットアドレス及びアクセス種類の情報を、検証結果として出力する
ことを特徴とするプログラム検証方法。
【請求項３】
請求項２に記載のプログラム検証方法であって、
前記アクセスアドレス情報ファイルの生成において、
互いにページＩＤが共通するアクセス種類の情報の論理和を取ったものを前記ページアクセス情報に係るアクセス種類の情報とし、ページＩＤが共通するオフセットアドレス及び各オフセットアドレスに係るアクセス種類の情報の組を、ページＩＤが共通する詳細情報に含める
ことを特徴とするプログラム検証方法。
【請求項４】
請求項１乃至３のいずれか１項に記載のプログラム検証方法であって、
前記アクセス先アドレスリストは、前記プログラムを前記既存装置の動作を模擬するシミュレータで動作させた場合に、前記プログラムがアクセスしたアクセス先のアドレス及び前記プログラムがアクセスした際にリード・ライトいずれのアクセスを行ったかを示すアクセス種類の情報を前記シミュレータにより出力して生成する
ことを特徴とするプログラム検証方法。
【請求項５】
既存装置で動作するプログラムを、前記既存装置と異なり、装置仕様が既知の対象装置で動作可能か否かをコンピュータにより検証する検証プログラムであって、
前記プログラムがアクセスするアクセス先のアドレス及び前記アドレスに前記プログラムがアクセスする際にリード・ライトいずれのアクセスを行うのかを示すアクセス種類の情報を有するアクセス先アドレスリストから、同じアクセス種類が連続する所定のアドレスの範囲であるページごとに、各ページのアドレス範囲の識別情報であるページＩＤと各ページのアクセス種類の情報とを有するアクセスアドレス情報ファイルを生成し、
前記対象装置のメモリ領域ごとのリード・ライト等のアクセス可否を示すアクセス属性の情報を有するメモリマップに含まれる複数のアドレス範囲を前記ページで分割した際のページごとに、各ページのアドレス範囲の識別情報であるページＩＤと各ページのアクセス属性の制約の情報を有する構成マップ制約ファイルを生成し、
前記アクセスアドレス情報ファイルのアクセス種類が前記構成マップ制約ファイルのアクセス属性の制約に違反しないか否かを検証する検証処理をページＩＤごとに行う
ことを特徴とする検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で動作するプログラムの検証方法及び検証プログラムに関する。
【背景技術】
【０００２】
従来から、ＣＰＵ（Central Processing Unit）を搭載したコンピュータ等の情報処理装置（以下、「装置Ａ」という）上で実行されるプログラムの動作確認を行うのに命令セット・シミュレータが用いられる場合がある。命令セット・シミュレータとは、命令レベルで装置Ａ上で実行されるプログラム動作をシミュレートするものである。すなわち、装置Ａの命令セット・シミュレータは、装置Ａでの命令実行動作を模擬するシミュレータである。命令セット・シミュレータは、装置Ａの開発時に合わせて開発されることが通常である。
【０００３】
命令セット・シミュレータがあれば、仮に装置Ａが手元に無かったとしても、装置Ａ上で実行されるプログラムの動作を検証することができる。そのため、装置Ａ上で動作するプログラムの開発者は、装置Ａを入手する前は、命令セット・シミュレータでプログラムを実行し、プログラムの動作を確認する。
【０００４】
ところで、メモリ搭載容量やメモリマップドＩＯのメモリマップ等が装置Ａと異なる情報処理装置（以下、「装置Ｂ」という）を開発する場合、装置Ａで動作していたプログラムが装置Ｂで動作するか否かを早い段階で確認したい場合がある。例えば、装置Ａの試験プログラムを修正して開発中の装置Ｂの試験プログラムを作成しようとするような場合がある。情報処理装置を試験するための試験プログラムの数は膨大な数であることが多く、装置Ｂの開発と並行して装置Ｂの試験プログラムの先行開発も行っておくことが望ましい。
【０００５】
しかし、装置Ｂの開発初期段階では、装置Ｂはおろか、装置Ｂの命令セット・シミュレータも存在しない。このような状況においては、装置Ａ及び装置Ｂの各々の装置仕様書を基に、各装置の仕様の差分調査を行ない、プログラムがアクセスする領域をプログラム仕様書、プログラム設計書、プログラムソースなどから解析するという作業を人手で行っていた。そして、人手による調査、解析の結果、装置Ｂでプログラムを実行するために、プログラムの修正が必要か否かを判断していた。
【０００６】
尚、実際にプログラムを実行させる装置がある場合には、実装置上でのプログラム動作のアクセス違反を検出する技術が特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平６−２３６３００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述のように、装置Ａで動作していたプログラムが開発の初期段階にある装置Ｂで動作するか否かを調査する際、上記特許文献１のような実装置を使用する技術は、これから開発、製造しようという装置に対しては適用することができない。そのため、人手により、装置Ａと装置Ｂとの仕様の差分調査を行ったり、プログラム動作の解析を行っていたが、これらの調査や解析に多くの時間を要していた。また、調査漏れや解析結果の間違い等により、プログラムのエラー解析にさらに時間を費やす場合があった。
【０００９】
開発中の装置Ｂが完成するまでの間、装置Ｂの命令セット・シミュレータを開発して、装置Ｂでプログラムを実行できるか否かを検証する方法もある。しかし、開発中の装置Ｂに対応する命令セット・シミュレータを新たに開発するためには、装置Ｂの仕様に合ったシミュレータの開発のための工数が必要となる。また、装置Ａ用のプログラムを装置Ｂ用の命令セット・シミュレータで走行させると、仕様違反の箇所を実行する度にシミュレータが停止してしまい、効率よく仕様違反箇所を見つけることは困難であった。そのため、プログラムの仕様違反箇所の特定、エラー原因の解析、及びプログラムの修正に多くの時間を要していた。
【００１０】
さらに、装置Ｂで動作するか否かを確認したいプログラムの数が多い場合、人手で確認するのは非常に困難となる。例えば、装置Ａを試験した試験プログラムを修正して開発中の装置Ｂの試験プログラムを作成しようとするような場合、試験プログラムの数が膨大な数存在すると、人手でプログラム修正箇所を確認していくのは非常に多くの労力と作業期間を要していた。
【００１１】
そこで、本発明は、開発の初期段階にある装置Ｂのリファレンスとなる装置Ａがある場合において、装置Ａで動作するプログラムのメモリアクセスが装置Ｂの仕様に違反していないかを、簡便な方法で、かつ、短時間に確認することを課題とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本実施例に係るプログラム検証方法では、
既存装置で動作するプログラムを、前記既存装置と異なり、装置仕様が既知の対象装置で動作可能か否かをコンピュータにより検証する。まず、前記プログラムがアクセスするアクセス先のアドレス及び前記アドレスに前記プログラムがアクセスする際にリード・ライトいずれのアクセスを行うのかを示すアクセス種類の情報を有するアクセス先アドレスリストから、同じアクセス種類が連続する所定のアドレスの範囲であるページごとに、各ページのアドレス範囲の識別情報であるページＩＤと各ページのアクセス種類の情報とを有するアクセスアドレス情報ファイルを生成する。また、前記対象装置のメモリ領域ごとのリード・ライト等のアクセス可否を示すアクセス属性の情報を有するメモリマップに含まれる複数のアドレス範囲を前記ページで分割した際のページごとに、各ページのアドレス範囲の識別情報であるページＩＤと各ページのアクセス属性の制約の情報を有する構成マップ制約ファイルを生成する。そして、前記アクセスアドレス情報ファイルのアクセス種類が前記構成マップ制約ファイルのアクセス属性の制約に違反しないか否かを検証する検証処理をページＩＤごとに行う。
【発明の効果】
【００１３】
上記課題解決手段により、既存の装置Ａで動作するプログラムを開発中の装置Ｂで動作させる場合にメモリアクセス違反を生ずるか否かを簡便かつ効率的な方法により検証することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例に係るプログラムの検証を行うための構成を説明する図である。
【図２】図２は、実施例に係るプログラム試験方法を実施するための情報処理装置の例を説明する図である。
【図３】図３は、図１に係る実施例のプログラムの検証処理フローを説明する図である。
【図４】図４は、ページデータを決定する処理を説明する図である。
【図５】図５は、アクセスアドレス情報ファイルの生成処理を説明する図である。
【図６】図６は、アクセスアドレス情報ファイルの生成におけるマージ処理を説明する図である。
【図７】図７は、アクセスアドレス情報ファイルの例を説明する図である。
【図８】図８は、構成マップ制約情報ファイルの生成処理を説明する図である。
【図９】図９は、チェック処理部の処理を説明する図である。
【図１０】図１０は、既存の装置Ａのメモリマップ仕様の例を説明する図である。
【図１１】図１１は、図１のプログラム１１の例を説明する図である。
【図１２】図１２は、アクセスアドレス情報ファイルの生成処理の例を説明する図である。
【図１３】図１３は、装置構成マップの作成処理を説明する図である。
【図１４】図１４は、ページアクセス制約情報の例を説明する図である。
【図１５】図１５は、チェック処理の例を説明する図である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について詳細に説明する。
［第１の実施の形態］
図１は、実施例に係るプログラムの検証を行うための構成を説明する図である。図１において、装置１（以下、「装置Ａ」と記す。）は、例えば、サーバやスーパーコンピュータから、マイクロコンピュータやＡＳＩＣ（Application Specific Integrated Circuit）までを含む情報処理装置である。装置Ａは、ＣＰＵやメモリ等の記憶装置を有し（不図示）、プログラム１１を実行可能な既存の情報処理装置である。装置２（以下、「装置Ｂ」と記す。）は、例えば、装置Ａのメモリマップを変更した開発中の装置である。
【００１６】
装置Ｂを開発している途中の時点においては、装置Ｂ仕様書２１のみが存在するような場合がある。このような場合において、装置Ａ用に作成されたプログラム１１を装置Ｂで動作するように変更したい場合を考える。本実施例は、装置Ａ用に作成されたプログラム１１を装置Ａ用のシミュレータで実行した際のメモリアクセス結果を利用して、プログラム１１が装置Ｂで動作可能か否かを確認しようとするものである。
【００１７】
装置３は、装置Ａ、装置Ｂとは異なる汎用コンピュータ等の情報処理装置である。装置３は、装置Ａの命令セット・シミュレータ１２を実行可能であり、実施例に係る後述の各処理を行う。
【００１８】
開発中の装置Ｂのリファレンスとなる装置Ａがある場合、装置Ａ上で動作するプログラム１１を装置Ｂで動作させるには、プログラム１１によるメモリアクセスが装置Ｂの仕様に違反しないことを要する。前述のように、装置Ａ及び装置Ｂの装置仕様書やプログラム１１の仕様書を人手により解析する手法では、解析に多くの時間を要していた。そのため、本実施例では、人手によるプログラムの解析ではなく、汎用の情報処理装置３を用いて、装置Ａ用のプログラム１１を装置Ｂで実行させる場合のメモリアクセス違反を自動的に検出する方法を提供する。
【００１９】
本実施例では、まず、汎用の装置３を利用して、装置Ａ用に作成されたプログラム１１を装置Ａの命令セット・シミュレータ（装置Ａシミュレータ）１２で実行した際のメモリアクセス結果を出力したアクセス先アドレスリスト１３を作成する。アクセス先アドレスリスト１３は、プログラム１１がアクセスしたアクセス先のメモリアドレスの情報及びリードアクセスやライトアクセス等を示すアクセス種類の情報を含む。アクセス種類としては、例えば、“リード”、“ライト”、“ライト・リード”等がある。
【００２０】
尚、本実施例においては、装置Ａシミュレータ１２のシミュレーション結果からアクセス先アドレスリスト１３を作成する例を説明しているが、装置Ａシミュレータ１２を用いずにアクセス先アドレスリスト１３を作成してもよい。例えば、装置Ａでプログラム１１を実際に実行した際の実行結果のログ等に基づいてアクセス先アドレスリスト１３を作成してもよい。また、装置Ａシミュレータ１２によらない他の手段により、プログラム１１のアクセス先のメモリアドレス情報及びアクセス種類の情報を取得し、アクセス先アドレスリスト１３を作成してもよい。
【００２１】
また、装置Ｂの装置仕様のメモリ構成を示すメモリマップ情報から装置Ｂ−装置構成マップ２２を作成する。装置構成マップ２２は、装置Ｂのメモリマップに含まれるアドレス範囲毎の、リード可能／ライト可能／ライト・リード可能等を示すアクセス属性の情報を有する。具体的には、装置構成マップ２２は、装置Ｂのメモリマップに含まれる各アドレス範囲の、開始アドレスと終了アドレスとアクセス属性とを含む情報を有する。
【００２２】
ここで、作成したアクセス先アドレスリスト１３と装置構成マップ２２とを用いて、プログラム１１によるメモリアクセスが装置Ｂのメモリマップの仕様に違反しないか否かをチェックすること自体は可能である。しかし、アクセス先アドレスリスト１３に記録されたプログラム１１の個々のアクセス結果毎にチェックしていくのはあまり効率的ではない。そのため、本実施例では、アクセス先アドレスリスト１３及び装置構成マップ２２を所定のアドレス範囲で分割し、分割したアドレス範囲の単位でメモリアクセス違反の有無をチェックする。
【００２３】
具体的には、アクセス先アドレスリスト１３及び装置構成マップ２２を所定のアドレス範囲であるページ単位で分割して、アクセスアドレス情報ファイル３３及び構成マップ制約情報ファイル３５を作成する。アクセスアドレス情報ファイル３３は、プログラム１１がアクセスしたアクセス結果の情報をページ単位に分割して記録したファイルである。また、構成マップ制約情報ファイル３５は、装置構成マップ２２のアドレス範囲毎のアクセス属性情報をページ単位に分割して記録したファイルである。アクセス先アドレスリスト１３及び装置構成マップ２２の各々をページ単位で分割することにより、検証対象のプログラムがメモリアクセス違反を起こすか否かの検証を高速に行うことが可能となる。
【００２４】
その後、作成したアクセスアドレス情報ファイル３３と、構成マップ制約情報ファイル３５との比較を行い、プログラム１１を装置Ｂで実行した場合に発生するメモリアクセス違反箇所を表示する。以下、具体的に説明する。
【００２５】
プログラム１１は、装置Ａ上で動作するプログラムである。装置Ａシミュレータ１２は、装置Ａの動作を命令レベルでシミュレートする命令セット・シミュレータである。装置Ａシミュレータ１２は、情報処理装置３等の汎用のコンピュータにより実行することができる。アクセス先アドレスリスト１３は、装置Ａシミュレータ１２上でプログラム１１を実行させたときに、プログラム１１がアクセス先のメモリアドレスの情報及びリードアクセスやライトアクセス等を示すアクセス種類の情報を出力したリストである。
【００２６】
装置Ｂ仕様書２１は、装置Ｂの機能仕様を文書又は図表等により表した仕様書であり、電子ファイルとしてＣＤ−ＲＯＭ等の記録媒体に保持され、又は紙に印刷された資料である。
【００２７】
装置構成マップ２２は、装置Ｂのメモリマップに含まれるアドレス範囲毎のアクセス属性を表したものである。装置構成マップ２２は、装置Ｂの設計者やプログラム１１を装置Ｂ用に変更しようとする者等により作成される。
【００２８】
ページデータ保持部３１は、アクセス先アドレスリスト１３に記録されたアクセス結果の中で、同じアクセス種類が続くアドレス範囲を特定範囲（ページ）で分割する際の範囲情報（ページデータ）を保持する。
【００２９】
アクセスアドレス情報ファイル生成部３２は、アクセス先アドレスリスト１３に含まれる装置Ａシミュレータ１２におけるアクセス結果の情報を、ページデータ保持部３１に保持されたページデータで分割・整理してアクセスアドレス情報ファイル３３を生成する。アクセスアドレス情報ファイル３３は、プログラム１１が装置Ｂで動作するか否かをデバッグするためのリファレンスデータとなる。
【００３０】
アクセスアドレス情報ファイル３３は、検証対象となるプログラムのプログラム名、ページデータ、ページＩＤ情報、アドレスのオフセット情報等の詳細情報、アクセス種類等の情報を有する。ここで、ページデータは、アクセス先アドレスリスト１３に記録されたアクセス結果の中で、同じアクセス種類が続くアドレス範囲を分割する際の特定の範囲（ページ）を示す範囲情報である。言い換えれば、ページデータは、アクセス先アドレスリストを特定のアドレス範囲で分割し、ＩＤ化して識別するための情報である。ページＩＤ情報や詳細情報の生成方法の詳細については、図５、図６を用いて後述する。尚、アクセスアドレス情報ファイル３３に記録する情報としてプログラム名やページデータの情報は省略することも可能である。その場合、ページデータを参照する後述の処理においては、直接ページデータ保存部３１からページデータを参照するようにすればよい。
【００３１】
構成マップ制約情報生成部３４は、装置構成マップ２２の各メモリ領域のアクセス制約をページデータで分割することにより、構成マップ制約情報ファイル３５を生成する。構成マップ制約情報ファイル３５の生成方法の詳細については、図８を用いて後述する。
【００３２】
チェック処理部３６は、プログラム１１を装置Ｂで実行したとすればアクセス違反となるプログラム箇所をチェックする。具体的にはチェック処理部３６は、アクセス情報ファイル３３と構成マップ制約ファイル３５とに基づいて、プログラムＢを装置Ｂで実行する場合にアクセス違反が発生するか否かをチェックする。
【００３３】
結果表示部３７は、チェック処理部３６によるチェック結果をディスプレイ（不図示）等の表示機器に表示する。
図２は、実施例に係るプログラム試験方法を実施するためのコンピュータ等の情報処理装置３のハードウェア構成例を示した図である。情報処理装置３は、ＣＰＵ（Central Processing Unit）５１、メモリ５２、記憶装置５３、キーボードやマウス等の入力装置とのインターフェース回路５４、ディスプレイ５７等の出力装置とのインターフェース回路５５を有する。
【００３４】
記憶装置５３は、磁気ディスク装置、光ディスク装置、光磁気ディスク装置あるいは半導体記憶装置を含み、コンピュータ読み取り可能な記録媒体を扱うドライブ装置も含む。ドライブ装置が扱う記録媒体としては、磁気テープ、メモリカード、光ディスク（ＣＤ−ＲＯＭ，ＤＶＤ−ＲＯＭ，等）、光磁気ディスク（ＭＯ，ＭＤ，等）といった、任意のコンピュータ読み取り可能な記録媒体を使用することができる。
【００３５】
記憶装置５３は、実施例に係る各処理を行うプログラム、及び、実施例において使用する各種ファイル１３、２２、３３、３５等を格納する。ＣＰＵ５１は、バス５６や各インターフェース回路５４、５５を介して、メモリ５２、記憶装置５３、及び各種入出力装置等にアクセスし、記憶装置５３に格納された各種処理プログラム、又は、メモリ５２等にロードされた各種処理プログラムを実行する。本実施例において説明した各種処理等は、図２に示す情報処理装置３が有するＣＰＵ５１により実行される。
図３は、図１に係る実施例のプログラムの検証処理フローを説明する図である。
【００３６】
（Ｓ１００）  まず、Ｓ１００では、アクセス先アドレスリスト１３を作成する。アクセス先アドレスリスト１３は、図１に示すように、プログラム１１がアクセスした結果から、アクセス先のアドレス情報及びアドレス毎のリード、ライト等のアクセス種類の情報を有するリストである。アクセス先アドレスリスト１３の作成は、前述の通りいくつかの作成方法があるが、ここでは、装置Ａシミュレータ１２を用いて作成する方法を例として説明する。
【００３７】
装置Ａ用に開発されたプログラム１１を装置Ａの命令実行動作を模擬するシミュレータ１２に動作させる。その際、シミュレータ１２は、プログラム１１がアクセスしたアクセス先のメモリアドレス及びリードアクセスかライトアクセスかを示すアクセス種類をアクセス先アドレスリスト１３に出力する。シミュレータ１２によるプログラム１１の実行は、シミュレータ１２を実行できる汎用の情報処理装置３で実行することができる。
【００３８】
アクセス先アドレスリスト１３は、プログラム１１をシミュレータ１２により実行した際のアクセス結果の情報を時系列にファイルに出力することにより作成できる。ここで、プログラム１１がアクセスした結果を時系列に出力した場合には、同じアドレスに対するアクセスが何度も繰り返される場合がある。また、アクセス種類が連続しているか否か、すなわち、連続するアドレスのアクセス種類が同じであるか否かを判断するには、アクセス結果の情報を一定の手順に従ってまとめておくと処理が容易となる。
【００３９】
具体的には、例えば、プログラム１１のアクセス結果をアドレスでソートし、重複情報を削除する。そして、プログラム１１のアクセス結果の中で、同一アドレスに対してリードアクセスとライトアクセスの両方があった場合には、アクセス種類をマージして“ライト・リード”とする。これらの処理は、例えば、テキストファイルを処理するためのプログラム言語等を用いた処理プログラムにより、シミュレータ１２の実行結果を編集処理することにより実行できる。従って、シミュレータ１２が時系列に出力したアクセス先の情報をアドレスの昇順又は降順にソートし、重複した情報を削除すると共に同一アドレスに対するアクセス種類をマージしたものをアクセス先アドレスリスト１３としてもよい。
【００４０】
（Ｓ１０１）  Ｓ１０１では、アクセス先アドレスリストの作成（Ｓ１００）とは別に、装置Ｂのメモリマップである装置構成マップ２２を作成する。装置構成マップ２２を作成しようとする作業者、すなわち、装置Ｂの設計者やプログラム１１を装置Ｂ上で実行しようとする者等は、装置Ｂ仕様書２１に記載されたメモリマップの仕様に基づいて、装置構成マップ２２を作成する。
【００４１】
装置構成マップ２２は、図１に示すように、装置Ｂ仕様書２１に記載されたメモリマップで規定された個々のメモリ領域の開始アドレス（start adr）、終了アドレス（end adr）、アクセス属性の各情報を有するファイルである。ここで、アクセス属性は、特定のメモリ領域がリードのみ可能（read）であるか、ライトのみ可能（write）であるか、あるいは、ライト・リードともに可能（write, read）であるか等を示す属性をいう。
【００４２】
装置構成マップ２２の作成は、作業者が装置構成マップ２２のファイルに情報を手入力して作成しても良いし、装置構成マップファイルの生成を行うための何らかの補助ツール（プログラム）を用いて作成しても良い。補助ツールを用いた装置構成マップファイルの生成については、図１３を用いて後述する。
【００４３】
（Ｓ１０２）  Ｓ１０２では、アクセスアドレス情報生成部３２により、ページデータを決定する。ページデータは、アクセス先アドレスリスト１３に記録された同じアクセス種類が連続するアドレス範囲を分割する際の特定の範囲（ページ）を示す範囲情報である。図３のＳ１０３以降の各処理においては、Ｓ１０２で決定したページデータを共通のページデータとして使用して処理を行う。ページデータの決定手順の詳細については図４を用いて後述する。
【００４４】
（Ｓ１０３）  Ｓ１０３では、アクセスアドレス情報生成部３２により、アクセス先アドレスリスト１３に記録されたプログラム１１のアクセス先の情報をページデータで分割・整理して、アクセスアドレス情報ファイル３３を生成する。アクセスアドレス情報ファイル３３は、アクセス先アドレスリスト１３に記録されたアクセス種類が連続するアドレス範囲のアクセス種類を示す情報を、ページデータに示される範囲（ページ）毎にまとめたファイルである。図１に示すように、アクセスアドレス情報ファイル３３は、ページ毎のページアクセス情報及び詳細情報を有する。アクセスアドレス情報ファイル３３の作成手順の詳細については図５を用いて後述する。
【００４５】
（Ｓ１０４）  Ｓ１０４では、構成マップ制約情報生成部３４により、構成マップ制約情報ファイル３５を生成する。構成マップ制約情報ファイル３５は、装置構成マップ２２の各メモリ領域のアクセス制約をページデータで分割したファイルである。構成マップ制約情報生成部３４は、アクセスアドレス情報ファイル３３又はページデータ保存部３１からページデータを読み出し、Ｓ１０１で作成した装置構成マップ２２のメモリマップ情報をページデータのアドレス範囲で分割した構成マップ制約情報３５を作成する。構成マップ制約情報３５の作成手順の詳細については図８を用いて後述する。
【００４６】
（Ｓ１０５〜Ｓ１０９）  Ｓ１０５のチェック処理では、チェック処理部３６が、Ｓ１０３で作成したアクセスアドレス情報ファイル３３と、Ｓ１０４で作成した構成マップ制約情報ファイル３５とを用いて、プログラム１１を装置Ｂで実行したとすればアクセス違反となるプログラム箇所をチェックする。具体的には、アクセスアドレス情報ファイル３３から読み出したアクセス種類が、構成マップ制約情報ファイル３５から読み出したアクセス属性に違反しないか否かをページ毎にチェックする。Ｓ１０５でのチェックの結果、エラー、すなわち、アクセス違反がある場合（Ｓ１０６  Ｙｅｓ）、チェック処理部３６はアクセス違反の詳細を調査し（Ｓ１０７）、結果表示部３７によりエラー結果を出力する（Ｓ１０８）。Ｓ１０５でのチェック結果にエラーがない場合（Ｓ１０６  Ｎｏ）、Ｓ１０９の処理に進む。
【００４７】
Ｓ１０９では、アクセスアドレス情報ファイル３３に記録された全てのページデータの範囲についてチェックが完了したか否かを判定する。アクセスアドレス情報ファイル３３に記録された全てのページデータの範囲についてチェックが完了していない場合（Ｓ１０９  Ｎｏ）、Ｓ１０５の処理に戻って、未チェックのページデータの範囲の一つについて同様にチェックを行う。アクセスアドレス情報ファイル３３の全てのページデータの範囲についてチェックが完了すると（Ｓ１０９  Ｙｅｓ）処理を終了する。Ｓ１０５〜Ｓ１０９のチェック処理の詳細については、図９、図１５を用いて後述する。
以下、図３の各処理の詳細を説明する。
【００４８】
図４は、ページデータを決定する処理を説明する図である。ページデータ保持部３１は、ページデータの初期値として予め定められた値を有する。図４の例では、ページデータの初期値は０ｘ１０００である。ページデータの初期値は、例えば、後述のページ候補の中の最も小さなページデータの候補の値とすることができる。
【００４９】
アクセスアドレス情報生成部３２は、アクセスアドレス情報ファイル３３の生成に先立って、ページデータの決定を行う。ページデータの決定では、アクセス先アドレスリスト１３に記録されたアクセスアドレス及びアクセス種類のデータの中で、アクセス種類が連続するアドレスの範囲のうち、一番小さいアドレス範囲をページデータとする。その際、例えば、ページデータの候補となるページ候補３２−１０を予め準備しておき、アクセス種類が連続するアドレスの範囲の大きさに応じてページ候補の中から一つのページデータの候補を選択するようにすることができる。
【００５０】
ページデータの候補となるページ候補３２−１０としては、既存の装置Ａや開発中の装置Ｂの各装置のメモリマップ仕様等から、メモリアドレス領域を区切る単位となりそうなアドレス範囲の候補をいくつか仮定して決定できる。その際、装置構成マップ２２に含まれる各アドレス範囲を区切りよく分割できる値をページ候補としておくことが望ましい。後述の構成マップ制約情報ファイルの生成において、装置Ｂの装置構成マップ２２のアドレス範囲をページデータで分割する際に、アクセス属性が異なるアドレス範囲をまたぐように分割しないようにするためである。また、装置Ｂの制御レジスタ仕様等の詳細が決まっていないような場合等においては、制御レジスタ等のアクセス属性が混在する領域については、ひとくくりにライト・リード可能な領域として扱うようにしてもよい。
【００５１】
ページデータの決定について図４のフローに沿って説明する。まず、アクセス種類が連続する一連のアドレスの一つに着目し、着目した一連のアドレスを読み出す（Ｓ１０２−１）。アクセス先アドレスリスト１３を所定のアドレス範囲（ページ）で分割する際に、読み出した一連のアドレスが１つのページ内に含まれるように分割できるアドレス範囲をページ候補の中から選択する。その際、選択可能なページ候補のうち、最も小さいページ候補を着目した一連のアドレスのページデータ（仮ページデータ）とする（Ｓ１０２−２）。以下、着目した一連のアドレス毎にページ候補から選んだページデータを「仮ページデータ」と呼ぶ。また、仮ページデータの最小値を「最小ページデータ」と呼ぶこととする。
【００５２】
仮ページデータの最小値は、最小ページデータ３２−２０として保存する。すなわち、個々の一連のアドレス毎の仮ページデータをページ候補３２−１０の中から選択して決定した後、決定した仮ページデータがすでに得られた最小ページデータ３２−２０の値よりも小さいかどうかを比較する。決定した仮ページデータが最小ページデータ３２−２０の値よりも小さい場合には、仮ページデータの値を最小ページデータ３２−２０の値に上書きする（Ｓ１０２−３）。尚、例えば、ページ候補の中で一番大きな値を最小ページデータ３２−２０の初期値とすることができる。
【００５３】
ページ候補から仮ページデータを選択しようとする際に、Ｓ１０２−１で読み出した一連のアドレスにマッチするページ候補がない場合、仮ページデータの選択や最小ページデータの更新を行うことなく、Ｓ１０２−４に進む。例えば、図４のページ候補３２−１０の例において、Ｓ１０２−１で読み出した一連のアドレスの最大値と最小値の差分値が０ｘ２００００よりも大きいような場合には、仮ページデータの選択や最小ページデータの更新を行うことなく、Ｓ１０２−４に進む。
【００５４】
Ｓ１０２−３の処理が終わると、Ｓ１０２−４に進む。Ｓ１０２−４では、アクセス先アドレスリスト１３の中で、仮ページデータを選択していないアドレス範囲があるか否かを判定する。アクセス先アドレスリスト１３の中で、仮ページデータを選択していないアドレス範囲があれば（Ｓ１０２−４  Ｙｅｓ）、再度Ｓ１０２−１に進み、次の一連のアドレスを読み出し、仮ページデータを選択する（Ｓ１０２−２）。
【００５５】
アクセス先アドレスリスト１３の中の全てのアドレス範囲について仮ページデータを選択済みの場合には（Ｓ１０２−４  Ｎｏ）、最小ページデータ３２−２０を、ページデータ保持部３１に格納する（Ｓ１０２−５）。尚、最小ページデータの更新が一度も行われなかった場合には、ページデータ保持部３１へのページデータの格納は行わずに、ページデータ保持部３１に格納された初期値をページデータとする。
【００５６】
前述の通り、ページデータの決定には、装置Ｂの装置Ｂ仕様書２１に基づいて作成された装置構成マップ２２の情報も考慮しておくことが望ましい。すなわち、装置構成マップ２２に含まれる各アドレス範囲を同じ大きさの範囲に分割できる値をページデータとしておくことが望ましい。例えば、図１の破線の矢印で示されるように、装置構成マップ２２の各アドレス範囲の開始アドレス等の情報をアクセスアドレス情報生成部３２が参照するようにしてもよい。そして、アクセスアドレス情報生成部３２は、装置構成マップ２２の各アドレス範囲の開始アドレスを決定したページデータで割り切れるか否かを確認することにより、各アドレス範囲を同じ大きさの範囲に分割できるか否かを確認する。決定したページデータで装置Ｂのメモリマップの各アドレス範囲を同じ大きさで分割できない場合、決定したページデータは、装置構成マップ２２のアドレス領域をアクセス属性が混在しないように分割できないことが判明する。従って、ページデータの決定の際に、装置構成マップ２２の情報も考慮しておくことにより、早い段階でページデータの値を修正することが可能となる。
【００５７】
ところで、作業者がプログラム１１の仕様や装置構成マップ２２のメモリマップの仕様から、適切なページデータの値を把握しているような場合もあり得る。このような場合には、図４で説明した一連の処理を省略して、予め作業者がページデータ保持部３１に所望の値のページデータを保存しておくようにしてもよい。
【００５８】
尚、ページデータとして、例えば、０ｘ１を予め格納するようなことも可能である。この場合、全てのアドレスに対してページＩＤが割り振られ、個々のアドレス毎にアクセス違反をチェックすることも可能である。但し、後述のチェック処理部３６でのチェック処理を行う際の処理速度やメモリ使用量の観点からは、ある程度の大きさのアドレス範囲をページデータとしておくことが望ましい。
図５は、アクセスアドレス情報ファイル３３の生成処理を説明する図である。以下に説明するアクセスアドレス情報ファイル３３の生成処理は、アクセスアドレス情報生成部３２により行われる。
【００５９】
まず、図５（Ａ）に示すアクセス先アドレスリスト１３中の、対となっているアドレス情報とアクセス種類情報とを、アクセス先アドレスリスト１３から一対分だけ読み出す。図５（Ａ）では、アクセス先アドレスリスト１３の１つ目の対のデータを読み出し、読み出したアドレス情報を「アクセスアドレス１」とし、読み出したアクセス種類情報を「アクセス種類情報１」とする（Ｓ１０３−１）。そして、ページデータ保持部３１に格納されているページデータを読み出し、アクセスアドレス１をページデータの値で割った商をページＩＤ情報１とし、余りをoffset情報１とする（Ｓ１０３−２）。
【００６０】
ここで、ページＩＤ情報は、アクセスアドレスの上位側のビットであり、アクセス先アドレスリスト１３に含まれる複数のアドレス情報をページデータで分割した場合の分割された各アドレス範囲を識別する識別情報である。また、offset情報は、アクセスアドレスの下位側のビットであり、分割された各アドレス範囲（ページ）内におけるアドレスを示すオフセットアドレスである。アクセス種類情報は、アクセスがリードかライトかのいずれであるかを示す情報であり、例えば、２ビットの２進数の数値で表される。
【００６１】
アクセス種類を例えば｛“write”，“read”｝の形式で表すとすると、「リード」の場合は“０１”（０ｘ１）、「ライト」の場合は“１０”（０ｘ２）、「ライト・リード」の場合は“１１”（０ｘ３）となる（括弧内の数値は１６進数表記）。アクセス種類の情報は、各ページＩＤや各offset情報と組にして持たせる。
【００６２】
次に、ページＩＤ情報１とアクセス種類情報１とを結合して、ページアクセス情報１とする（Ｓ１０３−３）。ページアクセス情報１としてページＩＤ情報と結合されたアクセス種類情報１をページアクセス種類１と呼ぶ。さらに、offset情報１と、アクセス種類情報１とを結合して、詳細情報１とする（Ｓ１０３−４）。こうして、ページアクセス情報１と詳細情報１とを有する一組のアクセスアドレス情報が生成される。
【００６３】
図５（Ｂ）は、アクセス先アドレスリスト１３の２つ目の対のデータを読み出して、図５（Ａ）と同様の手順により、ページアクセス情報２及び詳細情報２を生成する様子を示した図である。以下、同様にアクセス先アドレスリスト１３から、順次、アクセスアドレスとアクセス種類情報とを読み出し、ページアクセス情報及び詳細情報を生成していく。
図６は、アクセスアドレス情報ファイルの生成において、ページＩＤが同じページの情報をマージする処理を説明する図である。図５のように、アクセス先アドレスリスト１３から対のデータを順次読み出してページアクセス情報を作成していく際に、ページアクセス情報に含まれるページＩＤ情報が、既に作成済みのページＩＤ情報と一致する場合がある。例えば、アクセスアドレス２から算出したページＩＤ情報２が既に作成済みのページＩＤ情報１と一致する場合、新たにページアクセス情報２を作成することなく、アクセスアドレス２から算出したページアクセス種類２を、ページＩＤ情報１のページアクセス種類１にマージする。
【００６４】
具体的には、図６に示すように、まず、ページＩＤ情報１に対応するページアクセス種類１と、アクセスアドレス２に対応するページアクセス種類２との論理和をとった情報を、新たなページアクセス種類１とする。ここで、「論理和」の意味は、例えばページアクセス種類１がライト（“１０”）で、ページアクセス種類２がリード（“０１”）だった場合、その論理和の結果として「ライト・リード」（“１１”）とすることをいう。そして、アクセスアドレス２から生成されたoffset情報２とアクセス種類情報２とを有する詳細情報２を詳細情報１の後に結合する。
【００６５】
以下、アクセス先アドレスリスト１３から、順次読み出したデータに対して同様に処理していく。アクセス先アドレスリスト１３の全ての対となっているアドレス情報とアクセス種類情報とについて図５、図６で説明した処理が完了すると、アクセスアドレス情報ファイル３３の作成に必要なデータの抽出が完了する。
図７は、アクセスアドレス情報ファイルの例を説明する図である。図５、図６で説明した処理に従ってアクセスアドレス情報ファイル３３の作成に必要なデータの抽出が完了すると、アクセスアドレス情報生成部３２は、抽出したデータを図７に示すようにアクセスアドレス情報ファイル３３として書き出す。
【００６６】
その際、アクセスアドレス情報生成部３２は、ページデータ保存部３１に格納されているページデータを読み出して、アクセスアドレス情報ファイル３３に書き込む。図７の例では、アクセスアドレス情報ファイル３３の最初の部分にページデータを格納しているが、アクセスアドレス情報ファイル３３の最後に書き込むようにしてもよい。また、アクセスアドレス情報ファイル３３へのページデータの書き込みを省略して、後述の処理において、ページデータ保存部３１から直接ページデータを参照するようにしてもよい。
【００６７】
図５、図６の処理において個々のページアクセス情報と詳細情報を生成する度にアクセスアドレス情報ファイル３３に書き込むようにしてもよい。あるいは、図５、図６の処理において生成した個々のページアクセス情報と詳細情報をメモリ等に一時的に保存しておき、最後にまとめてアクセスアドレス情報ファイル３３に書き出すようにしてもよい。
図８は、構成マップ制約情報ファイル３５の生成処理を説明する図である。まず、構成マップ制約情報生成部３４は、アクセスアドレス情報ファイル３３からページデータを読み出す（Ｓ１０４−１）。
【００６８】
次に、構成マップ制約情報生成部３４は、装置構成マップ２２から、最初のアドレス範囲（start adr1 - end adr1）を読み出し、読み出したアドレス範囲をページデータで分割する。そして、分割したアドレス範囲の各々の開始アドレスをページデータで割った商をページＩＤ情報として生成する（Ｓ１０４−２）。図８の例では、最初のアドレス範囲（start adr1 - end adr1）がページデータで３分割され、３つのページＩＤ情報１〜３が生成される。尚、ページデータの値は、前述の通り、装置構成マップ２２の各アドレス範囲の開始アドレスをページデータで割った際に、余りが発生しない値とすることが望ましい。
【００６９】
構成マップ制約情報生成部３４は、生成したページＩＤ情報１〜３の各々に、装置構成マップ２２から読み出した最初のアドレス範囲に対応するアクセス属性情報１を結合してページアクセス制約情報を生成する（Ｓ１０４−３）。
【００７０】
以下、装置構成マップ２２から、順次、アドレス範囲とアクセス属性を読み出して、同様にページアクセス制約情報を作成していく。装置構成マップ２２の全てのアドレス範囲についてのページアクセス制約情報をまとめたものが、構成マップ制約情報ファイル３５となる。
図９は、チェック処理部３６の処理を説明する図である。チェック処理部３６は、アクセス情報ファイル３３と構成マップ制約ファイル３５とに基づいて、プログラムＢを装置Ｂで実行する場合にアクセス違反が発生するか否かをチェックする。
【００７１】
具体的には、まず、アクセスアドレス情報ファイル３３からページアクセス情報、すなわち、ページＩＤ情報及びページアクセス種類を読み出す（Ｓ１０５−１）。次に、アクセスアドレス情報ファイル３３から読み出したページＩＤ情報に対応するページアクセス制約情報を構成マップ制約情報ファイル３５から読み出す（Ｓ１０５−２）。その際、ページアクセス制約情報に含まれるアクセス属性情報だけを構成マップ制約情報ファイル３５から読み出してもよい。
【００７２】
アクセスアドレス情報ファイル３３から読み出したアクセス種類が、構成マップ制約情報ファイル３５から読み出したアクセス属性に違反しないか否かをチェックする（Ｓ１０５−３）。アクセス種類がアクセス属性に違反しないか否かのチェックの具体的な方法については後述する。
【００７３】
Ｓ１０５−３でのチェックの結果、違反がない場合（Ｓ１０５−３  Ｎｏ）、Ｓ１０５−６に進み、未チェックのページアクセス情報がないか確認する。未チェックのページアクセス情報がある場合（Ｓ１０５−６  Ｙｅｓ）、アクセスアドレス情報ファイル３３から次のページアクセス情報を読み出し（Ｓ１０５−７）、Ｓ１０５−２に進んで同様にチェックしていく。
【００７４】
Ｓ１０５−３でのチェックの結果、違反がある場合（Ｓ１０５−３  Ｙｅｓ）、アクセスアドレス情報ファイル３３のページアクセス情報に付随する詳細情報を読み出す。そして、読み出した詳細情報に含まれるoffset情報ごとに、各offset情報に対応するアクセス種類が、構成マップ制約情報ファイル３５から読み出したアクセス属性に違反しないかチェックしていく（Ｓ１０５−４）。
【００７５】
Ｓ１０５−４のチェックでアクセス違反を検出したoffset情報及びアクセス種類情報をエラー結果として出力する（Ｓ１０５−５）。その際、ディスプレイ５７等の出力装置にエラー結果として表示すると共に、エラー結果についてのログ出力するようにしてもよい。また、ネットワーク通信回線を介してエラー結果を他の情報処理装置に通知するようにしても良い。その後、Ｓ１０５−６の処理に進む。
【００７６】
Ｓ１０５−６において、未チェックのページアクセス情報がない場合（Ｓ１０５−６  Ｎｏ）、チェック処理部３６におけるチェック処理を終了する。
以上説明した、既存の装置Ａで動作するプログラムを開発中の装置Ｂで動作可能か否かを検証する方法では、既存の装置Ａでのプログラム実行結果からプログラムのアクセス情報を抽出し、装置Ｂの仕様から抽出した制約情報と比較する。すなわち、装置Ａのシミュレータによりプログラムを実行してアクセス先アドレスリスト１３を生成する。生成したアクセス先アドレスリスト１３とページデータとを用いて、アクセスアドレス情報ファイル３３を生成する。また、装置Ｂ仕様書に基づいて作成された装置構成マップ２２とページデータとを用いて構成マップ制約情報ファイル３５を生成する。生成されたアクセスアドレス情報ファイル３３及び構成マップ制約情報ファイル３５の各情報をページＩＤ毎に比較することにより、プログラムの装置Ｂでのアクセス違反箇所が発生するか否かをチェックする。
【００７７】
従って、簡便かつ効率的な方法により、開発中の装置Ｂの命令セット・シミュレータが存在しないような状態において、装置Ｂで動作させるプログラムのメモリアクセス違反の検出を短時間で行うことが可能となる。そのため、装置Ｂの開発検討段階において、装置Ａで動作するプログラムを装置Ｂで動作させるためのプログラム修正量の見積もりも早期に行うことが可能となる。また、上述の通り、メモリアクセス違反の検出を行うために装置Ｂや装置Ｂのシミュレータを必要とせず、汎用のパーソナルコンピュータ等の少ない資源でプログラムの検証を行うことが可能となる。
【００７８】
本発明は、既存の装置Ａで動作する汎用的なプログラムについて、開発中の装置Ｂで動作するか否かを検証することに使用することができるが、例えば、装置Ｂを開発するための試験プログラムの作成においても使用することができる。特に、サーバ等の情報処理装置の動作試験では、膨大な数の試験プログラムを作成して動作検証が行われる。開発中の装置Ｂの試験プログラムを、既存の装置Ａの試験プログラムを修正して作成しようとした場合等においては、上述のプログラム検証方法により、短時間で多数の試験プログラムの検証を行うことが可能となる。また、例えば、アクセス違反を期待する試験プログラムを作成したい場合等においては、アクセス違反が期待通りに発生するかも短時間に確認することが可能となる。従って、装置Ｂの開発の早い段階でプログラムの修正箇所の特定及び修正量の見積もりを行うことが可能となる。
【００７９】
以下、装置Ａの試験プログラムを開発中の装置Ｂの試験プログラムとして修正しようとする場合のプログラム検証例について、第２の実施の形態として具体例を用いて説明する。
［第２の実施の形態］
図１０は、既存の装置Ａのメモリマップ仕様の例を説明する図である。装置Ａは、例えば、図１０に示すようなメモリマップ仕様を有するとする。すなわち、０ｘ０番地から０ｘＦＦＦ番地まではリード可能・ライト不可能、０ｘ１０００番地から０ｘＦＦＦＦ番地まではライト・リード可能、０ｘ１００００番地から０ｘ１ＦＦＦＦ番地まではリード可能・ライト不可能という仕様であるとする。
まず、アクセスアドレス情報ファイルの作成の生成について説明する。
【００８０】
図１１は、図１のプログラム１１の例として、装置Ａのメモリアクセステストを行うテストプログラムを説明する図である。このテストプログラムは、装置Ａ上で動作するように作成され、例えば、装置Ａ内部のメモリを正しくアクセスできるか否かを試験するプログラムである。テストプログラムは、例えば、図１１に示すように、０ｘ１０００番地から０ｘＦＦＦＦ番地まで、データライト（Ｓ２００）とデータリード（Ｓ２０１）とを実行し、ライトデータが正しくリードできるかどうかをチェック（Ｓ２０２）するプログラムである。
【００８１】
シミュレータ１２は、装置Ａの動作を機械語命令レベルでシミュレートし、汎用のコンピュータである情報処理装置３のＯＳ（Operating System）上で動作する。シミュレータ１２は、テストプログラムを命令解読しながらプログラムを実行する装置の動作をシミュレートする。テストプログラムをシミュレートする際、メモリアクセスを行う度に、シミュレータ１２は、アクセス先のメモリアドレスであるアクセスアドレス、リードやライト等のアクセス種類をアクセス先アドレスリストとしてファイルに書き出す。図１１に示すテストプログラムをシミュレータ１２で実行させると、テストプログラムがアクセスしたアクセス先のアドレス情報及びライト・リード等のアクセス種類の情報がアクセス先アドレスリスト１３として書き出される。具体的には、０ｘ１０００番地から０ｘＦＦＦＦ番地までのデータライト（Ｓ２００）時及びデータリード（Ｓ２０１）時のアクセス先アドレス情報及びアクセス種類の情報がアクセス先アドレスリスト１３として書き出される。
【００８２】
アクセスアドレス情報生成部３２は、シミュレータ１２により書き出されたアクセス先アドレスリスト１３に基づいてアクセスアドレス情報ファイル３３を生成する。アクセスアドレス情報ファイル３３は、図７に示すようにアクセス先アドレスリストを特定の範囲で分割するためのページデータと、ページデータを用いてアクセス先アドレスリストを分割して得られるページアクセス情報及び詳細情報とを有する。アクセスアドレス情報ファイル３３のページアクセス情報及び詳細情報に含まれるアクセス種類は、処理の便宜のために数値化することが望ましい。
図５、図６に示したようなアクセスアドレス情報ファイルの生成について、図１２の具体例を用いて説明する。図１２は、アクセスアドレス情報ファイルの生成処理の例を説明する図である。
【００８３】
図１２（Ａ）は、アクセス先アドレスリストの一例を示した図であり、図１２（Ｂ）はページデータの一例を示した図である。図１２（Ａ），（Ｂ）に示す例において、ページＩＤはアクセスアドレスをページデータ０ｘ１０００で割った値となる。従って、図１２（Ａ）に記載されている３つのアクセスアドレス０ｘ００００１０００、０ｘ００００１００８、０ｘ００００１０１０のページＩＤは、図１２（Ｃ）に示すように“０ｘ００００１”となる。
【００８４】
ここで、アクセス種類を数値化するために、write＝０ｘ１（“０１”）、read＝０ｘ２（“１０”）とする（カッコ内は２進数表記）。すると、アクセス種類が“write, read”となっているものは、write（“０１”）とread（“１０”）の論理和をとって、アドレス種類が２進数表記で“１１”すなわち、１６進数表記で“０ｘ３”となる。
【００８５】
図１２（Ａ）の例に図示されている３つのアクセスアドレスのページＩＤはいずれも０ｘ００００１で同じとなるため、図６に示す方法でページアクセス種類を求めると、３つのアクセス種類の論理和をとって０ｘ３（“１１”）となる。
【００８６】
ページアクセス情報は、図５、図６に示すように、ページＩＤ（０ｘ００００１）の後にページアクセス種類（“０ｘ３”）を連結したものである。従って、図１２（Ａ）に記載されている３つのアクセスアドレスのページアクセス情報は、図１２（Ｄ）に示すように“０ｘ００００１３”となる。
【００８７】
詳細情報は、図５、図６に示すように、offset情報及びアクセス種類情報を有する。offset情報は、前述の通り、アクセスアドレスをページデータで割った余りであるので、図１２（Ａ），（Ｂ）の例におけるアクセスアドレスと、個々のアクセスアドレスに対応するoffset情報と、アクセス種類とを並べて記載すると図１２（Ｅ）のようになる。
【００８８】
詳細情報は、図５、図６に示すように、offset情報とページアクセス情報とを連結したものであるので、図１２（Ｅ）の例において、詳細情報は、図１２（Ｆ）に示すように“０ｘ０００３，０ｘ００８１，０ｘ０１０２”となる。すると、図１２（Ａ），（Ｂ）の例におけるアクセスアドレス情報ファイル中のページアクセス情報及び詳細情報は図１２（Ｇ）のように、“０ｘ００００１３，０ｘ０００３，０ｘ００８１，０ｘ０１０２”となる。
【００８９】
図１２で説明したような手順により、アクセス先アドレスリスト中の全てのアクセス結果のデータについて、いずれかのページＩＤに属するように処理を行い、ページデータの情報を追加することにより、アクセスアドレス情報ファイル３３が生成される。
次に、装置構成マップファイル２２の生成例について説明する。
【００９０】
図１３は、装置構成マップの作成処理を説明する図である。作業者は、装置Ｂの装置構成マップを作成する前に、装置Ｂの仕様書からメモリマップを理解する。図１３の例では、０ｘ０番地から０ｘ３ＦＦＦ番地までがリード可能・ライト不可能であり、０ｘ４０００番地から０ｘ１ＦＦＦＦ番地までがライト・リード可能であり、０ｘ２００００番地から０ｘ３ＦＦＦＦ番地までがリード可能・ライト不可能となっているものとする。
【００９１】
図１３（Ａ）は、装置構成マップファイルを作成するための補助ツールの入力画面を示したものである。この補助ツールは、汎用コンピュータを用いて任意のＯＳ上で動作するプログラムにより実現される。
【００９２】
図１３（Ａ）に示した入力例では、装置Ｂのメモリマップの最初のアドレス範囲に対して、まず、開始アドレスの入力要求（“Input start Address -> ”）が入力画面に表示され、作業者が、最初の開始アドレスとして“０ｘ００００００００”を入力する。次に、終了アドレスとアクセス属性の入力要求（“Input end Address, w/r/wr -> ”）が入力画面に表示されるため、作業者が、終了アドレス及びアクセス属性として、“０ｘ００００３ＦＦＦ，ｒ”を入力する。  図１３（Ａ）の例では、アクセス属性を“ｗ”（ライト可能・リード不可能）、“ｒ”（ライト不可能・リード可能）、“ｗｒ”（ライト・リード可能）として入力している。
【００９３】
以下、同様に開始アドレスと終了アドレス及びアクセス属性とを入力していき、装置Ｂのメモリマップの各アドレス範囲について一通り入力が完了すると、アドレス入力の要求画面において“end”を入力することで補助ツールへの入力処理が完了する。補助ツールへの入力処理が完了すると、補助ツールは、入力された情報に基づいて、開始アドレスと終了アドレスと数値に変換したアクセス属性とを並べ、図１３（Ｂ）に示すような装置Ｂの装置構成マップファイル２２Ａを生成する。図１３（Ｂ）に示す装置構成マップ２２Ａの例では、各行において、開始アドレス、終了アドレス、数値で表現したアクセス属性の順で各情報を１６進数表記で表している。
【００９４】
尚、補助ツールの入力画面や情報の入力仕様は図１３の例に限られない。また、補助ツールによらず、人手によって直接装置構成マップファイル２２Ａに情報を入力してもよい。
次に、ページデータの情報と、図１３の例で作成した装置構成マップファイル２２Ａとを用いて構成マップ制約情報ファイル３５を作成する例について説明する。ここで、ページデータは、前述の図１２の例にならって０ｘ１０００とする。
【００９５】
構成マップ制約情報ファイル３５の生成は、図８に示すように、装置構成マップ２２Ａに記載された各アドレス範囲をページデータで分割する。図１３（Ｂ）の１行目のアドレス範囲（０ｘ００００００００〜０ｘ００００３ＦＦＦ）をページデータ（０ｘ１０００）で分割すると、４つのアドレス領域に分割される。そして、分割された４つのアドレス領域の各開始アドレスをページデータで割ると、４つのページＩＤ情報、すなわち、０ｘ０００００、０ｘ００００１、０ｘ００００２、０ｘ００００３が得られる。
【００９６】
前述の通り、構成マップ制約情報ファイル３５に格納されるページアクセス制約情報は、ページＩＤ情報の後にアクセス属性情報を連結したものである。従って、図１３（Ｂ）の１行目のアドレス範囲に対するページアクセス制約情報は、４つのページＩＤ  ０ｘ０００００、０ｘ００００１、０ｘ００００２、０ｘ００００３の各々の後にアクセス属性０ｘ１を連結して、図１４のようになる。図１３（Ｂ）に示す装置構成マップファイル２２Ａに記載された全てのアドレス範囲について、図８に示す手順に従ってページアクセス制約情報を作成し、１つのファイルにまとめると、構成マップ制約情報ファイル３５が生成される。
次にチェック処理について説明する。アクセスアドレス情報ファイル３３と構成マップ制約情報ファイル３５Ａの作成が完了すると、これらのファイルに基づいて、プログラム１１を装置Ｂで動作させた場合のメモリアクセスエラーのチェックを行う。
【００９７】
図１５は、チェック処理の例を説明する図である。チェック処理部３６は、まず、アクセスアドレス情報ファイル３３からページアクセス情報、すなわち、ページＩＤ及びページアクセス種類を読み出す（Ｓ１０５−１１）。前述の通り、図１０の装置Ａのメモリマップ仕様では、最初のページアクセス情報は０ｘ００００１３となる。
【００９８】
次に、アクセスアドレス情報ファイル３３から読み出したページＩＤ（０ｘ００００１）に対応するページアクセス制約情報（０ｘ００００１１）を構成マップ制約情報ファイル３５Ａから読み出す（Ｓ１０５−１２）。その際、ページＩＤに対応するページアクセス制約情報がない場合、例えば、ページＩＤにアクセス属性として“０ｘ０”を付加したものを対応するページアクセス制約情報とすることができる。ページＩＤに対応するページアクセス制約情報が無いということは、装置Ｂの該当ページＩＤに対応する領域はアクセスできない領域に該当するのが一般と考えられる。従って、この場合、リードもライトもできないという意味で、例えばアクセス属性として“０”を設定できる。
【００９９】
続いて、アクセスアドレス情報ファイル３３から読み出したアクセス種類が、構成マップ制約情報ファイル３５Ａから読み出したアクセス属性に違反しないか否かをチェックする（Ｓ１０５−１３）。ここで、最初のページＩＤに対してアクセスアドレス情報ファイル３３から読み出したページアクセス情報（０ｘ００００１３）に含まれるアクセス種類は０ｘ３である。また、このページＩＤ（０ｘ００００１）に対応するページアクセス制約情報（０ｘ００００１１）に含まれるアクセス属性は０ｘ１である。
【０１００】
ページＩＤ  ０ｘ００００１に対しては、アクセス制約は０ｘ１でリードのみ可能となっているのに対して、プログラム１１はライト・リード（０ｘ３）している。そのため、プログラム１１はページＩＤが０ｘ００００１の領域に対してアクセス違反を起こすことになる。従って、Ｓ１０５−１３のチェックでは、アクセス違反が存在することになり、Ｓ１０５−１４の処理に進む。
【０１０１】
Ｓ１０５−１４では、ページＩＤ  ０ｘ００００１に対する詳細情報をアクセスアドレス情報ファイル３３から読み出す。そして、読み出した詳細情報のoffset情報毎にアクセス種類が、構成マップ制約情報ファイル３５Ａから読み出したアクセス属性に違反しないかどうかをチェックする。つまり、図１５に示すように、ページＩＤ  ０ｘ００００１の詳細情報である“０ｘ０００３，０ｘ００８１，０ｘ０１０２”の各アクセス種類（０ｘ３，０ｘ１，０ｘ２）がアクセス属性（０ｘ１）に違反しないか否かをチェックする。その結果、offset情報が０ｘ０００，０ｘ０１０の場合のアクセス種類がアクセス属性に違反することが分かる。Ｓ１０５−１４のチェック処理でアクセス種類がアクセス属性に違反することが判明したoffset情報及びアクセス種類は、アクセス違反を起こした情報として出力される（Ｓ１０５−１５）。Ｓ１０５−１５のアクセス違反情報の出力は、結果表示部３７により、ディスプレイにアクセス違反情報を表示してもよいし、アクセス違反情報を格納するファイルに出力してもよい。また、Ｓ１０５−１４で見つかったアクセス違反情報をネットワーク通信回線を介して他の情報処理装置に通知するようにしても良い。
【０１０２】
尚、Ｓ１０５−１３とＳ１０５−１４でのアクセス違反の有無のチェックは、例えば、
（Ａ）ページアクセス情報に含まれるアクセス属性とページアクセス制約情報に含まれるアクセス属性とをＡＮＤ（論理和）した結果と、
（Ｂ）ページアクセス情報に含まれるアクセス属性と
を比較し、不一致であれば違反があると判断することができる。
【０１０３】
未チェックのページアクセス情報がある場合には（Ｓ１０５−１６  Ｙｅｓ）、順次、次のページＩＤについて情報を読み出し（Ｓ１０５−１７）、同様にチェックしていく。そして、未チェックのページアクセス情報が無くなると（Ｓ１０５−１６  Ｎｏ）、チェック処理が完了する。
【０１０４】
このように、既存の装置Ａで動作するプログラムのシミュレーション結果と、開発中の装置Ｂのメモリマップ仕様をそれぞれ数値化した情報として取り扱い、ページ単位でページアクセス情報及びページアクセス制約情報を作成する。作成したページアクセス情報及びページアクセス制約情報に基づいて、ページ単位でプログラムのメモリアクセス違反が発生するか否かを確認することにより、高速にプログラムのメモリアクセス違反発生の有無を検証することが可能となる。従って、既存の装置Ａで動作するプログラムを開発中の装置Ｂで動作させるためのプログラムの修正の要否判断を短時間で行うことが可能となる。
［第３の実施の形態］
他の実施の形態の一例として、例えば、アクセス先アドレスリスト１３へ出力する情報として、アクセスアドレスとアクセス属性以外の情報を含めることもできる。例えば、メモリアクセスを行った際のプログラムカウンタの値（ＰＣ値）や、メモリアクセスが命令フェッチであるかデータアクセスであるか等の情報を、アクセス属性の情報と共にアクセス先アドレスリスト１３へ出力することができる。アクセス先アドレスリスト１３に出力されたＰＣ値等の情報は、offset情報毎にアクセス属性と合わせて詳細情報として、アクセスアドレス情報ファイル３３に保存しておく。
【０１０５】
ページアクセス情報の単位でのアクセスチェックでは、これらＰＣ値等の詳細情報は参照されない。しかし、アクセス違反が発見された場合（図９のＳ１０５−３  Ｙｅｓ）、図９のＳ１０５−５で詳細結果を表示する際に、アクセス違反が発生時のＰＣ値等の詳細情報も合わせてアクセスアドレス情報ファイル３３から読み出して表示することが可能となる。このように、アクセス違反発生時にＰＣ値等の詳細情報もディスプレイ表示等することで、アクセス違反のエラー解析がより容易となる。
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【産業上の利用可能性】
【０１０６】
本発明は、コンピュータ上で動作するプログラムの検証に利用することができる。
【符号の説明】
【０１０７】
１    既存の装置Ａ
２    開発中の装置Ｂ
３    情報処理装置
１１  プログラム
１２  装置Ａの命令セット・シミュレータ
１３  アクセス先アドレスリスト
２１  装置Ｂ仕様書
２２  装置Ｂのメモリマップを示す装置構成マップ
３１  ページデータ保持部
３２  アクセスアドレス情報生成部
３３  アクセスアドレス情報ファイル
３４  構成マップ制約情報生成部
３５  構成マップ制約情報ファイル
３６  チェック処理部
３７  結果表示部
５７  ディスプレイ装置
【図１】
2012150535.tif 000003
【図２】
2012150535.tif 000004
【図３】
2012150535.tif 000005
【図４】
2012150535.tif 000006
【図５】
2012150535.tif 000007
【図６】
2012150535.tif 000008
【図７】
2012150535.tif 000009
【図８】
2012150535.tif 000010
【図９】
2012150535.tif 000011
【図１０】
2012150535.tif 000012
【図１１】
2012150535.tif 000013
【図１２】
2012150535.tif 000014
【図１３】
2012150535.tif 000015
【図１４】
2012150535.tif 000016
【図１５】
2012150535.tif 000017