(57)【要約】      （修正有）【課題】広域変数をショートダイレクトアドレッシング可能メモリ領域（第１領域）に効率的に配置するのを支援する。【解決手段】コンパイラ１は、ソースコード２を翻訳し再配置可能オブジェクト４を生成し、メモリ参照命令サイズテーブル９に基づき広域変数参照情報ファイル３を生成する。広域変数一覧表示部５は、生成されたオブジェクト４とファイル３とに基づき実行可能オブジェクトのサイズ予測をする。テーブル９は、広域変数の配置領域の違いによる命令サイズの変化量を記述する。ファイル３は、広域変数の配置領域の違いによる参照命令サイズの変化量を記述する。変更広域変数の入力に基づき、算出結果から変更広域変数のコードサイズ差を取得して、オブジェクトのサイズを調整し、実行可能オブジェクトサイズの予測値を算出して表示する。【選択図】図３
2011107848.tif 000002
【特許請求の範囲】
【請求項１】
複数のソースコードを翻訳して複数の再配置可能オブジェクトを生成し、メモリ参照命令サイズテーブル及び前記複数のソースコードに基づいて複数の広域変数参照情報ファイルを生成するコンパイラと、
前記複数の再配置可能オブジェクトと前記複数の広域変数参照情報ファイルとに基づいて、前記複数の再配置可能オブジェクトをリンクして生成される実行可能オブジェクトのサイズ予測を実行する広域変数一覧表示部と
を具備し、
前記メモリ参照命令サイズテーブルは、広域変数がショートダイレクトアドレッシング可能領域としての第１領域に配置されている場合に生成する命令のコードサイズと、当該広域変数が前記第１領域以外のメモリ領域としての第２領域に配置されている場合に生成する命令のコードサイズとのコードサイズ差を、メモリ参照命令ごとに記述し、
前記ファイル広域変数参照情報ファイルは、前記ソースコードに含まれる各広域変数が前記第１領域に配置されていると仮定した場合における当該広域変数を参照するのに要するコードサイズと、前記広域変数が前記第２領域に配置されていると仮定した場合における当該広域変数を参照するのに要するコードサイズとのコードサイズ差を示し、
前記広域変数一覧表示部は、
前記広域変数参照情報ファイルに基づいて、前記各広域変数と、当該各広域変数の配置される領域と、当該各広域変数のコードサイズ差との関係を算出し、
前記各広域変数のうちの配置される領域を変更される変更広域変数の入力に基づいて、前記算出結果から前記変更広域変数のコードサイズ差を取得して、当該コードサイズ差を用いて、前記変更広域変数を含む前記再配置可能オブジェクトのコードサイズを調整し、
調整後の前記複数の再配置可能オブジェクトの前記コードサイズに基づいて、リンクと同じアルゴリズムを用いて実行可能オブジェクトサイズの予測値を算出する
実行可能オブジェクトのサイズ予測装置。
【請求項２】
請求項１に記載の実行可能オブジェクトのサイズ予測装置において、
前記広域変数一覧表示部は、
前記再配置可能オブジェクトに基づいて、前記再配置可能オブジェクトと、当該再配置可能オブジェクトに含まれるセグメントと、当該セグメントのサイズとを関連付けたオブジェクトサイズ情報テーブルを生成し、
前記広域変数参照情報ファイルに基づいて、前記各広域変数の配置される領域を変更した場合の、前記再配置可能オブジェクトの前記コードサイズ差を示す広域変数参照情報マトリクスを生成し、
前記オブジェクトサイズ情報テーブルと、前記広域変数参照情報マトリクスとに基づいて、前記各広域変数と、当該各広域変数の配置される領域と、当該各広域変数の前記コードサイズ差との関係を算出する
実行可能オブジェクトのサイズ予測装置。
【請求項３】
請求項１に記載の実行可能オブジェクトのサイズ予測装置において、
前記広域変数一覧表示部は、前記変更広域変数に基づいて、前記第１領域に配置する広域変数を指定する広域変数配置指定ファイルを生成する
実行可能オブジェクトのサイズ予測装置。
【請求項４】
請求項１に記載の実行可能オブジェクトのサイズ予測装置において、
前記広域変数一覧表示部は、
前記算出結果を表示装置に表示し、
前記表示に対してユーザが入力装置を介して入力する前記変更広域変数を受信する
実行可能オブジェクトのサイズ予測装置。
【請求項５】
請求項４に記載の実行可能オブジェクトのサイズ予測装置において、
前記広域変数一覧表示部は、
前記調整後の前記複数の再配置可能オブジェクトの前記コードサイズを前記表示装置に表示し、
前記第１領域の残量が不足した場合、残量不足の旨を前記表示装置に表示する
実行可能オブジェクトのサイズ予測装置。
【請求項６】
請求項４又は５に記載の実行可能オブジェクトのサイズ予測装置において、
前記広域変数一覧表示部は、
前記予測値を前記表示装置に表示し、
前記予測値がＲＯＭサイズを超えた場合、サイズオーバーした旨を前記表示装置に表示する
実行可能オブジェクトのサイズ予測装置。
【請求項７】
複数のソースコードを翻訳して複数の再配置可能オブジェクトを生成するステップと、
メモリ参照命令サイズテーブル及び前記複数のソースコードに基づいて複数の広域変数参照情報ファイルを生成するステップと、
前記複数の再配置可能オブジェクトと前記複数の広域変数参照情報ファイルとに基づいて、前記複数の再配置可能オブジェクトをリンクして生成される実行可能オブジェクトのサイズ予測を実行するステップと
を具備し、
前記メモリ参照命令サイズテーブルは、広域変数がショートダイレクトアドレッシング可能領域としての第１領域に配置されている場合に生成する命令のコードサイズと、当該広域変数が前記第１領域以外のメモリ領域としての第２領域に配置されている場合に生成する命令のコードサイズとのコードサイズ差を、メモリ参照命令ごとに記述し、
前記ファイル広域変数参照情報ファイルは、前記ソースコードに含まれる各広域変数が前記第１領域に配置されていると仮定した場合における当該広域変数を参照するのに要するコードサイズと、前記広域変数が前記第２領域に配置されていると仮定した場合における当該広域変数を参照するのに要するコードサイズとのコードサイズ差を示し、
前記サイズ予測を実行するステップは、
前記広域変数参照情報ファイルに基づいて、前記各広域変数と、当該各広域変数の配置される領域と、当該各広域変数のコードサイズ差との関係を算出するステップと、
前記各広域変数のうちの配置される領域を変更される変更広域変数の入力に基づいて、前記算出結果から前記変更広域変数のコードサイズ差を取得して、当該コードサイズ差を用いて、前記変更広域変数を含む前記再配置可能オブジェクトのコードサイズを調整するステップと、
調整後の前記複数の再配置可能オブジェクトの前記コードサイズに基づいて、リンクと同じアルゴリズムを用いて実行可能オブジェクトサイズの予測値を算出するステップと
を備える
実行可能オブジェクトのサイズ予測方法。
【請求項８】
請求項７に記載の実行可能オブジェクトのサイズ予測方法において、
前記関係を算出するステップは、
前記再配置可能オブジェクトに基づいて、前記再配置可能オブジェクトと、当該再配置可能オブジェクトに含まれるセグメントと、当該セグメントのサイズとを関連付けたオブジェクトサイズ情報テーブルを生成するステップと、
前記広域変数参照情報ファイルに基づいて、前記各広域変数の配置される領域を変更した場合の、前記再配置可能オブジェクトの前記コードサイズ差を示す広域変数参照情報マトリクスを生成するステップと、
前記オブジェクトサイズ情報テーブルと、前記広域変数参照情報マトリクスとに基づいて、前記各広域変数と、当該各広域変数の配置される領域と、当該各広域変数の前記コードサイズ差との関係を算出するステップと
を含む
実行可能オブジェクトのサイズ予測方法。
【請求項９】
請求項７に記載の実行可能オブジェクトのサイズ予測方法において、
前記予測値を算出するステップは、前記変更広域変数に基づいて、前記第１領域に配置する広域変数を指定する広域変数配置指定ファイルを生成するステップを含む
実行可能オブジェクトのサイズ予測方法。
【請求項１０】
請求項７に記載の実行可能オブジェクトのサイズ予測方法において、
前記コードサイズを調整するステップは、
前記算出結果を表示装置に表示するステップと、
前記表示に対してユーザが入力装置を介して入力する前記変更広域変数を受信するステップと
を含む
実行可能オブジェクトのサイズ予測方法。
【請求項１１】
請求項１０に記載の実行可能オブジェクトのサイズ予測方法において、
前記コードサイズを調整するステップは、
前記調整後の前記複数の再配置可能オブジェクトの前記コードサイズを前記表示装置に表示するステップと、
前記第１領域の残量が不足した場合、残量不足の旨を前記表示装置に表示するステップと
を更に含む
実行可能オブジェクトのサイズ予測方法。
【請求項１２】
請求項１０又は１１に記載の実行可能オブジェクトのサイズ予測方法において、
前記予測値を算出するステップは、
前記予測値を前記表示装置に表示するステップと、
前記予測値がＲＯＭサイズを超えた場合、サイズオーバーした旨を前記表示装置に表示するステップと
を含む
実行可能オブジェクトのサイズ予測方法。
【請求項１３】
請求項７乃至１２のいずれか一項に記載の実行可能オブジェクトのサイズ予測方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行可能オブジェクトのサイズ予測装置、そのサイズ予測方法、及びそのプログラムに関する。
【背景技術】
【０００２】
少ないコード量でアクセスできる任意のメモリ領域である、ショートダイレクトアドレッシング可能メモリ領域が知られている。ショートダイレクトアドレッシング可能メモリ領域を持つデバイスの場合、ショートダイレクトアドレッシング可能メモリ領域をアクセスする命令は、通常のメモリ領域をアクセスする命令よりも命令サイズが小さい。そのため、ショートダイレクトアドレッシング可能メモリ領域に配置された広域変数は、通常のアドレッシングでアクセスするメモリ領域に配置された変数よりも少ないコード量でアクセスすることができる。（特許文献１、非特許文献１）。そのため、プログラム中からショートダイレクトアドレッシング可能メモリ領域に配置する広域変数を適切に選び出すことにより、プログラムのコード効率を向上させることができる。
【０００３】
ショートダイレクトアドレッシング可能メモリ領域に配置する広域変数を指定する方法として、ソースコード中で広域変数にショートダイレクトアドレッシング可能メモリ領域へ配置することを指示する記述を追記する方法がある（非特許文献２）。以下、図１を参照して、そのショートダイレクトアドレッシング可能メモリ領域配に広域変数を配置指定するための情報処理システムについて説明する。図１は、情報処理システムの構成を示すブロック図である。この図は、情報処理システムの構成を示し、更にショートダイレクトアドレッシング可能メモリ領域に、広域変数を配置指定するときの各ツールと各入出力ファイルとの関係を示している。この情報処理システムは、コンパイラ１０１とリンカ１０７とを具備している。コンパイラ１０１は、入力されたソースコード１０２−１〜１０２−３を翻訳し、再配置可能オブジェクト１０４−１〜１０４−３を生成する。このとき、ソースコード１０２中でショートダイレクトアドレッシング可能メモリ領域に配置する指定がなされている広域変数に対しては、ショートダイレクトアドレッシングでアクセスするコードを生成する。リンカ１０７は、コンパイラ１０１で生成された複数の再配置可能オブジェクト１０４−１〜１０４−３を結合し、外部参照の解決、絶対アドレスの決定を行い、実行可能オブジェクト１０８を生成する。
【０００４】
次に、上記情報処理システムの動作について説明する。図２は、上記情報処理システムの動作を示すフローチャートである。この図は、ショートダイレクトアドレッシング可能メモリ領域に、広域変数を配置するための処理の流れを示している。まず、ソースコード１０２−１〜１０２−３について、コンパイルエラーやサイズオーバー以外のリンクエラーは解決されているものとする。ユーザは、情報処理システムへの入力操作により、ソースコード１０２−１〜１０２−３を修正し、広域変数にショートダイレクトアドレッシング可能メモリ領域へ配置することを指示する記述を追記する（ステップＳ１０１）。次に、ユーザは、情報処理システムへの入力操作により、ソースコード１０２−１〜１０２−３のビルドを実行する（ステップＳ１０２）。続いて、コンパイラ１０１は、ソースコード１０２−１〜１０２−３をコンパイルして再配置可能オブジェクト１０４−１〜１０４−３を生成する（ステップＳ１０３）。次に、リンカ１０７は、再配置可能オブジェクトをリンクして、実行可能オブジェクト１０８を生成する（ステップＳ１０４）。その後、ユーザは、実行可能オブジェクト１０８のコードサイズが所定の条件を満足するか否かを判定する（ステップＳ１０５）。判定の結果、実行可能オブジェクト１０８のコードサイズが所定の条件を満足しない場合（ステップＳ１０５：ＮＯ）、上記ステップＳ１０１〜Ｓ１０４を繰り返す。実行可能オブジェクト１０８のコードサイズが所定の条件を満足する場合（ステップＳ１０５：ＹＥＳ）、ショートダイレクトアドレッシング可能メモリ領域に広域変数を配置するための処理を終了する。
【０００５】
その他関連する技術として、特許文献２（特開２００６−３１１６１０号公報）及び特許文献３（特開平０９−１８６７０３号公報）には、有線接続通信網システムと無線アクセスシステムとからなる、データをセル（Ｃ１〜Ｃ１０）として運ぶ遠隔通信システムにおいて、該無線システム内での内部制御のためにセル向けデータを転送するためにセルのヘッダフィールドに使用可能なスペースが残るように、該無線システム内ではショートアドレッシング方式を使用する技術が記載されている。特許文献４（特開平１０−０２７１２９号公報）には、増設ＲＡＭが存在する場合ＣＰＵは増設ＲＡＭの上位ショートアドレッシング領域にアクセスして、増設ＲＡＭ６が存在しない場合ＣＰＵは切り換え設定信号によりアドレスデコーダ部をコントロールすることによって、標準ＲＡＭの最上位に存在する代替領域にアクセスする技術が記載されている。特許文献５（特開平０５−３５４９５号公報）には、高速アクセスメモリを有するマイクロコンピュータで、変数を変数の処理順に高速アクセスメモリに割り付け、高速アクセスメモリに割り付けることができない変数については、通常のメモリに割り付ける技術が記載されている。特許文献６（特開平１０−１２４３２５号公報）には、各変数のアクセス頻度に応じて配置領域を決定する技術が記載されている。特許文献７（特開２００４−３８５９７号公報）及び特許文献８（特開２００６−１１４０６９号公報）には、１命令でアクセスできるグローバル領域を有するプロセッサ用のコンパイラで、変数ごとに１命令でアクセスできる領域又はそれ以外の領域への配置を指定可能とする技術が記載されている。特許文献９（特開２００６−５８９９１号公報）には、プログラムのサイズや実行サイクルを削減するために、アクセス回数の多いデータをベースアドレスに近い位置に配置する技術が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−０９９４２２号公報
【特許文献２】特開２００６−３１１６１０号公報
【特許文献３】特開平０９−１８６７０３号公報
【特許文献４】特開平１０−０２７１２９号公報
【特許文献５】特開平０５−３５４９５号公報
【特許文献６】特開平１０−１２４３２５号公報
【特許文献７】特開２００４−３８５９７号公報
【特許文献８】特開２００６−１１４０６９号公報
【特許文献９】特開２００６−５８９９１号公報
【非特許文献】
【０００７】
【非特許文献１】ＮＥＣエレクトロニクス  ７８Ｋ／０シリーズ共通  ユーザーズ・マニュアル  命令編  Ｕ１２３２６ＪＪ４Ｖ０ＵＭ００
【非特許文献２】ＮＥＣエレクトロニクス  ＣＣ７８Ｋ０  Ｃコンパイラ  ユーザーズ・マニュアル  言語編  Ｕ１７０１６ＪＪ１Ｖ０ＵＭ００
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記の図１及び図２の説明に示されるように、プログラムのコード効率が向上するように広域変数を選び出し、ショートダイレクトアドレッシング可能メモリ領域に配置するように試行錯誤するときには、所定の条件が満たされるまで、以下の処理を繰り返す必要がある。すなわち、ソースコードの修正（広域変数にショートダイレクトアドレッシング可能メモリ領域へ配置することを指示する記述を追記、ステップＳ１０１）、ビルド処理の実行の指示（ステップＳ１０２）、コンパイル処理（ステップＳ１０３）、及びリンク処理（ステップＳ１０４）である。この繰り返し処理には非常に時間がかかるため、プログラム開発の作業効率上好ましくない。
【０００９】
また、図１において、コンパイラ１０１は個々のソースコード１０２−１、１０２−２、１０２−３を１つずつ処理し、再配置可能オブジェクト１０４−１、１０４−２、１０４−３を生成する。そのため、プログラム全体のコードサイズについては、すべてのオブジェクトコードを結合するリンク処理（ステップＳ１０４）の段階までわからない。このため、ビルド処理（ステップＳ１０２）終了時までに、実行可能オブジェクト１０８のコードサイズを知ることができない。そのため、リンク処理（ステップＳ１０４）まで実行する必要があり、時間がかかるため、プログラム開発の作業効率上好ましくない。
【課題を解決するための手段】
【００１０】
以下に、発明を実施するための形態で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、特許請求の範囲の記載と発明を実施するための形態との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１１】
本発明の実行可能オブジェクトのサイズ予測装置は、コンパイラ（１）と、広域変数一覧表示部（５）とを具備する。コンパイラ（１）は、複数のソースコード（２）を翻訳して複数の再配置可能オブジェクト（４）を生成し、メモリ参照命令サイズテーブル（９）及び前記複数のソースコード（２）に基づいて複数の広域変数参照情報ファイル（３）を生成する。広域変数一覧表示部（５）は、複数の再配置可能オブジェクト（４）と複数の広域変数参照情報ファイル（３）とに基づいて、複数の再配置可能オブジェクト（４）をリンクして生成される実行可能オブジェクトのサイズ予測を実行する。ただし、メモリ参照命令サイズテーブル（９）は、広域変数がショートダイレクトアドレッシング可能領域としての第１領域に配置されている場合に生成する命令のコードサイズと、当該広域変数が第１領域以外のメモリ領域としての第２領域に配置されている場合に生成する命令のコードサイズとのコードサイズ差を、メモリ参照命令ごとに記述している。ファイル広域変数参照情報ファイル（３）は、ソースコード（２）に含まれる各広域変数が第１領域に配置されていると仮定した場合における当該広域変数を参照するのに要するコードサイズと、広域変数が第２領域に配置されていると仮定した場合における当該広域変数を参照するのに要するコードサイズとのコードサイズ差を示している。広域変数一覧表示部（５）は、広域変数参照情報ファイル（３）に基づいて、各広域変数と、当該各広域変数の配置される領域と、当該各広域変数のコードサイズ差との関係を算出する。そして、各広域変数のうちの配置される領域を変更される変更広域変数の入力に基づいて、算出結果から変更広域変数のコードサイズ差を取得して、当該コードサイズ差を用いて、変更広域変数を含む再配置可能オブジェクトのコードサイズを調整する。調整後の複数の再配置可能オブジェクトのコードサイズに基づいて、リンクと同じアルゴリズムを用いて実行可能オブジェクトサイズの予測値を算出する。
【００１２】
本発明の実行可能オブジェクトのサイズ予測装置では、コンパイラ（１）が、メモリ参照命令サイズテーブル（９）に基づいて、複数の再配置可能オブジェクト（４）に対応した複数の広域変数参照情報ファイル（３）を生成する。その結果、広域変数一覧表示部（５）は、広域変数参照情報ファイル（３）に基づいて、各広域変数と、当該各広域変数の配置される領域と、当該各広域変数のコードサイズ差との関係を算出することができる。この関係と、各広域変数のうちの配置される領域を変更される変更広域変数とに基づいて、再配置可能オブジェクトにおける変更広域変数のコードサイズを調整することができる。その結果、調整後の再配置可能オブジェクトのコードサイズに基づいて、実行可能オブジェクトサイズの予測値を算出することが可能となる。
【００１３】
本発明の実行可能オブジェクトのサイズ予測方法及びそのプログラムは、複数のソースコード（２）を翻訳して複数の再配置可能オブジェクト（４）を生成するステップと、メモリ参照命令サイズテーブル（９）に基づいて複数の広域変数参照情報ファイル（３）を生成するステップと、複数の再配置可能オブジェクト（４）と複数の広域変数参照情報ファイル（３）とに基づいて、複数の再配置可能オブジェクト（４）をリンクして生成される実行可能オブジェクトのサイズ予測を実行するステップとを具備する。ただし、メモリ参照命令サイズテーブル（９）は、広域変数がショートダイレクトアドレッシング可能領域としての第１領域に配置されている場合に生成する命令のコードサイズと、当該広域変数が第１領域以外のメモリ領域としての第２領域に配置されている場合に生成する命令のコードサイズとのコードサイズ差を、メモリ参照命令ごとに記述している。ファイル広域変数参照情報ファイル（３）は、ソースコード（２）に含まれる各広域変数が第１領域に配置されていると仮定した場合における当該広域変数を参照するのに要するコードサイズと、広域変数が第２領域に配置されていると仮定した場合における当該広域変数を参照するのに要するコードサイズとのコードサイズ差を示している。サイズ予測を実行するステップは、広域変数参照情報ファイル（３）に基づいて、各広域変数と、当該各広域変数の配置される領域と、当該各広域変数のコードサイズ差との関係を算出するステップと、各広域変数のうちの配置される領域を変更される変更広域変数の入力に基づいて、算出結果から変更広域変数のコードサイズ差を取得して、当該コードサイズ差を用いて、変更広域変数を含む再配置可能オブジェクトのコードサイズを調整するステップと、調整後の複数の再配置可能オブジェクトのコードサイズに基づいて、リンクと同じアルゴリズムを用いて実行可能オブジェクトサイズの予測値を算出するステップとを備える。
【００１４】
本発明の実行可能オブジェクトのサイズ予測方法及びそのプログラにおいても、上記の実行可能オブジェクトのサイズ予測装置と同様の作用効果を得ることができる。
【発明の効果】
【００１５】
本発明により、プログラムのコード効率が向上するように広域変数を選び出し、ショートダイレクトアドレッシング可能メモリ領域に配置するよう試行錯誤する際に要する時間を短縮することができる。つまり、開発期間を短縮することができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、情報処理システムの構成を示すブロック図である。
【図２】図２は、上記情報処理システムの動作を示すフローチャートである。
【図３】図３は、本発明の実施の形態に係る実行可能オブジェクトのサイズ予測装置の構成を示すブロック図である。
【図４】図４は、本発明の実施の形態に係る広域変数一覧表示部の詳細を示すブロック図である。
【図５】図５に、本発明の実施の形態に係る広域変数一覧表示部のＧＵＩ画面の一例を示す模式図である。
【図６】図６は、本発明の実施の形態に係る広域変数配置指定ファイルの書式の一例を示す模式図である。
【図７】図７は、本発明の実施の形態に係る広域変数参照情報ファイルの書式の一例を示す模式図である。
【図８】図８は、本発明の実施の形態に係るメモリ参照命令サイズテーブルの一例を示す模式図である。
【図９】図９は、本発明の実施の形態に係るオブジェクトサイズ情報テーブルの一例を示す模式図である。
【図１０】図１０は、本発明の実施の形態に係る広域変数参照情報マトリクスの一例を示す模式図である。
【図１１】図１１は、本発明の実施の形態に係る実行可能オブジェクトのサイズ予測装置の動作を示すフローチャートである。
【図１２】図１２は、本発明の実施の形態に係るサイズ予測処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実行可能オブジェクトのサイズ予測装置、そのサイズ予測方法、及びそのプログラムの実施の形態に関して、添付図面を参照して説明する。
【００１８】
まず、本発明の実施の形態に係る実行可能オブジェクトのサイズ予測装置の構成について説明する。
図３は、本発明の実施の形態に係る実行可能オブジェクトのサイズ予測装置の構成を示すブロック図である。この図は、サイズ予測装置５０の構成を示し、更にショートダイレクトアドレッシング可能メモリ領域に広域変数を配置指定するときの各ツールと各入出力ファイルとの関係を示している。パーソナルコンピュータに例示される情報処理装置に、本発明の実行可能オブジェクトのサイズ予測プログラム（実行可能オブジェクトのサイズ予測方法）がインストールされて、本発明の実行可能オブジェクトのサイズ予測装置５０として機能する。このサイズ予測装置５０は、コンパイラ１、リンカ７、広域変数一覧表示部５、記憶部１０、入力装置１１、ディスプレイ装置１２を具備している。
【００１９】
コンパイラ１、リンカ７、及び広域変数一覧表示部５は、ソフトウェア、ソフトウェア及びハードウェアとの組み合わせなどにより実現可能である。例えば、コンパイラ１、リンカ７、及び広域変数一覧表示部５は、それらの機能を有するプログラムと、それらのプログラムの実行に使用されるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びメインメモリにより実現可能である。また、記憶部１０はメモリやハードディスク装置に例示され、入力装置１１はマウスやキーボードに例示され、ディスプレイ装置１２はフラットパネルディスプレイに例示される。
【００２０】
コンパイラ１は、入力されたソースコード２−１〜２−３を翻訳し、再配置可能オブジェクト４−１〜４−３を生成する。このとき、ソースコード２中でショートダイレクトアドレッシング可能メモリ領域に配置する指定がなされている広域変数に対しては、ショートダイレクトアドレッシングでアクセスするコードを生成する。コンパイラ１は、更に、ショートダイレクトアドレッシング可能メモリ領域に配置する広域変数を、入力ファイル（広域変数配置指定ファイル６）により指定することができる機能を有する。コンパイラ１は、更に、メモリ参照命令サイズテーブル９（後述）及びソースコード２−１〜２−３に基づいて複数の広域変数参照情報ファイル３−１〜３−３を生成、出力する機能を有する。広域変数参照情報ファイル３−１〜３−３は、広域変数がショートダイレクトアドレッシング可能領域に配置されていると仮定した場合におけるその広域変数を参照するのに要するコードサイズと、広域変数が通常のメモリ領域に配置されていると仮定した場合におけるその広域変数を参照するのに要するコードサイズとの差を示すファイルである。
【００２１】
リンカ７は、コンパイラ１で生成された複数の再配置可能オブジェクト４−１〜４−３を結合し、外部参照の解決、絶対アドレスの決定を行い、実行可能オブジェクト８を生成する。入力装置１１は、ユーザがサイズ予測装置５０に対して入力操作を行なう装置である。ディスプレイ装置１２は、サイズ予測装置５０における情報処理の内容やユーザによる入力操作の内容を表示する。記憶部１０は、本実施の形態において入力、生成、変更、出力等される各種ファイルやデータ（例示：広域変数参照情報ファイル３、広域変数配置指定ファイル６、メモリ参照命令サイズテーブル９）を格納している。記憶部１０は、ソースコード２やコンパイラ１や再配置可能オブジェクト４やリンカ７や実行可能オブジェクト８を記憶してもよい。
【００２２】
広域変数一覧表示部５は、コンパイラ１により生成される再配置可能オブジェクト４や広域変数参照情報ファイル３に基づいて、実行可能オブジェクトのサイズ予測を実行する。図４は、本発明の実施の形態に係る広域変数一覧表示部５の詳細を示すブロック図である。この図は、広域変数一覧表示部の構成を示し、更にショートダイレクトアドレッシング可能メモリ領域に広域変数を配置指定する処理の流れを示している。広域変数一覧表示部５は、広域変数配置指定／一覧表示部２１と、オブジェクトサイズ情報テーブル２２と、広域変数参照情報マトリクス２３とを備えている。
【００２３】
広域変数配置指定／一覧表示部２１は、コンパイラ１が生成した再配置可能オブジェクト４（４−１〜４−３）から情報を取得し、オブジェクトサイズ情報テーブル２２を生成する。また、広域変数配置指定／一覧表示部２１は、コンパイラ１が生成した広域変数参照情報ファイル３（３−１〜３−３）から情報を取得し、広域変数参照情報マトリクス２３を生成する。更に、広域変数配置指定／一覧表示部２１は、オブジェクトサイズ情報テーブル２２、広域変数参照情報マトリクス２３、ユーザ操作による入力情報に基づいて、広域変数配置指定ファイル６を生成／更新する。また、広域変数配置指定／一覧表示部２１は、プログラム中の広域変数をＧＵＩで一覧表示する。更に、広域変数配置指定／一覧表示部２１は、再配置可能オブジェクト４や広域変数参照情報ファイル３に基づいて、実行可能オブジェクトのサイズ予測を実行する。
【００２４】
図５は、本発明の実施の形態に係る広域変数一覧表示部５のＧＵＩ画面の一例を示す模式図である。ＧＵＩ画面３０は、広域変数一覧表示部５の広域変数配置指定／一覧表示部２１によりディスプレイ装置１２に表示される。ＧＵＩ画面３０は、テーブル３１、実行可能オブジェクトサイズ（予測値）表示欄３２（３２−１〜３２−３）、バーチャルリンク実行ボタン３３を含む。テーブル３１は、チェックボックスの欄、広域変数名の欄、配置領域の欄、サイズの欄、参照サイズ差の欄、ファイル名の欄がそれぞれ設けられている。
【００２５】
チェックボックスの欄では、広域変数名の欄に記載の広域変数に対応してチェックボックスが表示される。ユーザは、広域変数名の欄に記載の広域変数をショートダイレクトアドレッシング可能メモリ領域に配置指定する場合、そのチェックボックスを入力装置１１によりチェックする。チェックされた場合、配置領域の表示が“Ｓａｄｄｒ”となる。すなわち、“Ｓａｄｄｒ”はショートダイレクトアドレッシング可能領域に配置指定されている広域変数を示している。ユーザがチェックボックスをチェッしない場合、配置領域の表示が“Ｎｏｒｍａｌ”となる。すなわち、“Ｎｏｒｍａｌ”は通常のメモリ領域に配置されている広域変数を示している。チェックボックスへチェックすること、及び、チェックを外すことは、いずれもユーザの入力装置１１を用いた入力操作に基づいて行なわれる。なお、初期画面は、全て“Ｎｏｒｍａｌ”である。
【００２６】
ユーザ入力操作の結果、ショートダイレクトアドレッシング可能メモリ領域の残りサイズが０（ゼロ）になった場合、広域変数配置指定／一覧表示部２１は、新たにチェックボックスをチェックできなくして、その旨をＧＵＩ画面３０に表示する。また、残りサイズよりも大きいサイズが指定された場合、域変数配置指定／一覧表示部２１は、その入力を拒否し、その旨をＧＵＩ画面３０に表示する。ただし、ショートダイレクトアドレッシング可能メモリ領域の残りサイズは、以下のようにして取得する。まず、ユーザは、ショートダイレクトアドレッシング可能メモリ領域のサイズ自体を、設定可能なサイズを最大値として、入力装置１１から事前に指定する。そして、ショートダイレクトアドレッシング可能メモリ領域の残りサイズは、ユーザに入力されたサイズから現在使用しているＳａｄｄｒサイズを減算することで算出する。使用しているＳａｄｄｒサイズは、オブジェクトサイズ情報テーブル２２（詳細は図９参照）におけるセグメント属性の欄が“ＳＡＤＤＲ”となっている行のサイズの合計で求める。
【００２７】
広域変数名の欄では、ファイル名の欄に記載のファイル内の広域変数の名前（例示：ｇ＿ｖａｒ１１）が表示される。配置領域の欄では、広域変数を、ショートダイレクトアドレッシング可能メモリ領域に配置指定した場合には“Ｓａｄｄｒ”、通常のメモリ領域に配置指定した場合には“Ｎｏｒｍａｌ”と表示する。サイズの欄では、広域変数の変数型のサイズ（例示：２（バイト））を表示する。参照サイズ差の欄では、広域変数を、ショートダイレクトアドレッシング可能メモリ領域に配置指定した場合に使用されるメモリサイズと、通常のメモリ領域に配置指定した場合に使用されるメモリサイズとの差（例示：９０（バイト））を表示する。ファイル名の欄では、広域変数名の欄に記載の広域変数が含まれているファイル（ソースコード）の名称（例示：ｆｉｌｅ１．ｃ）を表示する。
【００２８】
広域変数名の欄、配置領域の欄、サイズの欄、参照サイズ差の欄、ファイル名の欄は、オブジェクトサイズ情報テーブル２２、広域変数参照情報マトリクス２３、及び広域変数配置指定ファイル６に基づいて広域変数配置指定／一覧表示部２１が生成して、表示する。例えば、チェックボックスと配置領域は、広域変数配置指定ファイル６（後述）に含まれているものを“Ｓａｄｄｅｒ”とすることができる。広域変数名、参照サイズ差、ファイル名は、広域変数参照情報マトリクス２３（後述）の広域変数名、参照コードサイズ（変化量）の和、ファイル名を用いることができる。サイズは、広域変数参照情報ファイル３（詳細は図７参照）における広域変数と変数型との対応から求めることができる。例えば、広域変数名“ｇ＿ｖａｒ１１”の場合、変数型がｉｎｔ型となるので、２バイトとなる。ただし、変数型のサイズは、コンパイラ１の種類により差異があるが、本実施の形態では、以下を想定して説明している。ｃｈａｒ型は１バイト、ｓｈｏｒｔ型は２バイト、ｌｏｎｇ型は４バイト、ポインタ型（ｃｈａｒ＊／ｓｈｏｒｔ＊／ｉｎｔ＊／ｌｏｎｇ＊）は２バイトである。
ただし、例えば、「ファイル名」の広域変数名“ｇ＿ｖａｒ１１”は、広域変数参照情報マトリクス２３（詳細は図１０参照）から、「ｆｉｌｅ１．ｃ」だけでなく、図示しないが、「ｆｉｌｅ２．ｃ、ｆｉｌｅ３．ｃ、ｆｉｌｅ４．ｃ、…」を含んでいる。同様に、広域変数名“ｇ＿ｖａｒ１２”は、広域変数参照情報マトリクス２３（図１０）から、「ｆｉｌｅ１．ｃ」だけでなく、図示しないが、「ｆｉｌｅ２．ｃ、ｆｉｌｅ４．ｃ、…」を含んでいる。以下同様である。
【００２９】
バーチャルリンク実行ボタン３３は、広域変数配置指定／一覧表示部２１に、実行可能オブジェクトのサイズ予測を実行させるボタンである。ただし、「バーチャルリンク」は、実行可能オブジェクトのサイズ予測処理である。ユーザの入力操作によりバーチャルリンク実行ボタン３３が押下されると、広域変数配置指定／一覧表示部２１は実行可能オブジェクトのサイズ予測を実行する。実行可能オブジェクトサイズ（予測値）表示欄３２（３２−１〜３２−３）は、広域変数配置指定／一覧表示部２１による実行可能オブジェクトのサイズ予測の実行結果を表示する。すなわち、表示欄３２−１にＣＯＤＥ属性のオブジェクト、表示欄３２−２にＳＡＤＤＲ属性のオブジェクト、表示欄３２−３にＤＡＴＡ属性のオブジェクト結果を表示する。サイズオーバーした場合には、この欄にその旨が表示される。実行可能オブジェクトのサイズ予測の詳細は後述される。
【００３０】
このように、広域変数配置指定／一覧表示部２１は、オブジェクトサイズ情報テーブル２２、広域変数参照情報マトリクス２３、及び、広域変数配置指定ファイル６を生成／更新する機能と共に、ユーザの入力操作に応答して、広域変数の配置（ショートダイレクトアドレッシング可能メモリ領域か通常メモリ領域か）をＧＵＩ画面３０の一覧表示上から指定する機能、及び、広域変数参照情報ファイル３及び再配置可能オブジェクト４のサイズ情報に基づいて、実行可能オブジェクト８のサイズを予測する機能を備えている。
【００３１】
図６は、本発明の実施の形態に係る広域変数配置指定ファイルの書式の一例を示す模式図である。広域変数配置指定ファイル６は、広域変数一覧表示部５の広域変数配置指定／一覧表示部２１が生成／更新し、コンパイラ１が入力ファイルとして用いるファイルである。広域変数配置指定ファイル６は、プログラム（ソースコード（ソースファイル））中で定義されている広域変数の中で、ショートダイレクトアドレッシング可能メモリ領域に配置指定する広域変数の情報を記述する。ここでは、その広域変数の名前（広域変数名）、その広域変数の変数型（変数型）、及び、その広域変数の含まれるソースファイルの名前（ソースファイル名）が互いに関連付けられて記述されている。ただし、初回の処理では、広域変数配置指定ファイル６が存在せず、初回の処理後に広域変数配置指定／一覧表示部２１により生成される。
【００３２】
図５のＧＵＩ画面３０上で、チェックボックスがチェックされている広域変数が、ショートダイレクトアドレッシング可能メモリ領域に配置指定する広域変数となる。広域変数配置指定／一覧表示部２１は、バーチャルリンク実行ボタン３３が押されたタイミングで、チェックボックスがチェックされている広域変数の情報を、広域変数配置指定ファイル６に出力し、広域変数配置指定ファイル６を生成／更新する。
【００３３】
図７は、本発明の実施の形態に係る広域変数参照情報ファイルの書式の一例を示す模式図である。広域変数参照情報ファイル３は、コンパイラ１がソースファイル単位で生成するファイルである。ソースファイル（ソースファイル名）ごとに、各広域変数（広域変数名、変数型）が、ショートダイレクトアドレッシング可能メモリ領域に配置されていると仮定した場合にそれを参照するのに要するコードサイズと、通常のメモリ領域に配置されていると仮定した場合にそれを参照するのに要するコードサイズとの差（参照コードサイズ（変化量））を記述する。コンパイラ１はコード生成のときに広域変数を参照する命令を出力した場合、図８のメモリ参照命令サイズテーブル９（後述）により広域変数の配置領域の違いによる命令サイズの変化量を取得する。そして、取得した命令サイズの変化量を広域変数参照情報ファイル３中の当該広域変数の参照コードサイズ（変化量）に加算していくことにより、この情報を生成する。
【００３４】
例えば、図７の広域変数参照情報ファイル３の広域変数ｇ＿ｖａｒ１１に着目する。ｇ＿ｖａｒ１１の参照コードサイズ（変化量）は、１０となっている。このような結果となる例を以下に示す。
（例１）ソースファイル中の広域変数ｇ＿ｖａｒ１１を参照する命令として、図８のメモリ参照命令サイズテーブル９の命令の種類の「ｍｏｖｗ  ｖａｒ，ａｘ」を１０回出力した場合、「ｍｏｖｗ  ｖａｒ，ａｘ」のコードサイズの差は１なので、１×１０で、１０となる。
（例２）ソースファイル中の広域変数ｇ＿ｖａｒ１１を参照する命令として、図８のメモリ参照命令サイズテーブル９の命令の種類の「ｍｏｖｗ  ｖａｒ，ａｘ」を５回、「ｓｕｂ  ａ，ｖａｒ」を５回、それぞれ出力した場合、「ｍｏｖｗ  ｖａｒ，ａｘ」と「ｓｕｂ  ａ，ｖａｒ」のコードサイズの差は、それぞれ１なので、１×５＋１×５で、１０となる。
【００３５】
図７は、コンパイラ１がｆｉｌｅ１．ｃをコンパイルするときに生成する広域変数参照情報ファイル３の例である。ｆｉｌｅ２．ｃ、ｆｉｌｅ３．ｃ、…をコンパイルした場合、同様の広域変数参照情報ファイル３が生成される。この広域変数参照情報ファイル３により、各広域変数がショートダイレクトアドレッシング可能メモリ領域に配置された場合にそれを参照するのに要するコードサイズと、各広域変数が通常のメモリ領域に配置された場合にそれを参照するのに要するコードサイズとの差を得ることができる。
【００３６】
図８は、本発明の実施の形態に係るメモリ参照命令サイズテーブルの一例を示す模式図である。メモリ参照命令サイズテーブル９は、コンパイラ１が広域変数参照情報ファイル３を生成する際に使用するテーブルである。各メモリ参照命令（命令の種類）に関して、広域変数が通常のメモリ領域に配置されている場合に生成する命令のサイズ（コードサイズＡ、単位：バイト）、ショートダイレクトアドレッシング可能領域に配置されている場合に生成する命令のサイズ（コードサイズＢ、単位：バイト）、及び、それらサイズの差（コードサイズの差、単位：バイト）を記述する。テーブルの内容と書式は、対象とするマイクロコンピュータの命令セットアーキテクチャとコンパイラのコード生成方法に依存する。ここでは、２オペランド形式のレジスタ−メモリ演算命令を備えた命令セットアーキテクチャの場合の一例を示している。メモリ参照命令サイズテーブル９は、予め用意されている。
【００３７】
図９は、本発明の実施の形態に係るオブジェクトサイズ情報テーブルの一例を示す模式図である。オブジェクトサイズ情報テーブル２２は、広域変数一覧表示部５の広域変数配置指定／一覧表示部２１が管理するテーブルである。広域変数配置指定／一覧表示部２１は、再配置可能オブジェクト４を入力として、このオブジェクトサイズ情報テーブル２２を初期生成する。その後、ユーザによる図５のＧＵＩ画面３０上での各広域変数の配置指定の変更に応じて、オブジェクトサイズ情報テーブル２２中の各セグメントのサイズが修正される。実行可能オブジェクト８のサイズ予測処理のとき、この修正した値が用いられる。オブジェクトサイズ情報テーブル２２は、再配置可能オブジェクト４（ファイル名の欄）と、その再配置可能オブジェクト４に含まれるセグメント（セグメント属性の欄）と、そのセグメントのサイズ（サイズの欄、単位：バイト）とを関連付けている。
【００３８】
図１０は、本発明の実施の形態に係る広域変数参照情報マトリクスの一例を示す模式図である。広域変数参照情報マトリクス２３は、広域変数一覧表示部５の広域変数配置指定／一覧表示部２１が管理するテーブルである。マトリクス中のｍ行ｎ列の要素は、ｎ列目の広域変数（例示：ｇ＿ｖａｒ１１、ｇ＿ｖａｒ１２、…）の配置を変更した場合の、ｍ行目の再配置可能オブジェクト（例示：ｆｉｌｅ１．ｏ、ｆｉｌｅ２．ｏ、…）の参照コードサイズ（変化量）（例示：１０、２０、…、１０、１０、…）を表している。広域変数配置指定／一覧表示部２１は、コンパイラ１が各ソースファイル単位で生成する広域変数参照情報ファイル３を入力として、この広域変数参照情報マトリクス２３を生成／更新する。この広域変数参照情報マトリクス２３の内容は、ソースコードに変更が加えられ再コンパイルがおこなわれた場合にのみ変化し、ＧＵＩ画面３０上での各広域変数の配置指定の変更によって変化することはない。
【００３９】
図１０の広域変数参照情報マトリクス２３は、複数の広域変数参照情報ファイル３をｍ行ｎ列のマトリクスとして合成したものである。広域変数参照情報マトリクス２３の１行が、１つの広域変数参照情報ファイル３に相当する。この場合、ファイル名は、ｆｉｌｅ１．ｃから、ｆｉｌｅ１．ｏと読み替えられる。
【００４０】
図１や図２の説明で示したように、従来技術において、プログラムのコード効率が向上するように広域変数を選び出し、ショートダイレクトアドレッシング可能メモリ領域に配置するよう試行錯誤するためには、ソースコードの修正（広域変数にショートダイレクトアドレッシング可能メモリ領域へ配置することを指示する記述を追記）、コンパイル処理、及びリンク処理という一連のフローを繰り返す必要があった。
しかし、これに対して、本発明では、広域変数一覧表示部５のＧＵＩ画面３０上でショートダイレクトアドレッシング可能メモリ領域に配置する広域変数を指定し、実行可能オブジェクトサイズの予測処理（バーチャルリンク）を実行するというフローを繰り返すのみでよくなる。
【００４１】
次に、本発明の実施の形態に係る実行可能オブジェクトのサイズ予測装置の動作（サイズ予測方法）に関して、添付図面を参照して説明する。図１１は、本発明の実施の形態に係る実行可能オブジェクトのサイズ予測装置の動作（サイズ予測方法）を示すフローチャートである。この図は、ショートダイレクトアドレッシング可能メモリ領域に、広域変数を配置指定するときの処理のフローチャートを示している。まず、ソースコード２−１〜２−３について、コンパイルエラーやサイズオーバー以外のリンクエラーは解決されているものとする。また、コンパイル時に、広域変数参照情報ファイル３−１〜３−３を生成する指定がなされているものとする。
【００４２】
まず、初回の処理として、図２で説明したステップＳ１０２〜Ｓ１０３と同様に、ユーザの入力操作に基づいてソースコード２（２−1〜２−３）に対してビルド処理が実行される。その後、コンパイラ１は、ソースコード２（２−1〜２−３）とメモリ参照命令サイズテーブル９とを入力として受け取り、広域変数配置指定ファイル６を参照しながら、ソースコード２（２−1〜２−３）に対してコンパイル処理を実行し、再配置可能オブジェクト４（４−１〜４−２）を生成する。そのとき、同時に、広域変数参照情報ファイル３（３−１〜３−３）も生成する。再配置可能オブジェクト４（４−１〜４−２）及び広域変数参照情報ファイル３（３−１〜３−３）は、記憶部１０に格納される。ただし、初回の処理では、広域変数配置指定ファイル６が存在しない。そのため、コンパイラ１は、全ての広域変数が通常のメモリに配置指定されているものとして動作する。
【００４３】
広域変数一覧表示部５の広域変数配置指定／一覧表示部２１は、広域変数参照情報ファイル３（３−１〜３−３）の情報を取得し、当該情報に基づいて広域変数参照情報マトリクス２３を生成する（ステップＳ０１）。続いて、広域変数配置指定／一覧表示部２１は、再配置可能オブジェクト４（４−１〜４−３）の情報を取得し、当該情報に基づいてオブジェクトサイズ情報テーブル２２を生成する（ステップＳ０２）。
【００４４】
次に、広域変数配置指定／一覧表示部２１は、広域変数配置指定ファイル６から、ショートダイレクトアドレッシング可能メモリ領域に配置指定されている広域変数の情報を取得する（ステップＳ０３）。そして、広域変数配置指定／一覧表示部２１は、それら広域変数参照情報マトリクス２３、オブジェクトサイズ情報テーブル２２、及び広域変数配置指定ファイル６の情報を集約してディスプレイ装置１２に表示する。そのディスプレイ装置１２での表示状況は、図５のＧＵＩ画面３０に例示される。ただし、初回の処理では、広域変数配置指定ファイル６が存在しないため、全ての広域変数が通常のメモリに配置指定されているものとして表示される。
【００４５】
ユーザは、サイズ予測装置５０への入力操作により、広域変数一覧表示部５の広域変数配置指定／一覧表示部２１（ＧＵＩ画面３０）上で、ショートダイレクトアドレッシング可能メモリ領域に配置する広域変数を指定する（チェックボックスにチェックする）。すなわち、ユーザは、プログラムのコード効率が向上するように広域変数を選び出し、ショートダイレクトアドレッシング可能メモリ領域に配置するように試行錯誤するときには、広域変数配置指定／一覧表示部２１（ＧＵＩ画面３０）上でショートダイレクトアドレッシング可能メモリ領域に配置する広域変数を指定する。ユーザは、サイズ予測装置５０への入力操作により、バーチャルリンク実行ボタン３３を押下する（ステップＳ０４）。
【００４６】
広域変数配置指定／一覧表示部２１が、広域変数配置指定ファイル６を生成／更新する（ステップＳ０５）。そして、広域変数配置指定／一覧表示部２１が、実行可能オブジェクトのサイズ予測処理を実行する（ステップＳ０６）。サイズ予測処理（バーチャルリンク処理）については後述される。
【００４７】
広域変数配置指定／一覧表示部２１は、実行可能オブジェクト８のコードサイズは満足のいくものか否かを判断する（ステップＳ０７）。判断は、例えば、予め設定された基準となるコードサイズ（ユーザが設定してもよい）との比較により行なうことができる。そして、実行可能オブジェクトのサイズが満足のいくものになる（ステップＳ０７：ＹＥＳ）まで、広域変数一覧表示部５上で、広域変数の配置を指定し、バーチャルリンクを実行し直す（ステップＳ０４〜ステップＳ０６）。このように、２回目以降の広域変数配置指定とサイズ予測処理（バーチャルリンク；ステップＳ０４〜ステップＳ０６）は、広域変数一覧表示部５内のみで処理が完結する。すなわち、本実施の形態では、実行可能オブジェクト８のサイズ予測処理のフローを繰り返すのみで良いので、時間短縮ができる。
【００４８】
その後、ユーザは、サイズ予測装置５０への入力操作により、ソースコード２（２−１〜２−３）のビルドを実行する（ステップＳ０８）。続いて、コンパイラ１は、広域変数配置指定ファイル６を参照し、ソースコード２（２−１〜２−３）をコンパイルして再配置可能オブジェクト４（４−１〜４−３）を生成する（ステップＳ０９）。ここでコンパイルするときには、広域変数参照情報ファイル３（３−１〜３−３）の生成を指定する必要はない。次に、リンカ７は、再配置可能オブジェクトをリンクして、実行可能オブジェクト８を生成する（ステップＳ１０）。
【００４９】
以上のようにして、本実施の形態では、コード効率が向上した実行可能オブジェクトの作成をすることができる。
【００５０】
次に、本発明の実施の形態に係るサイズ予測処理（バーチャルリンク処理）について説明する。サイズ予測処理（バーチャルリンク処理）は、上記図１１におけるステップＳ０６で実行された処理である。図１２は、本発明の実施の形態に係るサイズ予測処理（バーチャルリンク処理）を示すフローチャートである。
【００５１】
まず、広域変数配置指定／一覧表示部２１は、ＧＵＩ画面３０の複数の広域変数の中から、一つの広域変数を選択する（ステップＳ２１）。ただし、選択方法は、例えば一番上から順番に選択する方法に例示される。
【００５２】
広域変数配置指定／一覧表示部２１は、その広域変数の現在の配置領域と以前の配置領域とは異なるか否かを判定する（ステップＳ２２）。ただし、現在の配置領域は、ユーザ入力操作終了後のＧＵＩ画面３０のチェックボックスの有無（チェック有りならばショートダイレクトアドレッシング可能メモリ領域）で認定される。以前の配置領域は、広域変数配置指定ファイル６に含まれるか否か（含まれるならショートダイレクトアドレッシング可能メモリ領域）で認定される。そして、判定方法は、認定された両者の配置領域の変動の状態で行なう。ただし、初回の処理では、広域変数配置指定ファイルが存在しないため、全ての広域変数が通常のメモリに配置指定されているものとして動作する。具体的には、図５のＧＵＩ画面３０の広域変数のチェックボックスのチェックに変化があったか（チェックがない状態からチェックされている状態、もしくは、チェックされている状態からチェックがない状態）を調べる。
そして、異なる（変化があった）場合（ステップＳ２２：ＹＥＳ）はステップＳ２３の処理へ、異ならない（変化がない）場合（ステップＳ２２：ＮＯ）はステップＳ２６の処理へ進む。
【００５３】
広域変数配置指定／一覧表示部２１は、配置領域の変化の態様を判定する（ステップＳ２３）。変化の態様がショートダイレクトアドレッシング可能メモリ領域から通常のメモリ領域の場合（ステップＳ２３：ｃａｓｅ−Ａ）、ステップＳ２４の処理へ進む。一方、変化の態様が、通常のメモリ領域からショートダイレクトアドレッシング可能メモリ領域の場合（ステップＳ２３：ｃａｓｅ−Ｂ）、ステップＳ２５の処理へ進む。すなわち、図５のＧＵＩ画面３０の広域変数のチェックボックスのチェックが、チェックされている状態から、チェックがない状態になった場合（広域変数の配置領域を、“Ｓａｄｄｒ”から“Ｎｏｒｍａｌ”に変更した場合：ｃａｓｅ−Ａ）は、ステップＳ２４の処理へ進む。一方、図５のＧＵＩ画面３０の広域変数のチェックボックスのチェックが、チェックがない状態から、チェックされている状態になった場合（広域変数の配置領域を、“Ｎｏｒｍａｌ”から“Ｓａｄｄｒ”に変更した場合：ｃａｓｅ−Ｂ）は、ステップＳ２５の処理へ進む。
【００５４】
広域変数配置指定／一覧表示部２１は、ショートダイレクトアドレッシング可能メモリ領域から通常のメモリ領域への変化の場合（ｃａｓｅ−Ａ）、以下の処理を実行する（ステップＳ２４）。
まず、広域変数参照情報マトリクス２３（図１０）から、着目している広域変数を参照する再配置可能オブジェクト４のコードサイズ変化量を取得する。例えば、図５のｇ＿ｖａｒ１１に着目しているとする。この場合、図１０の広域変数参照情報マトリクス２３から、ｆｉｌｅ１．ｏに関するコードサイズ変化量として、１０を取得する。続いて、ｆｉｌｅ２．０に関するコードサイズ変更量として、１０を取得する。以下同様である。このコードサイズ変化量の取得処理は、図１０の広域変数参照情報マトリクス２３に登録されているファイル数分だけ行う。
そして、取得されたコードサイズ変化量を、オブジェクトサイズ情報テーブル２２（図９）中の該当する再配置可能オブジェクト４のＣＯＤＥ属性セグメントサイズに加算する。例えば、図９のオブジェクトサイズ情報テーブル２２において、ファイル名がｆｉｌｅ１．ｏで、セグメント属性がＣＯＤＥのサイズ欄の値１００に、取得されたｆｉｌｅ１．ｏのコードサイズ変化量１０を加算する。ファイル名がｆｉｌｅ２．ｏで、セグメント属性がＣＯＤＥのサイズ欄の値２００に、取得されたｆｉｌｅ２．ｏのコードサイズ変化量１０を加算する。以下同様である。このセグメント属性がＣＯＤＥのサイズ欄への加算処理は、図９のオブジェクトサイズ情報テーブル２２に登録されているファイル数分だけ行う。
【００５５】
広域変数配置指定／一覧表示部２１は、通常のメモリ領域からショートダイレクトアドレッシング可能メモリ領域への変化の場合（ｃａｓｅ−Ｂ）、以下の処理を実行する（ステップＳ２５）。
まず、広域変数参照情報マトリクス２３（図１０）から、着目している広域変数を参照する再配置可能オブジェクト４のコードサイズ変化量を取得する。例えば、図５のｇ＿ｖａｒ１２に着目しているとする。この場合、図１０の広域変数参照情報マトリクス２３から、ｆｉｌｅ１．ｏに関するコードサイズ変化量として、２０を取得する。続いて、ｆｉｌｅ２．０に関するコードサイズ変更量として、１０を取得する。以下同様である。このコードサイズ変化量の取得処理は、図１０の広域変数参照マトリクス２３に登録されているファイル数分だけ行う。
そして、取得されたコードサイズ変化量を、オブジェクトサイズ情報テーブル２２（図９）中の該当する再配置可能オブジェクト４のＣＯＤＥ属性セグメントサイズから減算する。例えば、図９のオブジェクトサイズ情報テーブル２２において、ファイル名がｆｉｌｅ１．ｏで、セグメント属性がＣＯＤＥのサイズ欄の値１００から、取得されたｆｉｌｅ１．ｏのコードサイズ変化量２０を減算する。ファイル名がｆｉｌｅ２．ｏで、セグメント属性がＣ０ＤＥのサイズ欄の値２００から、取得されたｆｉｌｅ２．ｏのコードサイズ変化量１０を減算する。以下同様である。このセグメント属性がＣＯＤＥのサイズ欄への減算処理は、図９のオブジェクトサイズ情報テーブル２２に登録されているファイル数分だけ行う。
【００５６】
広域変数配置指定／一覧表示部２１は、ＧＵＩ画面３０の複数の広域変数の全てに対して、以上の処理（ステップＳ２２〜ステップＳ２５）を繰り返す。すなわち、広域変数配置指定／一覧表示部２１は、ＧＵＩ画面３０の複数の広域変数の全てについて、上記処理が終了したか否かを判定する（ステップＳ２６）。そして、広域変数の全てについて上記処理が終了した場合（ステップＳ２６：ＹＥＳ）はステップＳ２７の処理へ、広域変数の全てについて上記処理が終了していない場合（ステップＳ２６：ＮＯ）はステップＳ２１の処理へ進む。
【００５７】
次に、広域変数配置指定／一覧表示部２１は、以下の処理により、オブジェクトサイズ情報テーブル２２を更新する（ステップＳ２７）。
各再配置可能オブジェクト４について、ショートダイレクトアドレッシング可能領域に配置指定されている広域変数のサイズを、アラインメントを考慮して加算する。すなわち、図５のＧＵＩ画面３０上の各広域変数に対して、チェックボックスのチェックがチェックされている状態で、且つ、ファイル名欄のファイル名が同一の広域変数のサイズを加算する。例えば、ｆｉｌｅ１．ｃの場合、チェックボックスのチェックがチェックされている状態で、且つ、ファイル名欄のファイル名がｆｉｌｅ１．ｃの広域変数のサイズを加算する。
そして、オブジェクトサイズ情報テーブル２２中の該当する再配置可能オブジェクト４のＳＡＤＤＲ属性セグメントサイズを更新する。すなわち、広域変数のサイズを加算した結果に基づいて、図９のオブジェクトサイズ情報テーブル２２の該当箇所を更新する。例えばｆｉｌｅ１．ｃの場合、ファイル名がｆｉｌｅ１．ｏ、セグメント属性がＳＡＤＤＲのサイズ欄を、そのサイズ欄の値に上記広域変数のサイズを加算した結果に置き換えることで、更新する。
【００５８】
続いて、広域変数配置指定／一覧表示部２１は、以下の処理により、オブジェクトサイズ情報テーブル２２を更新する（ステップＳ２８）。
各再配置可能オブジェクト４について、通常のメモリ領域に配置指定されている広域変数のサイズを、アラインメントを考慮して加算する。すなわち、図５のＧＵＩ画面３０上の各広域変数に対して、チェックボックスのチェックがチェックされていない状態で、且つ、ファイル名欄のファイル名が同一の広域変数のサイズを加算する。例えば、ｆｉｌｅ２．ｃの場合、チェックボックスのチェックがチェックされていない状態で、且つ、ファイル名欄のファイル名がｆｉｌｅ２．ｃの広域変数のサイズを加算する。
そして、オブジェクトサイズ情報テーブル２２中の該当する再配置可能オブジェクト４のＤＡＴＡ属性セグメントサイズを更新する。すなわち、広域変数のサイズを加算した結果に基づいて、図９のオブジェクトサイズ情報テーブル２２の該当箇所を更新する。例えば、ｆｉｌｅ２．ｃの場合、ファイル名がｆｉｌｅ２．ｏ、セグメント属性がＤＡＴＡのサイズ欄を、そのサイズ欄の値に上記広域変数のサイズを加算した結果に置き換えることで、更新する。
【００５９】
その後、広域変数配置指定／一覧表示部２１は、以上のサイズ変更後の再配置可能オブジェクト４のコードサイズに基づいて、リンカ７と同様のアルゴリズムで実行可能オブジェクト８のサイズを計算する（ステップＳ２９）。すなわち、図９のオブジェクトサイズ情報テーブル２２の属性が同じ行のサイズを加算する。そして、それぞれ結果を表示する。図５のＧＵＩ画面３０上では、実行可能オブジェクトサイズ（予測値）表示欄３２−１に、ＣＯＤＥ属性の行のサイズを、アライメントを考慮して加算した結果を表示している。同様に、表示欄３２−２、３２−３に、それぞれＳＡＤＤＲ属性とＤＡＴＡ属性の行のサイズを、アライメントを考慮して加算した結果を表示している。
【００６０】
以上のようにして、本発明の実施の形態に係るサイズ予測処理（バーチャルリンク処理）が行なわれる。
【００６１】
本実施の形態に係るサイズ予測処理（バーチャルリンク）による実行可能オブジェクト８のコードサイズの予測処理は、コンパイル処理およびリンク処理に比べて高速である。このため、プログラムのコード効率が向上するように広域変数を選び出し、ショートダイレクトアドレッシング可能メモリ領域に配置するよう試行錯誤する際に要する時間を短縮することができる。
【００６２】
従来技術において、１回のソースコード修正に要する時間をｔ＿ｍ、１回のコンパイル処理に要する時間をｔ＿ｃ、１回のリンク処理に要する時間をｔ＿ｌとする。プログラムのコード効率が向上するように広域変数を選び出し、ショートダイレクトアドレッシング可能メモリ領域に配置するようＮ回試行錯誤するとき、これに要する総時間ｔ＿ｔｏｔａｌ＿１は、
ｔ＿ｔｏｔａｌ＿１＝Ｎ×（ｔ＿ｍ＋ｔ＿ｃ＋ｔ＿ｌ）  ・・・式（１）
本発明において、広域変数一覧表示部５のＧＵＩ画面３０上でショートダイレクトアドレッシング可能メモリ領域に配置する広域変数を指定するのに要する時間をｔ＿ｍ’、広域変数参照情報ファイル３の生成を指定したコンパイル処理に要する時間をｔ＿ｃｆｉｌｅ、実行可能オブジェクトサイズの予測処理において、再配置可能オブジェクト４のサイズの変化量を計算するのに要する時間をｔ＿ｅ、リンカ７と同様のアルゴリズムにより実行可能オブジェクト８のサイズを計算するのに要する時間をｔ＿ｖｌとすると、Ｎ回試行錯誤するのに要する総時間（ｔ＿ｔｏｔａｌ＿２）は、
ｔ＿ｔｏｌａｌ＿２
＝ｔ＿ｃｆｉｌｅ＋Ｎ×（ｔ＿ｍ’＋ｔ＿ｅ＋ｔ＿ｖｌ）＋（ｔ＿ｃ＋ｔ＿ｌ）  ・・・式（２）
ここで、ｔ＿ｍ≒ｔ＿ｔｍ’、ｔ＿ｌ≒ｔ＿ｖｌであり、ｔ＿ｃｆｉｌｅ＝２×ｔ＿ｃと仮定すると、式（２）は、
ｔｏｔａｌ＿２
≒Ｎ×（ｔ＿ｍ＋ｔ＿ｌ）＋Ｎ×ｔ＿ｅ＋３×ｔ＿ｃ＋ｔ＿ｌ  ・・・式（２）’
となる。
ここで、ｔ＿ｅ＜ｔ＿ｃであるので、Ｎ≫１のとき、ｔ＿ｔｏｔａｌ＿２＜ｔ＿ｔｏｔａｌ＿１となる。すなわち、従来技術でのＮ回試行錯誤の総時間と比較して、本発明でのＮ回試行錯誤の総時間の方が短くなる。
【００６３】
本発明では、コンパイラ１が出力した広域変数の参照情報（広域変数参照情報ファイル３）と再配置可能オブジェクト４のサイズ情報に基づいて、広域変数一覧表示部５により、ある広域変数の配置位置を変更した場合の実行可能オブジェクトサイズの変化を予測する。これにより、プログラムのコード効率が向上するように広域変数を選び出し、ショートダイレクトアドレッシング可能メモリ領域に配置するよう試行錯誤する際に要する時間を短縮することができる。つまり、開発期間を短縮することができる。
【００６４】
本発明のプログラム、データ構造は、コンピュータ読取可能な記憶媒体に記録され、その記憶媒体から情報処理装置に読み込まれても良い。
【００６５】
本発明は上記各実施の形態に限定されず、本発明の技術思想の範囲内において、各実施の形態は適宜変形又は変更され得ることは明らかである。
【符号の説明】
【００６６】
１    コンパイラ
２、２−１〜２−３    ソースコード
３、３−１〜３−３    広域変数参照情報ファイル
４、４−１〜４−３    再配置可能オブジェクト
５    広域変数一覧表示部
６    広域変数配置指定ファイル
７    リンカ
８    実行可能オブジェクト
９    メモリ参照命令サイズテーブル
１０    記憶部
１１    入力装置
１２    ディスプレイ装置
２１    広域変数配置指定／一覧表示部
２２    オブジェクトサイズ情報テーブル
２３    広域変数参照情報マトリクス
３０    ＧＵＩ画面
３１    テーブル
３２、３２−１〜３２−３    実行可能オブジェクトサイズ（予測値）表示欄
３３    バーチャルリンク実行ボタン
５０    サイズ予測装置
１０１    コンパイラ
１０２、１０２−１〜１０２−３    ソースコード
１０４、１０４−１〜１０４−３    再配置可能オブジェクト
１０７    リンカ
１０８    実行可能オブジェクト
【図１】
2011107848.tif 000003
【図２】
2011107848.tif 000004
【図３】
2011107848.tif 000005
【図４】
2011107848.tif 000006
【図５】
2011107848.tif 000007
【図６】
2011107848.tif 000008
【図７】
2011107848.tif 000009
【図８】
2011107848.tif 000010
【図９】
2011107848.tif 000011
【図１０】
2011107848.tif 000012
【図１１】
2011107848.tif 000013
【図１２】
2011107848.tif 000014