JPH0337727A - コンパイラにおける最適化方式 - Google Patents
コンパイラにおける最適化方式Info
- Publication number
- JPH0337727A JPH0337727A JP17244789A JP17244789A JPH0337727A JP H0337727 A JPH0337727 A JP H0337727A JP 17244789 A JP17244789 A JP 17244789A JP 17244789 A JP17244789 A JP 17244789A JP H0337727 A JPH0337727 A JP H0337727A
- Authority
- JP
- Japan
- Prior art keywords
- rules
- intermediate language
- term
- rewrite
- language string
- 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
Links
- 238000005457 optimization Methods 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 23
- 238000006243 chemical reaction Methods 0.000 abstract description 21
- 238000012545 processing Methods 0.000 abstract description 19
- 238000012217 deletion Methods 0.000 abstract description 2
- 230000037430 deletion Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- ZAKOWWREFLAJOT-CEFNRUSXSA-N D-alpha-tocopherylacetate Chemical compound CC(=O)OC1=C(C)C(C)=C2O[C@@](CCC[C@H](C)CCC[C@H](C)CCCC(C)C)(C)CCC2=C1C ZAKOWWREFLAJOT-CEFNRUSXSA-N 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
(産業上の利用分野〕
本発明は電子計算機システムのコンパイラにおける最適
化方式に関するものである。
化方式に関するものである。
周知のように、コンパイラは高級プロゲラ旦ング言語に
よって記述されたソースプログラムを入力し、電子計算
機で実行可能なコードによるオブジェクトプログラムを
出力するものである。
よって記述されたソースプログラムを入力し、電子計算
機で実行可能なコードによるオブジェクトプログラムを
出力するものである。
ところで、コンパイルにあたってはソースプログラムに
現れる記述を単純に対応するコードに変換することによ
ってもオブジェクトプログラムを生成することができる
が、一般にそのようなコードは多分に無駄を含んでおり
、書き換えを行うことにより、結果的に同じ処理であり
ながら実行時間を短縮することが可能である。例えば、
数式を例にとると、ある式の値から定数値を減算する場
合は、定数値を負の値にして加算するように式を書き換
えることにより、実行時間を短縮することができる。こ
れは、電子計算機のハードウェアの機能上、減算よりも
加算の方が処理速度が速いためである。
現れる記述を単純に対応するコードに変換することによ
ってもオブジェクトプログラムを生成することができる
が、一般にそのようなコードは多分に無駄を含んでおり
、書き換えを行うことにより、結果的に同じ処理であり
ながら実行時間を短縮することが可能である。例えば、
数式を例にとると、ある式の値から定数値を減算する場
合は、定数値を負の値にして加算するように式を書き換
えることにより、実行時間を短縮することができる。こ
れは、電子計算機のハードウェアの機能上、減算よりも
加算の方が処理速度が速いためである。
このようなことから、一般にコンパイラにおいては、ソ
ースプログラムを解析した後の未だコードに変換する前
の中間言語列の段階で、所定の変換規則に基づき可能な
限り書き換えを行うようにしており、これらの処理は最
適化処理と呼ばれている。
ースプログラムを解析した後の未だコードに変換する前
の中間言語列の段階で、所定の変換規則に基づき可能な
限り書き換えを行うようにしており、これらの処理は最
適化処理と呼ばれている。
しかして、従来のコンパイラ最適化部は、上述した如き
最適化処理を行う手続きとして構成されており、個々の
変換規則はその手続き中にその変換を実行するためのプ
ログラムコードとして分散されて埋め込まれていた。
最適化処理を行う手続きとして構成されており、個々の
変換規則はその手続き中にその変換を実行するためのプ
ログラムコードとして分散されて埋め込まれていた。
従来のコンパイラ最適化部は上述したように構成されて
おり、手続きおよびその中に埋め込まれた変換規則の配
置が適切であれば充分な最適化が行えるものであったが
、−a的にはその基本的な構成に起因して次のような欠
点があった。
おり、手続きおよびその中に埋め込まれた変換規則の配
置が適切であれば充分な最適化が行えるものであったが
、−a的にはその基本的な構成に起因して次のような欠
点があった。
1)変換規則の通用順序が最適化を実現する手続きによ
って固定されるので、入力する中間言語列の並び方によ
っては、ある変換規則の適用後に別の変換規則の適用が
可能であるにもかかわらず、適用できない場合があり、
充分な最適化が行えない。
って固定されるので、入力する中間言語列の並び方によ
っては、ある変換規則の適用後に別の変換規則の適用が
可能であるにもかかわらず、適用できない場合があり、
充分な最適化が行えない。
(2)変換規則の追加、変更もしくは削除を行うために
は、コンパイラ最適化部の手続き全体を作り変えなけれ
ばならず、保守が煩雑である。
は、コンパイラ最適化部の手続き全体を作り変えなけれ
ばならず、保守が煩雑である。
(3)変換規則の適用が系統的に−行いにくいので、最
適化を実行する手続きの停止性、言い換えればどの程度
まで最適化処理を行えば充分であるかということを検証
するのが困難である。
適化を実行する手続きの停止性、言い換えればどの程度
まで最適化処理を行えば充分であるかということを検証
するのが困難である。
本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、設定した変換規則が可能な限り適用
できると共に、変換規則の追加、変更もしくは削除に容
易に対応ができ、更に停止性の検証が容易なコンパイラ
における最適化方式を提供することにある。
的とするところは、設定した変換規則が可能な限り適用
できると共に、変換規則の追加、変更もしくは削除に容
易に対応ができ、更に停止性の検証が容易なコンパイラ
における最適化方式を提供することにある。
本発明は上記の目的を遠戚するため、
所定の項の記述につき同じ処理をより短時間で実行でき
る記述を対応付けた規則を系統的に集めた項書き換え規
則の集合と、 入力した中間言語列に含まれる項を前記項書き換え規則
の集合を用いて書き換える項書き換えエンジンとをコン
パイラ最適化部に備えるようにしている。
る記述を対応付けた規則を系統的に集めた項書き換え規
則の集合と、 入力した中間言語列に含まれる項を前記項書き換え規則
の集合を用いて書き換える項書き換えエンジンとをコン
パイラ最適化部に備えるようにしている。
本発明のコンパイラにおける最適化処理方式にあっては
、人力した中間言語列に対し、コンパイラ最適化部に設
けられた項書き換えエンジンが、所定の項の記述につき
同じ処理をより短時間で実行できる記述を対応付けた規
則を系統的に集めた項書き換え規則の集合を用い、中間
言語列に含まれる項を書き換える。
、人力した中間言語列に対し、コンパイラ最適化部に設
けられた項書き換えエンジンが、所定の項の記述につき
同じ処理をより短時間で実行できる記述を対応付けた規
則を系統的に集めた項書き換え規則の集合を用い、中間
言語列に含まれる項を書き換える。
以下、本発明の実施例につき図崩を参照して説明する。
第1図は本発明の基本的な構成を示したものであり、中
間言語列2を人力し中間言語列3を出力するコンパイラ
最適化部1において、項書き換えエンジン11と項書き
換え規則の集合12とを備えた点に特徴を有している。
間言語列2を人力し中間言語列3を出力するコンパイラ
最適化部1において、項書き換えエンジン11と項書き
換え規則の集合12とを備えた点に特徴を有している。
ここで、項書き換え規則の集合12は所定の項の記述に
つき同じ処理をより短時間で実行できる記述を対応付け
た規則を系統的に集めたものであり、項書き換えエンジ
ン11は入力した中間言語列2に含まれる項を項書き換
え規則の集合12を用いて書き換え、書き換えた後の中
間言語列3を出力する機能を有するものである。
つき同じ処理をより短時間で実行できる記述を対応付け
た規則を系統的に集めたものであり、項書き換えエンジ
ン11は入力した中間言語列2に含まれる項を項書き換
え規則の集合12を用いて書き換え、書き換えた後の中
間言語列3を出力する機能を有するものである。
第2図は第1図をより具体化した本発明の実施例を示し
たものであり、式の簡略化にかかる最適化処理を行う場
合について示している。第2図において、項書き換え規
則の集合は12A、12B。
たものであり、式の簡略化にかかる最適化処理を行う場
合について示している。第2図において、項書き換え規
則の集合は12A、12B。
12Cの3つの部分から構成されると共に、項書き換え
エンジン11を制御する最適化制御部13が設けられて
いる。なお、最適化制御部13の処理の詳細を第3図に
、項書き換えエンジン11の処理□の詳細を第4図にそ
れぞれ示しである。また、項書き換え規則の集合12A
に含まれる等式プログラムの例を第5図に、項書き換え
規則の集合12Bに含まれる等式プログラムの例を第6
図に、項書き換え規則の集合12Cに含まれる等式プロ
グラムの例を第7図にそれぞれ示しである。第5図ない
し第7図において、reJは任意の弐を、rcon (
i)Jは定数値iを、rname、Jは変数名をそれぞ
れ示しており、左辺に示す項が中間言語列2中に現れた
場合には右辺の項に書き換えるという変換規則を表して
いる。なお、項書き換え規則の集合12A、12B、1
2Cは、一つの集合の中では適用順序が固定でないため
配置には関係ないが、集合単位で見た場合には項書き換
え規則の集合12Bを適用した後には項書き換え規則の
集合12Aを適用する必要はないように、また、項書き
換え規則の集合12Cを適用した後には項書き換え規則
の集合12B、12Aを適用する必要はないように変換
規則が選ばれている。
エンジン11を制御する最適化制御部13が設けられて
いる。なお、最適化制御部13の処理の詳細を第3図に
、項書き換えエンジン11の処理□の詳細を第4図にそ
れぞれ示しである。また、項書き換え規則の集合12A
に含まれる等式プログラムの例を第5図に、項書き換え
規則の集合12Bに含まれる等式プログラムの例を第6
図に、項書き換え規則の集合12Cに含まれる等式プロ
グラムの例を第7図にそれぞれ示しである。第5図ない
し第7図において、reJは任意の弐を、rcon (
i)Jは定数値iを、rname、Jは変数名をそれぞ
れ示しており、左辺に示す項が中間言語列2中に現れた
場合には右辺の項に書き換えるという変換規則を表して
いる。なお、項書き換え規則の集合12A、12B、1
2Cは、一つの集合の中では適用順序が固定でないため
配置には関係ないが、集合単位で見た場合には項書き換
え規則の集合12Bを適用した後には項書き換え規則の
集合12Aを適用する必要はないように、また、項書き
換え規則の集合12Cを適用した後には項書き換え規則
の集合12B、12Aを適用する必要はないように変換
規則が選ばれている。
以下、第2図ないし第7図に沿って実施例の動作を説明
する。
する。
第2図において、中間言語列2が与えられると、コンパ
イラ最適化部1の最適化制御部13が動作を開始する。
イラ最適化部1の最適化制御部13が動作を開始する。
最適化制御部13は、第3図に示すように、中間言語列
2より式を得てその式をEとしくステップ131)、次
いで、弐Eが空であるか否かを判断する(ステップ13
2)。判断の結果、弐Eが空であるときは最適化処理を
施すべき中間言語列が存在しないので処理を終了する。
2より式を得てその式をEとしくステップ131)、次
いで、弐Eが空であるか否かを判断する(ステップ13
2)。判断の結果、弐Eが空であるときは最適化処理を
施すべき中間言語列が存在しないので処理を終了する。
また、弐Eが空でないときは、項書き換えエンジン11
′を起動し、弐Eと項書き換え規則の集合12Aとを用
いて処理を行わせて書き換え後の式をEとする(ステッ
プ133〉。次いで、項書き換えエンジン11を起動し
、式Eと項書き換え規則の集合12Bとを用いて処理を
行わせて書き換え後の式をEとしくステップ134)、
その後も同様に項書き換えエンジン11を起動し、弐E
と項書き換え規則の集合12Cとを用いて処理を行わせ
て書き換え後の式をEとする(ステップ135)。
′を起動し、弐Eと項書き換え規則の集合12Aとを用
いて処理を行わせて書き換え後の式をEとする(ステッ
プ133〉。次いで、項書き換えエンジン11を起動し
、式Eと項書き換え規則の集合12Bとを用いて処理を
行わせて書き換え後の式をEとしくステップ134)、
その後も同様に項書き換えエンジン11を起動し、弐E
と項書き換え規則の集合12Cとを用いて処理を行わせ
て書き換え後の式をEとする(ステップ135)。
そして、書き換えの済んだ最終的な式Eを中間言語列3
に出力しくステップ136)、最初の処理(ステップ1
31)に戻って中間言語列2の全ての中間言語の処理が
終了するまで繰り返す。
に出力しくステップ136)、最初の処理(ステップ1
31)に戻って中間言語列2の全ての中間言語の処理が
終了するまで繰り返す。
第4図は第3図のステップ133〜135のそれぞれで
実行される項書き換えエンジン11の処理であり、項書
き換えエンジン11は、式を受は取ってEとすると共に
、項書き換え規則の集合(第3図のステップ133の場
合は項書き換え規則の集合12A1ステンブ134の場
合は項書き換え規則の集合12B、ステップ135の場
合は項書き換え規則の集合12C)から等式プログラム
全体を受は取ってPとする(ステップ111)。
実行される項書き換えエンジン11の処理であり、項書
き換えエンジン11は、式を受は取ってEとすると共に
、項書き換え規則の集合(第3図のステップ133の場
合は項書き換え規則の集合12A1ステンブ134の場
合は項書き換え規則の集合12B、ステップ135の場
合は項書き換え規則の集合12C)から等式プログラム
全体を受は取ってPとする(ステップ111)。
次いで、等式プログラムPの1つ目の等式を得てpとし
くステップ112)、弐Eの中から等式pの左辺と一致
する項を得てtとする(ステップ113)。次いで、項
tが空であるか否かを判断しくステップ114) 、空
でなければ一致するもの有りとして変換規則を適用すべ
く、項tを等式pの右辺の形に書き換え(ステップ11
5)、ステップ112に戻って同様の処理を操り返す。
くステップ112)、弐Eの中から等式pの左辺と一致
する項を得てtとする(ステップ113)。次いで、項
tが空であるか否かを判断しくステップ114) 、空
でなければ一致するもの有りとして変換規則を適用すべ
く、項tを等式pの右辺の形に書き換え(ステップ11
5)、ステップ112に戻って同様の処理を操り返す。
一方、ステップ114で項tが空であった場合には一致
するものがなかったので、等式プログラムPから次の等
式を得てpとする(ステップ116)。次いで、等式p
が空であるか否か判断しくステップ117)、空であれ
ば等式プログラムPの最後まで比較を行ったものとして
主たる処理を終了し、書き換え後の弐Eを最適化制御部
13に返しくステップ118) 、処理を終了する。ま
た、ステップ117で等式pが空でなかった場合にはス
テップ113に戻って同様の処理を操り返す0以上の処
理により、項書き換え規則の集合12A、12B、12
Cの集合内においては可能な限り等式の適用が行われる
。
するものがなかったので、等式プログラムPから次の等
式を得てpとする(ステップ116)。次いで、等式p
が空であるか否か判断しくステップ117)、空であれ
ば等式プログラムPの最後まで比較を行ったものとして
主たる処理を終了し、書き換え後の弐Eを最適化制御部
13に返しくステップ118) 、処理を終了する。ま
た、ステップ117で等式pが空でなかった場合にはス
テップ113に戻って同様の処理を操り返す0以上の処
理により、項書き換え規則の集合12A、12B、12
Cの集合内においては可能な限り等式の適用が行われる
。
次に、具体例を用いて説明する。
今、コンパイラ(図示せず)に入力されるソースプログ
ラム(図示せず)中に DCL A(10,10) BIN PLUS。
ラム(図示せず)中に DCL A(10,10) BIN PLUS。
A(I*2−5.J車3)
なる記述が存在すると、その中間言語列2には配列Aの
要素参照に必要なアドレスを計算する中間言語として例
えば con(40) 本(con(−1)+((1*con
(2))−con(5)))+con(4)*(con
(−1)+J*con(3))が現れる。なお、この式
は、各配列要素に対して4アドレス間隔で連続したアド
レスを与えるようになっている。
要素参照に必要なアドレスを計算する中間言語として例
えば con(40) 本(con(−1)+((1*con
(2))−con(5)))+con(4)*(con
(−1)+J*con(3))が現れる。なお、この式
は、各配列要素に対して4アドレス間隔で連続したアド
レスを与えるようになっている。
しかして、中間言語列2として人力された上記の式は、
第3図のステップ133において第5図の項書き換え規
則の集合12Aから等式■を1回、等式■1を2回、等
式■2を1回適用され、その結果、弐Eは con (40) * (con (−1) + (c
on (−5) + (con (2) * I) )
)+con(4)傘(con(−1)+con(3)牢
J)となる。
第3図のステップ133において第5図の項書き換え規
則の集合12Aから等式■を1回、等式■1を2回、等
式■2を1回適用され、その結果、弐Eは con (40) * (con (−1) + (c
on (−5) + (con (2) * I) )
)+con(4)傘(con(−1)+con(3)牢
J)となる。
次いで、第3図のステップ134において第6図の項書
き換え規則の集合12Bから等式がal+al+ a
I+ cr C+ eI+ flの順に適用さ
れ、その結果、式Eば con (−244)+ (con (80) 本1+
con (12) 傘J)となる。
き換え規則の集合12Bから等式がal+al+ a
I+ cr C+ eI+ flの順に適用さ
れ、その結果、式Eば con (−244)+ (con (80) 本1+
con (12) 傘J)となる。
次いで、第3図のステップ135において第7図の項書
き換え規則の集合12Cの適否が判断されるが、この場
合は適用する等式がないので、弐Eは con(−244)+(con(80) 本1+con
(12)*J)のままであり、この式がステップ136
において中間言語列3へ出力される。
き換え規則の集合12Cの適否が判断されるが、この場
合は適用する等式がないので、弐Eは con(−244)+(con(80) 本1+con
(12)*J)のままであり、この式がステップ136
において中間言語列3へ出力される。
以上説明したように、本発明のコンパイラにおける最適
化方式にあっては、最適化処理の変換規則を項書き換え
規則の集合として別個に設け、項書き換えエンジンによ
り項書き換え規則の集合を用いて中間言語列に含まれる
項の書き換えを実行するようにしているので、 (1)変換規則の適用順序が固定されないため、中間言
語列の並び方によらず、可能な限り変換規則が適用でき
、充分な最適化が図れる。
化方式にあっては、最適化処理の変換規則を項書き換え
規則の集合として別個に設け、項書き換えエンジンによ
り項書き換え規則の集合を用いて中間言語列に含まれる
項の書き換えを実行するようにしているので、 (1)変換規則の適用順序が固定されないため、中間言
語列の並び方によらず、可能な限り変換規則が適用でき
、充分な最適化が図れる。
(2)変換規則の追加、変更もしくは削除を行う場合は
、項書き換え規則の集合のみを修正すればよいので、保
守が容易である。
、項書き換え規則の集合のみを修正すればよいので、保
守が容易である。
(3)項書き換え規則は一元的に構成しても階層的に構
成してもよく、系統的に変換規則の適用が図れるため、
最適化を実行する手続きの停止性の検証が容易となる。
成してもよく、系統的に変換規則の適用が図れるため、
最適化を実行する手続きの停止性の検証が容易となる。
等の効果がある。
第1図は本発明のコンパイラにおける最適化方式の基本
的な構成図、 第2図は実施例の構成図、 第3図は第2図の実施例における最適化制御部の処理の
フローチャート、 第4図は第2図の実施例における項書き換えエンジンの
処理のフローチャートおよび、第5図ないし第7図は第
2図の実施例における項書き換え規則の集合の等式プロ
グラムの例を示す図である。 図において、
的な構成図、 第2図は実施例の構成図、 第3図は第2図の実施例における最適化制御部の処理の
フローチャート、 第4図は第2図の実施例における項書き換えエンジンの
処理のフローチャートおよび、第5図ないし第7図は第
2図の実施例における項書き換え規則の集合の等式プロ
グラムの例を示す図である。 図において、
Claims (1)
- 【特許請求の範囲】 所定の項の記述につき同じ処理をより短時間で実行でき
る記述を対応付けた規則を系統的に集めた項書き換え規
則の集合と、 入力した中間言語列に含まれる項を前記項書き換え規則
の集合を用いて書き換える項書き換えエンジンとをコン
パイラ最適化部に備えたことを特徴とするコンパイラに
おける最適化方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP17244789A JPH0337727A (ja) | 1989-07-04 | 1989-07-04 | コンパイラにおける最適化方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP17244789A JPH0337727A (ja) | 1989-07-04 | 1989-07-04 | コンパイラにおける最適化方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0337727A true JPH0337727A (ja) | 1991-02-19 |
Family
ID=15942153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP17244789A Pending JPH0337727A (ja) | 1989-07-04 | 1989-07-04 | コンパイラにおける最適化方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0337727A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2009130763A1 (ja) * | 2008-04-22 | 2011-08-11 | 三菱電機株式会社 | 電気回路開閉操作装置 |
-
1989
- 1989-07-04 JP JP17244789A patent/JPH0337727A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2009130763A1 (ja) * | 2008-04-22 | 2011-08-11 | 三菱電機株式会社 | 電気回路開閉操作装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5361357A (en) | Method and apparatus for optimizing computer file compilation | |
US6675377B1 (en) | Program conversion apparatus | |
Fauth et al. | Automated generation of DSP program development tools using a machine description formalism | |
EP1895408A1 (en) | Method of re-using software attributes in graphical programs | |
JP2817786B2 (ja) | シミュレーション装置及びシミュレーション方法 | |
CN114416099B (zh) | 一种基于信息物理系统的模型集成方法及相关组件 | |
JPH0337727A (ja) | コンパイラにおける最適化方式 | |
JP3318051B2 (ja) | 翻訳処理方法 | |
Oliveira et al. | A tactic language for refinement of state-rich concurrent specifications | |
JP3310308B2 (ja) | プログラム群管理システム | |
JP3239907B2 (ja) | レジスタ割り付け方式 | |
JPH0667871A (ja) | プログラム自動更新方式 | |
Kahrs | Compilation of combinatory reduction systems | |
JPS6074056A (ja) | 履歴情報のフアイル管理方式 | |
JP3327662B2 (ja) | プログラム翻訳装置及びプログラム翻訳方法 | |
JP2722684B2 (ja) | ファイルシステムの検索装置 | |
JP2750341B2 (ja) | 図的言語翻訳装置 | |
JP2003337709A (ja) | コンパイル方法 | |
JPH0695868A (ja) | ソフトウェア管理方式 | |
JPH081608B2 (ja) | プログラム実行解析ツール | |
JP2004139369A (ja) | 定数アドレス領域を指示するポインタ解析方法 | |
Slonneger | Executing continuation semantics: a comparison | |
JP2003330731A (ja) | プロジェクト管理ファイル生成装置 | |
JPH06208470A (ja) | 目的コード最適化装置 | |
JPH01140236A (ja) | プログラムの逆コンパイル方式 |