JP2901720B2 - オブジェクトコード比較方法 - Google Patents
オブジェクトコード比較方法Info
- Publication number
- JP2901720B2 JP2901720B2 JP2210345A JP21034590A JP2901720B2 JP 2901720 B2 JP2901720 B2 JP 2901720B2 JP 2210345 A JP2210345 A JP 2210345A JP 21034590 A JP21034590 A JP 21034590A JP 2901720 B2 JP2901720 B2 JP 2901720B2
- Authority
- JP
- Japan
- Prior art keywords
- loop
- object code
- result
- instruction
- information
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】 [産業上の利用分野] 本発明はコンパイラのデバッグ及び評価に関する [従来の技術] 従来、バージョンアップしたコンパイラのデバッグに
おいては、被デバッグプログラムのコンパイル結果であ
るオブジェクトリストを目で見ることにより、またはコ
ンパイプして得られたロードモジュールを実行して実行
時間を測定することによりバグやオブジェクトプログラ
ムの実行性能低下のチェックを行っていた。また、オブ
ジェクトリストの比較も行っていたが、単なる比較では
オブジェクトコードが一命令分移動してもチェックされ
たり、一つのブロックで一命令多いと、それよりも後で
はたとえ同じ命令列が並んでいても順番が一つずれるた
めにすべて異なると判断されるなどの欠点があった。
尚、手続きやDOループごとの時間測定ツールとして、例
えばFORGEが挙げられる。これはジョン エム・レベス
ク、ジョエル ダブリュー・ウィリアムソン共著、ア
ガイドブック トゥ フォートラン オン スーパーコ
ンピューターズ、頁83及び頁187から200、アカデミック
プレス社(John M.Levesque,Joel W.Williamson,A Gu
idebook to Fortran on Supercomputers,p83,p187−20
0,Academic Press,Inc)において論じられている。
おいては、被デバッグプログラムのコンパイル結果であ
るオブジェクトリストを目で見ることにより、またはコ
ンパイプして得られたロードモジュールを実行して実行
時間を測定することによりバグやオブジェクトプログラ
ムの実行性能低下のチェックを行っていた。また、オブ
ジェクトリストの比較も行っていたが、単なる比較では
オブジェクトコードが一命令分移動してもチェックされ
たり、一つのブロックで一命令多いと、それよりも後で
はたとえ同じ命令列が並んでいても順番が一つずれるた
めにすべて異なると判断されるなどの欠点があった。
尚、手続きやDOループごとの時間測定ツールとして、例
えばFORGEが挙げられる。これはジョン エム・レベス
ク、ジョエル ダブリュー・ウィリアムソン共著、ア
ガイドブック トゥ フォートラン オン スーパーコ
ンピューターズ、頁83及び頁187から200、アカデミック
プレス社(John M.Levesque,Joel W.Williamson,A Gu
idebook to Fortran on Supercomputers,p83,p187−20
0,Academic Press,Inc)において論じられている。
[発明が解決しようとする課題] コンパイラの実行性能低下のチェックは人手によら
ず、自動的に行うことを目的とする。また、実行時間を
測定せずにコンパイル時にある程度オブジェクトプログ
ラムの実行性能のチェックを行うことを目的とする。
ず、自動的に行うことを目的とする。また、実行時間を
測定せずにコンパイル時にある程度オブジェクトプログ
ラムの実行性能のチェックを行うことを目的とする。
[課題を解決するための手段] 上記課題を解決するために一つのソースプログラムを
被デバッグコンパイラ及び使用実績のあるコンパイラで
コンパイルして得られるオブジェクトコード乃至オブジ
ェクトコード情報を含む中間コード乃至オブジェクトリ
ストを入力し、上記入力をブロックに分け、ブロックご
とに命令数ないしパイプラインの空き時間ないしパイプ
ラインの空き時間を含む実行時間を求め、複数のコンパ
イラより得られる上記情報を比較し、もしくは上記入力
よりDOループを検出してDOループを構成する各ブロック
の情報から得られるDOループに対する上記情報を比較し
て、比較結果を出力するものである。
被デバッグコンパイラ及び使用実績のあるコンパイラで
コンパイルして得られるオブジェクトコード乃至オブジ
ェクトコード情報を含む中間コード乃至オブジェクトリ
ストを入力し、上記入力をブロックに分け、ブロックご
とに命令数ないしパイプラインの空き時間ないしパイプ
ラインの空き時間を含む実行時間を求め、複数のコンパ
イラより得られる上記情報を比較し、もしくは上記入力
よりDOループを検出してDOループを構成する各ブロック
の情報から得られるDOループに対する上記情報を比較し
て、比較結果を出力するものである。
[作用] 被デバックコンパイラによるコンパイル結果は使用実
績のある、従ってバグの少ないコンパイラによるコンパ
イル結果と比較されるので、バージョンアップに伴って
発生した性能低下などのバグは容易に自動的に見つけ出
すことができる。
績のある、従ってバグの少ないコンパイラによるコンパ
イル結果と比較されるので、バージョンアップに伴って
発生した性能低下などのバグは容易に自動的に見つけ出
すことができる。
[実施例] 以下、本発明の一実施例を第1図から第3図までを用
いて説明する。第1図は本発明による処理の流れを示し
たブロック図である。100はソースプログラムを示し、1
01、103はそれぞれ第1、第2のコンパイラを示し、102
はソースプログラム100を第1のコンパイラ101でコンパ
イルして得られるオブジェクトコード情報を含む第1の
中間コードを示し、104は同様にしてソースプログラム1
00を第2のコンパイラ103でコンパイルして得られるオ
ブジェクトコード情報を含む第2の中間コードを示して
いる。105は本比較方法において比較すべき解析結果を
出力する処理を示し、106は上記得られた第1の中間コ
ード102及び第2の中間コード104を入力し、これらを、
分岐命令はその単位内の最後の位置以外になく、かつ、
その単位外からその単位内への分岐がないような連続し
た最大の命令単位であるブロックにそれぞれ分割するブ
ロックへの分割処理を示し、107は上記中間コードからD
Oループを検出するDOループの検出処理を示し、108は上
記分割されたブロックごとに命令数ないしパイプライン
の空き時間ないし実行時間を解析し、DOループを構成す
るブロックの上記解析結果の単純分をDOループの解析結
果とする解析処理を示し、109は第1の中間コード102を
入力して105により出力された第1の解析結果を示し、1
10は第2の中間コード104を入力して105により出力され
た第2の解析結果を示し、111は第1の解析結果109と第
2の解析結果を入力し、DOループごとに上記二つの命令
数ないしパイプラインの空き時間ないし実行時間を出力
し、また、二つの命令数ないし実行時間を比較して、そ
の多い方を指摘する処理を示す。112は比較111により得
られる比較結果を示している。
いて説明する。第1図は本発明による処理の流れを示し
たブロック図である。100はソースプログラムを示し、1
01、103はそれぞれ第1、第2のコンパイラを示し、102
はソースプログラム100を第1のコンパイラ101でコンパ
イルして得られるオブジェクトコード情報を含む第1の
中間コードを示し、104は同様にしてソースプログラム1
00を第2のコンパイラ103でコンパイルして得られるオ
ブジェクトコード情報を含む第2の中間コードを示して
いる。105は本比較方法において比較すべき解析結果を
出力する処理を示し、106は上記得られた第1の中間コ
ード102及び第2の中間コード104を入力し、これらを、
分岐命令はその単位内の最後の位置以外になく、かつ、
その単位外からその単位内への分岐がないような連続し
た最大の命令単位であるブロックにそれぞれ分割するブ
ロックへの分割処理を示し、107は上記中間コードからD
Oループを検出するDOループの検出処理を示し、108は上
記分割されたブロックごとに命令数ないしパイプライン
の空き時間ないし実行時間を解析し、DOループを構成す
るブロックの上記解析結果の単純分をDOループの解析結
果とする解析処理を示し、109は第1の中間コード102を
入力して105により出力された第1の解析結果を示し、1
10は第2の中間コード104を入力して105により出力され
た第2の解析結果を示し、111は第1の解析結果109と第
2の解析結果を入力し、DOループごとに上記二つの命令
数ないしパイプラインの空き時間ないし実行時間を出力
し、また、二つの命令数ないし実行時間を比較して、そ
の多い方を指摘する処理を示す。112は比較111により得
られる比較結果を示している。
第2図(A)は、ソースプログラム中のDOループを第
1のコンパイラ101でコンパイルした結果得られた第1
の中間コード102の最後の部分をオブジェクトリストの
形式で表したものである。命令201は5番レジスタの内
容から値1を引き、減算後の5番レジスタの内容が評価
され、もしその内容が0でなければラベルLAB#0050へ
分岐し、もしその内容が0ならば次の命令へ進むことを
表している。あらかじめこの5番レジスタにループ繰返
し回数を入れておけばこの命令によりDOループの制御が
実現できる。
1のコンパイラ101でコンパイルした結果得られた第1
の中間コード102の最後の部分をオブジェクトリストの
形式で表したものである。命令201は5番レジスタの内
容から値1を引き、減算後の5番レジスタの内容が評価
され、もしその内容が0でなければラベルLAB#0050へ
分岐し、もしその内容が0ならば次の命令へ進むことを
表している。あらかじめこの5番レジスタにループ繰返
し回数を入れておけばこの命令によりDOループの制御が
実現できる。
第2図(B)は上記DOループを第2のコンパイラ103
でコンパイルした結果得られた第2の中間コード104の
最後の部分をオブジェクトリストの形式で表したもので
ある。命令202は0番レジスタにアドレスNの値を格納
する命令であり、命令203は0番レジスタの内容から1
を引き、その結果を0番レジスタに格納する命令であ
り、命令204は0番レジスタの内容をアドレスNに格納
する命令である。命令205は0番レジスタの内容を評価
し、その内容が0か正か負かによって、コンディション
コードの値を設定する命令を示す。命令206は命令205に
よって設定されたコンディションコードの値が0に対応
する値でなければ、ラベルLAB#0050へ分岐し、0に対
応する値であれば、次の命令へ進むことを表している。
あらかじめアドレスNにループ繰返し回数を入れておけ
ばこれらの命令によりDOループの制御が実現できる。
でコンパイルした結果得られた第2の中間コード104の
最後の部分をオブジェクトリストの形式で表したもので
ある。命令202は0番レジスタにアドレスNの値を格納
する命令であり、命令203は0番レジスタの内容から1
を引き、その結果を0番レジスタに格納する命令であ
り、命令204は0番レジスタの内容をアドレスNに格納
する命令である。命令205は0番レジスタの内容を評価
し、その内容が0か正か負かによって、コンディション
コードの値を設定する命令を示す。命令206は命令205に
よって設定されたコンディションコードの値が0に対応
する値でなければ、ラベルLAB#0050へ分岐し、0に対
応する値であれば、次の命令へ進むことを表している。
あらかじめアドレスNにループ繰返し回数を入れておけ
ばこれらの命令によりDOループの制御が実現できる。
第2図(A)と第2図(B)は同じ機能を持っている
が、第2図(B)の方が命令数も多く、実行時間も長
い。しかし、第2図(B)は第2図(A)のようにレジ
スタを占有して使うことがないので、DOループ内の処理
に一つ余計にレジスタを割り当てることができる。
が、第2図(B)の方が命令数も多く、実行時間も長
い。しかし、第2図(B)は第2図(A)のようにレジ
スタを占有して使うことがないので、DOループ内の処理
に一つ余計にレジスタを割り当てることができる。
第3図は第2図の中間コードを含む、プログラム全体
に対する中間コードを解析して得られた二つの結果を比
較した比較結果112を示している。301はDOループの出現
順の番号を示し、302はFORTRANのDOループ中の最後の文
を示すソースプログラム中の文番号を示し、303はDOル
ープ中の最初の文のISNを、304はDOループ中の最後の文
のISNを示す。305はDOループのネストの深さを示す。30
6から308は第1の解析結果109の情報を示し、309から31
1は第2の解析結果の情報を示している。306と309はそ
れぞれ、DOループを構成する各命令の平均実行時間とパ
イプラインの空き時間の総和であるDOループの実行時間
をサイクル単位で表したものであり、307と310はそれぞ
れDOループ中の命令数を表し、308と311はそれぞれDOル
ープ中のパイプラインの空き時間を表したものである。
300は306と309を比較し、その値が等しくなければ何も
出力せず、値が異なればその値の大きい方が左にあれば
LEFT、右にあればRIGHTを出力する、比較欄である。312
は第2図(A)、(B)は示したDOループ中の中間コー
ドを比較した結果、右の方即ち第2図(B)に対する中
間コードの方が悪いコードであることを示している。こ
れにより第2図(B)はレジスタの割当方法が良くない
ことが分かる。
に対する中間コードを解析して得られた二つの結果を比
較した比較結果112を示している。301はDOループの出現
順の番号を示し、302はFORTRANのDOループ中の最後の文
を示すソースプログラム中の文番号を示し、303はDOル
ープ中の最初の文のISNを、304はDOループ中の最後の文
のISNを示す。305はDOループのネストの深さを示す。30
6から308は第1の解析結果109の情報を示し、309から31
1は第2の解析結果の情報を示している。306と309はそ
れぞれ、DOループを構成する各命令の平均実行時間とパ
イプラインの空き時間の総和であるDOループの実行時間
をサイクル単位で表したものであり、307と310はそれぞ
れDOループ中の命令数を表し、308と311はそれぞれDOル
ープ中のパイプラインの空き時間を表したものである。
300は306と309を比較し、その値が等しくなければ何も
出力せず、値が異なればその値の大きい方が左にあれば
LEFT、右にあればRIGHTを出力する、比較欄である。312
は第2図(A)、(B)は示したDOループ中の中間コー
ドを比較した結果、右の方即ち第2図(B)に対する中
間コードの方が悪いコードであることを示している。こ
れにより第2図(B)はレジスタの割当方法が良くない
ことが分かる。
尚、上記実行時間を並列実行できる命令も考慮に入れ
て計算することにより、ベクトルデータを処理する命令
を並列実行するベクトル計算機やスカラデータを処理す
る命令を並列実行するスーパースカラ計算機にも対応で
きる。
て計算することにより、ベクトルデータを処理する命令
を並列実行するベクトル計算機やスカラデータを処理す
る命令を並列実行するスーパースカラ計算機にも対応で
きる。
また、比較はDOループごとに限らず、ブロックごとの
比較でもよい。
比較でもよい。
[発明の効果] バージョンアップしたコンパイラのデバッグにおい
て、自動的に、またコンパイル時にバグやオブジェクト
プログラムの実行性能のチェックを行うことができ、バ
グや実行性能の低下のあった個所もすばやく見つけるこ
とができる。特に命令スケジューリングの効果も簡単に
比較できる。また、単独のコンパイラに適用することに
よりコンパイラの性能評価に用いることが出来る。
て、自動的に、またコンパイル時にバグやオブジェクト
プログラムの実行性能のチェックを行うことができ、バ
グや実行性能の低下のあった個所もすばやく見つけるこ
とができる。特に命令スケジューリングの効果も簡単に
比較できる。また、単独のコンパイラに適用することに
よりコンパイラの性能評価に用いることが出来る。
第1図は本発明による処理の流れを示したブロック図で
ある。 第2図は、ソースプログラム中のDOループを二つのコン
パイラでコンパイルした結果得られたオブジェクト情報
を含む中間コードの最後の部分をオブジェクトリストの
形式で表したものである。 第3図は第2図の中間コードを含む、プログラム全体に
対する中間コードを解析して得られた二つの結果を比較
した比較結果である。 符号の説明 100……ソースプログラム,101……第1のコンパイラ,10
2……第1の中間コード,103……第2のコンパイラ,104
……第2の中間コード,105……比較すべき解析結果を出
力する処理,106……ブロックへの分割処理,107……DOル
ープの検出処理,108……解析処理,109……第1の解析結
果,110……第2の解析結果,111……比較処理,112……比
較結果。
ある。 第2図は、ソースプログラム中のDOループを二つのコン
パイラでコンパイルした結果得られたオブジェクト情報
を含む中間コードの最後の部分をオブジェクトリストの
形式で表したものである。 第3図は第2図の中間コードを含む、プログラム全体に
対する中間コードを解析して得られた二つの結果を比較
した比較結果である。 符号の説明 100……ソースプログラム,101……第1のコンパイラ,10
2……第1の中間コード,103……第2のコンパイラ,104
……第2の中間コード,105……比較すべき解析結果を出
力する処理,106……ブロックへの分割処理,107……DOル
ープの検出処理,108……解析処理,109……第1の解析結
果,110……第2の解析結果,111……比較処理,112……比
較結果。
Claims (2)
- 【請求項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 JPH0498330A (ja) | 1992-03-31 |
JP2901720B2 true 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
-
1990
- 1990-08-10 JP JP2210345A patent/JP2901720B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0498330A (ja) | 1992-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6289505B1 (en) | Method, apparatus and computer programmed product for binary re-optimization using a high level language compiler | |
Click | Global code motion/global value numbering | |
US7284241B2 (en) | Compiler, compiler apparatus and compilation method | |
JP3896087B2 (ja) | コンパイラ装置およびコンパイル方法 | |
Hoogerbrugge et al. | Transport-triggering vs. operation-triggering | |
JP2001522502A (ja) | 複数命令コンピュータプログラムを構成する方法 | |
JP5209609B2 (ja) | ハードウェアエンドループ情報の命令へのコード化 | |
Cooper et al. | Building a control-flow graph from scheduled assembly code | |
US7712091B2 (en) | Method for predicate promotion in a software loop | |
EP0742518B1 (en) | Compiler and processor for processing loops at high speed | |
JP2002532804A (ja) | ハイブリッドコンピュータプログラミング環境 | |
JP2901720B2 (ja) | オブジェクトコード比較方法 | |
US6086622A (en) | Method and apparatus for converting an architecture of a program and method, and apparatus for debugging a program by using them | |
Chung et al. | Improvement of compiled instruction set simulator by increasing flexibility and reducing compile time | |
Dewald et al. | Improving Loop Parallelization by a Combination of Static and Dynamic Analyses in HLS | |
Winkel | Optimal global scheduling for itanium processor family | |
Kirner et al. | Consideration of optimizing compilers in the context of WCET analysis | |
US10387128B2 (en) | Method and apparatus for compiling computer-readable computer programs using extended isomorphism | |
Baier | Automatic Loop Partitioning for Heterogeneous Systems | |
Oshana | Optimizing Embedded Software for Performance | |
Zhu et al. | Overflow controlled SIMD arithmetic | |
JPH0512752B2 (ja) | ||
CN111512296A (zh) | 处理器架构 | |
Scheller | Retargeting a C Compiler to the HAPRA/FAPRA Architecture | |
Gdura | An analytical model for estimating execution cost of 1D array expressions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |