JP2002082811A - コンパイル方法および記録媒体 - Google Patents

コンパイル方法および記録媒体

Info

Publication number
JP2002082811A
JP2002082811A JP2000332110A JP2000332110A JP2002082811A JP 2002082811 A JP2002082811 A JP 2002082811A JP 2000332110 A JP2000332110 A JP 2000332110A JP 2000332110 A JP2000332110 A JP 2000332110A JP 2002082811 A JP2002082811 A JP 2002082811A
Authority
JP
Japan
Prior art keywords
source
program
target program
file
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000332110A
Other languages
English (en)
Inventor
Masato Mimori
征人 三森
Shinji Asaka
真司 浅香
Hiroyuki Hosoya
洋行 細谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Hitachi Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd, Hitachi Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2000332110A priority Critical patent/JP2002082811A/ja
Priority to EP01106817A priority patent/EP1202171A3/en
Priority to US09/810,191 priority patent/US6983457B2/en
Publication of JP2002082811A publication Critical patent/JP2002082811A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】複数の手続きが記述されたソースプログラムフ
ァイルをコンパイルした後、そのソースプログラムファ
イル内の1つの手続きを変更して再びコンパイルする
と、変更していない手続きを含めた全ての手続きについ
て再びコンパイルする。その為、わずかな変更でもコン
パイル時間が必要になる問題がある。 【解決手段】目的プログラムファイル作成部109で、
目的プログラムファイル112内に、コンパイルした各
手続きのソースプログラムを格納しておき、2回目以降
のコンパイル時に、ソースプログラム解析部115で、
格納した各手続きのソースプログラムと、コンパイルし
ている手続きのソースプログラムを比較し、変更された
手続きを検出する。手続きが変更された場合のみ、以後
のコンパイル処理を行い、手続きが変更されていない場
合は以後のコンパイル処理を省略する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ソースプログラム
を入力してコンパイルし、作成した目的プログラムを目
的プログラムファイルに格納するコンパイル方法に関す
る。
【0002】
【従来の技術】従来のコンパイラは、ファイル単位でソ
ースプログラムファイルを入力し、ソースプログラムを
コンパイルしていた。このため、複数の手続きが記述さ
れた1つのソースプログラムをコンパイルし、その後、
そのソースプログラム内の1つの手続きのみを変更し
て、再び同じソースプログラムをコンパイルすると、同
じソースプログラム内の変更していない手続きを含めた
全ての手続きについてコンパイルしている。
【0003】上記のコンパイル手続きを自動的におこな
うツールとしてmakeツールがしばしば用いられている。
makeツールは、複数のソースプログラムから目的プログ
ラムを生成するためのツールで、ソースプログラムファ
イルの日付を管理して、目的プログラムファイルより新
しい日付のソースプログラムファイルのみをコンパイル
するものである。
【0004】
【発明が解決しようとする課題】上記の従来技術は、変
更があるかないかを区別するのにソースプログラムファ
イルの日付を参照していた。コンパイラはファイル単位
でソースプログラムを入力する為、複数の手続きが記述
された1つのソースプログラムファイル内で、他の手続
きには全く影響しない手続きが1つのみ変更されたり、
日付のみ変更された場合、コンパイラはソースプログラ
ムファイル内全ての手続きについてコンパイルしてしま
う。その為、わずかな変更やファイルの日付のみを変更
した場合でも、無駄なコンパイル処理を行い、コンパイ
ル時間がかかるという問題がある。
【0005】つまり、従来の技術では、複数の手続きが
記述されたソースプログラム内の1つの手続きのみの変
更でも、コンパイラは全ての手続きについてコンパイル
する。その為、わずかな変更でもコンパイルする時間は
短縮されず、無駄なコンパイル処理を行うという問題が
ある。
【0006】本発明の目的は、入力されたソースプログ
ラムファイルが以前に既にコンパイルされ、コンパイル
された時からソースプログラム中の手続きが変更されて
いない場合は、その手続きのコンパイル処理を省き、コ
ンパイル時間の短縮を図ることである。
【0007】
【課題を解決するための手段】上記目的を達成するため
に、本発明によるコンパイラは、コンパイルするソース
プログラムを識別する手段と、変更のあるソースプログ
ラム内の手続きについてのみコンパイルする手段、ソー
スプログラムを目的プログラムと一緒に目的プログラム
ファイル内に格納する手段を備える。
【0008】上記構成により、まず、コンパイラは入力
されたソースプログラムと、以前にコンパイルされ目的
プログラムファイル内に格納されている目的プログラム
に対応するソースプログラムを、ソースプログラム内の
手続きごとに比較し、変更のあった手続きを識別する。
つぎに、変更のあった手続きのみコンパイルをおこない
目的プログラムを得る。さらに、コンパイラした目的プ
ログラムとコンパイルしたソースプログラムを対応付け
て目的プログラムファイル内に格納する。
【0009】また、上記目的を達成するために、コンパ
イラはソースプログラムファイルを入力してソースプロ
グラムをコンパイルする際、コンパイルしたソースプロ
グラムを識別する為に、ソースプログラムの構文を解析
した情報をソース情報として、目的プログラムと一緒に
目的プログラムファイル内に格納する。
【0010】利用者が再度同じソースプログラムをコン
パイルする場合、コンパイラはコンパイルしている手続
きの構文を解析したあとで、目的プログラムファイル内
に格納されたソース情報を読み込み、コンパイラに入力
されるソース情報と比較する。比較した結果、一致する
場合はその手続きのソースプログラムは変更が無いと判
断し、以後のコンパイル処理は行わない。比較した結
果、一致しない場合はその手続きのソースプログラムが
変更されたと判断し、変更された手続きをコンパイルし
て目的プログラムを作成する。その後、目的プログラム
ファイル内の変更前の手続きの目的プログラムを、今回
コンパイルして作成した目的プログラムに更新し、目的
プログラムファイル内の変更前の手続きのソース情報
も、コンパイラに入力され構文を解析した情報をソース
情報としたものに更新する。
【0011】
【発明の実施の形態】以下、図面を用いて本発明の実施
の形態を説明する。
【0012】(実施例1)図1は本発明を用いたコンパ
イラの構成図である。101は記憶装置上に格納されて
いるソースプログラムファイル、102は本発明を実施
するコンパイラ本体、103はソースプログラムファイ
ルを入力する処理、104は入力されたソースプログラ
ムの構文を解析する処理、105は構文を解析した情報
と目的プログラムファイル内のソース情報を比較し、以
後の必要なコンパイル処理を行う必要があるかを判断す
る処理で、その中の106では目的プログラムファイル
内のソース情報を読取り、107では読取ったソース情
報と現在コンパイルしている手続きの構文を解析した情
報を比較する。108は一連のコンパイル処理において
一番複雑で時間のかかる最適化を行う処理、109はコ
ンパイルして作成した目的プログラムや構文を解析した
情報を、目的プログラムファイル内に格納する処理で、
その中の110では目的プログラムを目的プログラムフ
ァイルに格納、又は既に目的プログラムファイル内に同
じ手続きの目的プログラムが存在する場合は、その目的
プログラムを最新の目的プログラムに更新し、111で
はコンパイルした手続きの構文を解析した情報をソース
情報として目的プログラムファイルに格納、又は既に目
的プログラムファイル内に同じ手続きのソース情報が存
在する場合は、そのソース情報を最新のソース情報に更
新する。112はコンパイルして記憶装置上に格納され
る目的プログラムファイルである。
【0013】図2は、105のソース情報解析部のフロ
ーチャートである。201から203が106のソース
情報読取り部の処理で、204から205が107のソ
ース情報比較部の処理である。
【0014】201では、コンパイルしているソースプ
ログラムファイルに目的プログラムファイルが存在する
かを判断し、目的プログラムファイルが存在しない場合
は、コンパイルしているソースプログラムの全ての手続
きについて、108の最適化部から109の目的プログ
ラムファイル作成部の処理を行う。目的プログラムファ
イルが存在する場合は202の処理を行う。
【0015】202では、コンパイルしているソースプ
ログラムファイルの目的プログラムファイル内に、以前
格納したソース情報が存在するかどうかを判断し、目的
プログラムファイル内にソース情報が存在しない場合
は、コンパイルしているソースプログラム内の全ての手
続きについて、108の最適化部から109の目的プロ
グラムファイル作成部の処理を行う。目的プログラムフ
ァイル内にソース情報が存在する場合は203の処理を
行う。
【0016】203では、コンパイルしているソースプ
ログラムファイルの目的プログラムファイル内からソー
ス情報を読み込む処理を行う。
【0017】204では、203で読み込んだソース情
報の中に現在コンパイルしている手続きのソース情報が
存在するかどうかを判断する。もし、手続きのソース情
報が存在しない場合は、その手続きが新規に追加された
と判断し、その新規の手続きについて108の最適化部
から109の目的プログラムファイル作成部の処理を行
う。203で読み込んだソース情報の中に現在コンパイ
ルしている手続きのソース情報が存在する場合は205
の処理を行う。
【0018】205では、現在コンパイルしている手続
きの構文を解析した情報と、目的プログラムファイル内
に存在している該当する手続きのソース情報を比較し、
一致する場合はその手続きのソースプログラムは変更が
無いと判断し、108の最適化部から109の目的プロ
グラムファイル作成部の処理は行わない。構文を解析し
た情報とソース情報が一致しない場合は、その手続きの
ソースプログラムが変更されたと判断し、その手続きに
ついて108の最適化部から109の目的プログラムフ
ァイル作成部の処理を行う。
【0019】この201から205までの処理によっ
て、現在コンパイルしているソースプログラムの変更部
分を手続き単位に検出することができる。
【0020】図3は、109の目的プログラムファイル
作成・更新部のフローチャートである。
【0021】301では、コンパイルしているソースプ
ログラムファイルの目的プログラムファイルが存在する
かを判断する。もし、目的プログラムファイルが存在し
ない場合は、コンパイルしているソースプログラム内の
全ての手続きについて305の処理を行う。
【0022】302では、コンパイルしているソースプ
ログラムファイルの目的プログラムファイル内に、以前
格納したソース情報が存在するかどうかを判断する。も
し、目的プログラムファイル内にソース情報が存在しな
い場合は、コンパイルしているソースプログラム内の全
ての手続きについて305の処理を行う。
【0023】303では、コンパイルしているソースプ
ログラムの目的プログラムファイル内に既にソース情報
が存在し、そのソース情報の中に、現在コンパイルして
いる手続きのソース情報が存在するかどうかを判断す
る。もし、コンパイルしている手続きのソース情報が目
的プログラムファイル内に存在しない場合は、コンパイ
ルしている手続きについて305の処理を行う。
【0024】304では、目的プログラムファイル内に
既に存在するコンパイルした手続きの目的プログラムと
ソース情報を、今回コンパイルして作成した目的プログ
ラムと構文を解析した情報をソース情報としたものに更
新する。
【0025】305では、該当する手続きをコンパイル
して作成した目的プログラムと構文を解析した情報をソ
ース情報として、目的プログラムファイル内に新規に格
納する。
【0026】図4は、利用者からコンパイラへ本発明の
処理を行うかどうかの指示があった場合のフローチャー
トである。
【0027】401では、現在コンパイルしているソー
スプログラムの構文を解析した情報と、目的プログラム
ファイル内のソース情報を比較するかどうかを判断し、
利用者から比較する処理を行わない指示があった場合
は、コンパイルしているソースプログラムの全ての手続
きについて、108の最適化部から109の目的プログ
ラムファイル作成部の処理を行う。
【0028】402では、コンパイルした手続きの構文
を解析した情報を、ソース情報として目的プログラムフ
ァイル内に格納するかどうかを判断し、利用者から目的
プログラムファイル内にソース情報を格納しない指示が
あった場合は、111のソース情報作成・更新部の処理
は行わず、目的プログラムファイル内には目的プログラ
ムのみが格納される。
【0029】図5は、ソース情報を格納した場合の目的
プログラムファイルの構造である。111は記憶装置上
に格納された目的プログラムファイルで、その中に各手
続きの目的プログラムが格納された目的プログラム部5
01がある。目的プログラムファイル内にはコンパイル
した各手続きの構文を解析した情報もソース情報として
ソース情報部502に格納される。目的プログラムとソ
ース情報が同じ目的プログラムファイル内に格納されて
いるので、利用者は今までと同じコンパイラの使用方法
で本発明を利用することが出来る。
【0030】(実施例2)図6に本発明を用いた他の実
施例のコンパイラの構成図をしめす。記憶装置上に格納
されているソースプログラムファイル101を、本発明
によるコンパイラ102が入力してコンパイルし、記憶
装置に目的プログラムファイル112を出力する。この
目的プログラムファイル112の構造は、先の実施例と
同様にコンパイル結果である目的プログラムと該目的プ
ログラムのソースプログラムから構成され、詳細は後述
する。
【0031】以下、本発明のコンパイラ102の構成を
詳細に説明する。コンパイラ102は、ソースプログラ
ム入力部103と構文解析部104とソースプログラム
解析部105と目的プログラムファイル作成部109か
ら構成される。ソースプログラム入力部103は、ソー
スプログラムファイル101からコンパイル対象のソー
スプログラムを入力し、構文解析部104は、入力した
ソースプログラムの構文を解析し、言語仕様を満足して
いるかを判別する。ソースプログラム解析部105は、
入力したソースプログラムの変更部分を検出して、ソー
スプログラムのコンパイルを行うか否かを手続き単位に
判定するものであり、目的プログラムファイル認識部6
01、ソースプログラム読み取り部602、ソースプロ
グラム比較部603、最適化処理部振り分け部604か
らなる。目的プログラムファイル作成部109は、手続
き単位にコンパイルをおこない、目的プログラムファイ
ル112内にコンパイル結果である目的プログラムと、
目的プログラムに対応するソースプログラムを出力する
ものであり、目的プログラム生成部605、目的プログ
ラム出力部606、ソースプログラム出力部607から
なる。
【0032】目的プログラムファイル認識部601は、
コンパイルするように指定されたソースプログラムファ
イル101に対応するソースプログラムが目的プログラ
ムファイル112にすでに存在するか確認を行う。ソー
スプログラム読み取り部602は、目的プログラムファ
イル112内のソースプログラムを手続きごとに読み取
る。ソースプログラム比較部603は、読み取った手続
きのソースプログラムとコンパイラに指定されたソース
プログラムを手続きごとに比較し、ソースプログラムフ
ァイル101の変更部分を検出する。最適化処理部振り
分け部604は、コンパイルする手続きのソースプログ
ラムに変更部分が検出された場合、つぎの最適化処理部
108を行うよう指示する。最適化処理部108は、コ
ンパイルしたソースプログラムを実行する時の速度を速
くする為、ソースプログラムを解析し、意味の無い処理
ステップを削除したり、並べ替えたりする処理を行う。
また、指定によっては、生成する目的プログラムのサイ
ズが小さくなるような処理を行う。最適化を行うのレベ
ルをコンパイル時に指定でき、レベルによりコンパイル
時間も長くなる。
【0033】目的プログラム生成部605は、最適化処
理をおこなったソースプログラムをコンパイルし目的プ
ログラムを生成する。目的プログラム出力部606は、
コンパイルして生成された目的プログラムを目的プログ
ラムファイル103内に出力し、ソースプログラム出力
部607は、コンパイルしたソースプログラムを手続き
単位に目的プログラムファイル103内に出力する。
【0034】図7に、ソースプログラム解析部105の
処理フローをしめす。最初にコンパイラに指定されたソ
ースプログラムファイル101に対応する目的プログラ
ムファイル112が存在するか判別する(201ステッ
プ)。判別の結果、目的プログラムファイル112が存
在しないときは、最初にコンパイルする場合であり、ソ
ースプログラムファイル101内の全ての手続きのソー
スプログラムをコンパイルするため、全ての手続きにつ
いて後述のステップ701の処理を行う。目的プログラ
ムファイル112が存在する場合には、以前コンパイル
した時に格納したソースプログラムが、目的プログラム
ファイル112内に存在するかどうかを判別する(20
2ステップ)。判別の結果、目的プログラムファイル1
12内にソースプログラムが存在しない場合は、ソース
プログラムファイル101内の全ての手続きのソースプ
ログラムをコンパイルする為、全ての手続きについて後
述のステップ701の処理を行う。目的プログラムファ
イル112内にソースプログラムが存在する場合には、
目的プログラムファイル112内に、コンパイルして
いる手続きのソースプログラムが存在するかどうかを判
別する(204ステップ)。この判別の結果、コンパイ
ルしている手続きのソースプログラムが存在しない場合
は、その手続きが新規に追加されたと判断し、その手続
きをコンパイルするため、その手続きについて後述のス
テップ701の処理を行う。コンパイルしている手続き
のソースプログラムが存在する場合には、コンパイルし
ているソースプログラムファイル101に対応するソー
スプログラムを目的プログラムファイル103内から、
手続き単位に読み込む(203ステップ)。つぎに、コ
ンパイルする手続きのソースプログラムと、目的プログ
ラムファイル112内の対応する手続きのソースプログ
ラムを比較し、一致しているかを判別する(205ステ
ップ)。この判別の結果、コンパイルしている手続きの
ソースプログラムと、目的プログラムファイル112内
の対応する手続きのソースプログラムが一致しない場合
は、その手続きが変更されたと判断し、その手続きをコ
ンパイルするため、その手続きについて次のステップ7
01の処理を行う。一致する場合は、その手続きは変更
されていないため、コンパイルは必要ないので次のステ
ップ701の処理は行わない。なお、ソースプログラム
中で複数の手続きが変更されていた場合には、ステップ
203、ステップ204の処理を複数回おおなうように
する。ステップ701では、変更のあったソースプログ
ラムの手続きや、ソースプログラムについて最適化処理
をおこなうようにする。上記の処理フローにより、コン
パイルしている手続きのソースプログラムの変更部分を
検出し、手続きごとにコンパイルを行うかを振り分ける
ことができる。
【0035】図8は、目的プログラムファイル作成部1
08の処理を説明するフローチャートである。最初に、
先に説明したソースプログラム解析部105で、ソース
プログラムの手続きの変更を検出し、手続きごとに最適
化処理されたかを判定する(801ステップ)。判定の
結果、最適化処理された手続きがある場合には、つぎの
ステップ802、ステップ803、ステップ804の処
理をおこなう。
【0036】ステップ802では、ソースプログラムの
手続きをコンパイルして目的プログラムを生成し、ステ
ップ803では、コンパイルした手続きの目的プログラ
ムを目的プログラムファイル112内に出力し、既にコ
ンパイルした手続きの目的プログラムが目的プログラム
ファイル112内に存在する場合は、その目的プログラ
ムを更新する。ステップ804は、コンパイルした手続
きのソースプログラムを目的プログラムファイル112
内に出力し、既にコンパイルした手続きのソースプログ
ラムが目的プログラムファイル112内に存在する場合
は、そのソースプログラムを更新する。このようにし
て、ソースプログラムファイル101の変更された手続
きだけをコンパイルし、生成された目的プログラムを目
的プログラムファイル112に格納するとともに、対応
するソースプログラムも、目的プログラムに関連付けて
目的プログラムファイル112に格納するようにする。
【0037】上記の実施例では、初めてコンパイルをお
こなう場合でもコンパイル時に指定されたソースプログ
ラムファイル101が目的プログラムファイル112に
存在するか判定をおこなっているが、このように明らか
に目的プログラムファイル112にソースプログラムが
ない場合には、図9のような処理フローを追加してもよ
い。つまり、コンパイラがソースプログラムを比較する
か否かの指示を判別するようにし(901ステップ)、
比較する処理を行わない指示があった場合は、ソースプ
ログラム解析部105の処理は行わずに、すべての手続
きについて、最適化処理とコンパイルをおこなうように
する。これにより、目的プログラムファイル112内に
ソースプログラムが存在していないということが既にわ
かっている場合は、ソースプログラム解析部105の処
理を省略でき、コンパイル時間が短縮できる。
【0038】また、目的プログラムファイル内には、手
続きごとに目的プログラムと対応するソースプログラム
が格納されているが、ソースプログラムが不要の場合、
例えば、他者にソースプログラムを開示したくない場合
や今後再びコンパイルする必要がない場合に、図10の
ような処理フローを追加してもよい。つまり、コンパイ
ラが目的プログラムファイル内にソースプログラムを格
納するか否かの指示を判別するようにし(1001ステ
ップ)、ソースプログラムを格納する指示があった場合
は、先に述べたように目的プログラムに対応するソース
プログラムを目的プログラムファイル112に出力する
ようにする。これにより不要なソースプログラムが目的
プログラムファイルの格納されることを防止できる。
【0039】上記実施例では、手続き単位にソースプロ
グラムの変更部を検出し、変更部を含む手続きをコンパ
イルし、コンパイルした目的プログラムと該目的プログ
ラムのソースプログラムを手続きごとに目的プログラム
ファイルに格納するようにしている。ソースプログラム
を変更する場合に、定数の変更や参照する変数の変更が
よくおこなわれる。このような変更の場合は、目的プロ
グラムのサイズは変わらずに一部のコードが変更される
ことがおおい。このため、変更部の検出をソースプログ
ラムのステップ単位におこない、ステップ単位にコンパ
イルをおこない、目的プログラムと該目的プログラムの
ソースプログラムをステップ単位に目的プログラムファ
イルに格納するようにしてもよい。この例では、コンパ
イル時間の短縮の効果より大きくなる。
【0040】つぎに本発明のコンパイラが出力する目的
プログラムファイルについて詳細に説明する。図11に
しめすように、記憶装置上に格納された目的プログラム
ファイル112の中には、各手続きの目的プログラムが
更新しやすいように別々に格納された目的プログラム1
101と、コンパイルしたソースプログラムの全ての手
続きを更新しやすいように別々に格納したソースプログ
ラム1102がある。このように、目的プログラムとコ
ンパイルしたソースプログラムが同じ目的プログラムフ
ァイル103内に保持されているので、利用者は操作性
を変える必要はない。また、ソースプログラムは、同じ
目的プログラムファイル112内に保持しなくても、手
続きの目的プログラム1101と手続きのソースプログ
ラム1102が記憶装置上で、対応付けられて格納され
ていれば本発明は実現可能である。
【0041】図12は、ソースプログラムファイル10
1に格納されているソースプログラムの一例をしめす図
である。ソースプログラムには、func1とfunc
2の2つの手続きが存在し、本発明のコンパイラにより
図13にしめす目的プログラムファイル112が生成さ
れる。目的プログラムファイルは、目的プログラム部と
ソースプログラム部から構成され、目的プログラム部に
は、func1の目的プログラム1301とfunc2
の目的プログラム1302が生成される。ソースプログ
ラム部には、コンパイル時に目的プログラムに対応し
て、func1のソースプログラム1303とfunc
2のソースプログラム1304が格納される。
【0042】ソースプログラムファイル101のfunc1
のみ修正して再度コンパイルした場合について説明す
る。ソースプログラム解析部105で、ソースプログラ
ムファイル101と目的プログラムファイル112のソ
ースプログラム部の1303がが比較され、func1の変
更を検出する。つぎに目的プログラムファイル部109
で、func1のみコンパイルを行い、目的プログラムファ
イル112内のfunc1の目的プログラム1301とfunc1
のソースプログラム1303を更新する。
【0043】つぎに図14を用いて、本発明のコンパイ
ラが出力する目的プログラムファイル112の構成を説
明する。目的プログラムファイル112は、コンパイラ
が出力する目的プログラムとソースプログラム部とヘッ
ダー部から構成される。ヘッダー部には、コンパイルし
た各手続きごとに目的プログラムとソースプログラムが
関連付けられるように、それぞれの格納場所が格納され
る。
【0044】さらに、ヘッダー部には、該手続きをコン
パイルした時のコンパイラのバージョンやコンパイルし
た時の最適化レベルも格納されている。使用するコンパ
イラが新しくなったり、コンパイル時の最適化レベルが
変った場合は、各手続きの目的プログラムの作成条件を
合わせる為に全ての手続きがコンパイル対象となるが、
ソースプログラムを比較するだけでは検出できないの
で、コンパイルした時のコンパイラのバージョンやコン
パイルした時の最適化レベルも一緒に比較する。それに
より、コンパイルするコンパイラやコンパイルした時の
最適化レベルが変っても、不正にコンパイルを省略する
ことがなくなる。
【0045】
【発明の効果】本発明によれば、コンパイラに指定され
たソースプログラムファイルをコンパイルせずに、ソー
スプログラムの変更部分をコンパイルすることができる
ので、コンパイル時間を短縮でき、しかもコンパイルし
たソースプログラムが目的プログラムファイル中にある
ため、利用者は操作性を変えることなく、コンパイル時
間の短縮を図ることができる。特に、複数の手続きが記
述されたソースプログラムであって、手続き単位にリコ
ンパイルをおこなうことにより、コンパイル時の最適化
処理に膨大な時間がかかる手続きが変更されていない場
合は、コンパイル時間を大幅に短縮できる。
【0046】また、ソースプログラムファイルを誤って
削除した場合でも、目的プログラムファイル内からソー
スプログラムが取り出せる為、削除前の環境に復旧させ
ることができる。
【図面の簡単な説明】
【図1】本発明のコンパイラの実施例1の構成図。
【図2】実施例1のソース情報解析部のフローチャー
ト。
【図3】実施例1のソース情報作成・更新部のフローチ
ャート。
【図4】実施例1の利用者からコンパイラへの本発明を
使用する指示があった場合のフローチャート。
【図5】実施例1の目的プログラムファイルの構造図。
【図6】本発明のコンパイラの実施例2の構成図。
【図7】実施例2のソースプログラム解析部のフローチ
ャート。
【図8】実施例2の目的プログラムファイル作成部のフ
ローチャート。
【図9】実施例2のコンパイラへのソース比較指示をお
こなう場合のフローチャート。
【図10】実施例2のコンパイラへのソース出力指示を
おこなう場合のフローチャート。
【図11】実施例2の目的プログラムファイルの構造
図。
【図12】実施例2のソースプログラムファイル例。
【図13】実施例2の目的プログラムファイルの構成
例。
【図14】実施例2の別の目的プログラムファイルの構
成例。
【符号の説明】
101…ソースプログラムファイル、102…コンパイラ本
体、103…ソースプログラム入力部、104…構文解析部、
105…ソース情報解析部、106…ソース情報読取り部、10
7…ソース情報比較部、108…最適化部、109…目的プロ
グラムファイル作成部、110…目的プログラム作成・更
新部、111…ソース情報作成・更新部、112…目的プログ
ラムファイル、201〜205…ソース情報解析部の処理手
順、301〜305…ソース情報作成・更新部の処理手順、40
1〜402…利用者からコンパイラへの指示があった場合処
理手順、501〜502…目的プログラムファイルを構成する
情報、601…目的プログラムファイル認識部、602…ソー
スプログラム読み取り部、603…ソースプログラム比較
部、604…最適化処理部振り分け部、605…目的プログラ
ム生成部、606…目的プログラム出力部、607…ソースプ
ログラム出力部、
フロントページの続き (72)発明者 浅香 真司 神奈川県横浜市戸塚区戸塚町5030番地 株 式会社日立製作所ソフトウェア開発本部内 (72)発明者 細谷 洋行 神奈川県横浜市中区尾上町6丁目81番地 日立ソフトウェアエンジニアリング株式会 社内 Fターム(参考) 5B081 CC11 CC41

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】ソースプログラムから目的プログラムを生
    成するコンパイラにおいて、コンパイルした目的プログ
    ラムを目的プログラムファイルに格納し、前記目的プロ
    グラムファイルに該目的プログラムのソースプログラム
    を該目的プログラムに対応付けて格納することを特徴と
    するコンパイル方法。
  2. 【請求項2】請求項1において、目的プログラムを生成
    する前に、コンパイラに入力するソースプログラムと前
    記目的プログラムファイルに格納されている該目的プロ
    グラムに対応するソースプログラムを比較し、以前コン
    パイルした時とのソースプログラムに対する変更部分を
    検出し、入力したソースプログラムの変更部分をコンパ
    イルし、コンパイルした目的プログラムと前記入力ソー
    スプログラムの変更部分を前記目的プログラムファイル
    に格納することを特徴とするコンパイル方法。
  3. 【請求項3】ソースプログラムから目的プログラムを生
    成するコンパイラにおいて、コンパイラに入力するソー
    スプログラムの構文を解析してソース情報を取得し、前
    記ソース情報をコンパイルした目的プログラムを目的プ
    ログラムファイルに格納し、前記目的プログラムファイ
    ルに該目的プログラムのソース情報を該目的プログラム
    に対応付けて格納することを特徴とするコンパイル方
    法。
  4. 【請求項4】請求項3において、目的プログラムを生成
    する際に、前記コンパイラに入力するソースプログラム
    の構文を解析したソース情報と前記目的プログラムファ
    イルに格納されているソース情報を比較し、以前コンパ
    イルした時とのソース情報に対する変更部分を検出し、
    入力したソースプログラムのソース情報の変更部分をコ
    ンパイルし、目的プログラムと前記ソース情報の変更部
    分を前記目的プログラムファイルに格納することを特徴
    とするコンパイル方法。
  5. 【請求項5】請求項2または請求項4において、前記ソ
    ースプログラムまたは前記ソース情報の比較は、ソース
    プログラムの手続き単位をおこない、前記ソースプログ
    ラムまたは前記ソース情報の変更部をコンパイルし、前
    記目的プログラムファイルに手続き単位に目的プログラ
    ムとソースプログラムまたはソース情報を対応付けて格
    納することを特徴とするコンパイル方法。
  6. 【請求項6】請求項2または請求項4において、前記ソ
    ースプログラムまたは前記ソース情報の比較は、ソース
    プログラムの処理ステップ単位をおこない、前記ソース
    プログラムまたは前記ソース情報の変更部をコンパイル
    し、前記目的プログラムファイルに処理ステップ単位に
    目的プログラムとソースプログラムまたはソース情報を
    格納することを特徴とするコンパイル方法。
  7. 【請求項7】請求項2または請求項4において、コンパ
    イラに入力するソースプログラムと目的プログラムファ
    イルに格納されている該目的プログラムに対応するソー
    スプログラムまたはソース情報の比較するか否かの指定
    を入力し、比較しない指定が入力された場合は、コンパ
    イラに入力したソースプログラムのすべてを変更部分と
    してコンパイルすることを特徴とするコンパイル方法。
  8. 【請求項8】請求項1または請求項3において、目的プ
    ログラムファイルに目的プログラムのソースプログラム
    またはソース情報を格納するか否かの指定を入力し、格
    納しない指定が入力された場合は、目的プログラムを目
    的プログラムファイルに格納することを特徴とするコン
    パイル方法。
  9. 【請求項9】請求項1から請求項8のいずれかのコンパ
    イル方法を実行させるためのプログラムを記録したコン
    ピュータ読み取り可能な記録媒体。
  10. 【請求項10】請求項1から請求項8のいずれかのコン
    パイル方法により生成された目的プログラムファイルを
    記録したコンピュータ読み取り可能な記録媒体。
JP2000332110A 2000-06-28 2000-10-25 コンパイル方法および記録媒体 Pending JP2002082811A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2000332110A JP2002082811A (ja) 2000-06-28 2000-10-25 コンパイル方法および記録媒体
EP01106817A EP1202171A3 (en) 2000-10-25 2001-03-19 Compile method and program recording medium
US09/810,191 US6983457B2 (en) 2000-10-25 2001-03-19 Compile method for storing source code within object code

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000200068 2000-06-28
JP2000-200068 2000-06-28
JP2000332110A JP2002082811A (ja) 2000-06-28 2000-10-25 コンパイル方法および記録媒体

Publications (1)

Publication Number Publication Date
JP2002082811A true JP2002082811A (ja) 2002-03-22

Family

ID=26595207

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000332110A Pending JP2002082811A (ja) 2000-06-28 2000-10-25 コンパイル方法および記録媒体

Country Status (1)

Country Link
JP (1) JP2002082811A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983457B2 (en) * 2000-10-25 2006-01-03 Hitachi, Ltd. Compile method for storing source code within object code
JP2010267264A (ja) * 2009-05-15 2010-11-25 Internatl Business Mach Corp <Ibm> コンポーネント・ベース・アプリケーションに対して実行可能なコードを構築する方法、その方法を実行するプログラムを含むコンピュータ可読の記憶媒体、およびコンパイラ
JP2016537755A (ja) * 2013-10-18 2016-12-01 マイクロソフト テクノロジー ライセンシング,エルエルシー インタラクティブ開発環境からソフトウェアアーチファクトをインクリメンタルにコンパイルすること

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6983457B2 (en) * 2000-10-25 2006-01-03 Hitachi, Ltd. Compile method for storing source code within object code
JP2010267264A (ja) * 2009-05-15 2010-11-25 Internatl Business Mach Corp <Ibm> コンポーネント・ベース・アプリケーションに対して実行可能なコードを構築する方法、その方法を実行するプログラムを含むコンピュータ可読の記憶媒体、およびコンパイラ
US8943482B2 (en) 2009-05-15 2015-01-27 International Business Machines Corporation Incrementally constructing executable code for component-based applications
JP2016537755A (ja) * 2013-10-18 2016-12-01 マイクロソフト テクノロジー ライセンシング,エルエルシー インタラクティブ開発環境からソフトウェアアーチファクトをインクリメンタルにコンパイルすること

Similar Documents

Publication Publication Date Title
US6954747B1 (en) Methods for comparing versions of a program
US11579856B2 (en) Multi-chip compatible compiling method and device
US6961931B2 (en) Dependency specification using target patterns
US20040049768A1 (en) Method and program for compiling processing, and computer-readable medium recoding the program thereof
JP4181326B2 (ja) コード最適化のための方法、装置及びプログラム
US6934940B2 (en) Source code transformation-temporary object reduction
JP2018510445A (ja) プログラム性能を向上させる領域特化システムおよび方法
US10013244B2 (en) Apparatus and method to compile a variadic template function
JPH0926884A (ja) バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置
US6983457B2 (en) Compile method for storing source code within object code
JPH06309204A (ja) データ処理方法及びその装置
KR20090011974A (ko) 컴파일 대상 파일 추출 방법
JP2002082811A (ja) コンパイル方法および記録媒体
GB2420638A (en) Method of substituting code fragments in Internal Representation
JP3266097B2 (ja) 非リエントラントプログラムの自動リエントラント化方法及びシステム
JP2017091070A (ja) 実行可能コード生成プログラムおよび実行可能コード生成装置
US20170344351A1 (en) Information processing apparatus, compiling management method, and recording medium
JP2008071065A (ja) インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体
JP2006004145A (ja) プログラムコード生成装置
JP2000207226A (ja) コ―ド最適化装置、言語処理装置及びコ―ド最適化方法
JP2641402B2 (ja) Dmlオブジェクト管理方式
JP3922699B2 (ja) ループ内不変な式の移動に関する最適化方式およびプログラム
JPH11195011A (ja) 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体
JPH0887416A (ja) 制御プログラム作成装置
Reddy et al. Incremental aspect weaving: an approach for faster AOP learning

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060512

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061211

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070406

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070413

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20070427