(57)【要約】【課題】プログラム変換装置において、同じ値の初期値を多く含む変数がソースプログラムに多く含まれる場合にも、実行形式プログラムのコードサイズを削減する。【解決手段】変数初期値認識部１０３は、ソースプログラムに含まれている変数とその初期値とを認識する。変数配置場所決定部１０４は、前記認識された変数が初期値に特定値を多く含む変数である場合には、その変数を、プログラムの実行前に特定の値で初期化される特定値領域に配置すると決定する。変数特定値領域配置部１０６は、前記初期値に特定値を多く含む変数を前記特定値領域に配置し、更に、この変数の初期値に前記特定値以外の値が含まれる場合には、その特定値以外の値に対する初期化コードを生成する。従って、初期値に特定値を多く含む変数に対して、初期値データ全てを実行形式プログラムに含める必要がない。【選択図】図１
2009181558.tif 000002
【特許請求の範囲】
【請求項１】
入力されたソースプログラムを変換してオブジェクトプログラムを出力するプログラム変換装置であって、
前記ソースプログラムに含まれている変数とその初期値とを認識する認識手段と、
前記認識手段で認識された変数を、プログラムの実行前に特定の値で初期化される特定値領域に配置すると共に、前記変数の初期値に前記特定値以外の値が含まれていた場合に、その特定値以外の初期値に対する初期化コードを生成する変数特定値領域配置手段とを備えた
ことを特徴とするプログラム変換装置。
【請求項２】
前記請求項１記載のプログラム変換装置において、
更に、前記認識手段で認識された変数を、初期化データで初期化されるデータ領域に配置した場合のコストと、特定の値で初期化される特定値領域に配置した場合のコストとを計算し、その結果に応じて前記変数をデータ領域に配置するか特定値領域に配置するかを決定する配置場所決定手段を備えた
ことを特徴とするプログラム変換装置。
【請求項３】
前記請求項２記載のプログラム変換装置において、
前記コストは、コードサイズである
ことを特徴とするプログラム変換装置。
【請求項４】
前記請求項２記載のプログラム変換装置において、
前記コストは、前記変数の初期化に要する実行時間である
ことを特徴とするプログラム変換装置。
【請求項５】
前記請求項１〜４の何れか１項に記載のプログラム変換装置において、
更に、ユーザから、特定値以外の値が含まれている変数を前記特定値領域に配置するか否かの指定を受け付ける受付手段を備えた
ことを特徴とするプログラム変換装置。
【請求項６】
前記請求項１〜５の何れか１項に記載のプログラム変換装置において、
前記特定値は、０である
ことを特徴とするプログラム変換装置。
【請求項７】
前記請求項１〜６の何れか１項に記載のプログラム変換装置において、
更に、変数の初期値が即値でない場合に変数の初期値を計算する変数初期値計算手段を備えた
ことを特徴とするプログラム変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されたソースプログラムをオブジェクトプログラムに変換して出力するプログラム変換装置に関し、特に初期値を持つ変数をメモリ上のどの領域に配置するかの処理に関するものである。
【背景技術】
【０００２】
従来のプログラム変換装置は、入力されたソースプログラムに含まれている各変数が初期値を持つ場合、これらの初期値は、実行形式プログラムの実行開始時にＲＡＭ上の変数領域を初期化する際に用いるデータとして、実行形式プログラムに含めて出力している。そのため、ソースプログラム内に同じ初期値を持つ変数が多数記述されている場合、実行形式プログラムのコードサイズが大きくなるという問題がある。
【０００３】
前記の問題を解決するため、例えば、特許文献１では、初期化の際に初期化データを用いるのではなく、初期化コードを用いる方法を用いて、連続する変数定義に対して同じ初期値が多い場合に最初にその領域全体を同じ初期値で初期化するコードを生成し、その後に、異なる部分の初期化を行うコードを生成する方法を開示している。
【０００４】
また、特許文献２では、初期値が特定の値の変数を解析し、実行時に特定の値で初期化される領域にその変数を配置する方法を開示している。
【特許文献１】特許第３２１４６０８号公報
【特許文献２】特開２００４−２８０３１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１で説明している方法は、メモリに領域を確保する変数に適用する場合、初期値データの値による変数の配置場所を最適化しないため、特定の初期値を含む変数定義とそうでない変数定義が交互に現れるようなソースプログラムに対しては、十分に効果を発揮できないという問題が存在した。また、初期値が特定値である変数を一箇所にまとめて配置しないため、一箇所にまとめて配置する方法と比べて、特定値で初期化するためのコードが増加するという問題があった。図７のソースプログラムを入力とし、前記方法を用いて変換した場合の変換結果の一例の概念図を図１３に示す。
【０００６】
一方、特許文献２で説明している方法は、特定値で初期化される変数を一箇所にまとめて初期化することが可能となるため、初期値が特定値のみである変数の初期化においては、非常に効果的であって、前記特許文献１記載の方法よりも実行形式プログラムのコードサイズを削減できるものの、配列や構造体などにおいて、初期値の一部に特定値以外の値を含む変数には適用できないという問題があった。図７のソースプログラムを入力とし、前記方法を用いて変換した場合の変換結果の一例の概念図を図１４に示す。
【０００７】
本発明は前記問題に鑑みてなされたものであり、その目的は、プログラム変換装置において、同じ値の初期値を多く含む変数がソースプログラムに多数含まれる場合においても、実行形式プログラムのコードサイズを従来よりも有効に削減することにある。
【課題を解決するための手段】
【０００８】
前記目的を達成するため、本発明では、特定の値の初期値を多く含む変数をも、実行時に特定の値で初期化される領域に配置し、その特定値以外の値の初期値については初期化コードを生成することとする。
【０００９】
具体的に、請求項１記載の発明のプログラム変換装置は、入力されたソースプログラムを変換してオブジェクトプログラムを出力するプログラム変換装置であって、前記ソースプログラムに含まれている変数とその初期値とを認識する認識手段と、前記認識手段で認識された変数を、プログラムの実行前に特定の値で初期化される特定値領域に配置すると共に、前記変数の初期値に前記特定値以外の値が含まれていた場合に、その特定値以外の初期値に対する初期化コードを生成する変数特定値領域配置手段とを備えたことを特徴とする。
【００１０】
請求項２記載の発明は、前記請求項１記載のプログラム変換装置において、更に、前記認識手段で認識された変数を、初期化データで初期化されるデータ領域に配置した場合のコストと、特定の値で初期化される特定値領域に配置した場合のコストとを計算し、その結果に応じて前記変数をデータ領域に配置するか特定値領域に配置するかを決定する配置場所決定手段を備えたことを特徴とする。
【００１１】
請求項３記載の発明は、前記請求項２記載のプログラム変換装置において、前記コストは、コードサイズであることを特徴とする。
【００１２】
請求項４記載の発明は、前記請求項２記載のプログラム変換装置において、前記コストは、前記変数の初期化に要する実行時間であることを特徴とする。
【００１３】
請求項５記載の発明は、前記請求項１〜４の何れか１項に記載のプログラム変換装置において、更に、ユーザから、特定値以外の値が含まれている変数を前記特定値領域に配置するか否かの指定を受け付ける受付手段を備えたことを特徴とする。
【００１４】
請求項６記載の発明は、前記請求項１〜５の何れか１項に記載のプログラム変換装置において、前記特定値は、０であることを特徴とする。
【００１５】
請求項７記載の発明は、前記請求項１〜６の何れか１項に記載のプログラム変換装置において、更に、変数の初期値が即値でない場合に変数の初期値を計算する変数初期値計算手段を備えたことを特徴とする。
【００１６】
以上により、請求項１〜７記載の発明では、特定の値の初期値を多く含む変数を、実行時に特定の値で初期化される領域に配置し、その特定値以外の値の初期値については初期化コードを生成するので、特定値の初期値を多く含む変数の初期化のためのコードサイズを削減できる。
【００１７】
特に、請求項２記載の発明では、変数をデータ領域に配置するか特定値領域に配置するかを自動で判断することができるので、プログラマによる指定なしに、コストを最小とする最適なデータ配置のオブジェクトファイルを得ることができる。
【００１８】
また、請求項３記載の発明では、コードサイズを最小とするデータ配置のオブジェクトファイルを得ることができる。
【００１９】
更に、請求項４記載の発明では、変数の初期化に要する実行時間を最小とするデータ配置のオブジェクトファイルを得ることができる。
【００２０】
加えて、請求項５記載の発明では、変数をデータ領域と特定値領域との何れに配置するかをプログラマが指定可能となるので、プログラマが望む変数配置のオブジェクトファイルを得ることができる。
【００２１】
また、請求項６記載の発明では、特定値領域を業界標準のオブジェクトフォーマットExecutable and Linkable Format（ＥＬＦ）の．ｂｓｓセクションと対応付けすることが可能となり、生成されるオブジェクトを業界標準フォーマットに準拠させることができるようになる。尚、．ｂｓｓセクションは、プログラムが動き出す前にデータを０で初期化するセクションであり、オブジェクトファイル内に領域を持たないセクションとしてＥＬＦで定義されている。
【００２２】
更に、請求項７記載の発明では、Ｃ＋＋言語等により記述された初期化関数（コンストラクタ）により、変数の初期化が行われる変数に対しても、初期化のためのコードサイズを削減できる。
【発明の効果】
【００２３】
以上説明したように、請求項１〜７記載の発明のプログラム変換装置によれば、初期値に特定値を多く含む変数に対しても、個々の初期値全てをデータとして実行形式プログラムに含める必要がなくなるので、その分、実行形式プログラムのコードサイズを削減することができる効果を奏する。
【発明を実施するための最良の形態】
【００２４】
以下、本発明のプログラム変換装置の実施形態について図面を用いて説明する。
【００２５】
＜構成＞
図１は、本実施形態におけるプログラム変換装置の構成図である。図１には、便宜上、プログラム変換装置１０２に入力されるソースプログラム１０１、及びプログラム変換装置１０２から出力されたオブジェクトプログラム１０７を記載している。プログラム変換装置１０２は、コンピュータに備えられたメモリに格納されたプログラムがＣＰＵにより実行されることにより、入力されたソースプログラム１０１をオブジェクトプログラム１０７に変換して出力する、いわゆるコンパイラであって、ソースプログラム中の変数の定義を変換するために、変数初期値認識部１０３、変数配置場所決定部１０４、変数データ領域配置部１０５及び変数特定値領域配置部１０６を具備する。
【００２６】
前記変数初期値認識部(認識手段)１０３は、入力されたソースプログラム１０１に含まれている各変数のうち、メモリに領域を確保する変数（例えば、Ｃ言語では、外部変数と静的変数）と、その初期値とを認識する。
【００２７】
また、前記変数配置場所決定部（配置場所決定手段）１０４は、変数初期値認識部１０３で認識された変数の初期値の値に基づき、変数をデータ領域に配置するか特定値領域に配置するかを決定する。
【００２８】
更に、前記変数データ領域配置部１０５は、変数配置場所決定部１０４が変数をデータ領域に配置すると決定した場合に、変数をデータ領域に配置すると共に、その領域にコピーするための初期値データを生成する。変数特定値領域配置部（変数特定値領域配置手段）１０６は、前記変数配置場所決定部１０４が変数を特定値領域に配置すると決定した場合に、変数を特定値領域に配置すると共に、変数の初期値に特定値以外の値が含まれていた場合には、その値による初期化コードを生成する。
【００２９】
尚、前記以外のプログラム変換装置１００の構成要素（例えば、構文解析部、中間コード最適化部、レジスタ割り付け部等）については、一般的なプログラム変換装置で用いられているものと同じであるので、ここでは、説明を省略する。
【００３０】
＜動作＞
次に、上述の変数配置場所決定部１０４の動作について、図２のフローチャートを用いて説明する。
【００３１】
先ず、変数配置場所決定部１０４は、配置場所を決定する変数に対して、変数をデータ領域に配置した場合に必要となる初期値データのサイズを計算する（ステップＳ２０１）。ここで、初期値データサイズは、前記変数のサイズと等しく、変数のサイズがｘバイトの初期値データのサイズは、ｘバイトとなる。次に、変数を特定値領域に配置した場合に必要となる特定値以外の値による初期化に必要な初期化コードのサイズを計算する（ステップＳ２０２）。例えば、メモリに即値をストアするコードのサイズがｎバイトであり、変数の初期値に含まれる特定値以外の値の数がｙ個である場合の初期化コードの総サイズは、ｎ＊ｙバイトとなる。次に、データ領域に配置した場合のサイズと特定値領域に配置した場合のサイズを比較して（ステップＳ２０３）、特定値領域に配置する方がサイズが小さい場合には、変数を特定値領域に配置することを決定する（ステップＳ２０４）。そうでない場合には、変数をデータ領域に配置することを決定する（ステップＳ２０５）。
【００３２】
尚、図２のフローチャートでは、コードサイズに着目し、コードサイズの小さくなる配置を選択する方法を示したが、コードサイズの代わりに、プログラムの実行時に、初期化に要する実行サイクル数、つまり、実行時間が小さくなる配置を選択するようにしても良い。図３に、実行サイクル数に着目した場合の変数配置場所決定部１０４の動作を示すフローチャートを示す。
【００３３】
また、データ領域と特定値領域との何れに配置するのかを決定するのに、変数の初期値に含まれる特定値以外の値の数を使用しても良い。図４に、変数の初期値に含まれる特定値以外の値の数に着目した場合の変数配置場所決定部１０４の動作を示すフローチャートを示す。
【００３４】
更に、プログラム変換装置に与えられたオプションによって、コードサイズに着目して配置場所を決定するのか、実行サイクル数に着目して配置場所を決定するのかを変更するようにしても良い。例えば、コードサイズ優先で最適化を行うオプションが与えられた場合には、図２のフローチャートで配置場所を決定し、実行速度優先で最適化を行うオプションが与えられた場合には、図３のフローチャートで配置場所を決定するようにしても良い。
【００３５】
加えて、特定の変数に対して、特定値領域に配置する旨の指定がソースプラグラム中に記述されているか、又はオプションで指定されている場合には、無条件で、特定値領域に配置するようにして、その他の場合は、コードサイズに着目して配置場所を決定するようにしても良い。図５に、前記決定方法を選択した場合の変数配置場所決定部１０４の動作を示すフローチャートを示す。
【００３６】
次に、上述の変数特定値領域配置部１０６の動作について、図６のフローチャートを用いて説明する。
【００３７】
先ず、変数を特定値領域に配置する（ステップＳ６０１）。具体的には、特定値領域に変数のサイズ分の領域を確保する。次に、変数の初期値に特定値以外の値で未だ初期化コードを生成していない値が存在するか否かを判定する（ステップＳ６０２）。存在していた場合は、その値による初期化コードを生成し（ステップＳ６０３）、ステップＳ６０２の処理に戻る。存在していない場合は、その変数に対する変数特定値領域配置部１０６の処理は終了する。
【００３８】
変数初期値認識部１０３及び変数データ領域配置部１０５の動作については、一般的なプログラム変換装置で用いられているものと同じであるので、ここでは、説明を省略する。
【００３９】
＜具体例＞
以下、本実施形態における変数配置場所決定部１０４及び変数特定値領域配置部１０６の具体的な動作について、図７に示したソースプログラムを入力とした場合を例として説明する。
【００４０】
ここで、特定値は０であるとし、ｉｎｔ型（整数型）のサイズは４バイトであるとする。また、即値をメモリにストアするのに必要なコードのサイズは８バイトであるとする。
【００４１】
最初に、変数ａｒｒａｙ１に対する、変数配置場所決定部１０４による配置場所を決定する処理を説明する。先ず、データ領域に配置した場合のサイズを計算する（ステップＳ２０１）。ここで、ａｒｒａｙ１は、要素数が５であるｉｎｔ型の配列であるので、サイズは、４バイト＊５で、２０バイトとなる。次に、特定値領域に配置した場合のサイズを計算する（ステップＳ２０２）。ここで、ａｒｒａｙ１には０以外の値の初期値は存在しないので、サイズは、８バイト＊０で、０バイトとなる。次に、データ領域に配置した場合のサイズと特定値領域に配置した場合のサイズとを比較する（ステップＳ２０３）。ここで、特定値領域に配置した場合の方のサイズが小さいので、配置場所を特定値領域に決定する（ステップＳ２０４）。
【００４２】
次に、変数ａｒｒａｙ２に対する、変数配置場所決定部１０４による配置場所を決定する処理を説明する。先ず、データ領域に配置した場合のサイズを計算する（ステップＳ２０１）。ここで、ａｒｒａｙ２は、要素数が５であるｉｎｔ型の配列であるので、サイズは、４バイト＊５で、２０バイトとなる。次に、特定値領域に配置した場合のサイズを計算する（ステップＳ２０２）。ここで、ａｒｒａｙ２の初期値で０でないものの数は４であるので、サイズは、８バイト＊４で、３２バイトとなる。次に、データ領域に配置した場合のサイズと特定値領域に配置した場合のサイズとを比較する（ステップＳ２０３）。ここで、特定値領域に配置した場合の方のサイズが大きいので、配置場所をデータ領域に決定する（ステップＳ２０５）。
【００４３】
次に、変数ａｒｒａｙ３に対する、変数配置場所決定部１０４による配置場所を決定する処理を説明する。先ず、データ領域に配置した場合のサイズを計算する（ステップＳ２０１）。ここで、ａｒｒａｙ３は、要素数が５であるｉｎｔ型の配列であるので、サイズは、４バイト＊５で、２０バイトとなる。次に、特定値領域に配置した場合のサイズを計算する（ステップＳ２０２）。ここで、ａｒｒａｙ３の初期値で０でないものの数は１であるので、サイズは、８バイト＊１で、８バイトとなる。次に、データ領域に配置した場合のサイズと特定値領域に配置した場合のサイズとを比較する（ステップＳ２０３）。ここで、特定値領域に配置した場合の方のサイズが小さいので、配置場所を特定値領域に決定する（ステップＳ２０４）。
【００４４】
変数ａｒｒａｙ４については、初期値がａｒｒａｙ１と同じであるので、説明を省略する。
【００４５】
次に、変数ａｒｒａｙ１に対する変数特定値領域配置部１０６による処理を説明する。先ず、変数ａｒｒａｙ１を特定値領域に配置するために、特定値領域に変数のサイズ２０バイトを確保する（ステップＳ６０１）。尚、この領域は、実際には、プログラムの実行時にＲＡＭ上に確保されるものであり、オブジェクトプログラムのサイズには含まれない。これは、データ領域の場合も同様である。データ領域に配置した場合は、別途、プログラムの実行時にＲＡＭ上のデータ領域に値をコピーする初期値データが必要となる。初期値データは、オブジェクトプログラムのサイズに含まれる。次に、未だ初期化コードを生成していない特定値以外の初期値が存在するかどうか判定する（ステップＳ６０２）。ここで、ａｒｒａｙ１の初期値は、全て０であるので、そのような初期値は存在せず、変数特定値領域配置部１０６は、変数ａｒｒａｙ１に対する処理を終える。
【００４６】
次に、変数ａｒｒａｙ３に対する、変数特定値領域配置部１０６による処理を説明する。先ず、変数ａｒｒａｙ３を特定値領域に配置するために、特定値領域に変数のサイズ２０バイトを確保する（ステップＳ６０１）。次に、未だ初期化コードを生成していない特定値以外の初期値が存在するか判定する（ステップＳ６０２）。ここで、ａｒｒａｙ３の初期値で０でないものとして、ａｒｒａｙ３［２］の初期値１が見つかるので、”ａｒｒａｙ３［２］＝１”に相当する初期化コードを生成する（ステップＳ６０３）。次に、未だ初期化コードを生成していない特定値以外の初期値が存在するか判定する（ステップＳ６０２）。そのような初期値は存在せず、変数特定値領域配置部１０６は変数ａｒｒａｙ３ に対する処理を終える。
【００４７】
変数ａｒｒａｙ４に対する処理は、変数ａｒｒａｙ１と同様であるので、説明を省略する。
【００４８】
以上の処理の結果、生成されるオブジェクトファイルの概念図を図８に示す。ａｒｒａｙ３を特定値領域に配置し、特定値以外の初期値に対しては、初期化コードを生成するようにしたので、ａｒｒａｙ３をデータ領域に配置する場合（図１４）に比べて、コードサイズが削減される。ここで、初期化コードは、プログラムの実行前に実行される初期化関数の形式で生成される。図８の関数”＿ｉｎｉｔ＿ｆｕｎｃ”がそれにあたる。図８では、分かり易さのため、初期化コードをＣ言語の関数定義の形式で記述しているが、実際には、それを変換した結果の機械語命令コードが、オブジェクトファイルには格納される。尚、初期化関数のコードを生成する方法は、Ｃ＋＋言語等において、変数の動的初期化を実現する方法として、一般に用いられる方法である。
【００４９】
以上により、本実施形態によれば、初期値に特定値を多く含む変数に対して、個々の初期値全てをデータとして実行形式プログラムに含める必要がなくなるので、その分、実行形式プログラムのコードサイズを削減することができる。
【００５０】
以上、本発明に係るプログラム変換装置について、実施形態に基づいて説明したが、本発明はこの実施形態に限られないことは勿論である。即ち、例えば、
（１）本実施形態におけるプログラム変換装置は、更に、プログラマから、変数を前記特定値領域に配置するか否かの指定を受け付ける変数配置指定受付部（受付手段）（図示せず）を備えていても良い。例えば、ソースプログラム上で、“#pragma _position_bss 変数名”と記述された変数を認識し、その変数を特定値領域に配置するように決定しても良い。また、“#pragma _position_no_bss 変数名”と記述された変数を認識し、その変数を特定値領域に配置しないように決定しても良い。また、オプション“-mposition-bss-diffvalue-num=N”を認識し、特定値と異なる初期値がＮ個未満の変数を特定値領域に配置するように決定しても良い。具体例として、#pragmaにより変数の配置場所指定が記述された図９のソースプログラムを変換した結果のオブジェクトファイルの概念図を図１０に示す。
【００５１】
（２）本実地の形態におけるオブジェクトファイルのフォーマットとして、Executable and Linkable Format（ＥＬＦ）を採用し、特定値を０とし、特定値領域を.bssセクションとしても良い。これにより、標準のオブジェクトフォーマットで、本発明を実現できる。
【００５２】
（３）本実施形態におけるプログラム変換装置は、更に、変数の初期値が即値でない場合に変数の初期値を計算する変数初期値計算部（変数初期値計算手段）（図示せず）を備えていても良い。ソースプログラム上で、初期値が即値で表されていない変数に対して、初期値を計算する方法については周知であり、例えば、特開２０００−４０００５号公報で開示されている方法を用いれば良い。これにより、Ｃ＋＋言語等の初期化が初期化関数（Ｃ＋＋言語ではコンストラクタ）により行われる変数に対しても、初期化のためのコードサイズを削減することが可能となる。具体例として、図１１のソースプログラムを変換した結果のオブジェクトファイルの概念図を図１２に示す。
【００５３】
（４）本実施形態における処理はソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをＣＤ−ＲＯＭなどの記録媒体に記録して流布しても良い。
【００５４】
本発明は、以上の実施形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは、言うまでもない。
【産業上の利用可能性】
【００５５】
以上説明したように、本発明にかかるプログラム変換装置は、コードサイズを削減できる効果を奏し、携帯電話やＰＤＡ（Personal Digital Assistant）等のコードサイズの小さなオブジェクトを必要とする組み込み機器用のプログラム装置等として有用である。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施形態のプログラム変換装置の構成を示す図である。
【図２】同プログラム変換装置に備える変数配置場所決定部の動作を示すフローチャート図である。
【図３】同変数配置場所決定部の動作の別の例を示すフローチャート図である。
【図４】同変数配置場所決定部の動作の更に別の例を示すフローチャート図である。
【図５】同変数配置場所決定部の動作の更に他の例を示すフローチャート図である。
【図６】同プログラム変換装置に備える変数特定値配置部の動作を示すフローチャート図である。
【図７】ソースプログラムの一例を示す図である。
【図８】図７に示したソースプログラムを本実施形態のプログラム変換装置で変換した結果のオブジェクトプログラムの概念図である。
【図９】ソースプログラムの別の一例を示す図である。
【図１０】図９に示したソースプログラムを本実施形態のプログラム変換装置で変換した結果のオブジェクトプログラムの概念図である。
【図１１】ソースプログラムの更に別の一例を示す図である。
【図１２】図１１に示したソースプログラムを本実施形態のプログラム変換装置で変換した結果のオブジェクトプログラムの概念図である。
【図１３】図７に示したソースプログラムを従来のプログラム変換装置で変換した結果のオブジェクトプログラムの概念図である。
【図１４】図７に示したソースプログラムを従来の別のプログラム変換装置で変換した結果のオブジェクトプログラムの概念図である。
【符号の説明】
【００５７】
１０１      ソースプログラム
１０２      プログラム変換装置
１０３      変数初期値認識部（認識手段）
１０４      変数配置場所決定部（配置場所決定手段）
１０５      変数データ領域配置部
１０６      変数特定値領域配置部（変数特定値領域配置手段）
１０７      オブジェクトプログラム
【図１】
2009181558.tif 000003
【図２】
2009181558.tif 000004
【図３】
2009181558.tif 000005
【図４】
2009181558.tif 000006
【図５】
2009181558.tif 000007
【図６】
2009181558.tif 000008
【図７】
2009181558.tif 000009
【図８】
2009181558.tif 000010
【図９】
2009181558.tif 000011
【図１０】
2009181558.tif 000012
【図１１】
2009181558.tif 000013
【図１２】
2009181558.tif 000014
【図１３】
2009181558.tif 000015
【図１４】
2009181558.tif 000016