(57)【要約】【課題】ソフトウェアの開発効率の向上。【解決手段】本発明に係るソフトウェア開発システム１００は、原始プログラム１１をコンパイルし目的プログラム１２を生成するコンパイラと、その目的プログラム１２を実行する実行モジュール３０とを備える。コンパイラ２０は、アドレス更新機能付きメモリアクセス命令をサポートするプロセッサ１に対応するように、目的プログラム１２の最適化を行う。その最適化において、コンパイラ２０は、条件分岐を挟んで実行されるアドレス更新とメモリアクセスを、条件分岐の前に実行される１ステップの命令にまとめる。更に、コンパイラ２０は、目的プログラム１２中の最適化が行われた位置を示す最適化位置データ１３を生成する。実行モジュール３０は、未初期化・未定義のメモリ領域へのアクセスが行われる場合に警告を発する機能を有する。この実行モジュール３０は、上記最適化位置データ１３に示された位置のコードを実行する際は、警告を発しない。【選択図】      図４
2007034650.tif 000002
【特許請求の範囲】
【請求項１】
原始プログラムをコンパイルし目的プログラムを生成するコンパイラと、
前記目的プログラムを実行する実行モジュールと
を備え、
前記コンパイラは、アドレス更新とメモリアクセスを１ステップで実行する第１命令をサポートするプロセッサに対応するように前記目的プログラムの最適化を行い、また、前記目的プログラム中の前記最適化が行われた位置を示す最適化位置データを生成し、
前記実行モジュールは、前記最適化位置データに示された前記位置を参照しながら、前記目的プログラムを実行する
ソフトウェア開発システム。
【請求項２】
請求項１に記載のソフトウェア開発システムであって、
前記実行モジュールは、未初期化・未定義のメモリ領域へのアクセスが行われる場合に警告を発する機能を有し、前記目的プログラム中の前記位置のコードを実行する際は、前記警告を発しない
ソフトウェア開発システム。
【請求項３】
請求項１又は２に記載のソフトウェア開発システムであって、
前記最適化において、前記コンパイラは、条件分岐を挟んで実行されるアドレス更新とメモリアクセスを、前記条件分岐の前に実行される１ステップの前記第１命令にまとめる
ソフトウェア開発システム。
【請求項４】
請求項３に記載のソフトウェア開発システムであって、
前記最適化位置データは、前記目的プログラム中の前記まとめられた前記第１命令の位置を示す
ソフトウェア開発システム。
【請求項５】
請求項１乃至４のいずれかに記載のソフトウェア開発システムであって、
前記コンパイラを実行する演算処理装置と、
前記原始プログラムが格納される記憶装置と
を更に備え、
前記演算処理装置は、前記記憶装置から前記原始プログラムを読み込み、前記コンパイラの命令に従って前記原始プログラムをコンパイルし、生成される前記目的プログラム及び前記最適化位置データを前記記憶装置に格納する
ソフトウェア開発システム。
【請求項６】
請求項５に記載のソフトウェア開発システムであって、
前記実行モジュールは、前記演算処理装置により実行されるソフトウェアであり、
前記演算処理装置は、前記実行モジュールの命令に従い、前記記憶装置に格納された前記目的プログラム及び前記最適化位置データを読み込み、
前記ソフトウェア上において前記目的プログラムが実行される
ソフトウェア開発システム。
【請求項７】
請求項５に記載のソフトウェア開発システムであって、
前記実行モジュールは、前記記憶装置と通信可能なハードウェアであり、前記第１命令をサポートする第１プロセッサを備え、
前記第１プロセッサは、前記記憶装置から送信される前記目的プログラムを実行する
ソフトウェア開発システム。
【請求項８】
目的プログラムを開発するためのプログラム開発装置と、
前記プログラム開発装置と通信可能に接続されたプログラム実行装置と
を具備し、
前記プログラム実行装置は、アドレス更新とメインメモリへのアクセスを１ステップで実行する第１命令をサポートするプロセッサを備え、
前記プロセッサは、未初期化・未定義のメモリ領域へのアクセスが行われる場合に警告を発する機能を有し、
前記プログラム開発装置は、原始プログラムをコンパイルすることによって前記目的プログラムを生成するコンパイラを備え、
前記コンパイラは、前記プロセッサに対応するように前記目的プログラムの最適化を行い、また、前記目的プログラム中の前記最適化が行われた位置を示す最適化位置データを生成し、
前記プログラム実行装置は、前記目的プログラムと前記最適化位置データを前記プログラム開発装置から受け取り、
前記プロセッサは、前記最適化位置データを参照しながら前記目的プログラムを実行し、前記目的プログラム中の前記位置のコードを実行する際は、前記警告を発しない
ソフトウェア開発システム。
【請求項９】
請求項８に記載のソフトウェア開発システムであって、
前記最適化において、前記コンパイラは、条件分岐を挟んで実行されるアドレス更新とメモリアクセスを、前記条件分岐の前に実行される１ステップの前記第１命令にまとめる
ソフトウェア開発システム。
【請求項１０】
請求項９に記載のソフトウェア開発システムであって、
前記最適化位置データは、前記目的プログラム中の前記まとめられた前記第１命令の位置を示す
ソフトウェア開発システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアを開発するための技術に関する。
【背景技術】
【０００２】
ソフトウェアの開発において、コンパイラは重要な役割を果たす。コンパイラは、原始プログラム（ソースコード）をコンパイルし、目的プログラム（実行コード）を生成する。また、コンパイラは、目的プログラムのサイズや効率が向上するように、プログラム構成を最適化する。その最適化手法は、目的プログラムを実行するプロセッサの機能によって大きく異なってくる。言い換えれば、あるプロセッサに関して、どのような最適化方法を用いるかによって、目的プログラムの性能に大きな差が生じてしまう。このように、目的プログラムが適用されるシステムの性能を最大限に引き出す上で、コンパイラにおける最適化技術は、非常に重要な役割を果たす。
【０００３】
コンパイルに関連する技術は、例えば特許文献１に開示されている。特許文献１に記載されたコンパイル装置は、分岐履歴情報採取コード生成手段と、分岐パターン解析手段と、ループ最適化手段とを含む。分岐履歴情報採取コード生成手段は、オブジェクトプログラムに含まれる各ループ処理の実行毎の繰り返し数と該ループ処理内の条件分岐命令の分岐履歴の情報とを採取するためのコードを生成する。分岐パターン解析手段は、分岐履歴情報ファイルに記録された情報に基づいて、対象となるループ処理内の分岐パターンの解析を行う。ループ最適化手段は、分岐パターン解析手段による解析結果に基づいて、対象となるループ処理を効率良く実行するのに最適なコードを生成する。
【０００４】
あるプロセッサの機能として、「アドレス更新機能付きメモリアクセス機能」が知られている。図１は、その機能を説明するための概念図である。図１には、アドレス更新機能付きメモリアクセス機能を有するプロセッサ１と、そのプロセッサ１がアクセスするメインメモリ２が示されている。プロセッサ１は、レジスタｄｐ０やレジスタｒ０を含んでいる。レジスタｄｐ０には、メインメモリ２のアドレス（番地）を示す値“０ｘ１００”が格納されているとする。このようなプロセッサ１において、例えば、次のような命令が実行される場合を考える。
【０００５】
ｒ０  ＝  ＊＋＋ｄｐ０
【０００６】
この命令は、「レジスタｄｐ０の値を１増加させ、レジスタｄｐ０で示されるアドレスからデータを読み出し、そのデータをレジスタｒ０にセットする」という命令である。この場合、レジスタｄｐ０の値がインクリメントされ、“０ｘ１０１”になる。また、メインメモリ２の番地０ｘ１０１から、値“０ｘｆｆ”が読み出される。その値“０ｘｆｆ”は、レジスタｒ０に格納される。
【０００７】
上述の例において、レジスタｄｐ０の値を１増加させる動作が「アドレス更新」であり、レジスタｄｐ０で示されるアドレスからデータを読み出す動作が「メモリアクセス」である。上述の命令によれば、アドレス更新とメモリアクセスが１ステップで実行される。このような命令が、「アドレス更新機能付きメモリアクセス命令」と呼ばれる。図１におけるプロセッサ１は、このアドレス更新機能付きメモリアクセス命令をサポートしており、アドレス更新機能付きメモリアクセス機能を有している。
【０００８】
このような機能を有するプロセッサ１に対応するコンパイラの最適化手法として、図２に示された手法が知られている。図２には、あるプログラムの流れの一部が示されている。最適化が行われない場合、まずアドレス更新が行われる（ステップＳ１）。次に、ある条件が満たされているか否かの判定が行われる（ステップＳ２）。その条件が満たされている場合（ステップＳ２；Ｙｅｓ）、続けて第１処理（ステップＳ３）、メモリアクセス（ステップＳ４）、及び第２処理（ステップＳ５）が実行される。その条件が満たされない場合（ステップＳ２；Ｎｏ）、ステップＳ３〜Ｓ５は実行されない。
【０００９】
プロセッサ１がアドレス更新機能付きメモリアクセス機能を有する場合、コンパイラは、上記処理を次のように最適化することができる。すなわち、まず「アドレス更新機能付きメモリアクセス命令」が実行される（ステップＳ１１）。次に、上記条件が満たされているか否かの判定が行われる（ステップＳ１２）。その条件が満たされている場合（ステップＳ１２；Ｙｅｓ）、続けて第１処理（ステップＳ１３）及び第２処理（ステップＳ１４）が実行される。その条件が満たされない場合（ステップＳ１２；Ｎｏ）、ステップＳ１３〜Ｓ１４は実行されない。
【００１０】
このように、条件分岐を挟んで実行される２つの「アドレス更新」と「メモリアクセス」を、条件分岐の前に実行される１つの「アドレス更新機能付きメモリアクセス」にまとめることが可能である。これにより、コードのサイズが削減される。また、条件分岐において条件が満たされる場合（ステップＳ２、Ｓ１２；Ｙｅｓ）、続けて行われる処理ステップの数が１つだけ減少する。その結果、プログラムの実行速度が向上する。すなわち、図２に示される最適化を行うことにより、目的プログラムの効率や性能を向上させることが可能となる。メモリアクセスが条件分岐前に実行され、アドレス更新が条件分岐後に実行される場合であっても、同様の最適化が可能である。
【００１１】
図３は、一般的なソフトウェア開発環境を説明するための図である。コンパイラ８０は、原始プログラム１１をコンパイルすることにより、目的プログラム１２を生成する。開発される目的プログラム１２（ソフトウェア）は、マイコンなどの製品３に搭載される。この製品３は、「アドレス更新機能付きメモリアクセス機能」を有する上記プロセッサ１を備えており、目的プログラム１２はそのプロセッサ１により実行される。そのため、コンパイラ８０は、図２に示された手法に基づいて、目的プログラム１２の最適化を行う。
【００１２】
尚、上述の最適化が行われる場合、条件分岐の前に、プログラム開発者の意図しないメモリアクセスが発生するという副作用も発生する。つまり、原始プログラム１１が意図通りに作成されたとしても、コンパイラ８０によるコンパイルの結果、目的プログラム１２は、プログラム開発者の意図しないメモリアクセスを含んでしまう。但し、この副作用は、プログラムの正常な実行を妨げるわけでは無いので、通常は無視される。意図しないメモリアクセスを含む目的プログラム１２がそのまま製品３に搭載されても、特に問題は生じない。
【００１３】
【特許文献１】特開平１０−２４０５７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
ソフトウェアの開発において、生成される目的プログラム１２のデバッグや動作検証も必要である。例えば図３に示されるように、シミュレーションモジュール９０が用いられる。このシミュレーションモジュール９０は、プロセッサ１と目的プログラム１２を搭載した製品３をシミュレートするように構成されたハードウェアあるいはソフトウェアである。シミュレーションモジュール９０は、目的プログラム１２を実行する実行部９１を備えている。この実行部９１は、目的プログラム１２の実行中に未初期化・未定義のメモリ領域へのアクセスが行われた場合、開発者に対して警告を発する「警告機能」を備えている。この警告機能は、開発者が目的プログラム１２中の不具合を発見する助けとなる。
【００１５】
上述の通り、コンパイラ８０により最適化された目的プログラム１２は、プログラム開発者の意図しないメモリアクセスを含んでいる。そのようなメモリアクセスは、プログラムの正常動作を妨げるわけではないが、シミュレーションモジュール９０は、そのようなメモリアクセスに対しても警告を発する可能性がある。しかしながら、開発者は、そのようなメモリアクセスによる警告と、本当の不具合による警告とを区別することはできない。従って、警告が発せられた場合、開発者は、問題点やプログラムの解析を無駄に行ってしまう可能性がある。これは、時間の無駄であり、開発効率の低下を招く。
【課題を解決するための手段】
【００１６】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、［課題を解決するための手段］を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１７】
本発明に係るソフトウェア開発システム（１００）は、原始プログラム（１１）をコンパイルし目的プログラム（１２）を生成するコンパイラと、その目的プログラム（１２）を実行する実行モジュール（３０）とを備える。その実行モジュール（３０）は、例えば、目的プログラム（１２）が搭載される製品（３）をシミュレートするためのシミュレーションモジュール（３０）である。
【００１８】
コンパイラ（２０）は、アドレス更新とメモリアクセスを１ステップで実行する「第１命令（アドレス更新機能付きメモリアクセス命令）」をサポートするプロセッサ（１）に対応するように、目的プログラム（１２）の最適化を行う。その最適化において、コンパイラ（２０）は、条件分岐を挟んで実行されるアドレス更新とメモリアクセスを、条件分岐の前に実行される１ステップの上記第１命令にまとめる。更に、コンパイラ（２０）は、目的プログラム（１２）中の最適化が行われた位置を示す最適化位置データ（１３）を生成する。
【００１９】
実行モジュール（３０）は、未初期化・未定義のメモリ領域へのアクセスが行われる場合に警告を発する機能を有する。この実行モジュール（３０）は、上記最適化位置データ（１３）に示された位置を参照しながら、目的プログラム（１２）を実行する。具体的には、実行モジュール（３０）は、目的プログラム（１２）中の上記位置のコードを実行する際は、警告を発しない。つまり、実行モジュール（３０）は、無視可能な未初期化・未定義のメモリ領域へのアクセスに対して警告を行わず、本当の不具合に起因する警告のみを発する。
【００２０】
従って、開発者は無駄なプログラム解析を行う必要がなくなり、開発時間の浪費が抑制される。また、開発者は、本来の警告機能を有効に活用することが可能となる。その結果、ソフトウェアの開発効率が向上する。
【発明の効果】
【００２１】
本発明に係るソフトウェア開発システムによれば、開発効率が向上する。
【発明を実施するための最良の形態】
【００２２】
添付図面を参照して、本発明によるソフトウェア開発システムを説明する。
【００２３】
図４は、本発明の実施の形態に係るソフトウェア開発環境を説明するための図である。コンパイラ２０は、原始プログラム１１をコンパイルすることにより、目的プログラム１２を生成する。その目的プログラム１２（ソフトウェア）は、マイコンなどの製品に搭載される。その製品は、「アドレス更新機能付きメモリアクセス機能」を有するプロセッサ１を備えており、目的プログラム１２はそのプロセッサ１により実行される。そのため、コンパイラ２０は、図２に示された手法に基づいて、プロセッサ１に対応するように目的プログラム１２の最適化を行う。すなわち、コンパイラ２０は、条件分岐を挟んで実行される「アドレス更新」と「メモリアクセス」を、条件分岐の前に実行される１ステップの「アドレス更新機能付きメモリアクセス命令」にまとめる。
【００２４】
また、本実施の形態に係るコンパイラ２０は、目的プログラム１２中の最適化が行われた位置を示す最適化位置データ１３を生成する。つまり、最適化位置データ１３は、条件分岐前後の「アドレス更新」と「メモリアクセス」がまとめられた「アドレス更新機能付きメモリアクセス命令」の位置を示す。更に言い換えれば、最適化位置データ１３は、図２に示されたステップＳ１１の位置を示す。目的プログラム１２中の位置とは、ステップＳ１１の目的プログラム１２内でのアドレス（オフセット位置）を意味する。例えば、最適化位置データ１３には、“０ｘ０１０”といったアドレスを示す値が格納される。
【００２５】
コンパイラ２０によって生成された目的プログラム１２は、実行モジュールにより実行される。図４において、その実行モジュールの例として、生成された目的プログラム１２のデバッグや動作検証を行うためのシミュレーションモジュール３０が示されている。このシミュレーションモジュール３０は、プロセッサ１と目的プログラム１２を搭載した製品をシミュレートするように構成される。後述されるように、このシミュレーションモジュール３０は、ハードウェアで構成されてもよいし、ソフトウェアで構成されてもよい。
【００２６】
目的プログラム１２のデバッグや動作検証を行うためには、プログラムの異常動作を検知し開発者に通知する機能が必要である。そのため、本実施の形態に係るシミュレーションモジュール３０は、目的プログラム１２の実行中に未初期化・未定義のメモリ領域へのアクセスが行われた場合、開発者に対して警告を発する機能を備えている。この機能は、以下「警告機能」と参照される。シミュレーションモジュール３０の警告機能は、開発者が目的プログラム１２中の不具合を発見する助けとなる。
【００２７】
図４に示されるように、シミュレーションモジュール３０は、実行部３１と判定部３２を有している。実行部３１は、目的プログラム１２を実行する。実行中の目的プログラム１２の不具合を検出するため、この実行部３１は、上述の警告機能を有する。判定部３２は、最適化位置データ１３を読み込む。そして、判定部３２は、現在実行中の目的プログラム１２の位置が、最適化位置データ１３に示されている位置と一致するかどうか判定する。一致する場合、判定部３２は、実行部３１にマスク信号を出力する。実行部３１は、マスク信号を受け取った場合、未初期化・未定義のメモリ領域へのアクセスが行われたとしても、警告を発しない。
【００２８】
図５は、シミュレーションモジュール３０による処理を示すフローチャートである。シミュレーションモジュール３０は、目的プログラム１２の実行を開始する（ステップＳ１００）。目的プログラム１２中のある位置で、メインメモリに対するアクセスが行われる（ステップＳ１１０）。そのメモリアクセスが未初期化・未定義のメモリ領域へのアクセスではない場合（ステップＳ１１１；Ｎｏ）、処理が引き続き実行される（ステップＳ１２０）。
【００２９】
未初期化・未定義のメモリ領域へのアクセスが行われた時は（ステップＳ１１１；Ｙｅｓ）、警告が発せられる場合と、警告が発せられない場合がある。ステップＳ１１１におけるメモリアクセスが、最適化位置データ１３に示された位置のメモリアクセスである場合（ステップＳ１１２；Ｙｅｓ）、判定部３２は、実行部３１にマスク信号を出力している。従って、シミュレーションモジュール３０は、警告を出さずに処理を続行する（ステップＳ１２０）。つまり、シミュレーションモジュール３０は、未初期化・未定義のメモリ領域へのアクセスが行われていないように振る舞う。
【００３０】
一方、ステップＳ１１１におけるメモリアクセスが、最適化位置データ１３に示された位置のメモリアクセスではない場合（ステップＳ１１２；Ｎｏ）、シミュレーションモジュール３０は、開発者に警告を与える（ステップＳ２００）。この場合の警告は無視できない本当の不具合に起因する可能性が高い。未初期化・未定義のメモリ領域へのアクセスの原因は、原始プログラム１１に存在する可能性が高い。従って、開発者は、プログラムの解析を行い、問題点を検討する（ステップＳ２１０）。
【００３１】
目的プログラム１２が最後まで実行されると（ステップＳ１３０；Ｙｅｓ）、シミュレーションモジュール３０の処理は終了する。
【００３２】
このように、本実施の形態に係るシミュレーションモジュール３０は、最適化位置データ１３に示された位置情報を参照しながら目的プログラム１２を実行し、不必要な場合は警告を発しない。具体的には、最適化位置データ１３に示された位置の「アドレス更新機能付きメモリアクセス命令」を実行する際、シミュレーションモジュール３０は、警告を発しない。すなわち、シミュレーションモジュール３０は、無視可能な未初期化・未定義のメモリ領域へのアクセスに対して警告を行わず、本当の不具合に起因する警告のみを発する。従って、開発者は無駄なプログラム解析を行う必要がなくなり、開発時間の浪費が抑制される。また、開発者は、本来の警告機能を有効に活用することが可能となる。その結果、ソフトウェアの開発効率が向上する。
【００３３】
以上に説明されたソフトウェア開発を実現するための具体的なシステム構成が、以下に例示される。
【００３４】
図６は、ソフトウェア開発システム１００の一例を示している。このソフトウェア開発システム１００は、目的プログラム開発装置２００と目的プログラム実行装置３００を含んでいる。目的プログラム開発装置２００は、目的プログラム１２を開発するための装置であり、例えばパーソナルコンピュータにより実現される。目的プログラム実行装置３００は、目的プログラム１２を実行するための装置であり、上記シミュレーションモジュール（実行モジュール）３０に対応している。
【００３５】
目的プログラム開発装置２００は、演算処理装置２１０、メインメモリ２２０、記憶装置２３０、入力装置２４０、表示装置２５０、及びインタフェース２６０を備えており、それらはバスを介して互いに通信可能に接続されている。記憶装置２３０としては、ハードディスクドライブが例示される。この記憶装置２３０には、原始プログラム１１、目的プログラム１２、最適化位置データ１３、コンパイラ２０、及びデバッガ４０が格納されている。入力装置２４０としては、マウスやキーボードが例示される。表示装置２５０としては、液晶ディスプレイが例示される。
【００３６】
目的プログラム実行装置３００は、ハードウェアであり、製品と同じように目的プログラム１２を実行できるように構成される。具体的には、目的プログラム実行装置３００は、プロセッサ３１０、メインメモリ３２０、格納部３３０、及びインタフェース３６０を備えており、それらはバスを介して互いに通信可能に接続されている。格納部３３０は、最適化位置データ１３を格納するための記憶領域であり、その格納部３３０として、不揮発性メモリが例示される。
【００３７】
プロセッサ３１０は、上述の実行部３１に対応している。目的プログラム１２を実行するため、プロセッサ３１０は、「アドレス更新機能付きメモリアクセス機能」を有している。つまり、プロセッサ３１０は、アドレス更新機能付きメモリアクセス命令をサポートしている。また、プロセッサ３１０は、目的プログラム１２の実行中に未初期化・未定義のメモリ領域へのアクセスが行われた場合に警告を発する「警告機能」も有している。更に、プロセッサ３１０は、最適化位置データ１３を参照する上述の判定部３２も有している。
【００３８】
目的プログラム開発装置２００と目的プログラム実行装置３００は、インタフェース２６０及び３６０を介して、互いに通信可能に接続される。これにより、目的プログラム開発装置２００と目的プログラム実行装置３００との間で、データのやりとりを行うことが可能である。
【００３９】
このようなソフトウェア開発システム１００を用いて、ソフトウェアは次のように開発される。開発者は、表示装置２５０に表示される情報を参照し、入力装置２４０を用いることによって原始プログラム１１を編集する。次に、開発者は、コンパイラ２０を起動する。このコンパイラ２０は、演算処理装置２１０によって、メインメモリ２２０にロードされ実行される。コンパイラ２０の命令に従って、演算処理装置２１０は、次のような処理を行う。すなわち、演算処理装置２１０は、記憶装置２３０から原始プログラム１１を読み込み、その原始プログラム１１をコンパイルする。ここで、図２に示された最適化が行われる。このコンパイルの結果、最適化された目的プログラム１２と、最適化された位置を示す最適化位置データ１３が生成される。演算処理装置２１０は、これら目的プログラム１２及び最適化位置データ１３を、記憶装置２３０に格納する。
【００４０】
次に、開発者は、デバッガ４０を起動する。このデバッガ４０は、演算処理装置２１０によって、メインメモリ２２０にロードされ実行される。デバッガ４０の命令に従って、演算処理装置２１０は、目的プログラム１２と最適化位置データ１３を、記憶装置２３０から目的プログラム実行装置３００に送信する。目的プログラム１２は、メインメモリ３２０に格納され、プロセッサ３１０により実行される。最適化位置データ１３は、格納部３３０に格納される。開発者による指示に応答して、デバッガ４０は、目的プログラム実行装置３００に目的プログラム１２の実行を開始させる。
【００４１】
目的プログラム実行装置３００において、プロセッサ３１０は、図５に示された処理を実行する。つまり、プロセッサ３１０は、最適化位置データ１３を参照しながら、目的プログラム１２を実行する。最適化位置データ１３に示された位置のコードを実行する際、プロセッサ３１０は警告を出力しない。一方、未初期化・未定義のメモリ領域へのアクセスが行われ、そのコードの位置が最適化位置データ１３に示された位置と一致しない場合、プロセッサ３１０は警告を出力する。その警告を示す信号は、目的プログラム開発装置２００に送られ、表示装置２５０には警告メッセージが表示される。不具合を通知された開発者は、原始プログラム１１や目的プログラム１２の解析を行う。
【００４２】
また、シミュレーションモジュール３０は、ソフトウェア的に構成されてもよい。図７は、シミュレーションモジュール３０がソフトウェアで構成された場合のソフトウェア開発システム１００’を示している。図７において、図６と同様の構成には同一の符号が付され、その説明は適宜省略される。
【００４３】
図７において、記憶装置２３０には、ソフトウェアとしてのシミュレータ３００’が格納されている。このシミュレータ３００’が、上記シミュレーションモジュール（実行モジュール）３０に対応している。このシミュレータ３００’は、演算処理装置２１０によって実行されるソフトウェアであり、図６に示された目的プログラム実行装置３００の機能をソフトウェア的に実現している。つまり、上述のプロセッサ３１０やメインメモリ３２０は、仮想的にコンピュータ上に構築される。
【００４４】
目的プログラム１２と最適化位置データ１３が生成された後、開発者は、シミュレータ３００’を起動する。このシミュレータ３００’は、演算処理装置２１０によって、メインメモリ２２０にロードされ実行される。シミュレータ３００’の命令に従って、演算処理装置２１０は、記憶装置２３０に格納された目的プログラム１２と最適化位置データ１３を読み込む。目的プログラム１２は、このシミュレータ３００’上において実行される、すなわち、仮想的なプロセッサ３１０により実行される。シミュレータ３００’の処理内容は、目的プログラム実行装置３００の処理内容と同一である。
【００４５】
本発明に係るソフトウェア開発システム１００、１００’によれば、開発者は無駄なプログラム解析を行う必要がなくなる。よって、開発時間の浪費が抑制される。また、開発者は、シミュレーションモジュールの本来の警告機能を有効に活用することが可能となる。その結果、ソフトウェアの開発効率が向上する。
【図面の簡単な説明】
【００４６】
【図１】図１は、アドレス更新機能付きメモリアクセス機能を説明するための概念図である。
【図２】図２は、コンパイラによる最適化の例を示す図である。
【図３】図３は、従来のソフトウェア開発環境を示すブロック図である。
【図４】図４は、本発明に係るソフトウェア開発環境を示すブロック図である。
【図５】図５は、本発明に係るシミュレーションモジュールによる目的プログラムの実行処理を示すフローチャートである。
【図６】図６は、本発明に係るソフトウェア開発システムの構成の一例を示すブロック図である。
【図７】図７は、本発明に係るソフトウェア開発システムの構成の他の例を示すブロック図である。
【符号の説明】
【００４７】
１    プロセッサ
１１    原始プログラム
１２    目的プログラム
１３    最適化位置データ
２０    コンパイラ
３０    シミュレーションモジュール
３１    実行部
３２    判定部
４０    デバッガ
１００    ソフトウェア開発システム
２００    目的プログラム開発装置
２１０    演算処理装置
２２０    メインメモリ
２３０    記憶装置
２４０    入力装置
２５０    表示装置
２６０    インタフェース
３００    目的プログラム実行装置
３００’  シミュレータ
３１０    プロセッサ
３２０    メインメモリ
３３０    格納部
３６０    インタフェース
【図１】
2007034650.tif 000003
【図２】
2007034650.tif 000004
【図３】
2007034650.tif 000005
【図４】
2007034650.tif 000006
【図５】
2007034650.tif 000007
【図６】
2007034650.tif 000008
【図７】
2007034650.tif 000009