JPH04256132A - 高級プログラム言語の代入文最適化方式 - Google Patents
高級プログラム言語の代入文最適化方式Info
- Publication number
- JPH04256132A JPH04256132A JP1723891A JP1723891A JPH04256132A JP H04256132 A JPH04256132 A JP H04256132A JP 1723891 A JP1723891 A JP 1723891A JP 1723891 A JP1723891 A JP 1723891A JP H04256132 A JPH04256132 A JP H04256132A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- assignment
- variable allocation
- assignment statement
- 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
- 238000005457 optimization Methods 0.000 title claims description 14
- 238000000034 method Methods 0.000 claims description 15
- 238000006467 substitution reaction Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は高級プログラム言語の代
入文最適化方式に関し、特に高級プログラム言語コンパ
イラがコンパイル時に、定数を変数に代入する代入文が
複数個連続して存在するプログラムにおいて、複数個連
続した代入文を1つの代入文に置換する高級プログラム
言語の代入文最適化方式に関する。
入文最適化方式に関し、特に高級プログラム言語コンパ
イラがコンパイル時に、定数を変数に代入する代入文が
複数個連続して存在するプログラムにおいて、複数個連
続した代入文を1つの代入文に置換する高級プログラム
言語の代入文最適化方式に関する。
【0002】
【従来の技術】従来、高級プログラム言語において、定
数を変数に代入する代入文が複数個連続して存在する場
合は、複数の代入用命令が出力されていた。
数を変数に代入する代入文が複数個連続して存在する場
合は、複数の代入用命令が出力されていた。
【0003】
【発明が解決しようとする課題】上述した従来の高級プ
ログラム言語においては、定数を変数に代入する代入文
が複数個連続して存在する場合の最適化は行われていな
いので、複数の代入文を1つの代入文に置換できる場合
も、複数の代入用命令が出力されるために実行性能が低
下するという欠点を有していた。
ログラム言語においては、定数を変数に代入する代入文
が複数個連続して存在する場合の最適化は行われていな
いので、複数の代入文を1つの代入文に置換できる場合
も、複数の代入用命令が出力されるために実行性能が低
下するという欠点を有していた。
【0004】本発明の目的は、プログラムの実行性能を
向上することができる高級プログラム言語の代入文最適
化方式を提供することにある。
向上することができる高級プログラム言語の代入文最適
化方式を提供することにある。
【0005】
【課題を解決するための手段】本発明の高級プログラム
言語の代入文最適化方式は、高級プログラム言語のソー
スプログラム中に、定数を変数に代入する代入文が複数
個連続して存在する場合に、コンパイラがそのプログラ
ムをコンパイルするとき、複数の代入文を1つの代入文
で置換し、プログラムの実行性能を向上させる高級プロ
グラム言語の代入文最適化方式であって、(A)コンパ
イラの宣言データ処理部内の名前テーブル作成部によっ
て作成される名前テーブル内に変数割り付けアドレス格
納域と、変数割り付け長格納域とを有し、さらに中間語
テキスト生成部によって生成される中間語オペランドテ
キスト内に変数割り付けアドレス格納域と変数割り付け
長格納域とを有し、中間語テキスト生成部が入力する代
入文トークンを保持する代入文トークン退避域を有して
おり、宣言データトークンを入力し、前記名前テーブル
内の変数割り付けアドレス格納域に宣言された変数の割
り付けアドレスである変数割り付けアドレスを設定する
変数割り付けアドレス設定手段、(B)前記名前テーブ
ル内の変数割り付け長格納域に宣言された変数の割り付
け長である変数割り付け長を設定する変数割り付け長設
定手段、 (C)実行文トークンを入力し、代入文を処理する代入
文処理部内にあって代入文トークンを前記代入文トーク
ン退避域へ退避する代入文トークン退避手段、(D)前
記名前テーブルと代入文トークン退避域とを参照し、複
数の代入文を1つのの代入文に置換し、前記中間語オペ
ランドテキスト内の変数割り付けアドレス格納域へ変数
割り付けアドレスを設定し、前記中間語オペランドテキ
スト内の変数割り付け長格納域へ変数割り付け長を設定
するブロック代入中間語テキスト生成手段、を備えて構
成されている。
言語の代入文最適化方式は、高級プログラム言語のソー
スプログラム中に、定数を変数に代入する代入文が複数
個連続して存在する場合に、コンパイラがそのプログラ
ムをコンパイルするとき、複数の代入文を1つの代入文
で置換し、プログラムの実行性能を向上させる高級プロ
グラム言語の代入文最適化方式であって、(A)コンパ
イラの宣言データ処理部内の名前テーブル作成部によっ
て作成される名前テーブル内に変数割り付けアドレス格
納域と、変数割り付け長格納域とを有し、さらに中間語
テキスト生成部によって生成される中間語オペランドテ
キスト内に変数割り付けアドレス格納域と変数割り付け
長格納域とを有し、中間語テキスト生成部が入力する代
入文トークンを保持する代入文トークン退避域を有して
おり、宣言データトークンを入力し、前記名前テーブル
内の変数割り付けアドレス格納域に宣言された変数の割
り付けアドレスである変数割り付けアドレスを設定する
変数割り付けアドレス設定手段、(B)前記名前テーブ
ル内の変数割り付け長格納域に宣言された変数の割り付
け長である変数割り付け長を設定する変数割り付け長設
定手段、 (C)実行文トークンを入力し、代入文を処理する代入
文処理部内にあって代入文トークンを前記代入文トーク
ン退避域へ退避する代入文トークン退避手段、(D)前
記名前テーブルと代入文トークン退避域とを参照し、複
数の代入文を1つのの代入文に置換し、前記中間語オペ
ランドテキスト内の変数割り付けアドレス格納域へ変数
割り付けアドレスを設定し、前記中間語オペランドテキ
スト内の変数割り付け長格納域へ変数割り付け長を設定
するブロック代入中間語テキスト生成手段、を備えて構
成されている。
【0006】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。
て説明する。
【0007】図1は本発明の高級プログラム言語の代入
文最適化方式の一実施例を示す構成図である。
文最適化方式の一実施例を示す構成図である。
【0008】本実施例の高級プログラム言語の代入文最
適化方式は、図1に示すように、コンパイラの一部であ
る宣言データ処理部1、中間語テキスト生成部10、オ
ブジェクト生成部19、宣言文に対するトークンである
宣言データトークン20、実行文に対するトークンであ
る実行文トークン21、ソースプログラム中の各変数の
宣言ごとに作成される名前テーブル5、中間語テキスト
生成部10により生成される中間語オペランドテキスト
14、代入文の実行文トークンが退避する代入文トーク
ン退避域25、中間語テキストを格納する中間語テキス
トファイル22、オブジェクトを格納するオブジェクト
ファイル24から構成されている。
適化方式は、図1に示すように、コンパイラの一部であ
る宣言データ処理部1、中間語テキスト生成部10、オ
ブジェクト生成部19、宣言文に対するトークンである
宣言データトークン20、実行文に対するトークンであ
る実行文トークン21、ソースプログラム中の各変数の
宣言ごとに作成される名前テーブル5、中間語テキスト
生成部10により生成される中間語オペランドテキスト
14、代入文の実行文トークンが退避する代入文トーク
ン退避域25、中間語テキストを格納する中間語テキス
トファイル22、オブジェクトを格納するオブジェクト
ファイル24から構成されている。
【0009】さらに、宣言データ処理部1は、名前テー
ブル作成部2を有し、名前テーブル作成部2は、変数割
り付けアドレス設定手段3と変数割り付け長設定手段4
とを含んで構成されている。
ブル作成部2を有し、名前テーブル作成部2は、変数割
り付けアドレス設定手段3と変数割り付け長設定手段4
とを含んで構成されている。
【0010】また、名前テーブル5は、変数割り付けア
ドレス格納域6と変数割り付け長格納域8とを含んで構
成されている。
ドレス格納域6と変数割り付け長格納域8とを含んで構
成されている。
【0011】また、中間語テキスト生成部10は、代入
文処理部11を含み、代入文処理部11は、代入文トー
クン退避手段12とブロッ代入中間語テキスト生成手段
13とを含んで構成されている。
文処理部11を含み、代入文処理部11は、代入文トー
クン退避手段12とブロッ代入中間語テキスト生成手段
13とを含んで構成されている。
【0012】また、中間語オペランドテキスト14は、
変数割り付けアドレス格納域15と変数割り付け長格納
域17とを含んで構成されている。
変数割り付けアドレス格納域15と変数割り付け長格納
域17とを含んで構成されている。
【0013】次に、動作を説明する。
【0014】図1において、コンパイラが起動されると
、宣言データ処理部1、中間語テキスト生成部10、オ
ブジェクト生成部19が順次起動される。
、宣言データ処理部1、中間語テキスト生成部10、オ
ブジェクト生成部19が順次起動される。
【0015】宣言データ処理部1が起動されると、名前
テーブル作成部2が起動され、さらに名前テーブル作成
部2から変数割り付けアドレス設定手段3、変数割り付
け長設定手段4が順次起動される。
テーブル作成部2が起動され、さらに名前テーブル作成
部2から変数割り付けアドレス設定手段3、変数割り付
け長設定手段4が順次起動される。
【0016】名前テーブル作成部2は、宣言された変数
の情報を有する宣言データトークン20を入力し、入力
された変数情報から、図2に示すように名前テーブル5
を作成する。そして、変数割り付けアドレス設定手段3
は、変数の宣言された順に、その割り付けアドレス7を
決定し、名前テーブル5内の変数割り付けアドレス格納
域6へ設定する。また、変数割り付け長設定手段4は、
宣言された変数の長さ情報を宣言データトークン20よ
り得て変数割り付け長9とし、これを変数割り付け長格
納域8へ設定する。
の情報を有する宣言データトークン20を入力し、入力
された変数情報から、図2に示すように名前テーブル5
を作成する。そして、変数割り付けアドレス設定手段3
は、変数の宣言された順に、その割り付けアドレス7を
決定し、名前テーブル5内の変数割り付けアドレス格納
域6へ設定する。また、変数割り付け長設定手段4は、
宣言された変数の長さ情報を宣言データトークン20よ
り得て変数割り付け長9とし、これを変数割り付け長格
納域8へ設定する。
【0017】また、中間語テキスト生成部10が起動さ
れると、代入文処理部11が起動され、さらに代入文処
理部11から代入文トークン退避手段12、ブロッ代入
中間語テキスト生成手段13が順次起動される。
れると、代入文処理部11が起動され、さらに代入文処
理部11から代入文トークン退避手段12、ブロッ代入
中間語テキスト生成手段13が順次起動される。
【0018】代入文トークン退避手段12は、実行文ト
ークン21を入力し、入力された実行文が代入文である
間、代入文トークンを代入文トークン退避域25へ退避
させる。ブロッ代入中間語テキスト生成手段13は、代
入文トークン退避域25に退避させられている代入文ト
ークンを順次参照し、参照したときに、代入される変数
に対する名前テーブル5内の変数割り付けアドレス7と
変数割り付け長9とを得て、代入文トークン退避域25
に退避されている代入文トークンの代入される変数がメ
モリ上で連続しているか否かの判定を行う。メモリ上で
連続しているか否かの判定は、式(n番目の代入文の代
入される変数の割り付けアドレス+n番目の代入文の代
入される変数の割り付け長)と(n+1番目の代入文の
代入される変数の割り付けアドレス)が等しいときに、
メモリ上で連続しているものとする。
ークン21を入力し、入力された実行文が代入文である
間、代入文トークンを代入文トークン退避域25へ退避
させる。ブロッ代入中間語テキスト生成手段13は、代
入文トークン退避域25に退避させられている代入文ト
ークンを順次参照し、参照したときに、代入される変数
に対する名前テーブル5内の変数割り付けアドレス7と
変数割り付け長9とを得て、代入文トークン退避域25
に退避されている代入文トークンの代入される変数がメ
モリ上で連続しているか否かの判定を行う。メモリ上で
連続しているか否かの判定は、式(n番目の代入文の代
入される変数の割り付けアドレス+n番目の代入文の代
入される変数の割り付け長)と(n+1番目の代入文の
代入される変数の割り付けアドレス)が等しいときに、
メモリ上で連続しているものとする。
【0019】代入文トークン退避域25に退避されてい
る代入文トークンの代入される変数がメモリ上で連続し
ており、かつ代入するデータがすべて定数のときに、代
入文トークン退避域25に退避されている代入文トーク
ンすべてを1つの代入文トークンで置換する。その1つ
の代入文トークンの代入される変数に対して、中間語オ
ペランドテキスト14が生成される。
る代入文トークンの代入される変数がメモリ上で連続し
ており、かつ代入するデータがすべて定数のときに、代
入文トークン退避域25に退避されている代入文トーク
ンすべてを1つの代入文トークンで置換する。その1つ
の代入文トークンの代入される変数に対して、中間語オ
ペランドテキスト14が生成される。
【0020】中間語オペランドテキスト14内の変数割
り付けアドレス格納域15、及び変数割り付け長格納域
17には、それぞれ、代入文トークン退避域25の最初
の代入文の代入される変数の変数割り付けアドレス16
と、代入文トークン退避域25内のすべての代入される
変数の割り付け長を加算したものを変数割り付け長18
として設定する。縮退された代入文の代入するデータは
、長さが代入される変数の変数割り付け長18と同じで
ある。そして、定数テキストとして中間語テキストファ
イル22へ出力する。
り付けアドレス格納域15、及び変数割り付け長格納域
17には、それぞれ、代入文トークン退避域25の最初
の代入文の代入される変数の変数割り付けアドレス16
と、代入文トークン退避域25内のすべての代入される
変数の割り付け長を加算したものを変数割り付け長18
として設定する。縮退された代入文の代入するデータは
、長さが代入される変数の変数割り付け長18と同じで
ある。そして、定数テキストとして中間語テキストファ
イル22へ出力する。
【0021】オブジェクト生成部19は、中間語テキス
トを入力し、オブジェクトファイル24へオブジェクト
を出力する。
トを入力し、オブジェクトファイル24へオブジェクト
を出力する。
【0022】このように、コンパイラがコンパイル時に
、定数を変数に代入する代入文が複数個連続していると
きに、複数の代入文を1つの代入文に置換できるか否か
を判定し、置換可能であれば、複数の代入文を1つの代
入文に置換することにより、プログラムの実行性能を向
上することができる。
、定数を変数に代入する代入文が複数個連続していると
きに、複数の代入文を1つの代入文に置換できるか否か
を判定し、置換可能であれば、複数の代入文を1つの代
入文に置換することにより、プログラムの実行性能を向
上することができる。
【0023】
【発明の効果】以上説明したように、本発明の高級プロ
グラム言語の代入文最適化方式は、コンパイラがコンパ
イル時に、定数を変数に代入する代入文が複数個連続し
ているときに、複数の代入文を1つの代入文に置換でき
るか否かを判定し、置換可能であれば、複数の代入文を
1つの代入文に置換することにより、プログラムの実行
性能を向上することができるという効果を有している。
グラム言語の代入文最適化方式は、コンパイラがコンパ
イル時に、定数を変数に代入する代入文が複数個連続し
ているときに、複数の代入文を1つの代入文に置換でき
るか否かを判定し、置換可能であれば、複数の代入文を
1つの代入文に置換することにより、プログラムの実行
性能を向上することができるという効果を有している。
【図1】本発明の高級プログラム言語の代入文最適化方
式の一実施例を示すブロック図である。
式の一実施例を示すブロック図である。
【図2】本実施例の高級プログラム言語の代入文最適化
方式における名前テーブルの詳細を示す図である。
方式における名前テーブルの詳細を示す図である。
1 宣言データ処理部
2 名前テーブル作成部
3 変数割り付けアドレス設定手段4 変
数割り付け長設定手段 5 名前テーブル 6 変数割り付けアドレス格納域7 変数
割り付けアドレス 8 変数割り付け長格納域 9 変数割り付け長 10 中間語テキスト生成部 11 代入文処理部 12 代入文トークン退避手段 13 ブロッ代入中間語テキスト生成手段14
中間語オペランドテキスト15 変数割り
付けアドレス格納域16 変数割り付けアドレス 17 変数割り付け長格納域 18 変数割り付け長 19 オブジェクト生成部 20 宣言データトークン 21 実行文トークン 22 中間語テキストファイル 24 オブジェクトファイル 25 代入文トークン退避域
数割り付け長設定手段 5 名前テーブル 6 変数割り付けアドレス格納域7 変数
割り付けアドレス 8 変数割り付け長格納域 9 変数割り付け長 10 中間語テキスト生成部 11 代入文処理部 12 代入文トークン退避手段 13 ブロッ代入中間語テキスト生成手段14
中間語オペランドテキスト15 変数割り
付けアドレス格納域16 変数割り付けアドレス 17 変数割り付け長格納域 18 変数割り付け長 19 オブジェクト生成部 20 宣言データトークン 21 実行文トークン 22 中間語テキストファイル 24 オブジェクトファイル 25 代入文トークン退避域
Claims (1)
- 【請求項1】 高級プログラム言語のソースプログラ
ム中に、定数を変数に代入する代入文が複数個連続して
存在する場合に、コンパイラがそのプログラムをコンパ
イルするとき、複数の代入文を1つの代入文で置換し、
プログラムの実行性能を向上させる高級プログラム言語
の代入文最適化方式であって、 (A)コンパイラの宣言データ処理部内の名前テーブル
作成部によって作成される名前テーブル内に変数割り付
けアドレス格納域と、変数割り付け長格納域とを有し、
さらに中間語テキスト生成部によって生成される中間語
オペランドテキスト内に変数割り付けアドレス格納域と
変数割り付け長格納域とを有し、中間語テキスト生成部
が入力する代入文トークンを保持する代入文トークン退
避域を有しており、宣言データトークンを入力し、前記
名前テーブル内の変数割り付けアドレス格納域に宣言さ
れた変数の割り付けアドレスである変数割り付けアドレ
スを設定する変数割り付けアドレス設定手段、(B)前
記名前テーブル内の変数割り付け長格納域に宣言された
変数の割り付け長である変数割り付け長を設定する変数
割り付け長設定手段、 (C)実行文トークンを入力し、代入文を処理する代入
文処理部内にあって代入文トークンを前記代入文トーク
ン退避域へ退避する代入文トークン退避手段、(D)前
記名前テーブルと代入文トークン退避域とを参照し、複
数の代入文を1つのの代入文に置換し、前記中間語オペ
ランドテキスト内の変数割り付けアドレス格納域へ変数
割り付けアドレスを設定し、前記中間語オペランドテキ
スト内の変数割り付け長格納域へ変数割り付け長を設定
するブロック代入中間語テキスト生成手段、を備えるこ
とを特徴とする高級プログラム言語の代入文最適化方式
。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1723891A JPH04256132A (ja) | 1991-02-08 | 1991-02-08 | 高級プログラム言語の代入文最適化方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1723891A JPH04256132A (ja) | 1991-02-08 | 1991-02-08 | 高級プログラム言語の代入文最適化方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04256132A true JPH04256132A (ja) | 1992-09-10 |
Family
ID=11938369
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1723891A Pending JPH04256132A (ja) | 1991-02-08 | 1991-02-08 | 高級プログラム言語の代入文最適化方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04256132A (ja) |
-
1991
- 1991-02-08 JP JP1723891A patent/JPH04256132A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5287510A (en) | Method for improving the efficiency of arithmetic code generation in an optimizing compiler using machine independent update instruction generation | |
| US5606697A (en) | Compiler system for language processing program | |
| JP2001147819A (ja) | 最適化装置および記録媒体 | |
| JP5118745B2 (ja) | メモリアクセス命令のベクトル化 | |
| JP2004234126A (ja) | コンパイラ装置およびコンパイル方法 | |
| US5450588A (en) | Reducing pipeline delays in compilers by code hoisting | |
| JPH04256132A (ja) | 高級プログラム言語の代入文最適化方式 | |
| JPH01118931A (ja) | プログラム変換方式 | |
| JPH11345127A (ja) | コンパイラ | |
| JPH03135630A (ja) | 命令スケジューリング方式 | |
| JP5208589B2 (ja) | コンパイル装置、コンパイラ、コンパイル方法 | |
| JP2809073B2 (ja) | 配列のメモリ割り付け方式 | |
| JPH0689187A (ja) | インライン展開最適化方法 | |
| JP3921722B2 (ja) | コンパイラ処理装置 | |
| JP2003005982A (ja) | コール命令並び替え方法と装置並びにプログラム | |
| JPH04107638A (ja) | リテラル定数割り付け方式 | |
| JPH02171831A (ja) | コンパイラのデータ接近方式 | |
| JPH0553821A (ja) | コンパイル処理方式 | |
| JPH10301791A (ja) | オブジェクトコード最適化装置、オブジェクトコード最適化方法、オブジェクトコード最適化プログラムを記録した機械読み取り可能な記録媒体、及び、コンパイラ | |
| JPH05241851A (ja) | 定数最適割り付け方式 | |
| JPH0754511B2 (ja) | ベクトル化処理方式 | |
| Tirelo et al. | Optimization Techniques for Abstract State Machines-Based Programs | |
| JPH05119982A (ja) | コンパイラ | |
| JPH1091456A (ja) | プログラムの入出力反復処理方法及びシステム及びプログラムの入出力反復処理プログラムを格納した記憶媒体 | |
| JPH0373026A (ja) | コンパイル方式 |