JPH1139155A - コンパイル時の情報収集による実行時性能の静的解析方法 - Google Patents
コンパイル時の情報収集による実行時性能の静的解析方法Info
- Publication number
- JPH1139155A JPH1139155A JP9198432A JP19843297A JPH1139155A JP H1139155 A JPH1139155 A JP H1139155A JP 9198432 A JP9198432 A JP 9198432A JP 19843297 A JP19843297 A JP 19843297A JP H1139155 A JPH1139155 A JP H1139155A
- Authority
- JP
- Japan
- Prior art keywords
- program
- information
- source
- file
- assembly
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【課題】 アセンブリコードの静的解析において、クロ
ック数を求める際の制御フロー解析の処理を容易にし、
より正確な値に近い値を求めることを可能とする。 【解決手段】 原始プログラム11はソース情報収集機
能付きコンパイラ12によって変数や条件分岐/繰り返
し処理など、原始プログラムのソース情報を付加された
アセンブリファイル13に翻訳される。資源計測を行う
場合(ステップ14のYes)は、ソース情報の付加さ
れたアセンブリファイル13を情報加工装置15に入力
し、ここで静的に解析を行うことにより、実行時性能の
情報を添付されたアセンブリファイル16を得ることが
出来る。得られたファイル16は、そのままアセンブラ
17で処理が施されて機械語命令に変換され、リンク可
能なオブジェクトファイル18が生成される。
ック数を求める際の制御フロー解析の処理を容易にし、
より正確な値に近い値を求めることを可能とする。 【解決手段】 原始プログラム11はソース情報収集機
能付きコンパイラ12によって変数や条件分岐/繰り返
し処理など、原始プログラムのソース情報を付加された
アセンブリファイル13に翻訳される。資源計測を行う
場合(ステップ14のYes)は、ソース情報の付加さ
れたアセンブリファイル13を情報加工装置15に入力
し、ここで静的に解析を行うことにより、実行時性能の
情報を添付されたアセンブリファイル16を得ることが
出来る。得られたファイル16は、そのままアセンブラ
17で処理が施されて機械語命令に変換され、リンク可
能なオブジェクトファイル18が生成される。
Description
【0001】
【発明の属する技術分野】本発明は、原始プログラム
(高水準言語で書かれたプログラム)を目的プログラム
(機械語またはアセンブリ言語で書かれたプログラム)
に翻訳するコンパイラに関し、特に、コンパイラが原始
プログラムからソース情報を取得し、そのソース情報を
目的プログラムに反映させることによって、実行時性能
の静的解析において、従来手法より容易に正確な値の計
測を可能とする、原始プログラムの静的解析方法に関す
るものである。
(高水準言語で書かれたプログラム)を目的プログラム
(機械語またはアセンブリ言語で書かれたプログラム)
に翻訳するコンパイラに関し、特に、コンパイラが原始
プログラムからソース情報を取得し、そのソース情報を
目的プログラムに反映させることによって、実行時性能
の静的解析において、従来手法より容易に正確な値の計
測を可能とする、原始プログラムの静的解析方法に関す
るものである。
【0002】
【従来の技術】プログラムの実行時性能は、プログラム
開発における重要な要因の1つである。プログラムの実
行時性能の測定は、動的に実行することが一番良い方法
であり、従来では次のようにしてプログラムの実行時性
能を測定していた。すなわち、高級言語で記述された原
始プログラムの実行時性能情報を得る為に、目的プログ
ラム中の必要な点にトラップ命令を埋め込み、ターゲッ
トマシン上で実際にプログラムを動作させた上でプログ
ラムの実行時性能を測定していた。
開発における重要な要因の1つである。プログラムの実
行時性能の測定は、動的に実行することが一番良い方法
であり、従来では次のようにしてプログラムの実行時性
能を測定していた。すなわち、高級言語で記述された原
始プログラムの実行時性能情報を得る為に、目的プログ
ラム中の必要な点にトラップ命令を埋め込み、ターゲッ
トマシン上で実際にプログラムを動作させた上でプログ
ラムの実行時性能を測定していた。
【0003】しかし、この方法では、目的プログラムを
生成する全てのソースと、実際に目的プログラムを動作
させられる環境とが必要となる。また、この方法では、
プログラムの開発工程終了後でないと、プログラムの実
行時性能を測定することができなかった。
生成する全てのソースと、実際に目的プログラムを動作
させられる環境とが必要となる。また、この方法では、
プログラムの開発工程終了後でないと、プログラムの実
行時性能を測定することができなかった。
【0004】そこで、プログラムを静的に解析すること
によって、プログラムの開発段階で実行時性能を見積も
り、開発工程の前段階からプログラムの実行時性能に関
して対処できるようにしたものが提案されている。
によって、プログラムの開発段階で実行時性能を見積も
り、開発工程の前段階からプログラムの実行時性能に関
して対処できるようにしたものが提案されている。
【0005】その1つの方法が特開平4−88427号
公報(以下、先行技術1と呼ぶ。)に開示されている。
この先行技術1では、プログラムから静的にクロック数
の計測を行うために、各命令毎の処理に要するクロック
数を、コンパイラが生成するアセンブリコードに従って
加算して求めている。
公報(以下、先行技術1と呼ぶ。)に開示されている。
この先行技術1では、プログラムから静的にクロック数
の計測を行うために、各命令毎の処理に要するクロック
数を、コンパイラが生成するアセンブリコードに従って
加算して求めている。
【0006】図6に上記先行技術1に開示されている簡
易型実行性能情報生成方式の構成図を示す。
易型実行性能情報生成方式の構成図を示す。
【0007】高級言語で記述された原始プログラムは、
コンパイラにより、オブジェクトコードからなる目的プ
ログラムに変換(翻訳)される。コンパイラで生成され
たオブジェクトコードはオブジェクトコード解析手段
(1)に供給される。オブジェクトコード解析手段
(1)はオブジェクトコードをハードウェア命令のパタ
ン毎に分類する。ファイル(2)には、あらかじめ登録
しておいたハードウェアモデルごとの各命令コードと、
命令コードごとのクロック数の対応表からなるCPU性
能情報とが格納されている。オブジェクトコード重み付
け手段(3)は、ファイル(2)に格納されているCP
U性能情報を参照して、生成されたオブジェクトコード
の実行時間を計測することにより、ユーザの記述した原
始プログラムの実行性能情報リスト(4)を生成する。
コンパイラにより、オブジェクトコードからなる目的プ
ログラムに変換(翻訳)される。コンパイラで生成され
たオブジェクトコードはオブジェクトコード解析手段
(1)に供給される。オブジェクトコード解析手段
(1)はオブジェクトコードをハードウェア命令のパタ
ン毎に分類する。ファイル(2)には、あらかじめ登録
しておいたハードウェアモデルごとの各命令コードと、
命令コードごとのクロック数の対応表からなるCPU性
能情報とが格納されている。オブジェクトコード重み付
け手段(3)は、ファイル(2)に格納されているCP
U性能情報を参照して、生成されたオブジェクトコード
の実行時間を計測することにより、ユーザの記述した原
始プログラムの実行性能情報リスト(4)を生成する。
【0008】なお、本発明に関連する他の先行技術も知
られている。例えば、特開平6−131167号公報
(以下、先行技術2と呼ぶ)には、マルチタスクプログ
ラミングにおけるメモリ資源の有効活用を目的とする
「マルチタスクプログラミング支援装置」が開示されて
いる。この先行技術2では、タスクを構成するソースモ
ジュール名称をソースモジュール入力処理手段へ入力
し、ソースモジュール解析処理手段でソースモジュール
を解析し、ソースモジュールをアセンブルする。スタッ
クサイズ演算処理手段は生成されたアセンブルリストの
解析を行いモジュール毎の必要スタックサイズを算出す
る。また、これを基にタスク毎の必要スタックサイズを
算出する。算出されたタスク毎及びタスクを構成するモ
ジュール毎の必要スタックサイズを参照しながら、マル
チタスクプログラミングが行える。
られている。例えば、特開平6−131167号公報
(以下、先行技術2と呼ぶ)には、マルチタスクプログ
ラミングにおけるメモリ資源の有効活用を目的とする
「マルチタスクプログラミング支援装置」が開示されて
いる。この先行技術2では、タスクを構成するソースモ
ジュール名称をソースモジュール入力処理手段へ入力
し、ソースモジュール解析処理手段でソースモジュール
を解析し、ソースモジュールをアセンブルする。スタッ
クサイズ演算処理手段は生成されたアセンブルリストの
解析を行いモジュール毎の必要スタックサイズを算出す
る。また、これを基にタスク毎の必要スタックサイズを
算出する。算出されたタスク毎及びタスクを構成するモ
ジュール毎の必要スタックサイズを参照しながら、マル
チタスクプログラミングが行える。
【0009】
【発明が解決しようとする課題】上述した従来のプログ
ラムの実行時性能の静的解析方法では次に述べるような
問題点がある。
ラムの実行時性能の静的解析方法では次に述べるような
問題点がある。
【0010】第1の問題点は、アセンブリコードの解析
を行うことで、クロック数を求めることは可能である
が、正確な値を計測することが困難なことである。その
理由は、アセンブリコードに分岐文が含まれている場
合、処理の流れを見通すことが難しいからである。
を行うことで、クロック数を求めることは可能である
が、正確な値を計測することが困難なことである。その
理由は、アセンブリコードに分岐文が含まれている場
合、処理の流れを見通すことが難しいからである。
【0011】第2の問題点は、制御フローを正しく把握
することが出来れば処理の流れを見通すことが出来る
が、制御フロー解析に時間がかかることである。その理
由は、制御フロー解析の処理が複雑になるからである。
することが出来れば処理の流れを見通すことが出来る
が、制御フロー解析に時間がかかることである。その理
由は、制御フロー解析の処理が複雑になるからである。
【0012】なお、先行技術2はタスク毎及びモジュー
ル毎の必要スタックサイズを算出する技術を開示してい
るにすぎない。ここで、「スタックサイズ」とはプログ
ラムの実行時に入出力の際にデータの一時的な記憶用の
予め確保された記憶領域のサイズの事を言う。したがっ
て、先行技術2は、原始プログラムの実行時性能(クロ
ック数)に係る情報を計測しようとする技術である本発
明とは、全く技術思想が異なることは明白である。
ル毎の必要スタックサイズを算出する技術を開示してい
るにすぎない。ここで、「スタックサイズ」とはプログ
ラムの実行時に入出力の際にデータの一時的な記憶用の
予め確保された記憶領域のサイズの事を言う。したがっ
て、先行技術2は、原始プログラムの実行時性能(クロ
ック数)に係る情報を計測しようとする技術である本発
明とは、全く技術思想が異なることは明白である。
【0013】したがって、本発明の目的は、コンパイル
時に原始プログラムの制御構造情報を取得し、それをア
センブリコードに反映することで、実行時性能の静的な
解析において、より正確なプログラムの実行時性能を表
す値に近い値を、容易に計測することを目的とする。
時に原始プログラムの制御構造情報を取得し、それをア
センブリコードに反映することで、実行時性能の静的な
解析において、より正確なプログラムの実行時性能を表
す値に近い値を、容易に計測することを目的とする。
【0014】
【課題を解決するための手段】本発明によれば、高級言
語で記述された原始プログラムを目的プログラムに変換
するコンパイラにおいて、コンパイルする際に原始プロ
グラムの構造に関するソース情報を収集し、それら収集
された前記ソース情報をアセンブリコードに挿入したア
センブリファイルを生成するステップと、プログラムの
構造に関する前記ソース情報の付加された前記アセンブ
リファイルを入力とする装置において、前記コンパイラ
によって付加されたソース情報を収集/加工することに
よってCPUタイム(クロック数)を計測するステップ
と、を含み、前記原始プログラムの翻訳時に収集した前
記ソース情報を反映した前記アセンブリファイルから実
行時性能情報を静的に解析することを特徴とする、コン
パイル時の情報収集による実行時性能の静的解析方法が
得られる。
語で記述された原始プログラムを目的プログラムに変換
するコンパイラにおいて、コンパイルする際に原始プロ
グラムの構造に関するソース情報を収集し、それら収集
された前記ソース情報をアセンブリコードに挿入したア
センブリファイルを生成するステップと、プログラムの
構造に関する前記ソース情報の付加された前記アセンブ
リファイルを入力とする装置において、前記コンパイラ
によって付加されたソース情報を収集/加工することに
よってCPUタイム(クロック数)を計測するステップ
と、を含み、前記原始プログラムの翻訳時に収集した前
記ソース情報を反映した前記アセンブリファイルから実
行時性能情報を静的に解析することを特徴とする、コン
パイル時の情報収集による実行時性能の静的解析方法が
得られる。
【0015】また、本発明によれば、高級言語で記述さ
れた原始プログラムを目的プログラムに変換するコンパ
イラにおいて、コンパイルする際に前記原始プログラム
の構造に関するソース情報を収集し、前記コンパイラ内
部で、それら収集された前記ソース情報を収集/加工す
ることによってCPUタイム(クロック数)を計測する
ステップを含み、前記原始プログラムの翻訳時に収集し
た実行時性能情報を静的に解析することを特徴とする、
コンパイル時の情報収集による実行時性能の静的解析方
法が得られる。
れた原始プログラムを目的プログラムに変換するコンパ
イラにおいて、コンパイルする際に前記原始プログラム
の構造に関するソース情報を収集し、前記コンパイラ内
部で、それら収集された前記ソース情報を収集/加工す
ることによってCPUタイム(クロック数)を計測する
ステップを含み、前記原始プログラムの翻訳時に収集し
た実行時性能情報を静的に解析することを特徴とする、
コンパイル時の情報収集による実行時性能の静的解析方
法が得られる。
【0016】
【作用】コンパイル時に原始プログラムのソース情報を
取得し、静的解析に生かすことによって、前フェーズに
おいて、プログラムの実行時性能の測定、処理の重い部
分などの検討を可能とし、後フェーズでの性能向上のた
めの工数の削減を図ることが出来る。
取得し、静的解析に生かすことによって、前フェーズに
おいて、プログラムの実行時性能の測定、処理の重い部
分などの検討を可能とし、後フェーズでの性能向上のた
めの工数の削減を図ることが出来る。
【0017】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照して詳細に説明する。
て図面を参照して詳細に説明する。
【0018】図1を参照して、本発明の第1の実施の形
態に係るコンパイル時の情報収集による静的解析方法の
処理の流れについて説明する。
態に係るコンパイル時の情報収集による静的解析方法の
処理の流れについて説明する。
【0019】図1に示すように、原始プログラム11は
ソース情報収集機能付きコンパイラ12によって、原始
プログラムのソース情報を付加されたアセンブリファイ
ル13に翻訳される。ここで、原始プログラムのソース
情報としては、変数や条件分岐/繰り返し処理などの情
報である。
ソース情報収集機能付きコンパイラ12によって、原始
プログラムのソース情報を付加されたアセンブリファイ
ル13に翻訳される。ここで、原始プログラムのソース
情報としては、変数や条件分岐/繰り返し処理などの情
報である。
【0020】資源計測を行う場合(ステップ14のYe
s)、ソース情報の付加されたアセンブリファイル13
は情報加工装置15に供給される。情報加工装置15
は、後述するようにソース情報を静的に解析することに
よって、実行時性能情報の添付されたアセンブリファイ
ル16を得ることが出来る。すなわち、情報加工装置1
5は、上記ソース情報を収集/加工することによってC
PUタイム(クロック数)を計測して、プログラムの実
行性能情報を静的に解析する。
s)、ソース情報の付加されたアセンブリファイル13
は情報加工装置15に供給される。情報加工装置15
は、後述するようにソース情報を静的に解析することに
よって、実行時性能情報の添付されたアセンブリファイ
ル16を得ることが出来る。すなわち、情報加工装置1
5は、上記ソース情報を収集/加工することによってC
PUタイム(クロック数)を計測して、プログラムの実
行性能情報を静的に解析する。
【0021】このようにして得られた実行時性能情報付
きアセンブリファイル16は、そのままアセンブラ17
に供給される。アセンブラ17は実行時性能情報付きア
センブリファイル16を機械語命令に変換して、リンク
可能なオブジェクトファイル18を生成する。
きアセンブリファイル16は、そのままアセンブラ17
に供給される。アセンブラ17は実行時性能情報付きア
センブリファイル16を機械語命令に変換して、リンク
可能なオブジェクトファイル18を生成する。
【0022】図2にソース情報収集機能付きコンパイラ
12の構成を示す。ソース情報収集機能付きコンパイラ
12は、フロントエンド部71と、コンパイラ中間コー
ドファイル72と、特殊コメント収集機能付きアセンブ
リコード生成部73とから構成される。フロントエンド
部71では、原始プログラム11の構文解析を行い、原
始プログラム11の構造を認識する。そして、フロント
エンド部71は、その認識した情報をコンパイラ内部で
使用するコンパイラ中間コードファイル71に出力す
る。コンパイラの特殊コメント収集機能付きアセンブリ
コード生成部73は、中間コードファイル72の情報を
アセンブリコードに変換すると同時に、フロントエンド
部71が出力したプログラム構造の情報を、後述する情
報加工装置15用の特殊コメントに変換する。このよう
にして、ソース情報付きアセンブリファイル13が生成
される。
12の構成を示す。ソース情報収集機能付きコンパイラ
12は、フロントエンド部71と、コンパイラ中間コー
ドファイル72と、特殊コメント収集機能付きアセンブ
リコード生成部73とから構成される。フロントエンド
部71では、原始プログラム11の構文解析を行い、原
始プログラム11の構造を認識する。そして、フロント
エンド部71は、その認識した情報をコンパイラ内部で
使用するコンパイラ中間コードファイル71に出力す
る。コンパイラの特殊コメント収集機能付きアセンブリ
コード生成部73は、中間コードファイル72の情報を
アセンブリコードに変換すると同時に、フロントエンド
部71が出力したプログラム構造の情報を、後述する情
報加工装置15用の特殊コメントに変換する。このよう
にして、ソース情報付きアセンブリファイル13が生成
される。
【0023】図3は情報加工装置15の動作を示すフロ
ーチャートである。図示の例は、Switch文とIF
文の場合を例に挙げている。しかしながら、図示はしな
いが、繰り返し文に対しても同様の処理が行われる。
ーチャートである。図示の例は、Switch文とIF
文の場合を例に挙げている。しかしながら、図示はしな
いが、繰り返し文に対しても同様の処理が行われる。
【0024】まず、情報加工装置15は、ソース情報付
きアセンブリファイル13中に埋め込まれた特殊コメン
トを認識する(ステップS1)。この場合の特殊コメン
トは“START”である。次に、情報加工装置15は
Switch文であるかIF文であるかを判断する(ス
テップS2,S3)。Switch文の場合(ステップ
S2のYes)、情報加工装置15は、条件判定部のク
ロック数を計測する(ステップS4)。そして、情報加
工装置15は、CASE文のクロック数を計測し、特殊
コメント(START)を認識したら[1]の処理を再
帰呼びだしする(ステップS5)。情報加工装置15は
このステップS5の処理を個々のCASE文で繰り返
す。引き続いて、情報加工装置15は、個々のCASE
文の最大/最小クロック数を計算する(ステップS
6)。次に、情報加工装置15は、条件分岐部のクロッ
ク数を計測し(ステップS7)て、条件分岐部の最大/
最小のクロック数を計算する(ステップS8)。情報加
工装置15は、特殊コメント(Switch−End)
を認識し(ステップS9)たら、Switch文で必要
とされるクロック数の最大/最小を計算する(ステップ
S10)。
きアセンブリファイル13中に埋め込まれた特殊コメン
トを認識する(ステップS1)。この場合の特殊コメン
トは“START”である。次に、情報加工装置15は
Switch文であるかIF文であるかを判断する(ス
テップS2,S3)。Switch文の場合(ステップ
S2のYes)、情報加工装置15は、条件判定部のク
ロック数を計測する(ステップS4)。そして、情報加
工装置15は、CASE文のクロック数を計測し、特殊
コメント(START)を認識したら[1]の処理を再
帰呼びだしする(ステップS5)。情報加工装置15は
このステップS5の処理を個々のCASE文で繰り返
す。引き続いて、情報加工装置15は、個々のCASE
文の最大/最小クロック数を計算する(ステップS
6)。次に、情報加工装置15は、条件分岐部のクロッ
ク数を計測し(ステップS7)て、条件分岐部の最大/
最小のクロック数を計算する(ステップS8)。情報加
工装置15は、特殊コメント(Switch−End)
を認識し(ステップS9)たら、Switch文で必要
とされるクロック数の最大/最小を計算する(ステップ
S10)。
【0025】一方、IF文である場合(ステップS3の
Yes)、情報加工装置15はまず条件判定部のクロッ
ク数を計測する(ステップS11)。そして、情報加工
装置15は、Then節のクロック数を計測し、特殊コ
メント(START)を認識したら[1]の処理を再帰
呼びだしする(ステップS12)。引き続いて、情報加
工装置15はThen節の最大/最小のクロック数を計
算する(ステップS13)。次に、情報加工装置15
は、Else文のクロック数を計測し、特殊コメント
(START)を認識したら[1]の処理を再帰呼びだ
しする(ステップS14)。そして、情報加工装置15
はElse節の最大/最小のクロック数を計算する(ス
テップS15)。情報加工装置15は特殊コメント(I
F−End)を認識し(ステップS16)たら、IF文
で必要とされるクロック数の最大/最小を計算する(ス
テップS17)。
Yes)、情報加工装置15はまず条件判定部のクロッ
ク数を計測する(ステップS11)。そして、情報加工
装置15は、Then節のクロック数を計測し、特殊コ
メント(START)を認識したら[1]の処理を再帰
呼びだしする(ステップS12)。引き続いて、情報加
工装置15はThen節の最大/最小のクロック数を計
算する(ステップS13)。次に、情報加工装置15
は、Else文のクロック数を計測し、特殊コメント
(START)を認識したら[1]の処理を再帰呼びだ
しする(ステップS14)。そして、情報加工装置15
はElse節の最大/最小のクロック数を計算する(ス
テップS15)。情報加工装置15は特殊コメント(I
F−End)を認識し(ステップS16)たら、IF文
で必要とされるクロック数の最大/最小を計算する(ス
テップS17)。
【0026】上述の動作を要約すると次の通りである。
すなわち、情報加工装置15は、ソース情報付きアセン
ブリファイル13中に埋め込まれた特殊コメントを認識
し、分岐等を含まない処理の最小単位(例えば、特殊コ
メントのstartをendで囲まれた最も内側の部
分)のクロック数を計算する。そして、情報加工装置1
5は、特殊コメントを利用して構造解析を行って制御の
流れの可能性を認識し、原始プログラムの構造単位に、
その処理を実行した際に必要とされる最小のクロック数
と最大のクロック数を計算し、最小のクロック数と最大
のクロック数を示すクロック数情報をアセンブリコード
中に埋め込んで出力する。
すなわち、情報加工装置15は、ソース情報付きアセン
ブリファイル13中に埋め込まれた特殊コメントを認識
し、分岐等を含まない処理の最小単位(例えば、特殊コ
メントのstartをendで囲まれた最も内側の部
分)のクロック数を計算する。そして、情報加工装置1
5は、特殊コメントを利用して構造解析を行って制御の
流れの可能性を認識し、原始プログラムの構造単位に、
その処理を実行した際に必要とされる最小のクロック数
と最大のクロック数を計算し、最小のクロック数と最大
のクロック数を示すクロック数情報をアセンブリコード
中に埋め込んで出力する。
【0027】図4を参照して、本発明の第2の実施の形
態に係るコンパイル時の情報収集による静的解析方法の
処理の流れについて説明する。
態に係るコンパイル時の情報収集による静的解析方法の
処理の流れについて説明する。
【0028】図4に示すように、原始プログラム11は
実行時性能計測機能付きコンパイラ21によって、変数
や条件分岐/繰り返し処理などの、原始プログラムのソ
ース情報を収集される。そして、実行時性能計測機能付
きコンパイラ21は、コンパイラ21内部でソース情報
を解析する。ここで、資源計測を行う場合には、実行時
性能計測機能付きコンパイラ21は実行時の性能情報の
付加されたアセンブリファイル16を生成する。一方、
資源計測を行わない場合には、実行時性能計測機能付き
コンパイラ21は通常のアセンブリファイル22を生成
する。
実行時性能計測機能付きコンパイラ21によって、変数
や条件分岐/繰り返し処理などの、原始プログラムのソ
ース情報を収集される。そして、実行時性能計測機能付
きコンパイラ21は、コンパイラ21内部でソース情報
を解析する。ここで、資源計測を行う場合には、実行時
性能計測機能付きコンパイラ21は実行時の性能情報の
付加されたアセンブリファイル16を生成する。一方、
資源計測を行わない場合には、実行時性能計測機能付き
コンパイラ21は通常のアセンブリファイル22を生成
する。
【0029】このようにして得られた実行時性能情報付
きアセンブリファイル16やアセンブリファイル22は
そのままアセンブラ17に供給される。アセンブラ17
はアセンブリファイル16または22を機械語命令に変
換して、リンク可能なオブジェクトファイル18を生成
する。
きアセンブリファイル16やアセンブリファイル22は
そのままアセンブラ17に供給される。アセンブラ17
はアセンブリファイル16または22を機械語命令に変
換して、リンク可能なオブジェクトファイル18を生成
する。
【0030】図5に実行時性能計測機能付きコンパイラ
21の構成を示す。実行時性能計測機能付きコンパイラ
21は、フロントエンド部71と、コンパイラ中間コー
ドファイル72と、実行時性能計測機能付きアセンブリ
コード生成部91とから構成される。すなわち、実行時
性能計測機能付きコンパイラ21は、特殊コメント収集
機能付きアセンブリコード生成部73の代わりに実行時
性能計測機能付きアセンブリコード生成部91を備えて
いる点を除いて、図2に示したソース情報収集機能付き
コンパイラ12と同様の構成を有する。
21の構成を示す。実行時性能計測機能付きコンパイラ
21は、フロントエンド部71と、コンパイラ中間コー
ドファイル72と、実行時性能計測機能付きアセンブリ
コード生成部91とから構成される。すなわち、実行時
性能計測機能付きコンパイラ21は、特殊コメント収集
機能付きアセンブリコード生成部73の代わりに実行時
性能計測機能付きアセンブリコード生成部91を備えて
いる点を除いて、図2に示したソース情報収集機能付き
コンパイラ12と同様の構成を有する。
【0031】実行時性能計測機能付きアセンブリコード
生成部91は、アセンブリコード生成部92と、資源計
測を行なうか否かを判断する判断部14と、クロック数
計測部93と、構造解析および実行時クロック数計測部
94とから構成されている。
生成部91は、アセンブリコード生成部92と、資源計
測を行なうか否かを判断する判断部14と、クロック数
計測部93と、構造解析および実行時クロック数計測部
94とから構成されている。
【0032】実行時性能計測機能付きアセンブリコード
生成部91は、アセンブリコード生成部92において中
間コードファイル72の情報をアセンブリコードに変換
する。次に、実行時性能計測機能付きアセンブリコード
生成部91は判断部14において資源計測を行なうか否
かを判断する。ここで、資源計測を行なわない場合(判
断部14のNo)には、実行時性能計測機能付きアセン
ブリコード生成部91は通常のアセンブリファイル22
を生成する。一方、資源計測を行なう場合(判断部14
のYes)には、実行時性能計測機能付きアセンブリコ
ード生成部91はクロック数計測部93においてクロッ
ク数を計測し、構造解析および実行時クロック数計測部
94において構造解析と実行時クロック数計測とを行っ
て、実行時性能情報付きアセンブリファイル16を生成
する。
生成部91は、アセンブリコード生成部92において中
間コードファイル72の情報をアセンブリコードに変換
する。次に、実行時性能計測機能付きアセンブリコード
生成部91は判断部14において資源計測を行なうか否
かを判断する。ここで、資源計測を行なわない場合(判
断部14のNo)には、実行時性能計測機能付きアセン
ブリコード生成部91は通常のアセンブリファイル22
を生成する。一方、資源計測を行なう場合(判断部14
のYes)には、実行時性能計測機能付きアセンブリコ
ード生成部91はクロック数計測部93においてクロッ
ク数を計測し、構造解析および実行時クロック数計測部
94において構造解析と実行時クロック数計測とを行っ
て、実行時性能情報付きアセンブリファイル16を生成
する。
【0033】尚、上記コンパイラや上記情報加工装置で
実行されるプログラムは、記録媒体(図示せず)に記録
されていても良い。ここで、「記録媒体」とは、プログ
ラムを記録したコンピュータ読み取り可能な記録媒体の
ことをいう。具体的には、CD−ROM、フレキシブル
・ディスクなどの磁気ディスク、半導体メモリなどを含
む。さらに、記録媒体はプログラムを記録した紙でも良
い。この場合には、コンピュータはOCR(光学的文字
読取装置)のような読取装置と、この読取装置で読み取
った文字(コード)をコンピュータが認識できる機械言
語に翻訳するコンパイラとを備えていれば良い。とにか
く、記録媒体に記録されたプログラムをコンピュータに
インストールすることによって、コンピュータに所定の
処理を行わせることができる。
実行されるプログラムは、記録媒体(図示せず)に記録
されていても良い。ここで、「記録媒体」とは、プログ
ラムを記録したコンピュータ読み取り可能な記録媒体の
ことをいう。具体的には、CD−ROM、フレキシブル
・ディスクなどの磁気ディスク、半導体メモリなどを含
む。さらに、記録媒体はプログラムを記録した紙でも良
い。この場合には、コンピュータはOCR(光学的文字
読取装置)のような読取装置と、この読取装置で読み取
った文字(コード)をコンピュータが認識できる機械言
語に翻訳するコンパイラとを備えていれば良い。とにか
く、記録媒体に記録されたプログラムをコンピュータに
インストールすることによって、コンピュータに所定の
処理を行わせることができる。
【0034】
【実施例】次に、本発明による静的解析方法の具体例に
ついて、従来方法と比較しながら、C言語プログラムを
例に挙げて説明する。
ついて、従来方法と比較しながら、C言語プログラムを
例に挙げて説明する。
【0035】図7にC言語で記述した原始プログラムの
例を示す。図8は図7の原始プログラムをアセンブリコ
ードに変換したものである。従来の方法では、処理に必
要なトータルのクロック数を、個々の命令に必要なクロ
ック数から求めていた。しかしながら、アセンブリコー
ドに変換すると、元の原始プログラムがSwitch文
であったということが簡単には分からなくなる。そのた
め、必ず実行される処理と条件によって実行される処理
の判断が難しく、クロック数を正確に計測することが出
来なかった。また、分岐を含むアセンブリコードは、制
御フロー解析が複雑になり、解析に時間がかかってい
た。
例を示す。図8は図7の原始プログラムをアセンブリコ
ードに変換したものである。従来の方法では、処理に必
要なトータルのクロック数を、個々の命令に必要なクロ
ック数から求めていた。しかしながら、アセンブリコー
ドに変換すると、元の原始プログラムがSwitch文
であったということが簡単には分からなくなる。そのた
め、必ず実行される処理と条件によって実行される処理
の判断が難しく、クロック数を正確に計測することが出
来なかった。また、分岐を含むアセンブリコードは、制
御フロー解析が複雑になり、解析に時間がかかってい
た。
【0036】図9は、図7に示す原始プログラムから図
1に示すソース情報収集機能付きコンパイラ12によっ
て生成されたソース情報付きアセンブリファイル13の
一例を示す。図10は、図9に示すソース情報付きアセ
ンブリファイル13から図1に示す情報加工装置15に
よって生成された実行時性能情報付きアセンブリファイ
ル16または、図7に示す原始プログラムから図4に示
す実行時性能計測機能付きコンパイラ21によって生成
された実行時性能情報付きアセンブリファイル16の一
例を示す。
1に示すソース情報収集機能付きコンパイラ12によっ
て生成されたソース情報付きアセンブリファイル13の
一例を示す。図10は、図9に示すソース情報付きアセ
ンブリファイル13から図1に示す情報加工装置15に
よって生成された実行時性能情報付きアセンブリファイ
ル16または、図7に示す原始プログラムから図4に示
す実行時性能計測機能付きコンパイラ21によって生成
された実行時性能情報付きアセンブリファイル16の一
例を示す。
【0037】図9および図10において、“#$>”で
始まる行は、情報加工装置15用の特殊なコメントであ
る。また、このコメントの中に含まれる括弧付きの数値
は、プログラムの入れ子レベルを表している。これらの
情報を利用することによって、条件判定部、個々のcase
文、分岐処理部ごとにクロック数の情報を生成すること
が可能になる。
始まる行は、情報加工装置15用の特殊なコメントであ
る。また、このコメントの中に含まれる括弧付きの数値
は、プログラムの入れ子レベルを表している。これらの
情報を利用することによって、条件判定部、個々のcase
文、分岐処理部ごとにクロック数の情報を生成すること
が可能になる。
【0038】例えば、次のようにして、本プログラム例
において処理に必要なクロック数のクロック数の最大値
/最小値を容易に求めることが出来る。
において処理に必要なクロック数のクロック数の最大値
/最小値を容易に求めることが出来る。
【0039】IF文の処理に必要なクロック数は、 最大11clock =6(条件判定部)+5(else節の処
理), 最小 9clock =6(条件判定部)+3(else節の処
理) となる。
理), 最小 9clock =6(条件判定部)+3(else節の処
理) となる。
【0040】Switch文の処理に必要なクロック数
は、 最大40clock =8(条件判定部)+14(case文処理
の最大値)+18(分岐処理の最大値), 最小17clock =8(条件判定部)+ 3(case文処理
の最小値)+ 6(分岐処理の最小値) となる。
は、 最大40clock =8(条件判定部)+14(case文処理
の最大値)+18(分岐処理の最大値), 最小17clock =8(条件判定部)+ 3(case文処理
の最小値)+ 6(分岐処理の最小値) となる。
【0041】本発明は上述した実施の形態に限定せず、
本発明の趣旨を逸脱しない範囲内で種々の変更・変形が
可能である。
本発明の趣旨を逸脱しない範囲内で種々の変更・変形が
可能である。
【0042】
【発明の効果】以上説明したように、本発明では、ター
ゲットマシン上で実行することなく、プログラムの処理
に要するCPU時間を、従来の静的解析方式より正確に
容易に計測することが可能となるという作用効果を奏す
る。その理由は、原始プログラムのコンパイル時にコン
パイルの構造に関する情報を収集してアセンブリファイ
ルに反映するため、アセンブリコードの解析が容易にな
るためである。
ゲットマシン上で実行することなく、プログラムの処理
に要するCPU時間を、従来の静的解析方式より正確に
容易に計測することが可能となるという作用効果を奏す
る。その理由は、原始プログラムのコンパイル時にコン
パイルの構造に関する情報を収集してアセンブリファイ
ルに反映するため、アセンブリコードの解析が容易にな
るためである。
【図1】本発明の第1の実施の形態に係るコンパイル時
の情報収集による静的解析方法の処理の流れを示すフロ
ーチャートである。
の情報収集による静的解析方法の処理の流れを示すフロ
ーチャートである。
【図2】図1に示したソース情報収集機能付きコンパイ
ラの構成を示す図である。
ラの構成を示す図である。
【図3】図1に示した情報加工装置の動作を説明するた
めのフローチャートである。
めのフローチャートである。
【図4】本発明の第2の実施の形態に係るコンパイル時
の情報収集による静的解析方法の処理の流れを示すフロ
ーチャートである。
の情報収集による静的解析方法の処理の流れを示すフロ
ーチャートである。
【図5】図4に示した実行時性能計測機能付きコンパイ
ラの構成を示す図である。
ラの構成を示す図である。
【図6】従来の(先行技術1に開示された)簡易型実行
性能情報生成方式の構成を示す図である。
性能情報生成方式の構成を示す図である。
【図7】C言語で記述された原始プログラムの具体例を
示す図である。
示す図である。
【図8】従来のクロック数の計測方法を示す図である。
【図9】ソース情報の付加されたアセンブリファイルの
例を示す図である。
例を示す図である。
【図10】静的解析を施したアセンブリファイルの例を
示す図である。
示す図である。
11 原始プログラム 12 ソース情報収集機能付きコンパイラ 13 ソース情報付きアセンブリファイル 14 資源計測(静的解析)を行うか否かのチェック 15 情報加工装置 16 実行時性能情報付きアセンブリファイル 17 アセンブラ 18 オブジェクトファイル(目的プログラム) 21 実行時性能計測機能付きコンパイラ 22 アセンブリファイル
Claims (12)
- 【請求項1】 高級言語で記述された原始プログラムを
目的プログラムに変換するコンパイラにおいて、コンパ
イルする際に原始プログラムの構造に関するソース情報
を収集し、それら収集された前記ソース情報をアセンブ
リコードに挿入したアセンブリファイルを生成するステ
ップと、 プログラムの構造に関する前記ソース情報の付加された
前記アセンブリファイルを入力とする装置において、前
記コンパイラによって付加されたソース情報を収集/加
工することによってCPUタイム(クロック数)を計測
するステップと、 を含み、前記原始プログラムの翻訳時に収集した前記ソ
ース情報を反映した前記アセンブリファイルから実行時
性能情報を静的に解析することを特徴とする、コンパイ
ル時の情報収集による実行時性能の静的解析方法。 - 【請求項2】 高級言語で記述された原始プログラムを
目的プログラムに変換するコンパイラにおいて、コンパ
イルする際に前記原始プログラムの構造に関するソース
情報を収集し、前記コンパイラ内部で、それら収集され
た前記ソース情報を収集/加工することによってCPU
タイム(クロック数)を計測するステップを含み、 前記原始プログラムの翻訳時に収集した実行時性能情報
を静的に解析することを特徴とする、コンパイル時の情
報収集による実行時性能の静的解析方法。 - 【請求項3】 原始プログラムの構文解析を行って、前
記原始プログラムの構造を認識するフロントエンド部
と、 前記プログラムの構造を示すソース情報を中間コードと
共に格納する中間コードファイルと、 前記中間コードファイルの情報をアセンブリコードに変
換すると共に、前記フロントエンド部が出力した前記ソ
ース情報を特殊コメントに変換して、ソース情報付きア
センブリファイルを生成する特殊コメント生成機能付き
アセンブリコード生成部とを有するソース情報収集機能
付きコンパイラ。 - 【請求項4】 請求項3に記載のソース情報収集機能付
きコンパイラによって生成された前記ソース情報付きア
センブリファイルの情報を加工して、実行時性能情報付
きアセンブリファイルを生成する情報加工装置であっ
て、 前記ソース情報付きアセンブリファイルに埋め込まれた
前記特殊コメントを認識する手段と、 分岐等を含まない処理の最小単位のクロック数を計算す
る手段と、 前記特殊コメントを利用して構造解析を行って制御の流
れの可能性を認識する手段と、 前記原始プログラムの構造単位に、その処理を実行した
際に必要とされる最小のクロック数と最大のクロック数
を計算する手段と、 前記最小のクロック数と前記最大のクロック数を示すク
ロック数情報をアセンブリコード中に埋め込んで前記実
行時性能情報付きアセンブリファイルを生成する手段と
を有する情報加工装置。 - 【請求項5】 原始プログラムの構文解析を行って、前
記原始プログラムの構造を認識するフロントエンド部
と、 前記プログラムの構造を示すソース情報を中間コードと
共に格納する中間コードファイルと、 前記中間コードファイルの情報をアセンブリコードに変
換すると共に、前記フロントエンド部が出力した前記ソ
ース情報を収集/加工することによって実行時のクロッ
ク数を計測して、実行時性能情報付きアセンブリファイ
ルを生成する実行時性能計測付きアセンブリコード生成
部とを有する実行時性能計測機能付きコンパイラ。 - 【請求項6】 前記実行時性能計測付きアセンブリコー
ド生成部は、 前記中間コードファイルの情報をアセンブリコードに変
換するアセンブリコード生成部と、 資源計測を行なう場合にクロック数を計測するクロック
数計測部と、 構造解析と実行時クロック数計測とを行う構造解析およ
び実行時クロック数計測部とを有する請求項5に記載の
実行時性能計測機能付きコンパイラ。 - 【請求項7】 原始プログラムをコンパイルする際に前
記原始プログラムの構造に関するソース情報を収集する
処理と、それら収集された前記ソース情報をアセンブリ
コードに挿入したアセンブリファイルを生成する処理と
をコンパイラに実行させるプログラムと、 前記コンパイラによって付加されたソース情報を収集/
加工することによってCPUタイム(クロック数)を計
測する処理を情報加工装置に実行させるプログラムとを
記録したことを特徴とする記録媒体。 - 【請求項8】 原始プログラムをコンパイルする際に前
記原始プログラムの構造に関するソース情報を収集する
処理と、 それら収集された前記ソース情報をアセンブリコードに
挿入したアセンブリファイルを生成する処理とをコンパ
イラに実行させるプログラムを記録したことを特徴とす
る記録媒体。 - 【請求項9】 コンパイラによって付加されたソース情
報を収集/加工することによってCPUタイム(クロッ
ク数)を計測する処理を情報加工装置に実行させるプロ
グラムを記録したことを特徴とする記録媒体。 - 【請求項10】 原始プログラムをコンパイルする際に
前記原始プログラムの構造に関するソース情報を収集す
る処理と、 コンパイラ内部で、それら収集された前記ソース情報を
収集/加工することによってCPUタイム(クロック
数)を計測する処理とをコンパイラに実行させるプログ
ラムを記録したことを特徴とする記録媒体。 - 【請求項11】 原始プログラムの構文解析を行って、
前記原始プログラムの構造を認識する処理と、 前記プログラムの構造を示すソース情報を中間コードと
共に中間コードファイルに格納する処理と、 前記中間コードファイルの情報をアセンブリコードに変
換すると共に、前記ソース情報を特殊コメントに変換し
て、ソース情報付きアセンブリファイルを生成する処理
とをコンパイラに実行させるプログラムを記録したこと
を特徴とする記録媒体。 - 【請求項12】 原始プログラムの構文解析を行って、
前記原始プログラムの構造を認識する処理と、 前記プログラムの構造を示すソース情報を中間コードと
共に中間コードファイルに格納する処理と、 前記中間コードファイルの情報をアセンブリコードに変
換すると共に、前記ソース情報を収集/加工することに
よって実行時のクロック数を計測して、実行時性能情報
付きアセンブリファイルを生成する処理とをコンパイラ
に実行させるプログラムを記録したことを特徴とする記
録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9198432A JPH1139155A (ja) | 1997-07-24 | 1997-07-24 | コンパイル時の情報収集による実行時性能の静的解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9198432A JPH1139155A (ja) | 1997-07-24 | 1997-07-24 | コンパイル時の情報収集による実行時性能の静的解析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1139155A true JPH1139155A (ja) | 1999-02-12 |
Family
ID=16390998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9198432A Pending JPH1139155A (ja) | 1997-07-24 | 1997-07-24 | コンパイル時の情報収集による実行時性能の静的解析方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH1139155A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010050128A1 (ja) * | 2008-10-30 | 2010-05-06 | パナソニック株式会社 | コンパイル方法及びコンパイルプログラム |
JP2011060109A (ja) * | 2009-09-11 | 2011-03-24 | Ricoh Co Ltd | 組み込み用プログラム開発装置及び組み込み用プログラム開発方法 |
-
1997
- 1997-07-24 JP JP9198432A patent/JPH1139155A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010050128A1 (ja) * | 2008-10-30 | 2010-05-06 | パナソニック株式会社 | コンパイル方法及びコンパイルプログラム |
JP2010108258A (ja) * | 2008-10-30 | 2010-05-13 | Panasonic Corp | コンパイル方法及びコンパイルプログラム |
JP2011060109A (ja) * | 2009-09-11 | 2011-03-24 | Ricoh Co Ltd | 組み込み用プログラム開発装置及び組み込み用プログラム開発方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5651111A (en) | Method and apparatus for producing a software test system using complementary code to resolve external dependencies | |
JPH05257709A (ja) | 並列化判別方法およびそれを用いた並列化支援方法 | |
Garavel et al. | SVL: a scripting language for compositional verification | |
US5606697A (en) | Compiler system for language processing program | |
US20170344349A1 (en) | Sample driven profile guided optimization with precise correlation | |
Bouchhima et al. | Automatic instrumentation of embedded software for high level hardware/software co-simulation | |
CN114036072B (zh) | 一种支持自动化检测程序缺陷的方法和系统 | |
EP0939366A2 (en) | Programming supporting method and programming support device | |
Durfina et al. | Detection and recovery of functions and their arguments in a retargetable decompiler | |
US20010039653A1 (en) | Program conversion method, program conversion apparatus, storage medium for storing program conversion program and program conversion program | |
JPH1139155A (ja) | コンパイル時の情報収集による実行時性能の静的解析方法 | |
JP3840149B2 (ja) | コンパイラ、演算処理システム及び演算処理方法 | |
US20040194073A1 (en) | Optimization based on simulated linking | |
KR20080045545A (ko) | 조건부 영역을 전처리하는 방법 | |
JP2007226589A (ja) | プログラム変換システム | |
Collberg | Reverse interpretation+ mutation analysis= automatic retargeting | |
JP5016288B2 (ja) | 最適化処理方法、及びその言語処理系 | |
JP3018783B2 (ja) | コンパイル方式 | |
JP6447358B2 (ja) | ソースコード生成プログラム、ソースコード生成方法およびコンピュータ | |
JP4712925B2 (ja) | コンパイル処理装置及びコンピュータ読み取り可能なプログラム記録媒体 | |
JP3034582B2 (ja) | コンパイル処理方式 | |
JP2004280476A (ja) | プログラム開発装置、およびプログラム開発プログラム | |
JP2864589B2 (ja) | 関数値差異出力システム | |
CN118312154A (zh) | 编译器生成方法、编译器、存储介质 | |
JPH07192034A (ja) | インタプリタ型シミュレーション方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20010711 |