(57)【要約】【課題】ソースプログラムからコンパイル除外指定された関数を除外したオブジェクトプログラムを作成する。【解決手段】関数単位で除外を指定し、関数除外時の関数戻り値を指定する手段２を備え、ソースプログラム内の前記除外と指定された関数の関数呼び出しは、戻り値を使用しない関数呼び出しの場合はオブジェクトプログラムを作成せず、戻り値を使用する関数呼び出しの場合は前記呼び出しのオブジェクトプログラムに代えて前記関数除外時の関数戻り値を関数の戻り値用レジスタに設定するオブジェクトプログラムを作成する。【選択図】図２
2006163854.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンパイル方法において、
関数のコンパイル要否を指定するコンパイル除外関数テーブルに基づいて、関数のコンパイル要否を判断することを特徴とするコンパイル方法。
【請求項２】
前記コンパイル除外関数テーブルにおいて、コンパイル除外関数と、前記関数のコンパイル除外時の関数戻り値と、を指定することを特徴とする請求項１記載のコンパイル方法。
【請求項３】
ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンパイル方法において、
コンパイル除外関数と前記関数のコンパイル除外時の関数戻り値とが指定されるコンパイル除外関数テーブルを備え、
前記指定されたコンパイル除外関数の呼び出しが戻り値を使用しない呼び出しの場合はオブジェクトプログラムを作成せず、
前記指定されたコンパイル除外関数の呼び出しが戻り値を使用する呼び出しの場合は関数呼び出し部のオブジェクトプログラムに代えて前記コンパイル除外時の関数戻り値を関数の戻り値用レジスタに設定するオブジェクトプログラムを作成することを特徴とするコンパイル方法。
【請求項４】
ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンパイル処理装置において、
関数のコンパイル要否を指定するコンパイル除外関数テーブルを備え、
前記コンパイル除外関数テーブルに基づいて、関数のコンパイル要否を判断することを特徴とするコンパイル処理装置。
【請求項５】
前記コンパイル除外関数テーブルにおいて、コンパイル除外関数と、前記関数のコンパイル除外時の関数戻り値と、が指定されることを特徴とする請求項４記載のコンパイル処理装置。
【請求項６】
ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンパイル処理装置において、
コンパイル除外関数と前記関数のコンパイル除外時の関数戻り値とが指定されるコンパイル除外関数テーブルを備え、
前記指定されたコンパイル除外関数の呼び出しが戻り値を使用しない呼び出しの場合はオブジェクトプログラムを作成せず、
前記指定されたコンパイル除外関数の呼び出しが戻り値を使用する呼び出しの場合は関数呼び出し部のオブジェクトプログラムに代えて前記コンパイル除外時の関数戻り値を関数の戻り値用レジスタに設定するオブジェクトプログラムを作成することを特徴とするコンパイル処理装置。
【請求項７】
ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンピュータ読み取り可能なプログラムであって、
関数のコンパイル要否を指定するコンパイル除外関数テーブルに基づいて、関数のコンパイル要否を判断する手順をコンピュータに実行させるためのコンパイル処理プログラム。
【請求項８】
前記コンパイル除外関数テーブルにおいて、コンパイル除外関数と、前記関数のコンパイル除外時の関数戻り値と、が指定されることを特徴とする請求項７記載のコンパイル処理プログラム。
【請求項９】
ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンピュータ読み取り可能なプログラムであって、
コンパイル除外関数と前記関数のコンパイル除外時の関数戻り値とが指定されるコンパイル除外関数テーブルに基づいて、
前記指定されたコンパイル除外関数の呼び出しが戻り値を使用しない呼び出しの場合はオブジェクトプログラムを作成せず、
前記指定されたコンパイル除外関数の呼び出しが戻り値を使用する呼び出しの場合は関数呼び出し部のオブジェクトプログラムに代えて前記コンパイル除外時の関数戻り値を関数の戻り値用レジスタに設定するオブジェクトプログラムを作成する手順をコンピュータに実行させるためのコンパイル処理プログラム。
【請求項１０】
請求項７乃至１０いずれかに記載のコンパイル処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースプログラムのコンパイル方法および処理装置、プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
標準ソースプログラムを使用して複数の製品機種毎の実行モジュールを作成する場合、
前記標準ソースプログラムには各製品機種で使用する全ての関数とその関数呼び出しを含めておき、製品機種毎の仕様に応じて、不要な関数の関数呼び出しと関数本体を除外する必要がある。
従来のコンパイラでは、関数単位での除外指定の機能がなく、標準ソースプログラムを使用して製品機種毎の実行モジュールを作成する場合には、図５に示すように、製品機種毎に不要な関数の関数呼び出しと関数本体を除外するために、標準ソースモジュールを製品機種毎に編集し、製品機種毎のソースモジュールからコンパイラおよびリンカにより実行モジュールを作成する方法が一般的であった（例えば、特許文献１参照）。
また、従来の他のプログラム翻訳装置は、使用されていない関数をリンク時に実行モジュールから除外するものであり、標準ソースプログラムで使用されている関数を除外することが出来ないため、製品機種毎の仕様に応じて標準ソースプログラムから不要な関数を除外するためには、標準ソースプログラムを編集する必要があった（例えば、特許文献２参照）。
【特許文献１】特開平９−２６９８９８号公報（第１−３頁、図１）
【特許文献２】特開２０００−１１２７７０号公報（第１−２頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
標準ソースプログラムを使用して複数の製品機種毎の実行モジュールを作成する場合、従来のコンパイラでは、製品機種毎に標準ソースプログラムの編集と製品機種毎のソースプログラムの管理が必要であり、多くの労力を要するという問題があった。
本発明はこのような問題点に鑑みてなされたものであり、標準ソースプログラムから、簡単に製品機種毎の実行モジュールを作成する方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記問題を解決するため、本発明は、次のように構成したのである。
請求項１に記載の発明は、ソースプログラムがコンパイルされてオブジェクトプログラムを作成するコンパイル方法において、関数のコンパイル要否を指定するコンパイル除外関数テーブルに基づいて、関数のコンパイル要否を判断することを特徴とするものである。
また、請求項２に記載の発明は、前記コンパイル除外関数テーブルにおいて、コンパイル除外関数と、前記関数のコンパイル除外時の関数戻り値と、を指定することを特徴とするものである。
また、請求項３に記載の発明は、ソースプログラムがコンパイルされてオブジェクトプログラムを作成するコンパイル方法において、コンパイル除外関数と前記関数のコンパイル除外時の関数戻り値とが指定されるコンパイル除外関数テーブルを備え、前記指定されたコンパイル除外関数の呼び出しが戻り値を使用しない呼び出しの場合はオブジェクトプログラムを作成せず、前記指定されたコンパイル除外関数の呼び出しが戻り値を使用する呼び出しの場合は関数呼び出し部のオブジェクトプログラムに代えて前記コンパイル除外時の関数戻り値を関数の戻り値用レジスタに設定するオブジェクトプログラムを作成することを特徴とするものである。
また、請求項４に記載の発明は、ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンパイル処理装置において、関数のコンパイル要否を指定するコンパイル除外関数テーブルを備え、前記コンパイル除外関数テーブルに基づいて、関数のコンパイル要否を判断することを特徴とするものである。
また、請求項５に記載の発明は、前記コンパイル除外関数テーブルにおいて、コンパイル除外関数と、前記関数のコンパイル除外時の関数戻り値と、が指定されることを特徴とするものである。
また、請求項６に記載の発明は、ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンパイル処理装置において、コンパイル除外関数と前記関数のコンパイル除外時の関数戻り値とが指定されるコンパイル除外関数テーブルを備え、前記指定されたコンパイル除外関数の呼び出しが戻り値を使用しない呼び出しの場合はオブジェクトプログラムを作成せず、前記指定されたコンパイル除外関数の呼び出しが戻り値を使用する呼び出しの場合は関数呼び出し部のオブジェクトプログラムに代えて前記コンパイル除外時の関数戻り値を関数の戻り値用レジスタに設定するオブジェクトプログラムを作成することを特徴とするものである。
また、請求項７に記載の発明は、ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンピュータ読み取り可能なプログラムであって、
関数のコンパイル要否を指定するコンパイル除外関数テーブルに基づいて、関数のコンパイル要否を判断する手順をコンピュータに実行させるものである。
また、請求項８に記載の発明は、前記コンパイル除外関数テーブルにおいて、コンパイル除外関数と、前記関数のコンパイル除外時の関数戻り値と、が指定されることを特徴とするものである。
また、請求項９に記載の発明は、ソースプログラムをコンパイルしてオブジェクトプログラムを作成するコンピュータ読み取り可能なプログラムであって、コンパイル除外関数と前記関数のコンパイル除外時の関数戻り値とが指定されるコンパイル除外関数テーブルに基づいて、前記指定されたコンパイル除外関数の呼び出しが戻り値を使用しない呼び出しの場合はオブジェクトプログラムを作成せず、前記指定されたコンパイル除外関数の呼び出しが戻り値を使用する呼び出しの場合は関数呼び出し部のオブジェクトプログラムに代えて前記コンパイル除外時の関数戻り値を関数の戻り値用レジスタに設定するオブジェクトプログラムを作成する手順をコンピュータに実行させるものである。
また、請求項１０に記載の発明は、請求項７乃至１０いずれかに記載のコンパイル処理プログラムを記録したものである。
【発明の効果】
【０００５】
本発明によると、関数単位でのコンパイル除外指定と除外時の関数戻り値の指定のみで、標準ソースプログラムから製品機種毎に不要な関数を除外した製品機種毎の実行モジュールを作成することができ、製品機種毎の標準ソースプログラムの編集と製品機種毎のソースプログラムの管理が不要となる。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の実施の形態について図を参照して説明する。
【実施例１】
【０００７】
一般に、複数の関数からなるソースプログラムは、図１のような構成となっている。すなわち、図において、関数Ａ内に記述された関数Ｂ呼び出し部により関数Ｂが呼び出され、関数Ｃ呼び出し部により関数Ｃが呼び出される。なお、ソースプログラムの構成は、図１で示されるものに限定されるものではなく、ある関数から他の関数を呼び出すものであれば、任意でよい。
図２は、本発明による実行モジュール作成フローを示したものである。図において、３はコンパイラであり、ソースモジュール１とコンパイル除外関数指定テーブル２を読み込み、後述するコンパイル方法により、図２のオブジェクトモジュール４を生成する。ここで、コンパイル除外関数とは、コンパイル不要な関数を示す。５はリンカであり、前記オブジェクトモジュールを読み込み、従来と同じリンク処理手段により、実行モジュールを生成する。
図３は、コンパイル除外関数指定テーブルである。コンパイル除外関数指定テーブルでは、コンパイル除外関数とコンパイル除外時の関数戻り値が指定される。また、コンパイル除外関数とコンパイル除外時の関数戻り値は、行単位にて、関数名と戻り値が任意の個数指定される。
【０００８】
図４は、本発明のコンパイル処理フローを示したものである。図において、コンパイル処理はソースプログラムから順次ソースステートメントを読み込み、そのソースステートメントに対するオブジェクトプログラムを作成することにより行われ、ソースプログラムの終了まで同様の処理が繰り返し実行される。
７はオブジェクトプログラム作成の分岐処理部であり、最初にソースステートメントを解析し関数の先頭であるかどうかを判定する。ソースステートメントが関数の先頭の場合はコンパイル除外関数であるか否かを図３に示したコンパイル除外関数指定テーブルを検索することにより判定する。コンパイル除外関数の場合は、後述するコンパイル除外関数の関数本体オブジェクトプログラム作成処理部１０に分岐する。コンパイル除外関数でない場合は、後述する従来のオブジェクトプログラム作成処理部９に分岐する。次にソースステートメントが関数呼び出しであるかどうかを判定し、ソースステートメントが関数呼び出し以外の場合は、従来のオブジェクトプログラム作成処理部９に分岐する。ソースステートメントが関数呼び出しの場合は、コンパイル除外関数であるか否かを図３に示すコンパイル除外関数指定テーブルを検索することにより判定する。コンパイル除外関数の場合は、後述するコンパイル除外関数の関数呼び出しオブジェクトプログラム作成処理部８に分岐する。コンパイル除外関数でない場合は、従来のオブジェクトプログラム作成処理部９に分岐する。
【０００９】
８は除外関数の関数呼び出しオブジェクトプログラム作成処理部であり、戻り値を使用する関数呼び出しかどうかを判断し、戻り値を使用しない関数呼び出しの場合はオブジェクトプログラムを作成せずに次のソースプログラムステートメント読込処理に戻る。戻り値を使用する関数呼び出しの場合は、図３に示すコンパイル除外関数指定テーブルで指定された除外時の戻り値を関数の戻り値用レジスタに設定することで、関数呼び出しの代わりとするオブジェクトプログラムを作成した後、次のソースプログラムステートメント読込処理に戻る。
９は従来のオブジェクトプログラム作成処理部であり、従来と同じ方法でオブジェクトプログラムを作成した後、次のソースプログラムステートメント読込処理に戻る。
１０はコンパイル除外関数の関数本体オブジェクトプログラム作成処理部であり、関数本体のオブジェクトプログラムは作成せずに、関数終了までのソースステートメントを破棄した後、次のソースプログラムステートメント読込処理に戻る。
このように、本発明によれば、コンパイル除外関数の指定と除外時の戻り値の指定のみで、標準ソースプログラムから不要な関数を除外したオブジェクトプログラムの作成が可能であり、一つの標準ソースプログラムから製品機種毎の実行モジュールを簡単に作成することが可能となる。
【産業上の利用可能性】
【００１０】
各種ソースプログラムから不要な関数を除外したオブジェクトプログラムが容易に作成できるので、コンパイラ全般に適用できる。
【図面の簡単な説明】
【００１１】
【図１】ソースプログラムの説明図
【図２】本発明の実施例を示す実行モジュール作成フロー
【図３】コンパイル除外関数指定テーブル
【図４】本発明の実施例を示すソースプログラムのコンパイル処理フロー
【図５】従来の製品機種毎の実行モジュール作成フロー
【符号の説明】
【００１２】
１  ソースモジュール
２  コンパイル除外関数と除外時関数戻り値指定テーブル
３  コンパイラ
４  オブジェクトモジュール
５  リンカ
６  実行モジュール
７  オブジェクトプログラム作成の分岐処理部
８  コンパイル除外関数の関数呼び出しオブジェクトプログラム作成処理部
９  従来のオブジェクトプログラム作成処理部
１０  コンパイル除定関数の関数本体オブジェクトプログラム作成処理部
【図１】
2006163854.tif 000003
【図２】
2006163854.tif 000004
【図３】
2006163854.tif 000005
【図４】
2006163854.tif 000006
【図５】
2006163854.tif 000007