(57)【要約】【課題】ソースプログラム修正時のコンパイラ及びデバッガの処理負荷を軽減したプログラム開発支援環境を提供すること【解決手段】コンパイラ１４０は、ソースプログラム１１０内の少なくとも一以上の命令に修正がなされた場合に、後にソースプログラム１１０内の少なくとも一以上の命令に修正がなされた場合であってもコンパイル作業を行わずに実行プログラム１３０に修正内容を反映させるために用いる簡易修正情報を生成する。プログラムデバッガ１７０は、ソースプログラム１１０内の命令の修正がなされた場合に、簡易修正情報を参照して修正内容を実行プログラム１３０に反映する。【選択図】図１
2011159169.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムをコンパイルして実行プログラムを生成するとともに、後にソースプログラム内の少なくとも一以上の命令に修正がなされた場合であってもコンパイル作業を行わずに前記実行プログラムに修正内容を反映させるために用いる簡易修正情報を生成するコンパイラと、
前記ソースプログラム内の命令の修正がなされた場合に、前記簡易修正情報を参照して修正内容を前記実行プログラムに反映する簡易修正処理を行うデバッガと、を備えるプログラム開発支援装置。
【請求項２】
前記コンパイラは、前記ソースプログラム内の少なくとも一以上の命令に修正がなされた場合に、前記ソースプログラムから生成される前記実行プログラムにおける、当該修正に応じて増減するプログラムサイズを予測し、
前記プログラムサイズを確保するための空き領域を前記ソースプログラムの修正が予想される命令に対応する前記実行プログラム内の位置に挿入し、
前記デバッガは、前記ソースプログラム内の命令の修正がなされた場合に、当該修正のために確保された前記実行プログラム内の前記空き領域に対して修正内容を挿入することを特徴とする請求項１に記載のプログラム開発支援装置。
【請求項３】
前記コンパイラは、前記ソースプログラム内の命令が数値演算または比較演算である場合に、前記デバッガによる前記簡易修正処理が可能である修正可能命令と判断することを特徴とする請求項１または請求項２に記載のプログラム開発支援装置。
【請求項４】
前記簡易修正情報は、前記修正可能命令に対応する箇所の前記実行プログラム内のアドレス情報と、前記修正可能命令の命令種別情報と、前記命令種別情報に対応して前記ソースプログラムで記載されることが予測される修正内容にかかる情報と、前記実行プログラム内で記載されることが予測される実行コード情報と、を備えることを特徴とする請求項１乃至請求項３のいずれか１項に記載のプログラム開発支援装置。
【請求項５】
前記簡易修正情報は、前記修正可能命令に該当する前記比較演算の種別の情報を備えることを特徴とする請求項１乃至請求項４のいずれか１項に記載のプログラム開発支援装置。
【請求項６】
前記コンパイラは、NOP（No OPeration）命令を前記実行プログラムに挿入することにより前記空き領域を確保することを特徴とする請求項２乃至請求項５のいずれか１項に記載のプログラム開発支援装置。
【請求項７】
前記デバッガは、前記ソースプログラムの履歴情報から前記ソースプログラムの修正があったか否かを判定することを特徴とする請求項１乃至請求項６のいずれか１項に記載のプログラム開発支援装置。
【請求項８】
ソースプログラムをコンパイルして実行プログラムを生成するとともに、後にソースプログラム内の少なくとも一以上の命令に修正がなされた場合であってもコンパイル作業を行わずに前記実行プログラムに修正内容を反映させるために用いる簡易修正情報を生成し、
前記ソースプログラム内の命令の修正がなされた場合に、前記簡易修正情報を参照して修正内容を前記実行プログラムに反映するプログラムデバッグ方法。
【請求項９】
ソースプログラムをコンパイルして実行プログラムを生成するとともに、前記実行プログラムを実行及び修正する処理をコンピュータに実行させるためのプログラムであって、
ソースプログラム内の少なくとも一以上の命令に修正がなされた場合であってもコンパイル作業を行わずに前記実行プログラムに修正内容を反映させるために用いる簡易修正情報を生成し、
前記ソースプログラム内の命令の修正がなされた場合に、前記簡易修正情報を参照して修正内容を前記実行プログラムに反映するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム開発支援装置、プログラム開発支援方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、マイクロコンピュータの大規模化及び高機能化に伴って、実行されるプログラムのサイズが大きくなっている。プログラムサイズの増大に伴って、プログラムの動作確認、及び品質検査等に多くの時間を費やす傾向にある。そのため、プログラムのバグ、欠陥を修正するために用いられるデバッガが高機能化してきている。デバッガの高機能化により、複雑なデバッグ処理が可能となってきている。
【０００３】
一般に、コンパイラがエディタ等で作成したソースプログラムをコンパイルし、実行プログラムを生成する。デバッガは、コンパイラが生成したマイクロコンピュータ上で実行可能な実行プログラムを読み込み、デバッグ処理を行う。すなわちデバッガを用いて実行プログラムを実行させ、プログラムに不具合があった場合にはそのソースプログラムをエディタ等により修正し、コンパイラにて再コンパイルする。デバッガは、コンパイラが再コンパイルした実行プログラムを再度読み込んでデバッグ処理を行う。このように、ソースプログラムの修正があるたびにコンパイル処理を要することとなり使用者の手間が大きい。このため、作業工程を短縮できる効率のよいデバッグ環境が望まれている。
【０００４】
特許文献１は、簡易コンパイラ及び簡易デバッガを有することにより、実行プログラムの作成時間及び実行プログラムの読み込み時間を短縮することが可能なプログラム開発支援装置を開示している。当該プログラム開発支援装置の概要を以下に述べる。
【０００５】
図７は、特許文献１に記載のプログラム開発支援装置の構成を示す図である。ソースプログラム２１０はエディタ２００によって作成される。コンパイラ・リンカ２３０は、ソースプログラム２１０を読み込み、コンパイルを行うことで実行プログラム２２０を作成する。またコンパイラ・リンカ２３０は、コンパイル時にコンパイル・リンク情報２４０を生成する。プログラムデバッガ２５０は、実行プログラム２２０を実行制御してプログラムの正しさを検証する。また、プログラムデバッガ２５０は、実行プログラム２２０を部分的に修正できる簡易コンパイラと、ソースプログラム２１０を部分的に修正できる簡易エディタを備える。プログラマはエディタ２００によりソースプログラム２１０を作成し、コンパイラ・リンカ２３０を起動し実行プログラム２２０を生成し、正しさの検証のためにプログラムデバッガ２５０を起動する。
【０００６】
プログラムデバッガ２５０によるデバッグ時に不具合が見つかると、簡易コンパイラを使用して実行プログラム２２０を修正する。このとき簡易コンパイラはコンパイル・リンク情報２４０を参照することにより膨大なコンパイル処理の重複を避け、高速に部分コンパイルすることができる。
【０００７】
また同時の不具器部分のソースプログラムを、簡易エディタを利用して対応するソースプログラム２１０を修正する。これによりフルコンパイル方式の高速実行性を保ちながら、プログラムの修正時間が短縮できる。以上のように簡易コンパイラと簡易エディタ付きプログラムデバッガ２５０によって実行プログラム２２０に不具合が見つかった場合、プログラムデバッガ２５０を終了させることなく、簡易コンパイラによる不具合箇所の実行プログラム２２０の高速修正と簡易エディタによるソースプログラム２１０の修正ができるため、正しいプログラムの作成時間を短縮できる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平５−３４１９８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載のプログラム開発支援装置では、依然としてコンパイルからデバッグまでの一連の作業に時間がかかるという問題がある。当該問題の詳細を以下に述べる。
【００１０】
特許文献１に記載のプログラム開発支援装置では、プログラマがソースプログラム２１０の簡易修正を行った場合、簡易コンパイラにより部分コンパイルを行う。ここで部分コンパイル後の実行プログラム２２０を、プログラムデバッガ２５０が再度読み込みなおす必要がある。すなわち、特許文献１に記載のプログラム開発支援装置では、部分コンパイルを実行する時間及び部分コンパイルにより生成された実行プログラム２２０をプログラムデバッガ２５０が再度読み込む時間がかかる。よって、特許文献１に記載のプログラム開発支援装置では、ソースプログラム修正時のコンパイラ及びデバッガの処理負荷が依然として大きい。
【課題を解決するための手段】
【００１１】
本発明にかかるプログラム開発支援環境の一態様は、ソースプログラムをコンパイルして実行プログラムを生成するとともに、後にソースプログラム内の少なくとも一以上の命令に修正がなされた場合であってもコンパイル作業を行わずに前記実行プログラムに修正内容を反映させるために用いる簡易修正情報を生成するコンパイラと、前記ソースプログラム内の命令の修正がなされた場合に、前記簡易修正情報を参照して修正内容を前記実行プログラムに反映する簡易修正処理を行うデバッガと、を備えるものである。
【００１２】
本発明においては、ソースプログラムに修正がなされた場合に、コンパイラが後にソースプログラムに修正がなされた場合であってもコンパイル作業を行わずに実行プログラムに修正内容を反映させるために用いる簡易修正情報を生成する。デバッガは、当該簡易修正情報を用いて実行プログラムを直接修正する。そのため、ソースプログラム修正時であってもコンパイル作業を行うことなく実行プログラムを修正でき、コンパイルの処理時間を短縮できる。
【発明の効果】
【００１３】
本発明によれば、ソースプログラム修正時のコンパイル処理時間を短縮したプログラム開発支援環境を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかるプログラム開発支援装置のブロック図である。
【図２】実施の形態１にかかる簡易修正情報の詳細を示す図である。
【図３】実施の形態１にかかるプログラム開発支援装置の処理を示すフローチャートである。
【図４】実施の形態１にかかるプログラム開発支援装置の処理を示すフローチャートである。
【図５】実施の形態１にかかるソースプログラムの修正例と生成される実行プログラムを示す図である。
【図６】実施の形態１にかかるプログラム開発支援装置を使用したシステム構成のブロック図である。
【図７】従来のプログラム開発支援装置のブロック図である。
【図８】従来のソースプログラムの修正例と生成される実行プログラムを示す図である。
【発明を実施するための形態】
【００１５】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１は、本実施の形態にかかるプログラム開発支援装置の構成を示すブロック図である。プログラム支援装置１００は、ソースプログラム１１０と、エディタ１２０と、実行プログラム１３０と、コンパイラ１４０と、コンパイル・リンク情報１５０と、簡易修正情報１６０と、プログラムデバッガ１７０と、を備える。
【００１６】
ソースプログラム１１０は、プログラマによってエディタ１２０を用いて作成されるプログラムである。ソースプログラム１１０は、プログラマにより任意のプログラミング言語を用いて記述される。エディタ１２０は、コンピュータ上でソースプログラム１１０を編集するためのソフトウェアである。エディタ１２０は、任意のプログラミング言語を編集可能に構成されている。
【００１７】
実行プログラム１３０は、ソースプログラム１１０をコンパイラ１４０がコンパイルすることにより生成されるプログラムである。実行プログラム１３０は、コンピュータのＣＰＵ（Central Processing Unit:中央演算処理装置）が直接解釈可能である。
【００１８】
コンパイラ１４０は、ソースプログラム１１０を読み込み、コンパイルを行うことで実行プログラム１３０を生成する。ここでコンパイラ１４０は、ソースプログラム１１０が後に変更された場合に実行プログラム１３０のプログラムサイズが増加する可能性がある箇所に空き領域を挿入する。また、コンパイラ１４０は、フルコンパイル実行時にコンパイル・リンク情報１５０を生成する。さらにコンパイラ１４０は、ソースプログラム１１０のフルコンパイル実行時に簡易修正情報１６０を生成する。なお、本実施の形態にかかるコンパイラ１４０は、実行プログラム１３０に必要なライブラリ等を追加するリンカ機能も備える。
【００１９】
コンパイル・リンク情報１５０は、コンパイラ１４０によるソースプログラム１１０のフルコンパイル時に生成される結果情報である。コンパイル・リンク情報１５０には、デバッグ情報等も含む。
【００２０】
簡易修正情報１６０は、ソースプログラム１１０のフルコンパイル実行時にコンパイラ１４０により生成される情報である。簡易修正情報１６０は、デバッグ時にソースプログラム１１０の部分修正が行われた場合に、コンパイル作業を行わずに実行プログラム１３０を書き換えるために用いる情報である。簡易修正情報１６０は、任意の記憶装置に格納される構成にすることが可能である。簡易修正情報１６０の詳細を図２に示す。
【００２１】
簡易修正情報１６０は、比較演算子テーブル１６１と、簡易修正情報テーブル１６２と、を備える。比較演算子テーブル１６１は、プログラムデバッガ１７０による簡易修正処理が可能な命令を示すためのテーブルである。比較演算子テーブル１６１には、簡易修正処理が可能であり、ソースプログラム１１０に記述可能な比較演算命令の全てが記述されている。なお、簡易修正処理とは、プログラムデバッガ１７０によりコンパイル処理を行わずに実行プログラム１３０の修正を行う処理を指す。比較演算子テーブル１６１は、データが格納された状態で予めプログラム支援装置１００に備えられている。
【００２２】
簡易修正情報テーブル１６２は、プログラムデバッガ１７０による簡易修正処理の際に用いられる情報が格納される。簡易修正情報テーブル１６２は、アドレス情報１６２１、命令種別情報１６２２、修正予測候補１６２３、及び実行コード情報１６２４、という項目（カラム）を備えた構成である。
【００２３】
アドレス情報１６２１は、実行プログラム１３０内で簡易修正処理が可能なアドレスの情報である。すなわち、アドレス情報１６２１に記述されているアドレスが、プログラムデバッガ１７０により直接書き換えられる可能性があるアドレスである。命令種別情報１６２２は、簡易修正処理を行う場合に、その修正が数値に対する修正なのか、比較演算子に対する修正なのかを示す情報である。
【００２４】
修正予測候補１６２３には、簡易修正処理が数値演算に関する修正の場合、修正後の数値を表現するバイト数が格納される。たとえば、修正箇所に整数型の変数が記述されていた場合、整数型の最大バイト数が格納される。後述する実行コード情報１６２４には、当該バイト数を超えた場合に実行プログラム１３０内で記述される実行コードと、当該バイト数を超えなかった場合に実行プログラム１３０内で記述される実行コードと、の２種類が記述される（同一の値を持つ修正予測候補１６２３に対して、２つのステートメントが作成される。）。
【００２５】
一方、簡易修正処理が比較演算に関する修正の場合、修正予測候補１６２３にはソースプログラム１１０で変更されうる比較演算子が記述される。たとえば、ソースプログラム１１０内でアドレス情報１６２１と対応する箇所に"＜"と記述されていた場合、修正予測候補１６２３には"＞"、"＜＝"等が格納される。
【００２６】
実行コード情報１６２４には、ソースプログラム１１０内でアドレス情報１６２１と対応する箇所が修正予測候補１６２３に書き換えられた場合、実行プログラム１３０内で記述される実行コード（コンパイル後のコード）が格納される。
【００２７】
プログラムデバッガ１７０は、実行プログラム１３０を実行制御し、デバッグ処理を行う。プログラムデバッガ１７０は、ソースプログラム１３０が修正された場合に、簡易修正情報１６０を用いて実行プログラム１３０を直接修正する。当該修正の詳細は、後述する。また、プログラムデバッガ１７０は、ソースプログラム１１０に対して簡易修正処理が可能な変更が行われたか否かを監視する。具体的には、プログラムデバッガ１７０は、ソースプログラム１１０内の数値演算または比較演算に修正があったか否かを監視する。さらに、プログラムデバッガ１７０は、当該修正の内容を検出する。たとえば、プログラムデバッガ１７０は、ソースプログラム１１０内の比較演算子"＜"が"！＝"に修正されたことを検出する。
【００２８】
なお、コンパイラ１４０及びプログラムデバッガ１７０は、ＣＰＵにコンピュータプログラムを実行させることにより実現するソフトウェアである。ＣＰＵが実行するコンピュータプログラムは、記録媒体に記録して提供することも可能であり、また、インターネットその他の通信媒体を介して伝送することにより提供することも可能である。また、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＯＭカートリッジ、バッテリバックアップ付きＲＡＭメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジ等が含まれる。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等が含まれる。
【００２９】
次に、本実施の形態にかかるプログラム開発支援装置によるコンパイル処理、及びデバッグ処理の流れを図３及び図４のフローチャートを用いて説明する。
【００３０】
コンパイラ１４０は、ソースプログラム１１０に対してフルコンパイルを開始する（Ｓ１０１）。コンパイラ１４０は、ソースプログラム１１０内の命令を一つずつ取り出し、当該命令が数値演算か否かを判定する（Ｓ１０２）。同様に、コンパイラ１４０は当該命令が数値演算か否かを判定する（Ｓ１０３）。ここで、当該命令が比較演算であるか否かの判定は、比較演算子テーブル１６１に含まれる演算子である場合に比較演算と判定する。当該命令が数値演算である場合（Ｓ１０２：Ｙｅｓ）、または比較演算である場合（Ｓ１０３：Ｙｅｓ）、コンパイラ１４０は、プログラムデバッガ１７０による簡易修正処理を実行するための処理を行う（Ｓ１０４、Ｓ１０５、Ｓ１０６）。
【００３１】
コンパイラ１４０は、ソースプログラム１１０の当該命令が実行プログラム１３０中で記述される箇所のアドレス情報をアドレス情報１６２１のデータとして格納する（Ｓ１０４）。また、コンパイラ１４０は、ソースプログラム１１０の当該命令の種別（数値演算か、比較演算か）を命令種別情報１６２２のデータとして格納する（Ｓ１０４）。
【００３２】
コンパイラ１４０は、ソースプログラム１１０の当該命令の命令種別に対応する修正候補を修正予測候補１６２３のデータとして格納する。たとえば、ソースプログラム１１０の当該命令が比較演算の"＝＝"である場合、修正予測候補１６２３のデータとして"！＝"等が格納される。すなわち、ソースプログラム１１０の当該命令が比較演算である場合には、他の比較演算の数だけ簡易修正情報テーブル１６２にステートメントが挿入される。また、コンパイラ１４０は、修正候補の命令を実行プログラム１３０内で表現した場合の実行コードが実行コード情報１６２４のデータとして格納される（Ｓ１０５）。
【００３３】
続いて、コンパイラ１４０は、当該命令に対応する実行プログラム１３０の箇所に対して、実行コード情報１６２４を用いた修正を行った場合に増加するサイズ分の領域を確保する（Ｓ１０６）。実行プログラム１３０において増加するサイズ分の領域の確保は、ＮＯＰ（No OPeration）命令を挿入することにより行う。増加するサイズの予測は、現在実行コード１３０に記述されている命令のサイズと、実行コード情報１６２４に格納されている命令のサイズと、を比較することにより行う。一のアドレス情報１６２１に対して複数の実行コード情報１６２４が格納されている場合、プログラムデバッガ１７０は、一番増加するサイズについてＮＯＰ命令で領域の確保をする。
【００３４】
コンパイラ１４０は、当該命令にかかる実行コードを実行プログラム１３０に書き込む（Ｓ１０７）。コンパイラ１４０は、当該命令がソースプログラム１１０の最後の命令か否かを判定する（Ｓ１０８）。最後の命令ではない場合（Ｓ１０８：Ｎｏ）、コンパイラ１４０は、Ｓ１０２からＳ１０７までの処理を繰り返し行う。
【００３５】
エンドユーザは、プログラムデバッガ１７０を操作し、作成された実行プログラム１３０をロードする（Ｓ１０９）。エンドユーザは、プログラムデバッガ１７０を操作して、ブレークポイントの設定等のデバッグに必要な設定を行う（Ｓ１１０）。そののち、プログラムデバッガ１７０は、実行プログラム１３０を実行し（Ｓ１１１）、実行結果の確認を行う（Ｓ１１２）。
【００３６】
プログラムデバッガ１７０は、ソースプログラム１１０に修正があったか否かを判定する（Ｓ１１３）。ここでソースプログラム１１０の修正があったか否かは、ソースプログラム１１０のタイムスタンプを参照することにより判定してもよい。また、ソースプログラム１１０の履歴を予め保持しておき、履歴を比較することにより行ってもよい。
【００３７】
ソースプログラム１１０の修正がなされた場合、プログラムデバッガ１７０は、当該修正が数値の変更または比較演算の修正か否かを判定する（Ｓ１１４）。数値の変更または比較演算の修正ではない場合（Ｓ１１４：Ｎｏ）、コンパイラ１４０による再度コンパイル処理を要する。数値の変更または比較演算の修正である場合（Ｓ１１４：Ｙｅｓ）、プログラムデバッガ１７０は、ソースプログラム１１０の修正箇所から当該箇所に対応する実行プログラム１３０のアドレスを算出する（Ｓ１１５）。この実行プログラム１３０のアドレスが、プログラムデバッガ１７０により直接修正されるアドレスとなる。
【００３８】
プログラムデバッガ１７０は、ソースプログラム１１０の修正箇所の命令種別及び修正内容と、Ｓ１１５で算出したアドレスを基に、修正予測候補１６２３のデータを選定する（Ｓ１１６）。たとえば、ソースプログラム１１０内の比較演算子"＜"が修正された場合、修正予測候補１６２３として"＜"、"＞＝"等が候補として選択される。そして、プログラムデバッガ１７０は、ソースプログラム１１０の修正内容を参照する。ここで、ソースプログラム１１０内の比較演算子"＜"が"＞"に修正されたことをプログラムデバッガ１７０が検出した場合、修正予測候補１６２３を"＞"に対応するものに決定する。
【００３９】
プログラムデバッガ１７０は、決定した修正予測候補１６２３に対応する実行コード情報１６２４を抽出する。プログラムデバッガ１７０は、抽出した実行コード情報１６２４の内容で、Ｓ１１５で算出したアドレスを書き換える（Ｓ１１７）。
【００４０】
以下に、本実施の形態にかかるプログラム開発支援装置によるコンパイル及びデバッグの具体例を、図５を用いて説明する。図５では、ソースプログラム１１０ａを修正し、ソースプログラム１１０ｂに変更している。なお、図５でのソースプログラムの修正内容は図８に示すプログラムの修正内容と同一の内容である。
【００４１】
本実施の形態にかかるコンパイラ１４０は、ソースプログラム１１０ａをコンパイルする場合に、数値演算または比較演算の修正により実行プログラム１３０ａ内で増加する可能性があるサイズの領域を予測する。プログラムデバッガ１７０は、修正が予測される箇所のアドレスに、当該予測により算出されたサイズの領域をＮＯＰ命令により確保している。この例では、アドレス０１０８番地の命令は、数値演算または比較演算の修正により最大６バイトになると予測されたため、修正前の２バイト分の領域に加えて４バイト分の領域が確保されるようにＮＯＰ命令を挿入している。
【００４２】
プログラムデバッガ１７０は、簡易修正情報テーブル１６２を参照し、実行プログラム１３０ａの０１０８番地に挿入するコードを選定する。この例では、簡易修正情報テーブル１６２内に"movea, 0x1000, r0, r10"という実行コードを書き込むための情報が格納されており、プログラムデバッガ１７０は実行プログラム１３０ａの０１０８番地に当該実行コードを書き込む。
【００４３】
プログラムデバッガ１７０によって実行プログラム１３０ａが変更された場合であっても、その他の命令のアドレスが変更されることはない。たとえば、ｆｕｎｃ２の実行プログラム１３０ａ内でのアドレス情報は、０１１０から変更されることはない。
【００４４】
一方、特許文献１に記載の技術を用いたコンパイル及びデバッグの具体例を、図８を用いて説明する。具体的なソースプログラム２１０の修正例を図８に示す。図８では、ソースプログラム２１０ａを修正し、ソースプログラム２１０ｂに変更している。部分コンパイラは修正が起きたため、ソースプログラム２１０ｂの修正にかかる箇所を部分的にコンパイルし、実行プログラム２２０ｂを生成する。ここで、実行プログラム２２０ｂは、ソースプログラム２１０ａから生成された実行プログラム２２０ａと比べ、０１０８番地に新たな命令が挿入される。これにより、実行プログラムのサイズが変更される。また、新たな命令が挿入されてことに伴いシンボルｆｕｎｃ２のアドレス情報が変化する。これにより、シンボル情報（デバッグ情報）を全て作り直す必要がある。
【００４５】
すなわち、特許文献１に記載のプログラム開発支援装置では、ソースプログラム２１０の修正後に部分コンパイルを実行する時間、部分コンパイルにより生成された実行プログラム２２０を再度読み込む時間、及びすべてのデバッグ情報を再作成して読み込む時間、がかかる。
【００４６】
続いて、本実施の形態にかかるプログラム開発支援装置を実施するための環境について説明する。図６は、本実施の形態にかかるプログラム開発支援装置を実施するためのシステム構成を示す図である。当該システムは、ホストマシン１０と、表示装置２０と、エミュレータ３０と、を備える構成である。
【００４７】
ホストマシン１０は、記憶媒体１１を備える。記憶媒体１１は、本実施の形態にかかるコンパイラ、デバッガ、実行プログラム等を格納する。エミュレータ３０は、実行プログラム１３０が実行される環境を模擬する処理装置である。たとえば、エミュレータ３０は、マイクロコンピュータを模擬する。エミュレータ３０は、ホストマシン１０により制御される。表示装置２０は、デバッグの結果等を表示するための装置である。
【００４８】
続いて、本実施の形態にかかるプログラム開発支援措置の効果について説明する。上述のように、コンパイラ１４０は、ソースプログラム１１０のフルコンパイルの時点等において、ソースプログラム１１０に修正がなされた場合に、実行プログラム１３０の増減サイズを予測する。コンパイラ１４０は、修正が予測される位置に空き領域を挿入した実行プログラム１３０を作成することにより、プログラムデバッガ１７０によって実行コードを実行プログラム１３０に挿入した場合であっても他の命令のアドレスに影響がない。すなわち、シンボル情報（デバッグ情報）を全て作り直す必要がなくなる。
【００４９】
また、コンパイラ１４０は、ソースプログラム１１０の修正時であっても再コンパイルを行うことなく実行プログラムを修正するための情報（簡易修正情報）を生成する。プログラムデバッガ１７０は、簡易修正情報を用いることにより実行プログラム１７０を直接書き換える（簡易修正処理）ことができる。これにより、コンパイラ１４０による再度のコンパイル処理、及びプログラムデバッガ１７０による実行プログラム１７０の再読み込み処理が不必要となる。また、プログラムデバッガ１７０により書き込まれる実行コードは、コンパイラ１４０により生成されているため、フルコンパイルとの整合性も確保される。
【００５０】
本実施の形態にかかるプログラム開発支援措置では、数値演算及び比較演算に修正があった場合に再コンパイルが不要となる。数値演算及び比較演算は、一般にソースプログラム１１０の修正頻度が高い。そのため、多くのソースプログラム１１０の修正において、再コンパイルが不要となる。
【００５１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００５２】
１００  プログラム開発支援装置
１１０  ソースプログラム
１２０  エディタ
１３０  実行プログラム
１４０  コンパイラ
１５０  コンパイル・リンク情報
１６０  簡易修正情報
１７０  プログラムデバッガ
【図１】
2011159169.tif 000003
【図２】
2011159169.tif 000004
【図３】
2011159169.tif 000005
【図４】
2011159169.tif 000006
【図５】
2011159169.tif 000007
【図６】
2011159169.tif 000008
【図７】
2011159169.tif 000009
【図８】
2011159169.tif 000010