JPH0887417A - コンパイラ装置 - Google Patents

コンパイラ装置

Info

Publication number
JPH0887417A
JPH0887417A JP6225390A JP22539094A JPH0887417A JP H0887417 A JPH0887417 A JP H0887417A JP 6225390 A JP6225390 A JP 6225390A JP 22539094 A JP22539094 A JP 22539094A JP H0887417 A JPH0887417 A JP H0887417A
Authority
JP
Japan
Prior art keywords
program
instruction
intermediate language
branch
unit
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.)
Granted
Application number
JP6225390A
Other languages
English (en)
Other versions
JP3550748B2 (ja
Inventor
Keishirou Tanaka
啓士郎 田中
Masakazu Hayashi
正和 林
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP22539094A priority Critical patent/JP3550748B2/ja
Publication of JPH0887417A publication Critical patent/JPH0887417A/ja
Application granted granted Critical
Publication of JP3550748B2 publication Critical patent/JP3550748B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 計算機におけるコンパイル処理に関し、適切
な観測点によりプロファイル情報を収集し、その情報に
よる最適化を行うコンパイラ装置を目的とする。 【構成】 前処理部1が原始プログラムを翻訳して中間
言語プログラム5を生成し、後処理部2が中間言語プロ
グラムから目的プログラム6を生成するコンパイラ装置
であって、ブロック構造解析部3及び中間言語変換部4
を有し、ブロック構造解析部3は、中間言語プログラム
5を所定のブロックの並びに区分する。各該ブロック
は、1個以上の命令からなる命令列であって、該命令列
の先頭以外に分岐先となる命令が無く、該命令列の末尾
以外に分岐命令が無い命令列とし、中間言語変換部4
は、該中間言語プログラムに、各該ブロックが各1個の
ラベルを持つように所要のラベルを設け、後処理部2
は、生成する目的プログラムに、該目的プログラム上の
アドレスを示すラベル情報を付加するように構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、計算機における原始プ
ログラムの翻訳処理において、分岐やループについて分
岐回数を減少する最適化を行う場合に、最適化の資料と
するために、実行パス上の各所要点の実行回数を示すプ
ロファイル情報を収集し、又、収集したプロファイル情
報を使用して最適化を行うためのコンパイラ装置に関す
る。
【0002】
【従来の技術と発明が解決しようとする課題】計算機の
原始プログラムから目的プログラムを生成するコンパイ
ラの処理では、よく知られているように、先ず前処理部
が原始プログラムの構文解析を行い、解析結果に基づい
て原始プログラムを、中間言語プログラムに変換し、次
に後処理部が中間言語プログラムから目的プログラムを
生成する。
【0003】ここで、中間言語プログラムとは、コンパ
イル処理の便宜のために、目的プログラムを実行するプ
ロセッサの機械語命令に、より近い表現として定めた言
語で記述されたプログラムである。
【0004】又、そのようなコンパイラの処理におい
て、各種の観点からの最適化が行われ、最適化には分岐
を少なくする最適化があることも、よく知られていると
おりである。
【0005】ここで分岐減少化による最適化とは、分岐
命令において分岐の発生を少なくして、シーケンシャル
な実行を多くすることと、ループの場合(ループも通常
は、ループの末端から先頭への分岐と考えることができ
る)にループの繰り返し回数(以下に回転数という)を
少なくするように、ループ長を延長する等の方法で行わ
れる最適化を言っている。
【0006】特に、プログラムの実行装置として、常に
シーケンシャルに複数命令を先読みして並行実行するこ
とにより高速化する機構を持つマイクロプロセッサが使
用される場合等には、分岐によって並行実行の流れが乱
されることによるペナルティが大きいために、前記のよ
うな分岐減少化による最適化が特に要求される。
【0007】分岐減少化による最適化には、実際の実行
において、各分岐点について分岐と非分岐(シーケンシ
ャル進行)との何れが多いかを判断することが必要であ
り、そのために分岐と非分岐との割合を示す分岐確率が
用いられる。
【0008】又、ループを延長する最適化の場合には、
最適化の結果として実行時間を短縮する効果を得る反面
に、目的プログラムを大きくするという損失を伴うの
で、ループの長さ等と、実行時の回転数とを勘案して、
最適化の適否を判断する必要がある。
【0009】そこで、例えば図5(a) のような原始プロ
グラムがある場合に、原始プログラム上で分岐を生じる
if文等に着目して、例えば各if文の判定条件が真の場合
の分岐路を観測点として検出し、例えば図5(b) に示す
ように、それらの観測点ごと、及びプログラムの開始点
に例えば実行回数を計数する関数(図に関数名counterと
して示す) を挿入して、プログラムの実行状態を示す情
報、いわゆるプロファイル情報を収集するためのプログ
ラムとする。
【0010】このプロファイル情報収集プログラムは、
例えば図5(c)に示すような中間言語プログラムに変換
されるので、それによって生成される目的プログラムを
繰り返し実行し、各実行において適当に異なる各種入力
データを与えることにより、各counter 関数を実行した
回数を計数するようにすれば、それぞれの観測点の実行
回数を収集することが可能である。
【0011】なお図5において、A、B、Cはラベル、=は
代入演算の記号、==、!=、<=は比較演算の記号、ret は
呼出元への復帰命令であり、例えば「x != y then goto
A」はxとyとが等しくなければラベルA のアドレスへ分
岐し、等しければ次に続く命令を実行することを示す命
令である。又、ラベルの値は、その直後の命令のアドレ
スである。
【0012】以上により収集した実行回数から、各if分
岐について分岐確率を求めて、コンパイラに与えること
により、コンパイラは各分岐点について、分岐確率の大
きい方の分岐路をシーケンシャルな命令実行によって通
るように最適化する。
【0013】又、ループについては、例えば対象のプロ
グラムの実行ごとにおける繰り返し実行回数の平均を求
め、回転数が或る所定値を越え、例えばループ長が制限
値より短い場合に、最適化の対象とする。
【0014】以上の分岐減少化による最適化は、前記の
とおりマイクロプロセッサのアーキテクチャに対応する
ものであり、従ってマイクロプロセッサの、いわゆる機
械語命令に対応した目的プログラムのレベルでの分岐の
発生に対応させることが必要である。
【0015】しかし、前記のような原始プログラムのレ
ベルで設定される観測点によって得られるプロファイル
情報では、それを目的プログラム上の分岐に適切に反映
させることが困難な場合がある。
【0016】本発明は、適切な観測点によるプロファイ
ル情報の収集を可能にし、それによってプロファイル情
報を収集し、収集したプロファイル情報を使用して最適
化を行うことのできるコンパイラ装置を目的とする。
【0017】
【課題を解決するための手段】図1は、本発明の構成を
示すブロック図である。図1(a)の第1の発明のコンパ
イラ装置は、前処理部1が原始プログラムを翻訳して中
間言語プログラム5を生成し、後処理部2が中間言語プ
ログラムから目的プログラム6を生成するコンパイラ装
置であって、ブロック構造解析部3及び中間言語変換部
4を有する。
【0018】ブロック構造解析部3は、中間言語プログ
ラム5を所定のブロックの並びに区分する。各該ブロッ
クは、1個以上の命令からなる命令列であって、該命令
列の先頭以外に分岐先となる命令が無く、該命令列の末
尾以外に分岐命令が無い命令列とする。
【0019】中間言語変換部4は、中間言語プログラム
5に、各該ブロックが各1個のラベルを持つように所要
のラベルを設け、後処理部2は、中間言語プログラム5
から生成する目的プログラム6に、各該ラベルに対応す
る目的プログラム6上のアドレスを示すラベル情報12を
付加する。
【0020】第2の発明では、第1の発明のコンパイラ
装置が情報収集部7を有する。情報収集部7は、前記後
処理部2が出力する目的プログラム6を実行させ、目的
プログラム6のラベル情報12に示される各該アドレス別
に、当該アドレスに位置する命令が実行された実行回数
を収集して、プロファイル情報格納部8に出力する。
【0021】図1(b)に示す第3の発明では、前処理部
1が原始プログラムを翻訳して中間言語プログラム5を
生成する。次に情報収集部11が、中間言語プログラム5
を解釈して実行し、当該中間言語プログラム5の分岐命
令を実行するごとに、実行結果が分岐か非分岐かを識別
して、各該分岐命令ごとに実行結果の分岐及び非分岐別
を示す実行回数を累積し、該実行回数の情報をプロファ
イル情報格納部8に出力する図1(c)に示す第4の発明
は、前処理部1が原始プログラムを翻訳して中間言語プ
ログラム5を生成し、後処理部2が中間言語プログラム
から目的プログラム9を生成するコンパイラ装置であっ
て、最適化部10を有する。
【0022】最適化部10は、第2又は第3の発明の前記
プロファイル情報格納部8に出力された実行回数から、
各分岐命令についての分岐確率、及びループの回転数
の、少なくとも何れか一方を、該中間言語プログラムに
対応させて算出し、該算出した分岐確率及び回転数に基
づく所定の最適化処理を中間言語プログラム5について
行って後処理部2に渡す。
【0023】又、第5の発明では、前記最適化部10は、
プロファイル情報格納部8に出力された実行回数か各分
岐命令についての分岐確率及びループの回転数を算出す
る場合に、分岐確率の算出値が0又は1になる場合、及
び回転数の算出値が0になる場合には、当該算出値を非
0の所定値とする。
【0024】
【作用】本発明のコンパイラ装置により、プロファイル
情報の観測点が、機械語命令に近い中間言語プログラム
について設定される。
【0025】その観測点設定のために必要な場合は、中
間言語プログラムに、分岐命令等を区切りとする適当な
ブロック分けをして、そのブロックを単位として、観測
点をラベルで示し、その目的プログラムを実行した場合
に、ラベルのアドレスにある命令を実行した回数を収集
できるようにする。
【0026】従って、収集される実行回数から求める、
分岐確率やループ回転数を、ブロックに直接対応付け
て、適切な最適化を行うことができる。
【0027】
【実施例】図1(a)の前処理部1は、例えば前記図5(a)
に例示した原始プログラムを解析して、中間言語プログ
ラムを生成する。その場合の中間言語プログラムは、図
6(d)のようになる。
【0028】その中間言語プログラムをブロック構造解
析部3が解析することにより、図6(e)のようにブロッ
クに分ける。図2はブロック構造解析部3によるブロッ
ク分けの処理の流れの一例を示す図である。
【0029】前処理部1が所与の原始プログラムを解析
して中間言語プログラム5を生成すると、ブロック構造
解析部3は図2の処理ステップ20で、中間言語プログラ
ムの命令を指示するポインタを先頭の命令アドレスと
し、ブロック番号を1とし、先頭命令のアドレスをブロ
ックの開始番地として記録する等の初期設定を行って処
理を開始する。
【0030】先ず処理ステップ21で中間言語プログラム
5から、ポインタの指示する命令を取り出し、処理ステ
ップ22でその命令が分岐命令か識別し、分岐命令でなけ
れば、処理ステップ23でその命令のアドレスが他の分岐
命令の分岐先になっているかを、例えばその命令にラベ
ルが付けられているか否かにより識別する。
【0031】分岐先でもなければ処理ステップ24で、中
間言語プログラムの終了かを、たとえばret 命令か否か
で識別し、終了でなければ処理ステップ25でポインタを
次の命令に進めて処理ステップ21からの処理を繰り返
す。
【0032】処理ステップ22で分岐命令と識別したとき
は、処理ステップ25で現に取り出した分岐命令のアドレ
スを現ブロックの終了番地として記録すると共に、次の
ブロックに番号を進めて、現命令に続くアドレスを開始
番地とする等の次のブロックの記録を準備した後処理ス
テップ24に進む。
【0033】処理ステップ23で分岐先と判定したとき
は、処理ステップ27で現命令がブロックの先頭かを、ポ
インタと現ブロックの開始番地とを比較して識別し、先
頭であれば特別の処理を要しないので処理ステップ24へ
進む。
【0034】処理ステップ27で先頭で無いと判定したと
きは、処理ステップ28で現に取り出した命令の直前の命
令のアドレスを復元して、前命令のアドレスを現ブロッ
クの終了番地として記録すると共に、ブロックの記録の
ブロック番号を次へ進めて、現に取り出した命令のアド
レスを次のブロックの開始番地とした後処理ステップ24
に進む。
【0035】以上のようにして、処理ステップ24で中間
言語プログラムの終了を検出すると、処理ステップ29
で、現ブロックの記録に終了番地の設定が無ければ、現
命令のアドレスを終了番地として処理を終わる。
【0036】以上の処理により、分岐先となっている命
令をa、分岐命令をc、aでもcでもない命令のみ1個以上
からなる命令列をbとすると、a、a-b、a-b-c、b、b-c、
c の何れかのタイプのブロックによって、中間言語プロ
グラムが区分され、例えば図5(a)のプログラム例から
生成される中間言語プログラム(図6(d))は、図6(e)
に示すように7ブロックになる。
【0037】中間言語変換部4はブロック分けされた中
間言語プログラムについて、各ブロックにラベルを持つ
ように、必要なラベルを付加する。同時に、各分岐命令
ごとの分岐確率の算出を容易にするために、例えば先ず
分岐命令で終わるブロックが続く場合等に、そのような
ブロックの連続する2ブロック間ごとに仮のブロックを
挿入する。
【0038】図3は中間言語変換部4の処理の流れの一
例を示す図であって、中間言語変換部4は、ブロック構
造解析部3によってブロック分けされた中間言語プログ
ラムと前記ブロックの記録を参照して、先ず処理ステッ
プ30で未処理の先頭の1ブロックを取り出す。
【0039】処理ステップ31で、そのブロックにラベル
が有るか識別し、ラベルが無ければ、処理ステップ32で
仮のラベルを付加する。次に処理ステップ33で、ブロッ
クが分岐命令で終わっているか識別し、分岐命令でなけ
れば、そのブロックの処理を終わり処理ステップ37に進
んで、未処理のブロックがあるか識別し、未処理があれ
ば処理ステップ30に戻って次のブロックを取り出す。
【0040】処理ステップ33で分岐命令であった場合に
は、処理ステップ34で次ブロックの最後が分岐命令か識
別し、分岐命令であった場合は、分岐命令のブロックが
連続するので、処理ステップ36で仮ブロックを現処理ブ
ロックと次のブロックとの間に挿入して、処理ステップ
37に進む。
【0041】この仮ブロックは、後述のようにして分岐
確率計算等の処理を容易にするために挿入するものであ
って、ブロックの内容は無効命令(nopと表す)とし、こ
の仮ブロックにも仮のラベルを設ける。
【0042】処理ステップ34で次のブロックの最後が分
岐命令でなければ、処理ステップ35で次ブロックの先頭
が分岐先となっているか識別し、分岐先となっている場
合も処理ステップ36に進んで上記のように仮ブロックの
挿入を行う。
【0043】次のブロックが分岐先にもなっていなけれ
ば、このブロックの処理は終わり、処理ステップ35から
処理ステップ37に進んで前記のように処理する。この中
間言語変換部4による処理により、例えば図6(e)のブ
ロック分けされた中間言語プログラムが、例えば図6
(f)に示すように変換される。
【0044】この例から明らかなように、分岐命令のブ
ロック(例えばブロック1)には、その直後に分岐命令
の無いブロック(例えばブロック1に対するブロック
X)が対になり、分岐命令のブロックのラベルのある命
令 (例えばラベルX1における命令a=k)の実行回数が、分
岐命令の全実行回数を示し、その後のブロックのラベル
のある命令 (例えばラベルXXにおける命令nop)の実行回
数が、分岐命令で分岐が発生しない場合の回数を示すと
いうように、特定のラベルの対ごとに明確な対応関係が
設けられ、実行回数から分岐確率を算出する場合の処理
を容易にする。
【0045】図1の後処理部2は、以上でプロファイル
情報収集用に変換された中間言語プログラムにより、所
定の機械語命令からなる目的プログラム6と、ラベル情
報12とを生成する。ラベル情報は、各ラベルと、そのラ
ベルの目的プログラム上のアドレスとを対応付けて示す
項からなるテーブル情報である。
【0046】後処理部2は又、プロファイル情報収集の
ための情報収集テーブルを作成して、以上に付加してお
く。情報収集テーブルは、例えば図8(a)のように、キ
ー、実行回数、対応識別番号の欄からなり、キー欄には
各ラベル値が記録され、実行回数は実行時に累積記録さ
れるための欄であり、対応識別番号は前記の分岐確率算
出の便のための対応を、対応するラベルの項に同じ番号
を付して識別するようにしたものである(図8(a) は、
図6(f)のプログラム例の場合の情報収集テーブル例で
ある)。
【0047】情報収集部7は、所定のプロファイル情報
収集のための実行指定を受けると、指定の入力データに
より目的プログラム6を実行させて、プロファイル情報
を収集する。
【0048】そのための情報収集部7の一実施例として
は、情報収集部7に通常のいわゆるトレース機能を設
け、目的プログラム6の実行を1命令づつトレースする
ことにより、実行される命令のアドレスを監視し、ラベ
ル情報12を参照してラベルのアドレスが検出されると、
ラベルをキーとして情報収集テーブルの該当項を索引
し、その回数をラベル別に実行回数として累積して情報
収集テーブルに記録するようにする。
【0049】又、他の実施例としては、情報収集部7は
情報収集のために目的プログラム6を実行する場合の前
処理として、先ずラベル情報12を参照して、各ラベルに
対応するアドレスにある各命令を例えばtrap命令に置き
換えて、概念的に図7に示すようなプログラムにし、元
の命令はそのアドレスに対応付けて保存しておく。ここ
で、trap命令とは、プログラム割込みを発生させる命令
とする。
【0050】以上の前処理の後、命令置き換えを行った
目的プログラムを実行させると、前記trap命令実行ごと
に割込みが発生するので、そこで情報収集部7は、割込
みを発生したtrap命令のアドレスを取得し、ラベル情報
12を参照してアドレスに対応するラベルを得、ラベルを
キーとして情報収集テーブルの該当項を索引し、その回
数をラベル別に実行回数として累積して情報収集テーブ
ルに記録する。
【0051】その後、現アドレスにたいおう付けて保存
してある命令を復元するようにtrap命令を置き換えた
後、その命令から目的プログラムの実行を再開する。情
報収集部7は、このようにして、指定のn回のプログラ
ム実行をすべて終わると、プログラム観測回数nと情報
収集テーブルとをプロファイル情報格納部8に出力す
る。
【0052】プロファイル情報格納部8は、原始プログ
ラムのファイルの中に設けてもよく、又は別のファイル
として、例えばファイル名によって原始プログラムのフ
ァイルと関連付けるようにしてもよい。
【0053】図1(c)の最適化部10は、前処理部1が原
始プログラムから生成する中間言語プログラム5につい
て、その原始プログラムに対応するプロファイル情報格
納部8から取り出す情報収集テーブルのプロファイル情
報に基づく最適化を行う。
【0054】そのために最適化部10は、先ずプロファイ
ル情報格納部8に格納された、前記情報収集テーブルに
より、分岐確率及びループの回転数を算出する。図4は
最適化部10がプロファイル情報格納部8の、情報収集テ
ーブルによる分岐確率及びループ回転数算出処理の流れ
の一例を示す図であり、先ず処理ステップ40でプロファ
イル情報格納部8からプログラム観測回数nと情報収集
テーブルを読み出す。
【0055】処理ステップ41で情報収集テーブルの未処
理の項の先頭から1項を処理対象に取り出し(これをa
項とする)、処理ステップ42でその実行回数欄の値をa
とする。
【0056】処理ステップ43で、現a項と同じ対応識別
番号を持つ別の項(これをb項とする)を取り出し、処
理ステップ44でその実行回数欄の値をbとする。処理ス
テップ45で、a項のキー欄の値によって中間言語プログ
ラム上の対応する分岐命令を識別し、それがループを構
成するための分岐命令か、単なる分岐命令か解析する。
【0057】その結果、ループでなければ、処理ステッ
プ46で「(a-b)/a 」を計算して、当該分岐命令の分岐確
率とする。ループの場合には、処理ステップ47で「(a-
b)/n 」を計算して、ループの平均回転数とする。
【0058】なお、第5の発明のとおり、以上で計算し
た分岐確率が1又は0の場合、及びa=0の場合(即
ち、a=0、b=0又はa=bの場合)には、分岐確率
又は回転数を強制的に所定の非0値に設定するものとす
る。
【0059】例えば、分岐確率を算出する場合には、a
=0(当然b=0)であれば確率計算値を例えば0.5と
し、a≠0でb=0であれば算出値を例えば0.9とし、
又回転数の計算値が0になる場合には、強制的に例えば
1とし、分岐/非分岐確率や回転数を0にしないように
する。
【0060】これは、実行回数や分岐確率又は非分岐確
率に0を指定することにより、強制的に該当パスを削除
する機能をコンパイラが持っている場合等に対処するた
めである。
【0061】以上で算出した分岐確率又は回転数を、処
理ステップ48で中間言語プログラムの該当分岐命令のア
ドレスに対応付けて記録する。処理ステップ49で、情報
収集テーブルの全項を処理したことを識別するまで、以
上の処理を反復することにより、中間言語プログラムの
各分岐命令ごとに対応して分岐確率又は回転数を算出し
て処理を終わる。
【0062】なお、以上の処理のために、最適化部10
は、予め中間言語プログラム5について、前記と同様の
ブロック分けと変換を行って図6(f)に相当する中間言
語プログラムを参照して、情報収集テーブルのキー欄の
ラベルと中間言語プログラム5との対応を付ける。
【0063】最適化部10は、以上で求めた分岐確率及び
回転数を参照することにより、前記従来と同様に分岐減
少化の最適化を行うが、最適化処理の詳細は省略する。
第3の発明によりプロファイル情報を収集する場合に、
図1(b)の情報収集部11は、中間言語プログラム5をそ
のまま解釈して実行するための、いわゆるインタプリタ
を主体に構成される。
【0064】即ち、情報収集部11は、通常のインタプリ
タのように、中間言語プログラムの文字列を解釈して、
1命令の文字列を取り出し、命令を解析して解析結果に
従い、その命令の実行すべき処理を代行し、その処理結
果で定まる次命令アドレスから、前記の文字列解釈を繰
り返すことにより、中間言語プログラムの実行を進め
る。
【0065】情報収集部11は、以上のようにして中間言
語プログラムを一命令づつ実行する過程で、命令が分岐
命令であった場合には、その分岐命令の実行を終わって
次の命令に進む前に、実行の結果分岐が発生したか(分
岐)、シーケンシャルに次の命令に進むか(非分岐)を
識別して、分岐命令別に情報収集テーブルに実行回数と
分岐であった場合の分岐回数とを累積して記録する。
【0066】情報収集テーブルは例えば図8(b) のよう
に、アドレス、実行回数、分岐回数の欄を有し、アドレ
ス欄には分岐命令のアドレスが記録され、実行回数欄に
はその命令の実行回数を累積し、分岐回数欄には分岐が
発生した回数を累積する。
【0067】図8(b)が図6(d)の中間言語プログラム
(但し、この場合にはブロック分けの必要は無い)の情
報収集テーブルの場合に、各項には図に参考として示す
各分岐命令に対応して、アドレスが記録され、実行回数
と分岐回数が累積される。
【0068】情報収集部11は、以上のようにして、指定
の回数のプログラム実行をすべて終わると、プログラム
観測回数nと情報収集テーブルとをプロファイル情報格
納部8に出力する。
【0069】この情報収集テーブルによって、最適化部
10が分岐確率及び回転数を算出する場合には、情報収集
テーブルのアドレス欄によって中間言語プログラムとの
対応をつけ、各項から直接に分岐確率又は回転数を算出
して処理する。
【0070】
【発明の効果】以上の説明から明らかなように本発明に
よれば、分岐減少化による最適化を行うコンパイラ装置
において、プロファイル情報の観測点が、機械語命令に
近い中間言語プログラムについて設定され、適切な観測
点によるプロファイル情報の収集および、そのデータに
基づく適切な最適化が可能になるという著しい工業的効
果がある。
【図面の簡単な説明】
【図1】 本発明の構成を示すブロック図
【図2】 ブロック構造解析部の処理の流れ図
【図3】 中間言語変換部の処理の流れ図
【図4】 分岐確率等の算出処理の流れ図
【図5】 プログラム例による説明図(その1)
【図6】 プログラム例による説明図(その2)
【図7】 プログラム例による説明図(その3)
【図8】 情報収集テーブルを説明する図
【符号の説明】
1 前処理部 2 後処理部 3 ブロック構造解析部 4 中間言語変換部 5 中間言語プログラム 6、9 目的プログラム 7、11 情報収集部 12 ラベル情報 8 プロファイル情報格納部 10 最適化部 20〜29、30〜37、40〜49 処理ステップ

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 前処理部が原始プログラムを翻訳して中
    間言語プログラムを生成し、後処理部が中間言語プログ
    ラムから目的プログラムを生成するコンパイラ装置であ
    って、 ブロック構造解析部及び中間言語変換部を有し、 該ブロック構造解析部は、該中間言語プログラムを所定
    のブロックの並びに区分して、各該ブロックを、1個以
    上の命令からなる命令列であって、該命令列の先頭以外
    に分岐先となる命令が無く、該命令列の末尾以外に分岐
    命令が無い命令列によって構成し、 該中間言語変換部は、該中間言語プログラムに、各該ブ
    ロックが各1個のラベルを持つように所要のラベルを設
    けて、 該後処理部は、該中間言語プログラムから生成する目的
    プログラムに、各該ラベルに対応する該目的プログラム
    上のアドレスを示すラベル情報を付加するように構成さ
    れていることを特徴とするコンパイラ装置。
  2. 【請求項2】 請求項1記載のコンパイラ装置であっ
    て、 情報収集部(7)を有し、 該情報収集部は、前記後処理部が出力する目的プログラ
    ムを実行させ、該ラベル情報に示される各該アドレス別
    に、当該アドレスに位置する命令が実行された実行回数
    を収集して、プロファイル情報格納部に出力するように
    構成されていることを特徴とするコンパイラ装置。
  3. 【請求項3】 前処理部が原始プログラムを翻訳して中
    間言語プログラムを生成し、 情報収集部(11)が、該中間言語プログラムを解釈して実
    行し、当該中間言語プログラムの分岐命令を実行するご
    とに、実行結果が分岐か非分岐かを識別して、各該分岐
    命令ごとに実行結果の分岐及び非分岐別に実行回数を累
    積し、該実行回数の情報をプロファイル情報格納部に出
    力するように構成されていることを特徴とするコンパイ
    ラ装置。
  4. 【請求項4】 前処理部が原始プログラムを翻訳して中
    間言語プログラムを生成し、後処理部が中間言語プログ
    ラムから目的プログラムを生成するコンパイラ装置であ
    って、 最適化部を有し、 該最適化部は、請求項2又は請求項3記載の前記プロフ
    ァイル情報格納部に出力された実行回数から、各分岐命
    令についての分岐確率、及びループの回転数の、少なく
    とも何れか一方を、該中間言語プログラムに対応させて
    算出し、 該算出した分岐確率及び回転数に基づく所定の最適化処
    理を該中間言語プログラムについて行って該後処理部に
    渡すように構成されていることを特徴とするコンパイラ
    装置。
  5. 【請求項5】 請求項4記載のコンパイラ装置であっ
    て、 前記最適化部は、前記プロファイル情報格納部に出力さ
    れた実行回数から各分岐命令についての分岐確率及びル
    ープの回転数を算出する場合に、分岐確率の算出値が0
    又は1になる場合、及び回転数の算出値が0になる場合
    には、当該算出値を非0の所定値とすることを特徴とす
    るコンパイラ装置。
JP22539094A 1994-09-20 1994-09-20 コンパイラ装置 Expired - Fee Related JP3550748B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22539094A JP3550748B2 (ja) 1994-09-20 1994-09-20 コンパイラ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22539094A JP3550748B2 (ja) 1994-09-20 1994-09-20 コンパイラ装置

Publications (2)

Publication Number Publication Date
JPH0887417A true JPH0887417A (ja) 1996-04-02
JP3550748B2 JP3550748B2 (ja) 2004-08-04

Family

ID=16828614

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22539094A Expired - Fee Related JP3550748B2 (ja) 1994-09-20 1994-09-20 コンパイラ装置

Country Status (1)

Country Link
JP (1) JP3550748B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000222218A (ja) * 1999-02-01 2000-08-11 Fujitsu Ltd コンパイル装置および記録媒体
US6546550B1 (en) 1999-01-28 2003-04-08 International Business Machines Corporation Method to determine dynamic compilation time and to select bytecode execution mode
JP2007213490A (ja) * 2006-02-13 2007-08-23 Fujitsu Ltd アプリケーションサーバシステムおよび仮想マシンプログラム
JP2009075874A (ja) * 2007-09-20 2009-04-09 Fujitsu Microelectronics Ltd プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
US7765535B2 (en) 2003-10-23 2010-07-27 Fujitsu Limited Software development tool program
US10108405B2 (en) 2015-08-03 2018-10-23 Fujitsu Limited Compiling apparatus and compiling method

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546550B1 (en) 1999-01-28 2003-04-08 International Business Machines Corporation Method to determine dynamic compilation time and to select bytecode execution mode
JP2000222218A (ja) * 1999-02-01 2000-08-11 Fujitsu Ltd コンパイル装置および記録媒体
US7765535B2 (en) 2003-10-23 2010-07-27 Fujitsu Limited Software development tool program
JP2007213490A (ja) * 2006-02-13 2007-08-23 Fujitsu Ltd アプリケーションサーバシステムおよび仮想マシンプログラム
US8332845B2 (en) 2006-02-13 2012-12-11 Fujitsu Limited Compile timing based on execution frequency of a procedure
JP2009075874A (ja) * 2007-09-20 2009-04-09 Fujitsu Microelectronics Ltd プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
US10108405B2 (en) 2015-08-03 2018-10-23 Fujitsu Limited Compiling apparatus and compiling method

Also Published As

Publication number Publication date
JP3550748B2 (ja) 2004-08-04

Similar Documents

Publication Publication Date Title
US5987250A (en) Transparent instrumentation for computer program behavior analysis
US7353503B2 (en) Efficient dead code elimination
JP2008059279A (ja) 文字列出力処理を最適化する技術
Schulz Extracting critical path graphs from MPI applications
KR20180129623A (ko) 연관된 다중 파일 정적 분석 장치
JP3380390B2 (ja) デバッグ情報表示装置
JP3205406B2 (ja) 参照対象変数決定処理方法および翻訳処理システム
JPH0887417A (ja) コンパイラ装置
CN112114817B (zh) 基于cobol语言的数据字典字段信息获取方法及装置
JP2007018254A (ja) 言語処理装置
JP2007122207A (ja) プログラム分析プログラム、プログラム分析装置、プログラム分析方法
EP2587380B1 (en) Runtime environment and method for non-invasive monitoring of software applications
JP7380851B2 (ja) テストスクリプト生成装置、テストスクリプト生成方法及びプログラム
JP2000207246A (ja) デバッグ支援装置及び方法並びにデバッグ支援用ソフトウェアを記録した記録媒体
JP4782315B2 (ja) 影響解析装置および方法、記録媒体、プログラム
JP2754495B2 (ja) ログ/サンプリングデータの解析方法
CN118152273A (zh) 一种基于高精度静态程序分析的过程间冗余保护检测方法
JPH07141187A (ja) データ分析支援システム及び方法
JPH0793144A (ja) プログラム解析装置
JP2578870B2 (ja) プログラム走行スラップカウント装置
JP2000293410A (ja) プロファイラ
JP3686303B2 (ja) 実行不要命令の削除方法、実行不要命令の削除装置及び記録媒体
CN114201460A (zh) 针对并发导致的不完备事件日志的块结构过程挖掘方法
JPH06222913A (ja) プログラム解析装置
CN117407876A (zh) 恶意软件中的不透明谓词检测方法、系统及存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040302

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040330

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040412

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080514

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090514

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090514

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100514

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100514

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110514

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees