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
Application number
JP2210345A
Other languages
English (en)
Other versions
JP2901720B2 (ja
Inventor
Makoto Sato
真琴 佐藤
Sumio Kikuchi
菊池 純男
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2210345A priority Critical patent/JP2901720B2/ja
Publication of JPH0498330A publication Critical patent/JPH0498330A/ja
Application granted granted Critical
Publication of JP2901720B2 publication Critical patent/JP2901720B2/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)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 [産業上の利用分野コ 本発明はコンパイラのデバッグ及び評価に関する [従来の技術] 従来、バージョンアップしたコンパイラのデバッグにお
いては、被デバツグプログラムのコンパイル結果である
オブジェクトリストを目で見ることにより、またはコン
パイルして得られたロードモジュールを実行して実行時
間を測定することによりバグやオブジェクトプログラム
の実行性能低下のチエツクを行っていた。また、オブジ
ェクトリストの比較も行っていたが、単なる比較ではオ
ブジェクトコードが一命令分移動してもチエツクされた
り、一つのブロックで一命令多いと、それよりも後では
たとえ同じ命令列が並んでいても順番が一つずれるため
にすべて異なると判断されるなどの欠点があった。尚、
手続きやD○小ループとの時間測定ツールとして、例え
ばFORGEが挙げられる。これはジョン エム・レベ
スク、ジョエル ダブリュー・ウィリアムソン共著、ア
カデミツク トウ フォートラン オン スーパーコン
ピューターズ、頁83及び頁187から200、アカデ
ミツク プレス社(John M。
Levesque、Joel W、WilliaI[1
son 、 A Guidebook t。
Fortran on Supercomputers
、 p83.p187−200 。
Academic Press、Inc)において論じ
られている・[発明が解決しようとする課題] コンパイラの実行性能低下のチエツクは人手によらず、
自動的に行うことを目的とする。また、実行時間を測定
せずにコンパネル時にある程度オブジェクトプログラム
の実行性能のチエツクを行うことを目的とする。
[課題を解決するための手段] 上記課題を解決するために一つのソースプログラムを被
デバツグコンパイラ及び使用実績のあるコンパイラでコ
ンパイルして得られるオブジェクトコート乃至オブジェ
クトコード情報を含む中間コード乃至オブジェクトリス
トを入力し、上記入力をブロックに分け、ブロックごと
に命令数ないしパイプラインの空き時間ないしパイプラ
インの空き時間を含む実行時間を求め、複数のコンパイ
ラより得られる上記情報を比較し、もしくは上記入力よ
りDOループを検出してDOループを構成する各ブロッ
クの情報から得られるD○小ループ対する上記情報を比
較して、比較結果を出力するものである。
[作用] 被デバツグコンパイラによるコンパイル結果は使用実績
のある、従ってバグの少ないコンパイラによるコンパイ
ル結果と比較されるので、バージョンアップに伴って発
生した性能低下などの)<グは容易に自動的に見つけ出
すことができる。
[実施例] 以下、本発明の一実施例を第1図から第3図までを用い
て説明する。第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に
より得られる比較結果を示している。
第2図(A)は、ソースプログラム中のD○小ループ第
1のコンパイラ1. Olでコンパイルした結果得られ
た第1の中間コート102の最後の部分をオブジェクト
リストの形式で表したものである。
命令201は5番レジスタの内容から値1を引き。
減算後の5番レジスタの内容が評価され、もしその内容
が○でなければラベル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ループの制御が実現できる。
第2図(A)と第2図(B)は同じ機能を持っているが
、第2図(B)の方が命令数も多く、実行時間も長い。
し7かし、第2図(B)は第2図(A)のようにレジス
タを占有して使うことがないので、D○ループ内の処理
に一つ余計にレジスタを割り当てることができる。
第3図は第2図の中間コードを含む、プログラム全体に
対する中間コードを解析して得られた二つの結果を比較
した比較結果112を示している。
301はDOループの出現順の番号を示し、302はF
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○ループ中の
パイプラインの空き時間を表したものである。
300は306と309を比較し、その値が等しくなけ
れば何も出力せず、値が異なればその値の大きい方が左
にあれば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目

Claims (1)

  1. 【特許請求の範囲】 1、一つのソースプログラムを複数のコンパイラでコン
    パイルして得られる、オブジェクトコードないしオブジ
    ェクトコード情報を含む中間コードないしオブジェクト
    リストからなるコンパイル結果を入力し、上記コンパイ
    ル結果を、分岐命令がその単位内の最後の位置以外にな
    く、かつ、その単位外からその単位内への分岐がないよ
    うな連続した最大の命令単位であるブロックに分け、ブ
    ロックごとに命令数ないしパイプラインの空き時間ない
    しパイプラインの空き時間を含む実行時間を解析し、複
    数のコンパイル結果より得られる上記解析結果からそれ
    ぞれのコンパイル結果を比較するための情報を生成する
    オブジェクトコード比較方法。 2、該比較情報の生成において、それぞれのコンパイル
    結果よりソースプログラム中のDOループに対応する部
    分を検出し、そのDOループ対応部分を構成するブロッ
    クの各々についての解析結果から、DOループ対応部分
    を比較するための情報を生成する請求項1記載のオブジ
    ェクトコード比較方法。
JP2210345A 1990-08-10 1990-08-10 オブジェクトコード比較方法 Expired - Fee Related JP2901720B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003526135A (ja) * 1998-11-16 2003-09-02 インシグニア・ソリューションズ・ピーエルシー コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法

Cited By (1)

* Cited by examiner, † Cited by third party
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