JP3550748B2 - コンパイラ装置 - Google Patents
コンパイラ装置 Download PDFInfo
- Publication number
- JP3550748B2 JP3550748B2 JP22539094A JP22539094A JP3550748B2 JP 3550748 B2 JP3550748 B2 JP 3550748B2 JP 22539094 A JP22539094 A JP 22539094A JP 22539094 A JP22539094 A JP 22539094A JP 3550748 B2 JP3550748 B2 JP 3550748B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- program
- intermediate language
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Description
【産業上の利用分野】
本発明は、計算機における原始プログラムの翻訳処理において、分岐やループについて分岐回数を減少する最適化を行う場合に、最適化の資料とするために、実行パス上の各所要点の実行回数を示すプロファイル情報を収集し、又、収集したプロファイル情報を使用して最適化を行うためのコンパイラ装置に関する。
【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 (1)
- 中間言語プログラムを解釈して実行し、中間言語プログラムの分岐命令を実行するごとに、実行結果が分岐か非分岐かを識別して、各該分岐命令ごとに実行結果の分岐及び非分岐別に実行回数を累積し、該実行回数の情報をプロファイル情報格納部に出力する情報収集部と、
前記プロファイル情報格納部に出力された実行回数から、各分岐命令についての分岐確率、及びループの回転数の、少なくとも何れか一方を、該中間言語プログラムに対応させて算出し、分岐確率の算出値が0又は1になる場合、及び回転数の算出値が0になる場合には、当該算出値を非0の所定値に設定し直した分岐確率及び回転数に基づく所定の最適化処理を該中間言語プログラムについて行って、中間言語プログラムから目的プログラムを生成する後処理部に渡す最適化部と
を有することを特徴とするコンパイラ装置。
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 JPH0887417A (ja) | 1996-04-02 |
JP3550748B2 true 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) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3470948B2 (ja) | 1999-01-28 | 2003-11-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ |
JP2000222218A (ja) * | 1999-02-01 | 2000-08-11 | Fujitsu Ltd | コンパイル装置および記録媒体 |
WO2005041028A1 (ja) | 2003-10-23 | 2005-05-06 | Fujitsu Limited | ソフトウェア開発ツールプログラム |
JP5167589B2 (ja) | 2006-02-13 | 2013-03-21 | 富士通株式会社 | アプリケーションサーバ装置および仮想マシンプログラム |
JP5082716B2 (ja) * | 2007-09-20 | 2012-11-28 | 富士通セミコンダクター株式会社 | プログラム変換装置、プログラム変換方法およびプログラム変換プログラム |
JP6536266B2 (ja) | 2015-08-03 | 2019-07-03 | 富士通株式会社 | コンパイル装置、コンパイル方法およびコンパイルプログラム |
-
1994
- 1994-09-20 JP JP22539094A patent/JP3550748B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0887417A (ja) | 1996-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3790683B2 (ja) | コンピュータ装置、その例外処理プログラム及びコンパイル方法 | |
US5987250A (en) | Transparent instrumentation for computer program behavior analysis | |
JP3472026B2 (ja) | ログ情報採取解析装置 | |
US7353503B2 (en) | Efficient dead code elimination | |
EP2390790A1 (en) | Profiling of software applications | |
JP2008059279A (ja) | 文字列出力処理を最適化する技術 | |
US7849394B2 (en) | Linked code generation report | |
JP2010079894A (ja) | トレース操作の修正によるトレースのオーバーヘッドの削減 | |
US7308681B2 (en) | Control flow based compression of execution traces | |
JP3924256B2 (ja) | コンパイラ装置、コンパイラプログラム、記録媒体、コンパイル方法、実行時情報生成装置、及び実行時情報生成プログラム | |
JP3380390B2 (ja) | デバッグ情報表示装置 | |
JP3550748B2 (ja) | コンパイラ装置 | |
US7735073B1 (en) | Method and apparatus for data object profiling | |
JP6730587B2 (ja) | キャッシュミス推定プログラム、キャッシュミス推定方法及び情報処理装置 | |
JP6544054B2 (ja) | 情報処理装置、実行情報記録プログラムおよび実行情報記録方法 | |
JP3997495B2 (ja) | ソフトウェア解析装置及びソフトウェア解析方法 | |
CN106919503A (zh) | 应用程序的测试方法及装置 | |
CN112114817B (zh) | 基于cobol语言的数据字典字段信息获取方法及装置 | |
EP2587380B1 (en) | Runtime environment and method for non-invasive monitoring of software applications | |
JP2005071135A (ja) | 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置 | |
US7827543B1 (en) | Method and apparatus for profiling data addresses | |
JP2004078338A (ja) | コンピュータ性能評価方法及び装置 | |
JP6036089B2 (ja) | データ遷移トレース装置、データ遷移トレース方法、及び、データ遷移トレースプログラム | |
JP3045083B2 (ja) | 記憶領域管理装置 | |
CN109710419A (zh) | 基于文本分析的mpi代码通信过程解析方法 |
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 |