JPH0498330A - オブジェクトコード比較方法 - Google Patents
オブジェクトコード比較方法Info
- Publication number
- JPH0498330A JPH0498330A JP2210345A JP21034590A JPH0498330A JP H0498330 A JPH0498330 A JP H0498330A JP 2210345 A JP2210345 A JP 2210345A JP 21034590 A JP21034590 A JP 21034590A JP H0498330 A JPH0498330 A JP H0498330A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- information
- compiler
- object code
- instruction
- 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
Links
- 238000000034 method Methods 0.000 title claims description 12
- 230000006866 deterioration Effects 0.000 abstract description 5
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- YASYVMFAVPKPKE-UHFFFAOYSA-N acephate Chemical compound COP(=O)(SC)NC(C)=O YASYVMFAVPKPKE-UHFFFAOYSA-N 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[産業上の利用分野コ
本発明はコンパイラのデバッグ及び評価に関する
[従来の技術]
従来、バージョンアップしたコンパイラのデバッグにお
いては、被デバツグプログラムのコンパイル結果である
オブジェクトリストを目で見ることにより、またはコン
パイルして得られたロードモジュールを実行して実行時
間を測定することによりバグやオブジェクトプログラム
の実行性能低下のチエツクを行っていた。また、オブジ
ェクトリストの比較も行っていたが、単なる比較ではオ
ブジェクトコードが一命令分移動してもチエツクされた
り、一つのブロックで一命令多いと、それよりも後では
たとえ同じ命令列が並んでいても順番が一つずれるため
にすべて異なると判断されるなどの欠点があった。尚、
手続きやD○小ループとの時間測定ツールとして、例え
ばFORGEが挙げられる。これはジョン エム・レベ
スク、ジョエル ダブリュー・ウィリアムソン共著、ア
カデミツク トウ フォートラン オン スーパーコン
ピューターズ、頁83及び頁187から200、アカデ
ミツク プレス社(John M。
いては、被デバツグプログラムのコンパイル結果である
オブジェクトリストを目で見ることにより、またはコン
パイルして得られたロードモジュールを実行して実行時
間を測定することによりバグやオブジェクトプログラム
の実行性能低下のチエツクを行っていた。また、オブジ
ェクトリストの比較も行っていたが、単なる比較ではオ
ブジェクトコードが一命令分移動してもチエツクされた
り、一つのブロックで一命令多いと、それよりも後では
たとえ同じ命令列が並んでいても順番が一つずれるため
にすべて異なると判断されるなどの欠点があった。尚、
手続きやD○小ループとの時間測定ツールとして、例え
ばFORGEが挙げられる。これはジョン エム・レベ
スク、ジョエル ダブリュー・ウィリアムソン共著、ア
カデミツク トウ フォートラン オン スーパーコン
ピューターズ、頁83及び頁187から200、アカデ
ミツク プレス社(John M。
Levesque、Joel W、WilliaI[1
son 、 A Guidebook t。
son 、 A Guidebook t。
Fortran on Supercomputers
、 p83.p187−200 。
、 p83.p187−200 。
Academic Press、Inc)において論じ
られている・[発明が解決しようとする課題] コンパイラの実行性能低下のチエツクは人手によらず、
自動的に行うことを目的とする。また、実行時間を測定
せずにコンパネル時にある程度オブジェクトプログラム
の実行性能のチエツクを行うことを目的とする。
られている・[発明が解決しようとする課題] コンパイラの実行性能低下のチエツクは人手によらず、
自動的に行うことを目的とする。また、実行時間を測定
せずにコンパネル時にある程度オブジェクトプログラム
の実行性能のチエツクを行うことを目的とする。
[課題を解決するための手段]
上記課題を解決するために一つのソースプログラムを被
デバツグコンパイラ及び使用実績のあるコンパイラでコ
ンパイルして得られるオブジェクトコート乃至オブジェ
クトコード情報を含む中間コード乃至オブジェクトリス
トを入力し、上記入力をブロックに分け、ブロックごと
に命令数ないしパイプラインの空き時間ないしパイプラ
インの空き時間を含む実行時間を求め、複数のコンパイ
ラより得られる上記情報を比較し、もしくは上記入力よ
りDOループを検出してDOループを構成する各ブロッ
クの情報から得られるD○小ループ対する上記情報を比
較して、比較結果を出力するものである。
デバツグコンパイラ及び使用実績のあるコンパイラでコ
ンパイルして得られるオブジェクトコート乃至オブジェ
クトコード情報を含む中間コード乃至オブジェクトリス
トを入力し、上記入力をブロックに分け、ブロックごと
に命令数ないしパイプラインの空き時間ないしパイプラ
インの空き時間を含む実行時間を求め、複数のコンパイ
ラより得られる上記情報を比較し、もしくは上記入力よ
りDOループを検出してDOループを構成する各ブロッ
クの情報から得られるD○小ループ対する上記情報を比
較して、比較結果を出力するものである。
[作用]
被デバツグコンパイラによるコンパイル結果は使用実績
のある、従ってバグの少ないコンパイラによるコンパイ
ル結果と比較されるので、バージョンアップに伴って発
生した性能低下などの)<グは容易に自動的に見つけ出
すことができる。
のある、従ってバグの少ないコンパイラによるコンパイ
ル結果と比較されるので、バージョンアップに伴って発
生した性能低下などの)<グは容易に自動的に見つけ出
すことができる。
[実施例]
以下、本発明の一実施例を第1図から第3図までを用い
て説明する。第1図は本発明による処理の流れを示した
ブロック図である。100はソースプログラムを示し、
101,103はそれぞれ第1、第2のコンパイラを示
し、102はソースプロクラム100を第1のコンパイ
ラ101でコンパイルして得られるオブジェクトコード
情報を含む第1の中間コードを示し、]04は同様にし
てソースプログラム100を第2のコンパイラ103で
コンパイルして得られるオブジェクトコート情報を含む
第2の中間コートを示している。
て説明する。第1図は本発明による処理の流れを示した
ブロック図である。100はソースプログラムを示し、
101,103はそれぞれ第1、第2のコンパイラを示
し、102はソースプロクラム100を第1のコンパイ
ラ101でコンパイルして得られるオブジェクトコード
情報を含む第1の中間コードを示し、]04は同様にし
てソースプログラム100を第2のコンパイラ103で
コンパイルして得られるオブジェクトコート情報を含む
第2の中間コートを示している。
105は本比較方法において比較すべき解析結果を出力
する処理を示し、106は上記得られた第1の中間コー
ド102及び第2の中間コート104を入力し、これら
を、分岐命令はその単位内の最後の位置以外になく、か
つ、その単位外からその単位内への分岐がないような連
続した最大の命令単位であるブロックにそれぞれ分割す
るブロックへの分割処理を示し、107は上記中間コー
トからD○小ループ検出するD○小ループ検出処理を示
し、108は上記分割されたブロックごとに命令数ない
しパイプラインの空き時間ないし実行時間を解析し、D
○小ループ構成するブロックの上記解析結果の単純和を
DOループの解析結果とする解析処理を示し、109は
第1の中間コート102を入力して105により出力さ
れた第1の解析結果を示し、110は第2の中間コート
104を入力して105により出力された第2の解析結
果を示し、111は第1の解析結果↓09と第2の解析
結果110を入力し、D○小ループとに上記二つの命令
数ないしパイプラインの空き時間ないし実行時間を出力
し、また、二つの命令数ないし実行時間を比較して、そ
の多い方を指摘する処理を示す。112は比較111に
より得られる比較結果を示している。
する処理を示し、106は上記得られた第1の中間コー
ド102及び第2の中間コート104を入力し、これら
を、分岐命令はその単位内の最後の位置以外になく、か
つ、その単位外からその単位内への分岐がないような連
続した最大の命令単位であるブロックにそれぞれ分割す
るブロックへの分割処理を示し、107は上記中間コー
トからD○小ループ検出するD○小ループ検出処理を示
し、108は上記分割されたブロックごとに命令数ない
しパイプラインの空き時間ないし実行時間を解析し、D
○小ループ構成するブロックの上記解析結果の単純和を
DOループの解析結果とする解析処理を示し、109は
第1の中間コート102を入力して105により出力さ
れた第1の解析結果を示し、110は第2の中間コート
104を入力して105により出力された第2の解析結
果を示し、111は第1の解析結果↓09と第2の解析
結果110を入力し、D○小ループとに上記二つの命令
数ないしパイプラインの空き時間ないし実行時間を出力
し、また、二つの命令数ないし実行時間を比較して、そ
の多い方を指摘する処理を示す。112は比較111に
より得られる比較結果を示している。
第2図(A)は、ソースプログラム中のD○小ループ第
1のコンパイラ1. Olでコンパイルした結果得られ
た第1の中間コート102の最後の部分をオブジェクト
リストの形式で表したものである。
1のコンパイラ1. Olでコンパイルした結果得られ
た第1の中間コート102の最後の部分をオブジェクト
リストの形式で表したものである。
命令201は5番レジスタの内容から値1を引き。
減算後の5番レジスタの内容が評価され、もしその内容
が○でなければラベルLAB # OO50へ分岐し、
もしその内容が○ならば次の命令へ進むことを表してい
る。あらかじめこの5番レジスタにループ繰返し回数を
入れておけばこの命令によりDOループの制御が実現で
きる。
が○でなければラベルLAB # OO50へ分岐し、
もしその内容が○ならば次の命令へ進むことを表してい
る。あらかじめこの5番レジスタにループ繰返し回数を
入れておけばこの命令によりDOループの制御が実現で
きる。
第2図(B)は上記D○ループを第2のコンパイラ10
3でコンパイルした結果得られた第2の中間コード10
4の最後の部分をオブジェクトリストの形式で表したも
のである。命令202は0番レジスタにアドレスNの値
を格納する命令であり、命令203は0番レジスタの内
容から1を引き、その結果を0番レジスタに格納する命
令であり、命令204は0番レジスタの内容をアドレス
Nに格納する命令である。命令205は0番レジスタの
内容を評価し、その内容が0か正か負かによって、コン
デイションコートの値を設定する命令を示す。命令20
6は命令205によって設定されたコンデイションコー
ドの値がOに対応する値でなければ、ラベルL A B
:j OO50へ分岐し、Oに対応する値であれば、
次の命令へ進むことを表している。あらかじめアドレス
Nにループ繰返し回数を入れておけばこれらの命令によ
りDOループの制御が実現できる。
3でコンパイルした結果得られた第2の中間コード10
4の最後の部分をオブジェクトリストの形式で表したも
のである。命令202は0番レジスタにアドレスNの値
を格納する命令であり、命令203は0番レジスタの内
容から1を引き、その結果を0番レジスタに格納する命
令であり、命令204は0番レジスタの内容をアドレス
Nに格納する命令である。命令205は0番レジスタの
内容を評価し、その内容が0か正か負かによって、コン
デイションコートの値を設定する命令を示す。命令20
6は命令205によって設定されたコンデイションコー
ドの値がOに対応する値でなければ、ラベルL A B
:j OO50へ分岐し、Oに対応する値であれば、
次の命令へ進むことを表している。あらかじめアドレス
Nにループ繰返し回数を入れておけばこれらの命令によ
りDOループの制御が実現できる。
第2図(A)と第2図(B)は同じ機能を持っているが
、第2図(B)の方が命令数も多く、実行時間も長い。
、第2図(B)の方が命令数も多く、実行時間も長い。
し7かし、第2図(B)は第2図(A)のようにレジス
タを占有して使うことがないので、D○ループ内の処理
に一つ余計にレジスタを割り当てることができる。
タを占有して使うことがないので、D○ループ内の処理
に一つ余計にレジスタを割り当てることができる。
第3図は第2図の中間コードを含む、プログラム全体に
対する中間コードを解析して得られた二つの結果を比較
した比較結果112を示している。
対する中間コードを解析して得られた二つの結果を比較
した比較結果112を示している。
301はDOループの出現順の番号を示し、302はF
ORTRANのDOループ中の最後の文を示すソースプ
ログラム中の文番号を示し、303はD○ループ中の最
初の文のISNを、304はDOループ中の最後の文の
ISNを示す。
ORTRANのDOループ中の最後の文を示すソースプ
ログラム中の文番号を示し、303はD○ループ中の最
初の文のISNを、304はDOループ中の最後の文の
ISNを示す。
305はD○ループのネストの深さを示す。
306から308は第1の解析結果109の情報を示し
、309から311は第2の解析結果の情報を示してい
る。306と309はそれぞれ、D○ループを構成する
各命令の平均実行時間とパイプラインの空き時間の総和
であるDOループの実行時間をサイクル単位で表したも
のであり、307と310はそれぞれDOループ中の命
令数を表し、308と311はそれぞれD○ループ中の
パイプラインの空き時間を表したものである。
、309から311は第2の解析結果の情報を示してい
る。306と309はそれぞれ、D○ループを構成する
各命令の平均実行時間とパイプラインの空き時間の総和
であるDOループの実行時間をサイクル単位で表したも
のであり、307と310はそれぞれDOループ中の命
令数を表し、308と311はそれぞれD○ループ中の
パイプラインの空き時間を表したものである。
300は306と309を比較し、その値が等しくなけ
れば何も出力せず、値が異なればその値の大きい方が左
にあればLEFT、右にあればRIGHTを出力する、
比較欄である。312は第2図(A)、(B)に示した
DOループの中間コートを比較した結果、右の方即ち第
2図(B)に対する中間コートの方が悪いコートである
ことを示している。これにより第2図(B)はレジスタ
の割当方法が良くないことが分かる。
れば何も出力せず、値が異なればその値の大きい方が左
にあればLEFT、右にあればRIGHTを出力する、
比較欄である。312は第2図(A)、(B)に示した
DOループの中間コートを比較した結果、右の方即ち第
2図(B)に対する中間コートの方が悪いコートである
ことを示している。これにより第2図(B)はレジスタ
の割当方法が良くないことが分かる。
尚、上記実行時間を並列実行できる命令も考慮に入れて
計算することによ多ノ、ベクトルデータを処理する命令
を並列実行するベクトル計算機やスカラデータを処理す
る命令を並列実行するスーパースカラ計算機にも対応で
きる。
計算することによ多ノ、ベクトルデータを処理する命令
を並列実行するベクトル計算機やスカラデータを処理す
る命令を並列実行するスーパースカラ計算機にも対応で
きる。
また、比較はDOループごとに限らず、ブロックごとの
比較でもよい。
比較でもよい。
[発明の効果コ
バージョンアップしたコンパイラのデバッグにおいて、
自動的に、またコンパイル時にバグやオブジェクトプロ
グラムの実行性能のチエツクを行うことができ、バグや
実行性能の低下のあった個所もすばやく見つけることが
できる。特に命令スケジューリングの効果も簡単に比較
できる。また。
自動的に、またコンパイル時にバグやオブジェクトプロ
グラムの実行性能のチエツクを行うことができ、バグや
実行性能の低下のあった個所もすばやく見つけることが
できる。特に命令スケジューリングの効果も簡単に比較
できる。また。
単独のコンパイラに適用することによりコンパイラの性
能評価に用いることが出来る。
能評価に用いることが出来る。
第1図は木登明番こよる処理の流れを示したブロック図
である。 第2図は、ソースプログラム中のDOループを二つのコ
ンパイラでコンパイルした結果得られたオブジェクト情
報を含む中間コートの最後の部分をオブジェクトリスト
の形式で表したものである。 第3図は第2図の中間コードを含む、プログラム全体に
対する中間コードを解析して得られた二つの結果を比較
した比較結果である。 符号の説明 100・・・ソースプログラム、1o1・・・第1のコ
ンパイラ、102・・・第1の中間コード、103・・
・第2のコンパイラ、104・・・第2の中間コード。 105・・・比較すべき解析結果を出力する処理。 106・・・ブロックへの分割処理、107・・・DO
ループの検出処理、108・・解析処理、109・・・
第1の解析結果、110・・・第2の解析結果、111
・・・比較処理、112・・・比較結果。 第7目
である。 第2図は、ソースプログラム中のDOループを二つのコ
ンパイラでコンパイルした結果得られたオブジェクト情
報を含む中間コートの最後の部分をオブジェクトリスト
の形式で表したものである。 第3図は第2図の中間コードを含む、プログラム全体に
対する中間コードを解析して得られた二つの結果を比較
した比較結果である。 符号の説明 100・・・ソースプログラム、1o1・・・第1のコ
ンパイラ、102・・・第1の中間コード、103・・
・第2のコンパイラ、104・・・第2の中間コード。 105・・・比較すべき解析結果を出力する処理。 106・・・ブロックへの分割処理、107・・・DO
ループの検出処理、108・・解析処理、109・・・
第1の解析結果、110・・・第2の解析結果、111
・・・比較処理、112・・・比較結果。 第7目
Claims (1)
- 【特許請求の範囲】 1、一つのソースプログラムを複数のコンパイラでコン
パイルして得られる、オブジェクトコードないしオブジ
ェクトコード情報を含む中間コードないしオブジェクト
リストからなるコンパイル結果を入力し、上記コンパイ
ル結果を、分岐命令がその単位内の最後の位置以外にな
く、かつ、その単位外からその単位内への分岐がないよ
うな連続した最大の命令単位であるブロックに分け、ブ
ロックごとに命令数ないしパイプラインの空き時間ない
しパイプラインの空き時間を含む実行時間を解析し、複
数のコンパイル結果より得られる上記解析結果からそれ
ぞれのコンパイル結果を比較するための情報を生成する
オブジェクトコード比較方法。 2、該比較情報の生成において、それぞれのコンパイル
結果よりソースプログラム中のDOループに対応する部
分を検出し、そのDOループ対応部分を構成するブロッ
クの各々についての解析結果から、DOループ対応部分
を比較するための情報を生成する請求項1記載のオブジ
ェクトコード比較方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2210345A JP2901720B2 (ja) | 1990-08-10 | 1990-08-10 | オブジェクトコード比較方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2210345A JP2901720B2 (ja) | 1990-08-10 | 1990-08-10 | オブジェクトコード比較方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0498330A true JPH0498330A (ja) | 1992-03-31 |
JP2901720B2 JP2901720B2 (ja) | 1999-06-07 |
Family
ID=16587870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2210345A Expired - Fee Related JP2901720B2 (ja) | 1990-08-10 | 1990-08-10 | オブジェクトコード比較方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2901720B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003526135A (ja) * | 1998-11-16 | 2003-09-02 | インシグニア・ソリューションズ・ピーエルシー | コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法 |
-
1990
- 1990-08-10 JP JP2210345A patent/JP2901720B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003526135A (ja) * | 1998-11-16 | 2003-09-02 | インシグニア・ソリューションズ・ピーエルシー | コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2901720B2 (ja) | 1999-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Camposano | Path-based scheduling for synthesis | |
Healy et al. | Integrating the timing analysis of pipelining and instruction caching | |
Ackerman | Data flow languages | |
Duesterwald et al. | A practical data flow framework for array reference analysis and its use in optimizations | |
US4710872A (en) | Method for vectorizing and executing on an SIMD machine outer loops in the presence of recurrent inner loops | |
US6487715B1 (en) | Dynamic code motion optimization and path tracing | |
US5778233A (en) | Method and apparatus for enabling global compiler optimizations in the presence of exception handlers within a computer program | |
US6289505B1 (en) | Method, apparatus and computer programmed product for binary re-optimization using a high level language compiler | |
JPH0475139A (ja) | ループ並列化装置 | |
KR101787653B1 (ko) | 병렬 파이프라인에서의 분기에 대한 하드웨어 및 소프트웨어 해법 | |
JP2001522502A (ja) | 複数命令コンピュータプログラムを構成する方法 | |
Harmon et al. | A retargetable technique for predicting execution time of code segments | |
Cooper et al. | Building a control-flow graph from scheduled assembly code | |
EP0442623A2 (en) | Reducing pipeline delays in compilers by code hoisting | |
EP0742518B1 (en) | Compiler and processor for processing loops at high speed | |
JPH0748182B2 (ja) | プログラム・エラー検出方法 | |
US5857093A (en) | Cross-compiled simulation timing backannotation | |
Narasimhan et al. | Portable execution time analysis for RISC processors | |
JPH0498330A (ja) | オブジェクトコード比較方法 | |
JPH05508040A (ja) | 命令スケジューリング最適化方法 | |
CN114153750B (zh) | 代码检查方法及装置、代码编写方法、电子设备 | |
Ivutin et al. | Low-level Code Auto-tuning for State-of-the-art Multicore Architectures | |
Yu et al. | Runtime Profiling of OpenCL Workloads Using LLVM-based Code Instrumentation | |
US10387128B2 (en) | Method and apparatus for compiling computer-readable computer programs using extended isomorphism | |
Schonherr et al. | Hazard checking in pipelined processor designs using symbolic model checking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |