JPH04163631A - コンパイラ - Google Patents
コンパイラInfo
- Publication number
- JPH04163631A JPH04163631A JP28841190A JP28841190A JPH04163631A JP H04163631 A JPH04163631 A JP H04163631A JP 28841190 A JP28841190 A JP 28841190A JP 28841190 A JP28841190 A JP 28841190A JP H04163631 A JPH04163631 A JP H04163631A
- Authority
- JP
- Japan
- Prior art keywords
- array element
- loop structure
- expression
- loop
- array
- 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
- 230000014509 gene expression Effects 0.000 claims abstract description 28
- 238000006467 substitution reaction Methods 0.000 abstract 2
- 230000004075 alteration Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、高級言語で書かれたソースプログラムを入力
してオブジェクトプログラムを生成するコンパイラに関
する。
してオブジェクトプログラムを生成するコンパイラに関
する。
〔従来の技術]
従来、コンパイラは、第3図に示されるソースプログラ
ム(C言語記述による入力命令列)のように、1次の再
帰的関係配列要素を含むループ構造に対する場合でも、
ループ構造内の再帰的関係をもつ配列要素の解析は行わ
ず、ソースプログラムの記述に忠実なオブジェクトプロ
グラムを出力していた。
ム(C言語記述による入力命令列)のように、1次の再
帰的関係配列要素を含むループ構造に対する場合でも、
ループ構造内の再帰的関係をもつ配列要素の解析は行わ
ず、ソースプログラムの記述に忠実なオブジェクトプロ
グラムを出力していた。
このように従来では、コンパイラは、ループ構造内に1
次の再帰的関係をもつ配列要素に対して、ソースプログ
ラムの記述に忠実なオブジェクトプログラムを出力する
ようになっていたため、実行時に再帰的に参照、定義さ
れる配列要素は、参照あるいは定義する毎に更新された
インデックス変数を用いて添字式を再評価していた。従
って、1次の再帰的関係をもつ配列要素を参照、定義す
る回数が多いほどプログラムの実行時間に無駄が生ずる
という欠点があった。
次の再帰的関係をもつ配列要素に対して、ソースプログ
ラムの記述に忠実なオブジェクトプログラムを出力する
ようになっていたため、実行時に再帰的に参照、定義さ
れる配列要素は、参照あるいは定義する毎に更新された
インデックス変数を用いて添字式を再評価していた。従
って、1次の再帰的関係をもつ配列要素を参照、定義す
る回数が多いほどプログラムの実行時間に無駄が生ずる
という欠点があった。
本発明はこのような従来の欠点を改善したもので、その
目的は、プログラムの実行時間を短縮することの可能な
コンパイラを提供することにある。
目的は、プログラムの実行時間を短縮することの可能な
コンパイラを提供することにある。
本発明のコンパイラは、配列要素を含むループ構造を検
出し、検出されたループ構造内の配列要素に対して、そ
の配列要素の添字式から再帰的に参照、定義する配列要
素の移送代文が存在するか否かを解析し、また存在する
場合はその配列要素の再帰的な関係が1次か否かを解析
するループ構造解析手段と、前記ループ構造解析手段に
より解析されたループ構造内の1次の再帰的関係をもつ
配列要素の移送代入文で、参照される配列要素の添字式
をその配列要素の初期値を用いたループ内不変式に変更
する添字変更手段とを有している。
出し、検出されたループ構造内の配列要素に対して、そ
の配列要素の添字式から再帰的に参照、定義する配列要
素の移送代文が存在するか否かを解析し、また存在する
場合はその配列要素の再帰的な関係が1次か否かを解析
するループ構造解析手段と、前記ループ構造解析手段に
より解析されたループ構造内の1次の再帰的関係をもつ
配列要素の移送代入文で、参照される配列要素の添字式
をその配列要素の初期値を用いたループ内不変式に変更
する添字変更手段とを有している。
〔作用]
本発明では、1次の再帰的関係をもつ配列要素を含むル
ープ構造に対して、配列要素の1次再帰的関係を解消し
、これにより、配列要素の参照に対する最適化を図る。
ープ構造に対して、配列要素の1次再帰的関係を解消し
、これにより、配列要素の参照に対する最適化を図る。
〔実施例]
次に、本発明について図面を参照して詳細に説明する。
第1図は本発明の一実施例のブロック図であり、本発明
のコンパイラ3は、ループ構造解析手段31と、添字式
変更手段32とを有し、ソースプログラム1をコンパイ
ルしてオブジェクトプログラム2を生成するようになっ
ている。
のコンパイラ3は、ループ構造解析手段31と、添字式
変更手段32とを有し、ソースプログラム1をコンパイ
ルしてオブジェクトプログラム2を生成するようになっ
ている。
すなわち、ループ構造解析分析手段31は、配列要素を
含むループ構造を検出し、検出されたループ構造内の配
列要素に対して、その配列要素の添字式から再帰的に参
照、定義する配列要素の移送代入文が存在するか否かを
解析し、また存在する場合はその配列要素の再帰的な関
係が1次か否かを解析し、また添字式変更手段32は、
ループ内構造解析手段31により解析されたループ構造
内の1次の再帰的関係をもつ配列要素の移送代入文で、
参照される配列要素の添字式をその配列要素の初期値を
用いたループ内不変式に変更するようになっており、ル
ープ構造内での1次の再帰的関係を解消することにより
、配列要素の参照に対する最適化を図るようになってい
る。
含むループ構造を検出し、検出されたループ構造内の配
列要素に対して、その配列要素の添字式から再帰的に参
照、定義する配列要素の移送代入文が存在するか否かを
解析し、また存在する場合はその配列要素の再帰的な関
係が1次か否かを解析し、また添字式変更手段32は、
ループ内構造解析手段31により解析されたループ構造
内の1次の再帰的関係をもつ配列要素の移送代入文で、
参照される配列要素の添字式をその配列要素の初期値を
用いたループ内不変式に変更するようになっており、ル
ープ構造内での1次の再帰的関係を解消することにより
、配列要素の参照に対する最適化を図るようになってい
る。
次にこのような構成のコンパイラの処理動作について説
明する。
明する。
第2図は1次の再帰的関係配列要素を含むループを解析
して、最適化処理を行うまでの処理流れを示すフローチ
ャートである。
して、最適化処理を行うまでの処理流れを示すフローチ
ャートである。
コンパイラ3は、例えば第3図に示すようなC言語記述
の入力命令列をソースプログラムとして入力し、このソ
ースプログラムから配列要素を含むループ構造をループ
構造解析手段31により検出し、検出されたループ構造
内の配列要素に対して、その添字式より再帰的に参照、
定義する配列要素の移送代入文が存在するか否か(ステ
ップS2)、また、他に同一配列に対して再帰的関係を
もつ配列要素が存在しないか否か(ステップS3)、ま
た、再帰的関係の互いの配列要素の添字式の増分値が等
しいが否か(ステップS4)、また、再帰的関係の配列
要素間の添字式の初期値の差が添字式の増分値と等しい
か否か(ステップ35)を判定し、上記条件が全てYE
Sの場合は、添字式変更手段32へ制御を移す。
の入力命令列をソースプログラムとして入力し、このソ
ースプログラムから配列要素を含むループ構造をループ
構造解析手段31により検出し、検出されたループ構造
内の配列要素に対して、その添字式より再帰的に参照、
定義する配列要素の移送代入文が存在するか否か(ステ
ップS2)、また、他に同一配列に対して再帰的関係を
もつ配列要素が存在しないか否か(ステップS3)、ま
た、再帰的関係の互いの配列要素の添字式の増分値が等
しいが否か(ステップS4)、また、再帰的関係の配列
要素間の添字式の初期値の差が添字式の増分値と等しい
か否か(ステップ35)を判定し、上記条件が全てYE
Sの場合は、添字式変更手段32へ制御を移す。
これにより、添字式変更手段32では、1次の再帰的関
係をもつ配列要素の移送代入文で、参照される配列要素
の添字式を、温式中のインデックス変数の初期値を用い
て初期値に変更しくステップS6)、第4図に示すよう
な最適化された命令列を生成する。
係をもつ配列要素の移送代入文で、参照される配列要素
の添字式を、温式中のインデックス変数の初期値を用い
て初期値に変更しくステップS6)、第4図に示すよう
な最適化された命令列を生成する。
以上の処理により、第3図の入力命令列において、参照
される配列要素a (i−1)の添字式“i −1”は
、インデックス変数量の初期値“l”を用いて初期値式
をを求めると“′Oパとなり、配列要素a(i−1)は
a CO”Jに変形される。これにより、配列要素a
(i)とa(i−1)とでの1次の再帰的関係が解消さ
れ、参照される配列要素a [0)は、ループ内で不変
な値となり、あるレジスタで固定することが可能となる
ため、配列要素の参照に対する最適化を行うことができ
る。
される配列要素a (i−1)の添字式“i −1”は
、インデックス変数量の初期値“l”を用いて初期値式
をを求めると“′Oパとなり、配列要素a(i−1)は
a CO”Jに変形される。これにより、配列要素a
(i)とa(i−1)とでの1次の再帰的関係が解消さ
れ、参照される配列要素a [0)は、ループ内で不変
な値となり、あるレジスタで固定することが可能となる
ため、配列要素の参照に対する最適化を行うことができ
る。
以上説明したように本発明は、1次の再帰的関係をもつ
配列要素を含むループ構造に対して、配列要素の1次再
帰的関係を解消するようになっているので、参照する配
列要素をループ内で不変な値としであるレジスタで固定
することが可能となり、プログラムの実行時間を短縮す
ることができるという効果がある。
配列要素を含むループ構造に対して、配列要素の1次再
帰的関係を解消するようになっているので、参照する配
列要素をループ内で不変な値としであるレジスタで固定
することが可能となり、プログラムの実行時間を短縮す
ることができるという効果がある。
第1図は本発明の一実施例のブロック図、第2図は1次
の再帰的関係配列要素を含むループ構造の最適化処理の
流れを示すフローチャート、第3図はC言語記述による
入力命令列を示す図、第4図はC言語記述による最適化
後の命令列を示す図である。 第1図において、1・・・ソースプログラム、2・・・
オブジェクトプログラム、3・・・コンパイラ、31・
・・ループ構造解析手段、32・・・添字式変更手段。 代理人 弁理士 山 下 譲 平 第1図 第2図 D 第3図 入力命令列 第4図 最適化後の命令列
の再帰的関係配列要素を含むループ構造の最適化処理の
流れを示すフローチャート、第3図はC言語記述による
入力命令列を示す図、第4図はC言語記述による最適化
後の命令列を示す図である。 第1図において、1・・・ソースプログラム、2・・・
オブジェクトプログラム、3・・・コンパイラ、31・
・・ループ構造解析手段、32・・・添字式変更手段。 代理人 弁理士 山 下 譲 平 第1図 第2図 D 第3図 入力命令列 第4図 最適化後の命令列
Claims (1)
- 高級言語で書かれたソースプログラムを入力し、オブジ
ェクトプログラムを生成するコンパイラにおいて、配列
要素を含むループ構造を検出し、検出されたループ構造
内の配列要素に対して、その配列要素の添字式から再帰
的に参照、定義する配列要素の移送代入文が存在するか
否かを解析し、また存在する場合はその配列要素の再帰
的な関係が1次か否かを解析するループ構造解析手段と
、前記ループ構造解析手段によりにより解析されたルー
プ構造内の1次の再帰的関係をもつ配列要素の移送代入
文で、参照される配列要素の添字式をその配列要素の初
期値を用いたループ内不変式に変更する添字式変更手段
とを備えていることを特徴とするコンパイラ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP28841190A JPH04163631A (ja) | 1990-10-29 | 1990-10-29 | コンパイラ |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP28841190A JPH04163631A (ja) | 1990-10-29 | 1990-10-29 | コンパイラ |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04163631A true JPH04163631A (ja) | 1992-06-09 |
Family
ID=17729864
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP28841190A Pending JPH04163631A (ja) | 1990-10-29 | 1990-10-29 | コンパイラ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04163631A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005002104A (ja) * | 2003-05-19 | 2005-01-06 | Morinaga & Co Ltd | 脂質代謝改善組成物 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63233471A (ja) * | 1987-03-20 | 1988-09-29 | Fujitsu Ltd | 回帰的なベクトル・メモリ・アクセスの最適化方式 |
-
1990
- 1990-10-29 JP JP28841190A patent/JPH04163631A/ja active Pending
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63233471A (ja) * | 1987-03-20 | 1988-09-29 | Fujitsu Ltd | 回帰的なベクトル・メモリ・アクセスの最適化方式 |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005002104A (ja) * | 2003-05-19 | 2005-01-06 | Morinaga & Co Ltd | 脂質代謝改善組成物 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4833606A (en) | Compiling method for vectorizing multiple do-loops in source program | |
| JPS63304325A (ja) | 並列化コンパイル方法 | |
| JPS61241837A (ja) | 範囲検査の最適化方法 | |
| Fong | Generalized common subexpressions in very high level languages | |
| JPH04163631A (ja) | コンパイラ | |
| JP3196625B2 (ja) | 並列化コンパイル方式 | |
| JPS5922140A (ja) | 対話型コンパイル方式 | |
| CN112579059A (zh) | 支持有限域数据类型和运算符的编译方法 | |
| Morris et al. | Mandrake: A Tool for Reverse-Engineering IBM Assembly Code. | |
| JPH04278640A (ja) | コンパイラの最適化処理方式 | |
| JPH04220727A (ja) | ベクトル化処理方式 | |
| JPH09265400A (ja) | コンパイル最適化方式 | |
| JP2674489B2 (ja) | ベクトル化処理装置 | |
| JPH04352036A (ja) | コンパイラにおける並列化処理装置 | |
| JPH02253443A (ja) | プログラム生成方法 | |
| JP2533938B2 (ja) | ベクトル演算処理方式 | |
| JPH03260865A (ja) | ベクトル化処理方式 | |
| Polster | Using a preprocessor to implement a data manipulation language for a minicomputer data base system | |
| JPH05120323A (ja) | If文下ベクトル演算最適化方式 | |
| JPH081608B2 (ja) | プログラム実行解析ツール | |
| JPH01119830A (ja) | コンパイル処理方式 | |
| JPH0612259A (ja) | コンパイラ処理方式 | |
| JPH05224946A (ja) | 入出力並び最適化処理方式 | |
| JPH04153737A (ja) | コンパイル更新情報出力方式 | |
| JPH03102541A (ja) | プログラム洗練化方式 |