JPH06274351A - コンパイラの最適化方式 - Google Patents

コンパイラの最適化方式

Info

Publication number
JPH06274351A
JPH06274351A JP5811493A JP5811493A JPH06274351A JP H06274351 A JPH06274351 A JP H06274351A JP 5811493 A JP5811493 A JP 5811493A JP 5811493 A JP5811493 A JP 5811493A JP H06274351 A JPH06274351 A JP H06274351A
Authority
JP
Japan
Prior art keywords
array
value
information table
translation
subscript
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.)
Withdrawn
Application number
JP5811493A
Other languages
English (en)
Inventor
Katsumi Yamamoto
克己 山本
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.)
NEC Solution Innovators Ltd
Original Assignee
NEC Solution Innovators 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 NEC Solution Innovators Ltd filed Critical NEC Solution Innovators Ltd
Priority to JP5811493A priority Critical patent/JPH06274351A/ja
Publication of JPH06274351A publication Critical patent/JPH06274351A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】コンパイラにおいて、原始プログラム中に、配
列の各要素の値が翻訳時に分かっていると判断された配
列の単項演算があった場合等に、効率の良い目的プログ
ラムを生成する。 【構成】コンパイラ10は翻訳している原始プログラム
中の実行中の配列の各要素の値が翻訳時に分かっている
配列の単項演算に対して、分かっている配列の値を保持
する配列値情報テーブル555を作成する手段131
と、演算対象の配列と同じ大きさの作業用配列の配列値
情報テーブル555を準備する手段132と、その単項
演算の実行結果の値を得て作業用配列の配列値情報テー
ブル555に格納する手段133と、配列の単項演算の
代わりに、配列の単項演算の実行結果の値が格納された
作業用配列を参照するような目的プログラムとなるよう
に中間コードを変更する手段134とを有する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンパイラの最適化方
式、特に単項演算,二項演算,および配列添字を有する
高級言語で記述された原始プログラムを入力して、目的
プログラムを生成するコンパイラの最適化方式に関す
る。
【0002】
【従来の技術】従来、コンパイラは、原始プログラム中
にその文の実行時の値が翻訳時に分かっていると判断さ
れたスカラ変数の単項演算またはスカラ変数同士の二項
演算に対しては、翻訳時にその単項演算または二項演算
を計算し、その計算結果を参照する目的プログラムを生
成している。しかし、原始プログラム中に、配列の各要
素の値が翻訳に分かっていると判断された配列の単項演
算または配列同士および配列と定数との二項演算があっ
た場合には各配列要素の値を取出して演算をしていく目
的プログラムを生成している。また、実行中の添字が配
列の配列参照をする場合において、添字として使用され
ている配列の値が翻訳時に分かっており、かつ、その配
列の添字により参照される配列の値も翻訳時に分かって
いても、配列の添字を介して配列値を取出す命令列を生
成した目的プログラムを生成している。
【0003】
【発明が解決しようとする課題】上述した従来のコンパ
イラは、翻訳時に配列の各要素の値が分かっていると判
断された配列の単項演算、または配列同士あるいは配列
と定数との二項演算においても、各配列要素の値を取出
して単項演算、または二項演算を行ない、また翻訳時に
添字として使用されている配列の値が分かっており、か
つ、その配列の添字により参照される配列の値も分かっ
ている場合にも、配列の添字を介して配列値を取出す目
的プログラムを生成しているので、目的プログラムの実
行において、単項演算,二項演算,および配列の参照に
長い時間を要するという問題点がある。
【0004】
【課題を解決するための手段】本発明のコンパイラの最
適化方式は、原始プログラムを入力して目的プログラム
に翻訳するコンパイラにおいて、翻訳している原始プロ
グラムの中の実行中の配列の各要素の値が翻訳時に分か
っているか否かを判断して、分かっているならその配列
要素の値は分かっているという情報とその配列要素の値
とを翻訳時に用意した配列値情報テーブルに保持し、分
かっていないならその配列要素の値は分かっていないと
いう情報を配列値情報テーブルに保持する配列値保持手
段と、翻訳している原始プログラム中の実行中の配列の
単項演算に対して、演算対象の配列要素の値が翻訳時に
分かっているなら、演算対象の配列と同じ大きさの作業
用配列の配列値情報テーブルを準備する作業用配列準備
手段と、配列の各要素の値が翻訳時に分かっていると判
断された配列の単項演算に対して、前記配列値保持手段
によって配列値情報テーブル中に保持された配列の値を
用いて演算を実行し、前記作業用配列準備手段で準備さ
れた作業用配列の配列値情報テーブルにその配列要素の
値は分かっているという情報とその配列要素の値として
の演算結果の値とを保持しておく配列演算手段と、配列
の各要素の値が翻訳時に分かっていると判断された配列
の単項演算の代りに前記配列演算手段で配列演算の演算
結果の値を格納した作業用配列の配列値情報テーブルの
値を参照する目的プログラムとなるように中間コードを
変更する中間コード変更手段とを有することにより構成
され、また以上の構成において、作業用配列準備手段
が、翻訳している原始プログラム中の実行中の配列同士
あるいは配列と定数との二項演算に対して、演算対象の
配列要素の値が前記配列値保持手段によって分かってい
るとされたならば、演算対象の配列と同じ大きさの作業
用配列の配列値情報テーブルを準備する作業用配列準備
手段であり、配列演算実行手段が、配列の各要素が翻訳
時に分かっていると判断された配列同士あるいは配列と
定数との二項演算に対して、前記配列値保持手段によっ
て配列値情報テーブル中に保持された配列の値を用いて
演算を実行し、前記作業用配列準備手段で準備された作
業用配列の配列値情報テーブルにその配列要素の値は分
かっているという情報とその配列要素の値としての演算
結果の値とを保持しておく配列演算手段であり、中間コ
ード変更手段が、配列の各要素の値が翻訳時に分かって
いると判断された配列同士あるいは配列と定数との二項
演算の代わりに前記配列演算手段で配列演算の演算結果
値が格納された作業用配列の配列値情報テーブルの値を
参照する目的プログラムとなるように中間コードを変更
する中間コード変更手段であることにより構成され、さ
らにまた前記構成において、作業用配列準備手段が、翻
訳している原始プログラム中の実行中の配列添字の配列
値の参照に対して、添字として使用されている配列の値
が翻訳時に分かっており、かつ、その配列の添字により
参照される配列の値も翻訳時に分かっているならば、参
照される配列と同じ大きさの作業用配列の配列値情報テ
ーブルを準備する作業用配列準備手段であり、配列演算
実行手段の代りに、配列添字の配列値の参照において、
添字として使用されている配列の値が翻訳時に分かって
おり、かつ、その配列の値も翻訳時に分かっている場合
の参照される配列に対して、前記配列値保持手段により
配列値情報テーブル中に保持された添字として使用され
ている配列の値を用いて配列の参照を行なった結果の値
を、前記作業用配列準備手段で準備した作業用配列の配
列値情報テーブルにその配列要素の値は分かっていると
いう情報と共に保持しておく配列添字配列値取出し手段
であり、中間コード変更手段が、配列添字の配列値の参
照において、添字として使用される配列の値が翻訳時に
分かっており、かつ、その配列の添字により参照される
配列の値も分かっている場合に参照される配列に対し
て、配列の添字を介して配列を参照せず、前記配列添字
配列値取出し手段で取出された配列添字の配列値が格納
された作業用配列の配列値情報テーブルの値を参照する
目的プログラムとなるように中間コードを変更する中間
コード変更手段であることにより構成される。
【0005】
【実施例】次に、本発明について図面を参照して説明す
る。
【0006】図1は本発明の第1の実施例の構成図で、
原始プログラム中に単項演算を含む場合を示している。
図1の実施例ではコンパイラ10は、構文解析手段1
1,意味解析手段12,最適化手段13,およびコード
生成手段14を含む。また、最適化手段13は、配列値
保持手段131,作業用配列準備手段132,配列演算
実行手段133,および中間コード変更手段134を含
んで構成される。
【0007】構文解析手段11は、原始プログラム11
1を入力し、その構文解析を行い、構文解析情報222
を生成する。意味解析手段12は、構文解析手段11で
生成された構文解析情報222を入力し、その意味を解
析し、中間コード333を生成する。最適化手段13
は、意味解析手段12で生成された中間コード333を
入力し、最適化された中間コード333を生成する。コ
ード生成手段14は、中間コード333を入力し、目的
プログラム444を生成する。
【0008】配列値保持手段131は、構文解析情報2
22および中間コード333を解析し、原始プログラム
111の実行中の配列の各要素の値が翻訳時に分かって
いるか否かを判断し、分かっているなら、その配列要素
の値は分かっているという情報と、その配列要素の値と
を翻訳時に用意した配列値情報テーブル555に保持
し、分かっていないなら、その配列要素の値は分かって
いないという情報を配列値情報テーブル555に保す
る。作業用配列準備手段132は、構文解析情報222
および中間コード333を解析し、原始プログラム11
1の実行中の配列の単項演算に対して、演算対象の全て
の配列要素の値が翻訳時に分かっているなら、演算対象
の配列と同じ大きさの作業用配列の配列値情報テーブル
555を準備する。また、配列演算実行手段133は、
原始プログラム111の実行中の配列の各要素の値が翻
訳時に分かっていると判断された配列の単項演算に対し
て、配列値情報テーブル555中に保持された配列の値
を用いて、翻訳時に単項演算を計算し、その単項演算の
計算結果を得て、作業用配列準備手段132で準備され
た作業用配列の配列値情報テーブル555中に、その配
列要素の値は分かっているという情報と、その配列要素
の値としての計算結果の値とを保持する。中間コード変
更手段134は、原始プログラム111の実行中の配列
の各要素の値が翻訳時に分かっていると判断された配列
の単項演算の代わりに、配列演算実行手段133で計算
された配列の値が格納された作業用配列の配列値情報テ
ーブル555の値を参照する目的プログラムとなるよう
に中間コード333を変更する。
【0009】図2は単項演算を含む原始プログラムの一
例を示す図で、図1の実施例において、図2に示すFO
RTRAN原始プログラムを入力した場合の処理につい
て説明を進める。配列値保持手段131は構文解析情報
から、配列Aの値がプログラムの実行開始時には1,
2,…,10の値を保持していることが分かるので、そ
れを配列値情報テーブル555に格納し、配列Bはグロ
ーバルデータでプログラムの実行開始時には値が不明な
ので、不明という情報を配列値情報テーブル555に格
納する。作業用配列準備手段132は、プログラム中の
(1),(2)および(3)の文で実行される配列Aの
単項演算は、Aの全ての配列要素の値が翻訳時に分かっ
ているので、演算対象の配列と同じ要素数の作業用配列
の配列値情報テーブル555を準備する。また、配列演
算実行手段133は、(1),(2),および(3)の
文で実行される配列Aの単項演算では、Aの全ての配列
要素の値が翻訳時に分かっているので、配列値情報テー
ブル555中に保持された配列の値を用いて、配列Aの
単項演算の演算結果である−1,−2,…,−10を得
て、それらが作業用配列WORKの初期値となるように
作業用配列の配列値情報テーブル555に格納する。中
間コード変更手段134は、(1),(2)および
(3)の文に対して生成された配列Aの単項演算の結果
の値を参照する中間コードの代わりに作業用配列の配列
値情報テーブル555の値を参照する中間コードに変更
する。(1),(2)および(3)の文で実行される配
列Aの単項演算の結果と配列Bとの乗算に関しては、配
列Aの単項演算は作業用配列WORKの配列の参照にな
っているので翻訳時に値は分かっているが、Bの配列要
素の値が翻訳時に分からないので最適化の対象外とな
る。
【0010】図3は図2のFORTRAN原始プログラ
ムを翻訳した結果の目的プログラムとして生成された命
令列のFORTRAN原始プログラムのイメージであ
る。図3では、(4)の文で配列WORKの宣言と
(5)の文でその配列初期値−1,−2,…,−10と
が宣言されている。また、図2の(2)の文が作業用配
列WORKの値を参照する文(6)に変更されている。
【0011】図4は図2のFORTRAN原始プログラ
ムの実行開始時の配列値情報テーブル555の具体例を
示す図である。図4(a),(b),および(c)はそ
れぞれ配列A,BおよびCの配列値情報テーブル555
を示す図で、それぞれA,B,およびCの名前テーブル
から参照できるようになっている。また、配列値情報テ
ーブルには、情報として配列の要素数と、その要素数だ
けのその値が翻訳時に分かっているか否かの情報(ここ
では、分かっているなら○で示し、分かっていないなら
×で示す)と、分かっているならその配列要素の値とが
格納されている。
【0012】図5は本発明の第2の実施例の構成図で、
原始プログラム中に二項演算を含む場合を示している。
図5の実施例のコンパイラ20は構文解析手段11,意
味解析手段12,最適化手段15,およびコード生成手
段14を含む。また最適化手段15は、配列保持手段1
31,作業用配列準備手段135,配列演算実行手段1
36,および中間コード変更手段137を含んで構成さ
れる。
【0013】構文解析手段11,意味解析手段12,コ
ード生成手段14,および配列値保持手段131は図1
の実施例の同じ符号の手段と全く同じ処理を行ない、最
適化手段15も意味解析手段12で生成された中間コー
ド333を入力し、最適化された中間コード333を生
成する点では図1の最適化手段13と同じである。
【0014】作業用配列準備手段135は、構文解析情
報222および中間コード333を解析し、原始プログ
ラム111の実行中の配列同士あるいは配列と定数との
二項演算に対して、演算対象の全ての配列要素の値が翻
訳時に分かっているなら、演算対象の配列と同じ大きさ
の作業用配列の配列値情報テーブル555を準備する。
また、配列演算実行手段136は、原始プログラム11
1の実行中の配列の各要素の値が翻訳時に分かっている
と判断された配列同士あるいは配列と定数との二項演算
に対して、配列値情報テーブル555中に保持された配
列の値を用いて、翻訳時に演算結果を算出し、その演算
の計算結果を得て、作業用配列準備手段135で準備さ
れた作業用配列の配列値情報テーブル555中に、その
配列要素の値は分かっているという情報と、その配列要
素の値としての計算結果の値とを保持する。中間コード
変更手段137は、原始プログラム111の実行中の配
列の各要素の値が翻訳時に分かっていると判断された配
列同士あるいは配列と定数との二項演算の代わりに、配
列演算実行手段136で計算された配列の値が格納され
た作業用配列の配列値情報テーブル555の値を参照す
るような目的プログラムとなるように中間コード333
を変更する。
【0015】図6は二項演算を含む原始プログラムの一
例を示す図で、図5の実施例において、図6に示すFO
RTRAN原始プログラムを入力した場合の処理につい
て説明を進める。配列値保持手段131は構文解析情報
から、配列Aの値はプログラムの実行開始時には1,
2,…,10の値を保持していることが分かるので、そ
れを配列値情報テーブル555に格納し、配列Dはグロ
ーバルデータでプログラムの実行開始時には値が不明な
ので、不明という情報を配列値情報テーブル555に格
納する。また、(11),(12),および(13)の
文の中間コードから、配列Bの値はプログラムの(1
1),(12)および(13)の文の実行完了時に、全
て2の値を保持していることが分かるので、その値を配
列値情報テーブル555に格納する。作業用配列準備手
段135は、(14),(15)および(16)の文で
実行される配列AとBとの乗算では、AおよびBの全て
の配列要素の値が翻訳時に分かっているので、演算対象
の配列と同じ要素数の作業用配列の配列値情報テーブル
555を準備する。中間コード変更手段137は、(1
4),(15)および(16)の文に対して生成された
配列AとBとの乗算結果の値を参照する中間コードの代
わりに作業用配列の配列値情報テーブル555の値を参
照する中間コードに変更する。(14),(15)およ
び(16)の文で実行される配列AとBとの乗算結果と
配列Dとの加算に関しては、配列AとBとの乗算はWO
RK配列の参照になっているので翻訳時に値は分かって
いるが、Dの配列要素の値が翻訳時に分からないので最
適化の対象外となる。
【0016】図7は図6のFORTRAN原始プログラ
ムを翻訳した結果の目的プログラムとして生成された命
令列のFORTRAN原始プログラムのイメージであ
る。図7では、(17)の文で配列WORKの宣言と
(18)の文でその配列初期値2,4,…,20とが宣
言されている。また、図6の(15)の文が作業用配列
WORKの値を参照する文(19)に変更されている。
【0017】図8は図6のFORTRAN原始プログラ
ムの(11),(12)および(13)の文の実行完了
時の配列値情報テーブル555の具体例を示す図であ
る。図8(a),(b),(c)および(d)は配列
A,B,C,およびDの配列値情報テーブル555を示
す図で、それぞれA,B,C,およびDの名前テーブル
から参照できるようになっている。また、配列値情報テ
ーブル555には、情報として配列の要素数と、その要
素数だけのその値が翻訳時に分かっているか否かの情報
と、分かっているならその配列要素の値とが格納されて
いる。
【0018】図9は本発明の第3の実施例の構成図で、
原始プログラム中に配列添字を含む場合を示している。
図9の実施例のコンパイラ30は構文解析手段11,意
味解析手段12,最適化手段16およびコード生成手段
14を含む。また最適化手段16は、配列値保持手段1
31,作業用配列準備手段138,配列添字配列値取出
し手段139,および中間コード変換手段140を含ん
で構成される。
【0019】構文解析手段11,意味解析手段12,コ
ード生成手段14,および配列値保持手段は図1の実施
例の同じ符号の手段と全く同じ処理を行ない、最適化手
段16も意味解析手段12で生成された中間コード33
3を入力し、最適化された中間コード333を生成する
点では図1の最適化手段13と同じである。
【0020】作業用配列準備手段138は、構文解析情
報222および中間コード333を解析し、原始プログ
ラム111中の実行中の添字が配列の配列参照におい
て、添字として使用されている配列の値が翻訳時に分か
っており、かつ、その配列の添字により参照される配列
の値も翻訳時に分かっているなら、参照される配列と同
じ大きさの作業用配列の配列値情報テーブル555を準
備する。また、配列添字配列値取出し手段139は、原
始プログラム111中の実行中の添字が配列の配列参照
において、添字として使用されている配列の値が翻訳時
に分かっており、かつ、その配列の添字により参照され
る配列の値も翻訳時に分かっている場合の参照される配
列に対して、配列値保持手段131により保持された配
列値情報テーブル555中の添字として使用されている
配列の値を用いて、配列の参照を行った結果の値を得
て、作業用配列準備手段138で準備された作業用配列
の配列値情報テーブル555に、その配列要素の値は分
かっているという情報と、その配列要素の値として得た
結果の値とを保持する。中間コード変更手段140は、
原始プログラム111中の配列添字の配列値の参照にお
いて、添字として使用されている配列の値が翻訳時に分
かっており、かつ、その配列の添字により参照される配
列の値も翻訳時に分かっている場合の参照される配列に
対して、配列の添字を介して配列を参照する中間コード
ではなく、配列添字配列値取出し手段140で取出され
た配列添字の配列値が格納された作業用配列の配列値情
報テーブル555の値を参照するような目的プログラム
となるように中間コード333を変更する。
【0021】図10は配列添字を含む原始プログラムの
一例を示す図で、図9の実施例において、図10に示す
FORTRAN原始プログラムを入力した場合の処理に
ついて説明を進める。配列値保持手段131は構文解析
情報から、配列Aの値はプログラムの実行開始時には1
0,9,8,…,1の値を保持していることが分かるの
で、それを配列値情報テーブル555に格納し、配列D
はグローバルデータでプログラムの実行開始時には値が
不明なので、不明という情報を配列値情報テーブル55
5に格納する。作業用配列準備手段138は、(2
1),(22)および(23)の文で実行される配列A
(B)の参照は、配列AおよびBの全ての配列要素の値
が翻訳時に分かっているので、配列Aと同じ要素数の作
業用配列の配列値情報テーブル555を準備する。ま
た、配列添字配列値取出し手段139は、(21),
(22),および(23)の文で実行される配列A
(B)の参照は、配列AおよびBの全ての配列要素の値
が翻訳時に分かっているので、配列値情報テーブル55
5中の配列Bの値を添字として、配列値情報テーブル5
55中の配列Aの値を得て、それらが作業用配列WOR
Kの初期値となるように作業用配列の配列値情報テーブ
ル555に格納する。すなわち、配列WORKの値とし
て下記の値を配列値情報テーブル555に格納する。
【0022】 第1要素:A(B(1))=A(1)の値10 第2要素:A(B(2))=A(2)の値9 第3要素:A(B(3))=A(3)の値8 第4要素:A(B(4))=A(4)の値7 第5要素:A(B(5))=A(5)の値6 第6要素:A(B(6))=A(1)の値10 第7要素:A(B(7))=A(2)の値9 第8要素:A(B(8))=A(3)の値8 第9要素:A(B(9))=A(4)の値7 第10要素:A(B(10))=A(5)の値6 中間コード変更手段140は、(21),(22),お
よび(23)の文で実行される配列A(B)の参照は、
配列AおよびBの全ての配列要素の値が翻訳時に分かっ
ているので、配列添字Bを用いた配列Aの値を参照する
中間コードの代わりに作業用配列の配列値情報テーブル
555の値を参照する中間コードに変更する。
【0023】図11は図10のFORTRAN原始プロ
グラムを翻訳した結果の目的プログラムとして生成され
た命令列のFORTRAN原始プログラムのイメージで
ある。図11では、(24)の文で配列WORKの宣言
と(25)の文でその配列初期値10,9,8,7,
6,10,9,8,7,6とが宣言されている。また、
図10の(22)の文が作業用配列WORKの値を参照
する文(26)に変更されている。
【0024】図12は図10のFORTRAN原始プロ
グラムの実行開始時の配列値情報テーブル555の具体
例を示す図である。図12(a),(b),(c),お
よび(d)は配列A,B,C,およびDの配列値情報テ
ーブル555を示す図で、それぞれA,B,C,および
Dの名前テーブルから参照できるようになっている。ま
た、配列値情報テーブル555には、情報として配列の
要素数と、その要素数だけのその値が翻訳時に分かって
いるか否かの情報と、分かっているならその配列要素の
値とが格納されている。
【0025】
【発明の効果】以上説明したように本発明は、原始プロ
グラムの実行中の配列の各要素の値が翻訳時に分かって
いると判断された配列の単項演算、および配列同士ある
いは配列と定数との二項演算に対して、その配列の単項
演算の計算結果、および配列同士あるいは配列と定数と
の二項演算の計算結果を作業用配列に格納して、この作
業用配列を参照する命令列を生成し、また原始プログラ
ム中の、配列添字の配列参照において、添字として使用
されている配列の値が翻訳時に分かっており、かつ、そ
の配列の添字により参照される配列の値も翻訳時に分か
っている場合に、翻訳時に分かっている配列の添字を介
して翻訳時に分かっている配列の値を取出した作業用配
列を参照する命令列を生成することにより、効率の良い
目的プログラムの生成ができるという効果がある。
【図面の簡単な説明】
【図1】本発明の第1の実施例の構成図である。
【図2】図1の実施例を説明するための単項演算を含む
原始プログラムの一例を示す図である。
【図3】図2に示す原始プログラムを図1の実施例の処
理により翻訳した結果の目的プログラムとして生成され
た命令列の原始プログラムのイメージである。
【図4】図2に示す原始プログラムを図1の実施例によ
り処理するときの配列値情報テーブルの具体例を示す図
である。
【図5】本発明の第2の実施例の構成図である。
【図6】図5の実施例を説明するための二項演算を含む
原始プログラムの一例を示す図である。
【図7】図6に示す原始プログラムを図5の実施例の処
理により翻訳した結果の目的プログラムとして生成され
た命令列の原始プログラムのイメージである。
【図8】図6に示す原始プログラムを図5の実施例によ
り処理するときの配列値情報テーブルの具体例を示す図
である。
【図9】本発明の第3の実施例の構成図である。
【図10】図9の実施例を説明するための配列添字を含
む原始プログラムの一例を示す図である。
【図11】図10に示す原始プログラムを図9の実施例
の処理により翻訳した結果の目的プログラムとして生成
された命令列の原始プログラムのイメージである。
【図12】図10に示す原始プログラムを図9の実施例
により処理するときの配列値情報テーブルの具体例を示
す図である。
【符号の説明】
10,20,30 コンパイラ 11 構文解析手段 12 意味解析手段 13,15,16 最適化手段 14 コード生成手段 111 原始プログラム 131 配列値保持手段 132,135,138 作業用配列準備手段 133,136 配列演算手段 134,137,140 中間コード変更手段 139 配列添字配列値取出し手段 222 構文解析情報 333 中間コード 444 目的プログラム 555 配列値情報テーブル

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムを入力して目的プログラ
    ムに翻訳するコンパイラにおいて、翻訳している原始プ
    ログラムの中の実行中の配列の各要素の値が翻訳時に分
    かっているか否かを判断して、分かっているならその配
    列要素の値は分かっているという情報とその配列要素の
    値とを翻訳時に用意した配列値情報テーブルに保持し、
    分かっていないならその配列要素の値は分かっていない
    という情報を配列値情報テーブルに保持する配列値保持
    手段と、翻訳している原始プログラム中の実行中の配列
    の単項演算に対して、演算対象の配列要素の値が翻訳時
    に分かっているなら、演算対象の配列と同じ大きさの作
    業用配列の配列値情報テーブルを準備する作業用配列準
    備手段と、配列の各要素の値が翻訳時に分かっていると
    判断された配列の単項演算に対して、前記配列値保持手
    段によって配列値情報テーブル中に保持された配列の値
    を用いて演算を実行し、前記作業用配列準備手段で準備
    された作業用配列の配列値情報テーブルにその配列要素
    の値は分かっているという情報とその配列要素の値とし
    ての演算結果の値とを保持しておく配列演算手段と、配
    列の各要素の値が翻訳時に分かっていると判断された配
    列の単項演算の代りに前記配列演算手段で配列演算の演
    算結果の値を格納した作業用配列の配列値情報テーブル
    の値を参照する目的プログラムとなるように中間コード
    を変更する中間コード変更手段とを有することを特徴と
    するコンパイラの最適化方式。
  2. 【請求項2】 請求項1のコパイラの最適化方式におい
    て、作業用配列準備手段が、翻訳している原始プログラ
    ム中の実行中の配列同士あるいは配列と定数との二項演
    算に対して、演算対象の配列要素の値が前記配列値保持
    手段によって分かっているとされたならば、演算対象の
    配列と同じ大きさの作業用配列の配列値情報テーブルを
    準備する作業用配列準備手段であり、配列演算実行手段
    が、配列の各要素が翻訳時に分かっていると判断された
    配列同士あるいは配列と定数との二項演算に対して、前
    記配列値保持手段によって配列値情報テーブル中に保持
    された配列の値を用いて演算を実行し、前記作業用配列
    準備手段で準備された作業用配列の配列値情報テーブル
    にその配列要素の値は分かっているという情報とその配
    列要素の値としての演算結果の値とを保持しておく配列
    演算手段であり、中間コード変更手段が、配列の各要素
    の値が翻訳時に分かっていると判断された配列同士ある
    いは配列と定数との二項演算の代わりに前記配列演算手
    段で配列演算の演算結果値が格納された作業用配列の配
    列値情報テーブルの値を参照する目的プログラムとなる
    ように中間コードを変更する中間コード変更手段である
    ことを特徴とするコンパイラの最適化方式。
  3. 【請求項3】 請求項1のコンパイラの最適化方式にお
    いて、作業用配列準備手段が、翻訳している原始プログ
    ラム中の実行中の配列添字の配列値の参照に対して、添
    字として使用されている配列の値が翻訳時に分かってお
    り、かつ、その配列の添字により参照される配列の値も
    翻訳時に分かっているならば、参照される配列と同じ大
    きさの作業用配列の配列値情報テーブルを準備する作業
    用配列準備手段であり、配列演算実行手段の代りに、配
    列添字の配列値の参照において、添字として使用されて
    いる配列の値が翻訳時に分かっており、かつ、その配列
    の値も翻訳時に分かっている場合の参照される配列に対
    して、前記配列値保持手段により配列値情報テーブル中
    に保持された添字として使用されている配列の値を用い
    て配列の参照を行なった結果の値を、前記作業用配列準
    備手段で準備した作業用配列の配列値情報テーブルにそ
    の配列要素の値は分かっているという情報と共に保持し
    ておく配列添字配列値取出し手段であり、中間コード変
    更手段が、配列添字の配列値の参照において、添字とし
    て使用される配列の値が翻訳時に分かっており、かつ、
    その配列の添字により参照される配列の値も分かってい
    る場合に参照される配列に対して、配列の添字を介して
    配列を参照せず、前記配列添字配列値取出し手段で取出
    された配列添字の配列値が格納された作業用配列の配列
    値情報テーブルの値を参照する目的プログラムとなるよ
    うに中間コードを変更する中間コード変更手段であるこ
    とを特徴とするコンパイラの最適化方式。
JP5811493A 1993-03-18 1993-03-18 コンパイラの最適化方式 Withdrawn JPH06274351A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5811493A JPH06274351A (ja) 1993-03-18 1993-03-18 コンパイラの最適化方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5811493A JPH06274351A (ja) 1993-03-18 1993-03-18 コンパイラの最適化方式

Publications (1)

Publication Number Publication Date
JPH06274351A true JPH06274351A (ja) 1994-09-30

Family

ID=13074958

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5811493A Withdrawn JPH06274351A (ja) 1993-03-18 1993-03-18 コンパイラの最適化方式

Country Status (1)

Country Link
JP (1) JPH06274351A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998018084A1 (en) * 1996-10-18 1998-04-30 Fujitsu Limited Device and method for accelerating memory access speed

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998018084A1 (en) * 1996-10-18 1998-04-30 Fujitsu Limited Device and method for accelerating memory access speed
US6279152B1 (en) * 1996-10-18 2001-08-21 Fujitsu Limited Apparatus and method for high-speed memory access

Similar Documents

Publication Publication Date Title
US20040230957A1 (en) Methods for comparing versions of a program
EP0646864A1 (en) Optimising compiler
JPH1097430A (ja) 最適化のためにアセンブリコードルーチンをソースコードルーチンに挿入する方法およびそのシステム
US6425124B1 (en) Resource allocation device for reducing the size and run time of a machine language program
JPH1173326A (ja) プログラム変換装置とデバッグ装置
JP3318051B2 (ja) 翻訳処理方法
JPH06274351A (ja) コンパイラの最適化方式
JPH0667871A (ja) プログラム自動更新方式
JP3328056B2 (ja) 構文解析木からの情報抽出装置
JPH0695890A (ja) コンパイラにおける名前置換方式
JPS58112127A (ja) デ−タ入力手段形成方式
JPS61213935A (ja) 高級言語プログラムのデバック装置及びそのステップ方式
JP4327533B2 (ja) 演算処理プログラム、演算処理方法、および演算処理装置
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
JPH03240837A (ja) デバッグ情報生成装置
JPH0795275B2 (ja) コンパイル処理装置
JPH09274570A (ja) コンパイル方法及びコンパイラシステム
JPH10207738A (ja) 言語処理システム
JP2501394B2 (ja) 手続き呼び出し翻訳装置
JPH11195011A (ja) 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体
JPS63632A (ja) 原始プログラムの最適化処理方式
JPH05204705A (ja) 未定義変数検出処理方法
JPH06332719A (ja) コンパイラコード発生装置
JPH0561687A (ja) コンパイラの処理方式
JPH0573335A (ja) プログラムの自動インライン展開方式

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20000530