JPS6182243A - オブジエクトプログラム生成方法 - Google Patents
オブジエクトプログラム生成方法Info
- Publication number
- JPS6182243A JPS6182243A JP20489184A JP20489184A JPS6182243A JP S6182243 A JPS6182243 A JP S6182243A JP 20489184 A JP20489184 A JP 20489184A JP 20489184 A JP20489184 A JP 20489184A JP S6182243 A JPS6182243 A JP S6182243A
- Authority
- JP
- Japan
- Prior art keywords
- program
- reference frequency
- object program
- variable
- storage area
- 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
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔発明の技術分野〕
この発明は、オブジェクトプログラム生成力法に係り1
.特に変数の参照頻度を考慮に入れたオブジェクトグロ
グラム最適化方法に関する。
.特に変数の参照頻度を考慮に入れたオブジェクトグロ
グラム最適化方法に関する。
一般に、オブジェクトプログラムは、コンパイラかソー
スプログラム全コンパイルするコトによって生成される
。この際、変数の一部全レジスタに割り伺けることによ
り、メモリに割り付けた場合よりも、メモリ効率および
実行速度の向上が図れるオブジェクトプログラムが生成
できる。従来、上記したレジスタ割り付けは、ソースプ
ログラム上での変数の出現頻度に基づいて行なわれてい
た。
スプログラム全コンパイルするコトによって生成される
。この際、変数の一部全レジスタに割り伺けることによ
り、メモリに割り付けた場合よりも、メモリ効率および
実行速度の向上が図れるオブジェクトプログラムが生成
できる。従来、上記したレジスタ割り付けは、ソースプ
ログラム上での変数の出現頻度に基づいて行なわれてい
た。
しかし、従来のオブジェクトプログラム生成方法では、
たとえ実行時(オブジェクトグログラム実行時)に参照
頻度が多い変数でも、ソースプログラム上での出現頻度
が少なければ、レジスタに割り付けられない。したかっ
て、この種の変数が存在する場合には、実行速度の向上
が図れす、プログラムの最適化が図れない。
たとえ実行時(オブジェクトグログラム実行時)に参照
頻度が多い変数でも、ソースプログラム上での出現頻度
が少なければ、レジスタに割り付けられない。したかっ
て、この種の変数が存在する場合には、実行速度の向上
が図れす、プログラムの最適化が図れない。
上記した問題を、次に示すFOR’l’几AN のプ
ログラムの一部ケ例にとって具体的に説明する。
ログラムの一部ケ例にとって具体的に説明する。
M=0
1)oto I=1,10
M=M+1
1OCONTINUE
M==−M
N=0
1)0 20 I=1,100
N=N+1
20 CON’f’INUE
上記の10グラム例では、変数M、Nの出現頻度はMが
5回、Nが3回である。これに対し、実行h ノg 照
頻度はMが23回、Nが201[E!1となり、(プロ
グラム上での)出現頻度の場合と、その大小が逆転する
。したがって、プログラム実行時の参照頻度か極めて多
い変数Nが、上記したコンパイル時にレジスタに割り付
けられない場什、プログラムの最適化は図れない。
5回、Nが3回である。これに対し、実行h ノg 照
頻度はMが23回、Nが201[E!1となり、(プロ
グラム上での)出現頻度の場合と、その大小が逆転する
。したがって、プログラム実行時の参照頻度か極めて多
い変数Nが、上記したコンパイル時にレジスタに割り付
けられない場什、プログラムの最適化は図れない。
この発明は上記事情に鑑みてなされたものでその目的は
、変数の動的な情報、即ちプログラム実行時の変数か照
頻度を反映する如く、変数に対する記憶域割り付けが施
されたオブジェクトプログラムを生成するオブジェクト
プログラム生成方法を提供することにある。
、変数の動的な情報、即ちプログラム実行時の変数か照
頻度を反映する如く、変数に対する記憶域割り付けが施
されたオブジェクトプログラムを生成するオブジェクト
プログラム生成方法を提供することにある。
この発明では、第1のコンパイル手段によりソースプロ
グラムをコンパイルI7て、プログラム実行時において
変数の1照頻度を参照頻度記憶領域に得るためのプログ
ラム要素を含む仮ノオブジェクトプログラム全生成する
。次に、この仮のオブジェクトプログラムを実行するこ
とにより、参照頻度記憶領域に、変数毎の参照頻度情報
を求める。最後に、参照頻度記憶領域に求められた参照
頻度情報を参照しながら、第2のコンパイル手段により
上記ソースプログラムをコンパイルし、実行時における
変数の参照頻度に従っ℃変at−例えtマレジスタなど
の特定記憶域に害Uり伺けたブロク゛ンム猥木全含む最
終的なオブジェクトプログラムを生成する。
グラムをコンパイルI7て、プログラム実行時において
変数の1照頻度を参照頻度記憶領域に得るためのプログ
ラム要素を含む仮ノオブジェクトプログラム全生成する
。次に、この仮のオブジェクトプログラムを実行するこ
とにより、参照頻度記憶領域に、変数毎の参照頻度情報
を求める。最後に、参照頻度記憶領域に求められた参照
頻度情報を参照しながら、第2のコンパイル手段により
上記ソースプログラムをコンパイルし、実行時における
変数の参照頻度に従っ℃変at−例えtマレジスタなど
の特定記憶域に害Uり伺けたブロク゛ンム猥木全含む最
終的なオブジェクトプログラムを生成する。
第1tZは1.この発明の一実施例に係るオブジェクト
プログラム生成方法の千1−ヲ示す。第1図において、
IIはコンパイラである。コンパイラ11には、モード
Aで動作するklコンパイル部12と、モードBで動作
する第2コンパイル部13とか用意されている。モード
Aは、変数参照回数をカウントする機能をもつ仮のオブ
ジェクトプログラムの生成全指定する。モードBは、仮
のオブジェクトプログラムの実行結果に基づく最終的な
オブジェクトプログラムの生成音指定する。
プログラム生成方法の千1−ヲ示す。第1図において、
IIはコンパイラである。コンパイラ11には、モード
Aで動作するklコンパイル部12と、モードBで動作
する第2コンパイル部13とか用意されている。モード
Aは、変数参照回数をカウントする機能をもつ仮のオブ
ジェクトプログラムの生成全指定する。モードBは、仮
のオブジェクトプログラムの実行結果に基づく最終的な
オブジェクトプログラムの生成音指定する。
まず、コンパイラ11内の第1コンパイル部12により
、モードAでソースプログラム14會コンパイルする(
ステップ8 t a ) oこれにより、変数が参照さ
れる度に同変数のが照回数tカウントするプログラム要
素を含むklオブジェクトグログラム15が生成される
(ステップ5zb)。
、モードAでソースプログラム14會コンパイルする(
ステップ8 t a ) oこれにより、変数が参照さ
れる度に同変数のが照回数tカウントするプログラム要
素を含むklオブジェクトグログラム15が生成される
(ステップ5zb)。
次に、第1コンパイル部12により生成された第1オブ
ジェクトプログラム15を、プログラム実行部16によ
り実行させる(ステップ82a)。これにより、例えば
メモリ内にt照頻度記憶領域17が確保され、変数が参
照され、/ る度に、同領域17内の対応エントリの参照回数フィー
ルドの内容がカウントアツプされる(ステップ52b)
。即ち、第1オブジェクトプログラム15’l(実行さ
せることにより、参照頻度記憶領域li内に、各変数毎
の参照回数を示す参照頻度情報が求められる。
ジェクトプログラム15を、プログラム実行部16によ
り実行させる(ステップ82a)。これにより、例えば
メモリ内にt照頻度記憶領域17が確保され、変数が参
照され、/ る度に、同領域17内の対応エントリの参照回数フィー
ルドの内容がカウントアツプされる(ステップ52b)
。即ち、第1オブジェクトプログラム15’l(実行さ
せることにより、参照頻度記憶領域li内に、各変数毎
の参照回数を示す参照頻度情報が求められる。
最後ニ、コンバインll内の第2コンパイル部13によ
り、モードBで参照頻度記憶領域17を参照しながら(
ステップ53a)、ソースプログラム14′fr:コン
パイルしくステップ53b)、最終的なオブジェクトプ
ログラムである第2オブジェクトプログラム18f生成
する(ステップ゛53c)。この際、泥2コンパイル部
13は参照頻度記憶領域ノー内の参照頻度情報(プログ
ラム実行時における各変数毎の参照回数)に基づいて、
参照頻度の丸い変数から順にレジスタを割り付けていく
。
り、モードBで参照頻度記憶領域17を参照しながら(
ステップ53a)、ソースプログラム14′fr:コン
パイルしくステップ53b)、最終的なオブジェクトプ
ログラムである第2オブジェクトプログラム18f生成
する(ステップ゛53c)。この際、泥2コンパイル部
13は参照頻度記憶領域ノー内の参照頻度情報(プログ
ラム実行時における各変数毎の参照回数)に基づいて、
参照頻度の丸い変数から順にレジスタを割り付けていく
。
上記したように、この実施例では、ソースプログラムか
らオブジェクトプログラムを生成する際に、変数の動的
な情報、即ちプログラム実行時の1照頻度か考慮される
。したがって、従来の方法と比較して、変数へのレジス
タ割り付けによるプログラムの最適化がより強力に行な
えるので、このようにして作成されたオブジェクトプロ
グラムのメモリ効率および実行効率がより向上する。
らオブジェクトプログラムを生成する際に、変数の動的
な情報、即ちプログラム実行時の1照頻度か考慮される
。したがって、従来の方法と比較して、変数へのレジス
タ割り付けによるプログラムの最適化がより強力に行な
えるので、このようにして作成されたオブジェクトプロ
グラムのメモリ効率および実行効率がより向上する。
なお、前記実施例では、変数へのレジスタ割り付けによ
る最適化について説明したか、前記実施例で示した実行
時の参照頻度情報を利用することにより、株々な最適化
が可能である。例えは、変数のメモリ上への最適な配置
等にも参照頻度情報をオ0用できる。
る最適化について説明したか、前記実施例で示した実行
時の参照頻度情報を利用することにより、株々な最適化
が可能である。例えは、変数のメモリ上への最適な配置
等にも参照頻度情報をオ0用できる。
以上詳述したようにこの発明によれは、グログ2ム実行
時の変数の参照頻度を考慮に入れたオブジェクトプログ
ラムが生成でき、同プログラムのメモリ効率および実行
効率が向上する。
時の変数の参照頻度を考慮に入れたオブジェクトプログ
ラムが生成でき、同プログラムのメモリ効率および実行
効率が向上する。
第1図は、この発明の一実施例に係るオブジェク!・プ
ログラム生成方法の手順を示す図である。 11・・・コンパイラ、12・・・第1コンパイル部、
13・・・第2コンパイル部、14・・・ソースグログ
2ム、15・・・第1オブジェクトプログラム、17・
・・お照頻度記憶領域、18・・・第2オブジエクトプ
ログ2ム。
ログラム生成方法の手順を示す図である。 11・・・コンパイラ、12・・・第1コンパイル部、
13・・・第2コンパイル部、14・・・ソースグログ
2ム、15・・・第1オブジェクトプログラム、17・
・・お照頻度記憶領域、18・・・第2オブジエクトプ
ログ2ム。
Claims (1)
- 第1のコンパイル手段によりソースプログラムをコンパ
イルして変数毎の実行時の参照回数を計数するプログラ
ム要素を含む第1オブジェクトプログラムを生成する第
1ステップと、この第1ステップで生成された上記第1
オブジェクトプログラムを実行し、参照頻度記憶領域に
変数毎の参照頻度情報を得る第2ステップと、この第2
ステップで得られた上記参照頻度記憶領域内参照頻度情
報を参照しなから、第2のコンパイル手段により上記ソ
ースプログラムをコンパイルし、変数を特定記憶域に割
り付けたプログラム要素を含む第2オブジェクトプログ
ラムを生成する第3ステップとを具備することを特徴と
するオブジェクトプログラム生成方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20489184A JPS6182243A (ja) | 1984-09-29 | 1984-09-29 | オブジエクトプログラム生成方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP20489184A JPS6182243A (ja) | 1984-09-29 | 1984-09-29 | オブジエクトプログラム生成方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPS6182243A true JPS6182243A (ja) | 1986-04-25 |
Family
ID=16498105
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP20489184A Pending JPS6182243A (ja) | 1984-09-29 | 1984-09-29 | オブジエクトプログラム生成方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS6182243A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01197867A (ja) * | 1988-02-02 | 1989-08-09 | Ibiden Co Ltd | マルチプロセッサシステム |
| JPH05120028A (ja) * | 1991-10-28 | 1993-05-18 | Nec Corp | マイクロコンピユータ装置 |
| JP2011203960A (ja) * | 2010-03-25 | 2011-10-13 | Fujitsu Ltd | テンプレートコンパイル方法及びテンプレートコンパイル装置 |
| JP2012203581A (ja) * | 2011-03-24 | 2012-10-22 | Fujitsu Ltd | レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 |
-
1984
- 1984-09-29 JP JP20489184A patent/JPS6182243A/ja active Pending
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01197867A (ja) * | 1988-02-02 | 1989-08-09 | Ibiden Co Ltd | マルチプロセッサシステム |
| JPH05120028A (ja) * | 1991-10-28 | 1993-05-18 | Nec Corp | マイクロコンピユータ装置 |
| JP2011203960A (ja) * | 2010-03-25 | 2011-10-13 | Fujitsu Ltd | テンプレートコンパイル方法及びテンプレートコンパイル装置 |
| JP2012203581A (ja) * | 2011-03-24 | 2012-10-22 | Fujitsu Ltd | レジスタ配置最適化方法、レジスタ配置最適化プログラム、及びレジスタ配置最適化装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2001147819A (ja) | 最適化装置および記録媒体 | |
| US7784039B2 (en) | Compiler, compilation method, and compilation program | |
| DE69419036D1 (de) | Datenverarbeitungssystem und betriebsverfahren | |
| JPS6182243A (ja) | オブジエクトプログラム生成方法 | |
| JPH01118931A (ja) | プログラム変換方式 | |
| Palkovic et al. | Systematic preprocessing of data dependent constructs for embedded systems | |
| Johansson et al. | Linear scan register allocation in a high-performance erlang compiler | |
| JPS62219130A (ja) | プログラムの最適化方式 | |
| JPH04241630A (ja) | グラフ色塗りによるレジスタ割り付け最適化方式 | |
| JP4298868B2 (ja) | ペアレジスタ割当て処理方法,コンパイル処理装置およびコンパイラのプログラム記録媒体 | |
| JPH02163831A (ja) | オブジェクトプログラム削減方式 | |
| JP3464019B2 (ja) | レジスタの割付方式 | |
| JPS63163636A (ja) | 並列処理実行方式 | |
| JPH0744507A (ja) | 並列プログラムのコンパイル方法 | |
| JP3558500B2 (ja) | 並列計算機システム及び実行プロセスの割り当て方法 | |
| JPH0371233A (ja) | コンパイラにおける最適データ割付け方式 | |
| JPH02105224A (ja) | コンパイラにおけるデータ割付け方式 | |
| JPS593553A (ja) | 計算機システムの翻訳方式 | |
| JPH0126091B2 (ja) | ||
| JPH05241851A (ja) | 定数最適割り付け方式 | |
| JPH06119185A (ja) | 定数データコンパイル方式 | |
| JPH06222926A (ja) | 仮想リソース生成方法 | |
| JPH04256132A (ja) | 高級プログラム言語の代入文最適化方式 | |
| JPH01120631A (ja) | 分割コンパイル方式の実行用データ管理方式 | |
| JPH03235129A (ja) | レジスタ割り付け方式 |