JPH0553823A - コンパイラの最適化方式 - Google Patents
コンパイラの最適化方式Info
- Publication number
- JPH0553823A JPH0553823A JP23544391A JP23544391A JPH0553823A JP H0553823 A JPH0553823 A JP H0553823A JP 23544391 A JP23544391 A JP 23544391A JP 23544391 A JP23544391 A JP 23544391A JP H0553823 A JPH0553823 A JP H0553823A
- Authority
- JP
- Japan
- Prior art keywords
- text
- condition
- block
- conditional
- program
- 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 22
- 238000000034 method Methods 0.000 claims description 36
- 230000003247 decreasing effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 条件判定処理のオーバヘッドを減少させ、プ
ログラムの実行性能を向上させる。 【構成】 コンパイラ2が起動されると、構文解析部2
1中の条件判定分岐テキスト生成手段211はソースプ
ログラム1中の条件処理に対して条件判定テキストと条
件分岐テキストとを生成して中間テキスト3に出力す
る。最適化部22中のブロック分割手段221は中間テ
キスト3をブロックに分割し、先行ブロック検出手段2
22は条件判定テキストを含むブロックの実行に先行し
て必ず実行される先行ブロックを検出し、条件判定テキ
スト移動手段223は条件判定テキストを先行ブロック
に移動する。この結果、目的プログラム生成部23から
出力された目的プログラム4を実行すると、条件判定テ
キストが十分に先行されて実行されて条件分岐テキスト
で実行終了待ちが発生しない。
ログラムの実行性能を向上させる。 【構成】 コンパイラ2が起動されると、構文解析部2
1中の条件判定分岐テキスト生成手段211はソースプ
ログラム1中の条件処理に対して条件判定テキストと条
件分岐テキストとを生成して中間テキスト3に出力す
る。最適化部22中のブロック分割手段221は中間テ
キスト3をブロックに分割し、先行ブロック検出手段2
22は条件判定テキストを含むブロックの実行に先行し
て必ず実行される先行ブロックを検出し、条件判定テキ
スト移動手段223は条件判定テキストを先行ブロック
に移動する。この結果、目的プログラム生成部23から
出力された目的プログラム4を実行すると、条件判定テ
キストが十分に先行されて実行されて条件分岐テキスト
で実行終了待ちが発生しない。
Description
【0001】
【産業上の利用分野】本発明はコンパイラの最適化方式
に関し、特にコンパイラにおいて条件処理を含むプログ
ラムのオブジェクトを最適化する最適化方式に関する。
に関し、特にコンパイラにおいて条件処理を含むプログ
ラムのオブジェクトを最適化する最適化方式に関する。
【0002】
【従来の技術】従来のコンパイラでは、ソースプログラ
ム中に条件処理が含まれる場合、条件判定命令と、この
条件判定命令による条件判定結果を調べてそれに応じた
処理に分岐する条件分岐命令とを対にして目的プログラ
ムに出力していた。
ム中に条件処理が含まれる場合、条件判定命令と、この
条件判定命令による条件判定結果を調べてそれに応じた
処理に分岐する条件分岐命令とを対にして目的プログラ
ムに出力していた。
【0003】
【発明が解決しようとする課題】上述した従来のコンパ
イラでは、ソースプログラム中に条件処理が含まれる場
合に条件判定命令とこの条件判定命令による条件判定結
果を調べてそれに応じた処理に分岐する条件分岐命令と
を対にして目的プログラムに出力していたので、条件判
定命令の実行が終了するまで条件判定結果を得ることが
できないために条件分岐命令を実行することができず、
次の処理の開始が遅れるという欠点があった。このこと
は、特に、高度にパイプライン化が進んだハードウェア
において、条件処理を含むプログラムの実行性能を低下
させる原因となっていた。
イラでは、ソースプログラム中に条件処理が含まれる場
合に条件判定命令とこの条件判定命令による条件判定結
果を調べてそれに応じた処理に分岐する条件分岐命令と
を対にして目的プログラムに出力していたので、条件判
定命令の実行が終了するまで条件判定結果を得ることが
できないために条件分岐命令を実行することができず、
次の処理の開始が遅れるという欠点があった。このこと
は、特に、高度にパイプライン化が進んだハードウェア
において、条件処理を含むプログラムの実行性能を低下
させる原因となっていた。
【0004】本発明の目的は、上述の点に鑑み、対で出
力されていた条件判定命令と条件分岐命令とを目的プロ
グラム中において離すことにより、条件判定命令を条件
分岐命令から十分に先行して実行させることができるよ
うにしたコンパイラの最適化方式を提供することにあ
る。
力されていた条件判定命令と条件分岐命令とを目的プロ
グラム中において離すことにより、条件判定命令を条件
分岐命令から十分に先行して実行させることができるよ
うにしたコンパイラの最適化方式を提供することにあ
る。
【0005】
【課題を解決するための手段】本発明のコンパイラの最
適化方式は、ソースプログラムを解析して中間テキスト
を生成する構文解析部と、生成された中間テキストを最
適化する最適化部と、最適化された中間テキストから目
的プログラムを生成する目的プログラム生成部とからな
るコンパイラにおいて、前記構文解析部が、プログラム
中の条件処理に対し条件判定を実行してその判定結果を
格納するような条件判定テキストと、該判定結果を参照
し該判定結果に応じた処理に分岐するような条件分岐テ
キストとを生成する条件判定分岐テキスト生成手段を備
え、前記最適化部が、中間テキストをその途中には制御
が渡り得ないようなブロックに分割するブロック分割手
段と、あるブロックの実行に先行して必ず実行される先
行ブロックを検出する先行ブロック検出手段と、前記条
件判定テキストを先行ブロックに移動する条件判定テキ
スト移動手段とを備えている。
適化方式は、ソースプログラムを解析して中間テキスト
を生成する構文解析部と、生成された中間テキストを最
適化する最適化部と、最適化された中間テキストから目
的プログラムを生成する目的プログラム生成部とからな
るコンパイラにおいて、前記構文解析部が、プログラム
中の条件処理に対し条件判定を実行してその判定結果を
格納するような条件判定テキストと、該判定結果を参照
し該判定結果に応じた処理に分岐するような条件分岐テ
キストとを生成する条件判定分岐テキスト生成手段を備
え、前記最適化部が、中間テキストをその途中には制御
が渡り得ないようなブロックに分割するブロック分割手
段と、あるブロックの実行に先行して必ず実行される先
行ブロックを検出する先行ブロック検出手段と、前記条
件判定テキストを先行ブロックに移動する条件判定テキ
スト移動手段とを備えている。
【0006】
【作用】本発明のコンパイラの最適化方式では、構文解
析部中の条件判定分岐テキスト生成手段がプログラム中
の条件処理に対し条件判定を実行してその判定結果を格
納するような条件判定テキストと、該判定結果を参照し
該判定結果に応じた処理に分岐するような条件分岐テキ
ストとを生成し、最適化部中のブロック分割手段が中間
テキストをその途中には制御が渡り得ないようなブロッ
クに分割し、先行ブロック検出手段があるブロックの実
行に先行して必ず実行される先行ブロックを検出し、条
件判定テキスト移動手段が条件判定テキストを先行ブロ
ックに移動する。
析部中の条件判定分岐テキスト生成手段がプログラム中
の条件処理に対し条件判定を実行してその判定結果を格
納するような条件判定テキストと、該判定結果を参照し
該判定結果に応じた処理に分岐するような条件分岐テキ
ストとを生成し、最適化部中のブロック分割手段が中間
テキストをその途中には制御が渡り得ないようなブロッ
クに分割し、先行ブロック検出手段があるブロックの実
行に先行して必ず実行される先行ブロックを検出し、条
件判定テキスト移動手段が条件判定テキストを先行ブロ
ックに移動する。
【0007】
【実施例】次に、本発明について図面を参照して詳細に
説明する。
説明する。
【0008】図1は、本発明の一実施例に係る最適化方
式が適用されたコンパイラ2の構成を示すブロック図で
ある。このコンパイラ2は、ソースプログラム1を解析
して中間テキスト3を生成する構文解析部21と、生成
された中間テキスト3を最適化する最適化部22と、最
適化された中間テキスト3から目的プログラム4を生成
する目的プログラム生成部23とを備えて構成されてい
る。
式が適用されたコンパイラ2の構成を示すブロック図で
ある。このコンパイラ2は、ソースプログラム1を解析
して中間テキスト3を生成する構文解析部21と、生成
された中間テキスト3を最適化する最適化部22と、最
適化された中間テキスト3から目的プログラム4を生成
する目的プログラム生成部23とを備えて構成されてい
る。
【0009】構文解析部21は、ソースプログラム1中
の条件処理に対し、条件判定を実行してその判定結果を
格納するような条件判定テキストと、この条件判定テキ
ストの実行による条件判定結果を参照し条件判定結果に
応じた処理に分岐するような条件分岐テキストとを生成
する条件判定分岐テキスト生成手段211を備えてい
る。
の条件処理に対し、条件判定を実行してその判定結果を
格納するような条件判定テキストと、この条件判定テキ
ストの実行による条件判定結果を参照し条件判定結果に
応じた処理に分岐するような条件分岐テキストとを生成
する条件判定分岐テキスト生成手段211を備えてい
る。
【0010】最適化部22は、中間テキスト3をその途
中には制御が渡り得ないようなブロックに分割するブロ
ック分割手段221と、あるブロックの実行に先行して
必ず実行される先行ブロックを検出する先行ブロック検
出手段222と、条件判定テキストを先行ブロックに移
動する条件判定テキスト移動手段223とを備えてい
る。
中には制御が渡り得ないようなブロックに分割するブロ
ック分割手段221と、あるブロックの実行に先行して
必ず実行される先行ブロックを検出する先行ブロック検
出手段222と、条件判定テキストを先行ブロックに移
動する条件判定テキスト移動手段223とを備えてい
る。
【0011】次に、このように構成された本実施例のコ
ンパイラの最適化方式の動作について、図2〜図4を参
照しながら説明する。
ンパイラの最適化方式の動作について、図2〜図4を参
照しながら説明する。
【0012】コンパイラ2が起動されると、構文解析部
21は、供給されたソースプログラム1を解析し、中間
テキスト3を生成する。その際、構文解析部21中の条
件判定分岐テキスト生成手段211は、ソースプログラ
ム1中の条件判定部分に対し、条件判定を実行しその判
定結果を格納するような条件判定テキストと、この条件
判定テキストによる条件判定結果を参照しその条件判定
結果に応じた処理に分岐するような条件分岐テキストと
を中間テキスト3として生成する。
21は、供給されたソースプログラム1を解析し、中間
テキスト3を生成する。その際、構文解析部21中の条
件判定分岐テキスト生成手段211は、ソースプログラ
ム1中の条件判定部分に対し、条件判定を実行しその判
定結果を格納するような条件判定テキストと、この条件
判定テキストによる条件判定結果を参照しその条件判定
結果に応じた処理に分岐するような条件分岐テキストと
を中間テキスト3として生成する。
【0013】構文解析部21による中間テキスト3の生
成が終了すると、最適化部22は、中間テキスト3を入
力し、各種の最適化処理を実施して、中間テキスト3を
出力する。この際、最適化部22中のブロック分割手段
221は、中間テキスト3をその途中には制御が渡り得
ないようなブロックに分割する。次に、条件判定テキス
ト移動手段223は、先行ブロック検出手段222を呼
び出して、条件判定分岐テキスト生成手段211によっ
て生成された条件判定テキストが含まれるブロックの実
行に先行して必ず実行される先行ブロックを検出する。
続いて、条件判定テキスト移動手段223は、条件判定
テキストで参照しているデータが先行ブロックの移動先
と条件判定テキストが含まれるブロックの移動元との間
で定義されていないかどうかを調べ、定義されていなけ
れば条件判定テキストを条件判定テキストが含まれるブ
ロックから先行ブロックに移動する。
成が終了すると、最適化部22は、中間テキスト3を入
力し、各種の最適化処理を実施して、中間テキスト3を
出力する。この際、最適化部22中のブロック分割手段
221は、中間テキスト3をその途中には制御が渡り得
ないようなブロックに分割する。次に、条件判定テキス
ト移動手段223は、先行ブロック検出手段222を呼
び出して、条件判定分岐テキスト生成手段211によっ
て生成された条件判定テキストが含まれるブロックの実
行に先行して必ず実行される先行ブロックを検出する。
続いて、条件判定テキスト移動手段223は、条件判定
テキストで参照しているデータが先行ブロックの移動先
と条件判定テキストが含まれるブロックの移動元との間
で定義されていないかどうかを調べ、定義されていなけ
れば条件判定テキストを条件判定テキストが含まれるブ
ロックから先行ブロックに移動する。
【0014】最後に、目的プログラム生成部23は、最
適化処理が施された中間テキスト3から目的プログラム
4を生成する。
適化処理が施された中間テキスト3から目的プログラム
4を生成する。
【0015】図2は、本実施例のコンパイラの最適化方
式が適用されるソースプログラム1の一例を示す図であ
る。このソースプログラム1において、最初に処理Aが
実行され、次に変数X1とY1とが等しければ処理Bが
実行される。次に、処理Cが実行され、変数X2とY2
とが等しければ処理Dが実行される。最後に、処理Eが
実行される。
式が適用されるソースプログラム1の一例を示す図であ
る。このソースプログラム1において、最初に処理Aが
実行され、次に変数X1とY1とが等しければ処理Bが
実行される。次に、処理Cが実行され、変数X2とY2
とが等しければ処理Dが実行される。最後に、処理Eが
実行される。
【0016】図3は、図2のソースプログラム1から構
文解析部21によって生成される中間テキスト3の構造
を示す図である。図3中の条件判定テキスト“comp
t1,X1=Y1”は、X1とY1とが等しければt
1に0を、等しくなければt1に1をセットする。ま
た、条件分岐テキスト“branch l1,t1≠
0”は、t1が0でなければラベルl1に制御を移し、
t1が0ならば何もしない。図3に示すように、中間テ
キスト3は、ブロック分割手段221によって、処理A
を含むブロック,処理Bを含むブロック,処理Cを含む
ブロック,処理Dを含むブロックおよび処理Eを含むブ
ロックに分割される。
文解析部21によって生成される中間テキスト3の構造
を示す図である。図3中の条件判定テキスト“comp
t1,X1=Y1”は、X1とY1とが等しければt
1に0を、等しくなければt1に1をセットする。ま
た、条件分岐テキスト“branch l1,t1≠
0”は、t1が0でなければラベルl1に制御を移し、
t1が0ならば何もしない。図3に示すように、中間テ
キスト3は、ブロック分割手段221によって、処理A
を含むブロック,処理Bを含むブロック,処理Cを含む
ブロック,処理Dを含むブロックおよび処理Eを含むブ
ロックに分割される。
【0017】条件判定テキスト移動手段223は、例え
ば、処理Cを含むブロック中の条件判定テキスト“co
mp t2,X2=Y2”に対して、先行ブロック検出
手段222を呼び出し、処理Cを含むブロックの先行ブ
ロック、すなわち処理Aを含むブロックを先行ブロック
として検出し、条件判定テキスト“comp t2,X
2=Y2”を処理Aを含むブロックに移動する。ただ
し、条件判定テキスト“comp t2,X2=Y2”
で参照しているデータX2およびY2が処理Aを含むブ
ロックの移動先と条件判定テキスト“comp t2,
X2=Y2”が含まれるブロックの移動元との間で定義
されていないことを条件とする。
ば、処理Cを含むブロック中の条件判定テキスト“co
mp t2,X2=Y2”に対して、先行ブロック検出
手段222を呼び出し、処理Cを含むブロックの先行ブ
ロック、すなわち処理Aを含むブロックを先行ブロック
として検出し、条件判定テキスト“comp t2,X
2=Y2”を処理Aを含むブロックに移動する。ただ
し、条件判定テキスト“comp t2,X2=Y2”
で参照しているデータX2およびY2が処理Aを含むブ
ロックの移動先と条件判定テキスト“comp t2,
X2=Y2”が含まれるブロックの移動元との間で定義
されていないことを条件とする。
【0018】図4は、条件判定テキスト“comp t
2,X2=Y2”の移動後、すなわち最適化部22によ
る最適化処理終了後の中間テキスト3を示す図である。
図4からも判るように、条件判定テキスト“comp
t2,X2=Y2”が条件分岐テキスト“branch
l2,t2≠0”に十分に先立って先行する処理Aを
含むブロックで実行されるため、条件分岐テキスト“b
ranchl2,t2≠0”は条件判定テキスト“co
mp t2,X2=Y2”の実行時間待ちなしで即座に
実行されることになる。
2,X2=Y2”の移動後、すなわち最適化部22によ
る最適化処理終了後の中間テキスト3を示す図である。
図4からも判るように、条件判定テキスト“comp
t2,X2=Y2”が条件分岐テキスト“branch
l2,t2≠0”に十分に先立って先行する処理Aを
含むブロックで実行されるため、条件分岐テキスト“b
ranchl2,t2≠0”は条件判定テキスト“co
mp t2,X2=Y2”の実行時間待ちなしで即座に
実行されることになる。
【0019】
【発明の効果】以上説明したように本発明は、構文解析
部に条件判定分岐テキスト生成手段を備え、最適化部に
ブロック分割手段,先行ブロック検出手段および条件判
定テキスト移動手段を備えたことにより、条件処理を含
むプログラムの目的プログラム生成において、条件判定
命令と条件分岐命令とを目的プログラム中において離し
て出力することができ、条件判定命令を対応する条件分
岐命令から十分に先行して実行させることが可能となる
ため、条件判定処理のオーバヘッドが減少され、プログ
ラムの実行時間が短縮し実行性能が向上するという効果
がある。
部に条件判定分岐テキスト生成手段を備え、最適化部に
ブロック分割手段,先行ブロック検出手段および条件判
定テキスト移動手段を備えたことにより、条件処理を含
むプログラムの目的プログラム生成において、条件判定
命令と条件分岐命令とを目的プログラム中において離し
て出力することができ、条件判定命令を対応する条件分
岐命令から十分に先行して実行させることが可能となる
ため、条件判定処理のオーバヘッドが減少され、プログ
ラムの実行時間が短縮し実行性能が向上するという効果
がある。
【図1】本発明の一実施例に係る最適化方式が適用され
たコンパイラの構成を示すブロック図である。
たコンパイラの構成を示すブロック図である。
【図2】本実施例のコンパイラの最適化方式が適用され
るソースプログラムの一例を示す図である。
るソースプログラムの一例を示す図である。
【図3】図2のソースプログラムから生成される中間テ
キストの構造を示す図である。
キストの構造を示す図である。
【図4】図1中の最適化部による最適化処理終了後の中
間テキストの構造を示す図である。
間テキストの構造を示す図である。
1 ソースプログラム 2 コンパイラ 3 中間テキスト 4 目的プログラム 21 構文解析部 22 最適化部 23 目的プログラム生成部 211 条件判定分岐テキスト生成手段 221 ブロック分割手段 222 先行ブロック検出手段 223 条件判定テキスト移動手段
Claims (1)
- 【請求項1】 ソースプログラムを解析して中間テキス
トを生成する構文解析部と、生成された中間テキストを
最適化する最適化部と、最適化された中間テキストから
目的プログラムを生成する目的プログラム生成部とから
なるコンパイラにおいて、 前記構文解析部が、プログラム中の条件処理に対し条件
判定を実行してその判定結果を格納するような条件判定
テキストと、該判定結果を参照し該判定結果に応じた処
理に分岐するような条件分岐テキストとを生成する条件
判定分岐テキスト生成手段を備え、 前記最適化部が、中間テキストをその途中には制御が渡
り得ないようなブロックに分割するブロック分割手段
と、あるブロックの実行に先行して必ず実行される先行
ブロックを検出する先行ブロック検出手段と、前記条件
判定テキストを先行ブロックに移動する条件判定テキス
ト移動手段とを備えたことを特徴とするコンパイラの最
適化方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23544391A JPH0553823A (ja) | 1991-08-22 | 1991-08-22 | コンパイラの最適化方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23544391A JPH0553823A (ja) | 1991-08-22 | 1991-08-22 | コンパイラの最適化方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0553823A true JPH0553823A (ja) | 1993-03-05 |
Family
ID=16986191
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP23544391A Pending JPH0553823A (ja) | 1991-08-22 | 1991-08-22 | コンパイラの最適化方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0553823A (ja) |
-
1991
- 1991-08-22 JP JP23544391A patent/JPH0553823A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH06314203A (ja) | コンパイラの最適化方法および装置 | |
| US6751791B2 (en) | Method of optimizing an MPI procedure by altering to a procedure other than the invoked MPI procedure portion or by altering the execution sequence | |
| JPH0553823A (ja) | コンパイラの最適化方式 | |
| JP2636665B2 (ja) | 実行情報採取装置 | |
| JP2001125793A (ja) | コンパイラシステム及びコンパイル方法並びに記録媒体 | |
| JP3956113B2 (ja) | データ処理装置及びプログラム | |
| JPH0228723A (ja) | ループ命令実行方式 | |
| JPH04259036A (ja) | プログラム変換方式及びプログラム不正動作検出機構 | |
| JPH0527986A (ja) | コンパイラの最適化方法および最適化装置 | |
| JP2585793B2 (ja) | コンパイラシステム | |
| JPS62175831A (ja) | タグ付きパイプライン制御方式 | |
| JPH09319591A (ja) | ループ外への条件付き飛び出しがあるループの並列化方式 | |
| JPH0581038A (ja) | コンパイラ | |
| JPH01274241A (ja) | 命令列生成方式 | |
| JPH05313910A (ja) | 機械語命令生成方式 | |
| JP3034582B2 (ja) | コンパイル処理方式 | |
| JPH05224926A (ja) | 条件分岐命令制御方式 | |
| JPH0573335A (ja) | プログラムの自動インライン展開方式 | |
| JPH04181432A (ja) | 最適化テキスト編集方式 | |
| JPH0644082A (ja) | 最適化テキスト作成方式 | |
| JPH04323731A (ja) | 最適化テキスト編集方式 | |
| JPH04278635A (ja) | テキストエディタ | |
| JPH08263300A (ja) | インライン展開方式 | |
| JPH02247734A (ja) | 入出力手続き呼び出しの最適化方式 | |
| JP2000222218A (ja) | コンパイル装置および記録媒体 |