JPH11212800A - 移送命令最適化装置および方法 - Google Patents

移送命令最適化装置および方法

Info

Publication number
JPH11212800A
JPH11212800A JP10015550A JP1555098A JPH11212800A JP H11212800 A JPH11212800 A JP H11212800A JP 10015550 A JP10015550 A JP 10015550A JP 1555098 A JP1555098 A JP 1555098A JP H11212800 A JPH11212800 A JP H11212800A
Authority
JP
Japan
Prior art keywords
transfer instruction
operand
instruction
transfer
text
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.)
Granted
Application number
JP10015550A
Other languages
English (en)
Other versions
JP3239830B2 (ja
Inventor
Yoshiaki Hiroya
良彰 廣谷
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 Corp
Original Assignee
NEC Corp
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 Corp filed Critical NEC Corp
Priority to JP01555098A priority Critical patent/JP3239830B2/ja
Publication of JPH11212800A publication Critical patent/JPH11212800A/ja
Application granted granted Critical
Publication of JP3239830B2 publication Critical patent/JP3239830B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】移送命令を含む命令列あるいは、中間テキスト
列において、移送命令の右辺の定義命令が現れても移送
命令を削除する装置および方法にある。 【解決手段】移送命令を削除する複写伝播処理手段41
で削除できない移送命令に対して、該移送命令の右辺オ
ペランドの値を決定する定義命令を移送命令を見つけ、
その定義命令と移送命令の間に移送命令で使用するオペ
ランドの使用がないことを判定し、移送命令以後の命令
における移送命令の右辺オペランドの参照を左辺オペラ
ンドで置換し、最後にステップ2の定義命令の左辺オペ
ランドを移送命令の左辺オペランドで置換して移送命令
を削除する拡張複写伝播処理手段42を設ける。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、コンパイラによ
ってソースプログラムから生成する命令列あるいは中間
テキスト列の最適化に関し、特に移送命令を削除する移
送命令最適化装置および方法に関する。
【0002】
【従来の技術】コンパイラの最適化に関する参照文献の
土居範久著「コンパイラ」培同館、ページ440〜ペー
ジ442によれば、移送命令(A=Bの形の単純な代入
処理であり、左辺のレジスタやメモリなどの記憶領域
「A」に右辺のレジスタやメモリなどの記憶領域の値や
定数値「B」を複写する処理)削減のためのコンパイラ
における最適化技法に複写伝播手段がある。この最適化
技法は、移送命令(A=B)以降の移送命令の左辺オペ
ランドAの参照の全てを右辺オペランドBの値によって
置き換えることにより移送命令を不要になるようにし、
移送命令を削減する方法であった。たとえば、以下に複
写伝播処理前と複写伝播処理後の命令列を例示するよう
に、オペランドAの値をオペランドBに置換することで
移送命令(A=B)が削除されて、移送命令の最適化が
実施される。
【0003】 複写伝播処理前の命令列 複写伝播処理後の命令列 A=B (削除された) X=A+C X=B+C Y=A/2.0 Y=B/2.0 更に、複写伝播方式の例が、特開平4−17031号公
報に記載されている。この公報に記載された複写伝播方
式は、移送命令の右辺が定数の場合の例であり、移送命
令以降の左辺の値の参照を右辺の定数値によって置き換
えることにより不要移送命令を削減する方式である。こ
のように、従来の複写伝播方式は、移送命令の左辺のオ
ペランドの参照を右辺のオペランドで置き換えることに
よって行われていた。
【0004】
【発明が解決しようとする課題】第1の問題点は、移送
命令を削除できる命令列のパターンが限られるという点
である。その理由は、移送命令の左辺のオペランドの全
ての参照が右辺のオペランドによって置き換えられる前
に、右辺オペランドの新たな定義命令が出現すると、右
辺オペランドの値が変更され、移送命令の時点での値と
異なるため、その定義命令以降の左辺オペランドの置換
はできないためであり、結果として移送命令の削除がで
きなくなる。以下は、従来の複写伝播方式では移送命令
が削除できない命令列の例である。
【0005】A=B B=X/2.0 Y=A+C 第三の命令(Y=A+C)のオペランドAの値は、オペ
ランドBで置換できない(第二の命令B=X/2.0で
オペランドBの値が変更されているため)ので、移送命
令A=Bは削除できない。
【0006】この発明の目的は、移送命令を含む命令列
において移送命令の右辺の定義命令が現れる場合に対し
て、その移送命令を削除できる条件を判定して削除する
装置および方法を提供することである。
【0007】
【課題を解決するための手段】この発明の移送命令削除
のための移送命令最適化装置および方法は、移送命令の
左辺オペランドの参照を右辺オペランドで置換するので
はなく、逆に、右辺オペランドの参照を左辺オペランド
によって置換する。そのために、従来の移送命令削除を
行う複写伝播処理手段に、新たな削除対象である移送命
令の右辺オペランドの定義命令を見つけ、移送命令以降
の命令列における移送命令の左辺オペランドによる置換
ができるか否かを判定し、全ての命令列を走査しながら
左辺オペランドによる右辺オペランドの置換判定処理お
よび置換処理を行い、全ての置換処理を終了した時点で
移送命令の削除処理を行う拡張複写伝播処理手段を付加
する。この拡張複写伝播処理手段は、移送命令の削除と
ともに、この移送命令の右辺オペランドの定義テキスト
における左辺オペランドを移送命令の左辺オペランドで
置換する。移送命令は、全ての右辺オペランドの参照を
左辺オペランドに置換することで削除される。また、移
送命令の左辺オペランドの値は右辺オペランドの定義命
令で計算されるように変更する。このため、右辺オペラ
ンドの新たな定義命令が出現し右辺オペランドの値が変
更されても、これ以降参照される移送命令の左辺オペラ
ンドの値は、右辺オペランドの定義命令の結果として得
られているためオペランド置換を行うことなく移送命令
を削除できる。
【0008】
【発明の実施の形態】次に、この発明の実施の形態につ
いて図面を参照して説明する。移送命令最適化装置の実
施の形態の構成を示す図1を参照すると、ソースプログ
ラムファイルを保持する原始プログラム1と、ソースプ
ログラムを入力し字句解析や構文解析などを行って中間
テキストを生成する中間プログラム生成手段2と、生成
された中間テキストを保持する中間プログラム3と、中
間テキストを入力し最適化を施した中間テキストに変換
する中間テキスト最適化手段4と、最適化後の中間テキ
ストを入力し目的プログラムに変換する目的プログラム
生成手段5と、目的プログラムを保持する目的プログラ
ム6と、を含む。
【0009】中間テキスト最適化手段4は、中間プログ
ラム3中の中間テキスト列に対して、共通式削除処理や
不変式のループ外への移動などの一般的なテキスト列の
最適化を行うほか、従来の複写伝播処理を行う複写伝播
処理手段41と、この発明による移送命令の削除対象を
拡張した拡張複写伝播処理手段42と、を備える。従来
の複写伝播処理手段41で最適化されなかった移送命令
を行う中間テキストが、拡張複写伝播処理手段42で削
除条件が判定されて削除対象のテキストとなる。
【0010】次に、この発明の実施の形態の動作につい
て図1を援用し、図2を参照して説明する。図1におい
て、原始プログラム1はコンパイラの中間プログラム生
成手段2により中間テキスト列に変換され、中間プログ
ラム3に蓄積される。中間プログラム3中の中間テキス
ト列は、中間テキスト最適化手段4により最適化され
る。中間テキスト列内の移送命令は、複写伝播処理手段
41の対象テキストとなり、削除条件が判定されて、可
能なら削除される。削除できなかった移送命令は拡張複
写伝播処理手段42の対象テキストとなる。
【0011】図2は、この発明の移送命令削除の適用条
件を拡張した拡張複写伝播処理手段42の処理の流れで
ある。図中に示すは移送テキスト(命令)を、は移
送テキストの右辺オペランドの値を決定する定義テキス
ト(命令)を、は移送テキスト以後に現れる移送テキ
ストの右辺オペランドの定義テキスト(命令)をそれぞ
れ指している。図2を用いてこの本発明の処理を説明す
る。複写伝播処理手段41により削除されなかった移送
テキストがある場合(ステップ21)、移送テキスト
の右辺オペランドの値を決定している定義テキスト
をの前方の中間テキスト列から見つける(ステップ2
2)。定義テキストが見つからない場合は、以後の処
理を中断して終了する。定義テキストが見つかった場
合は、との間の中間テキストでの左辺のオペラン
ドが使用されているか否かを調べる(ステップ23)。
左辺および右辺のオペランドが使用されている場合は、
最適化不可であるため以後の処理を中断して終了する。
左辺および右辺のオペランドが使用されていなければ、
の次のテキストを取り出しフラグDEF_FLAGを
「0」にしておく(ステップ24)。以後のステップ2
5からステップ31までの処理を、中間テキストがなく
なるか、または、の右辺オペランドの新たな定義テキ
ストが現れるまで繰り返す。取り出された中間テキス
トにおいて、であるか否かを判定する(ステップ2
5)。定義テキストでない場合(ステップ25のYE
S)、の左辺オペランドの定義テキストであるか否か
を判定する(ステップ26)。定義テキストでない場合
(ステップ26のNO)、ステップ28へ移行する。定
義テキストである場合(ステップ26のYES)、フラ
グDEF_FLAGに「1」を設定してステップ28へ
移行する。ステップ28では、現在の中間テキストが
の右辺オペランドの参照テキストであるか判定する。参
照テキストでない場合(ステップ28のNO)、ステッ
プ31へ移行する。参照テキストであり(ステップ28
のYES)、既にフラグDEF_FLAGが「1」であ
れば(ステップ29のYES)、処理を中断し最適化を
終了する。DEF_FLAGが「1」でない場合(ステ
ップ29のNO)、現在の中間テキストにおけるの右
辺オペランドの参照をの左辺オペランドの参照で置換
する(ステップ30)。ステップ31では、現在の中間
テキストの次のテキストを取り出し、ステップ25から
の処理を繰り返す。ステップ25で、中間テキストがな
くなるか、または、のテキストが現れた場合は、ステ
ップ32に移行する。ステップ32では、の左辺オペ
ランドをの左辺オペランドで置換し移行テキストを
削除する。
【0012】次に、この実施の形態の動作を図3
(a),図3(b),図3(c)の具体例で説明する。
図3(a)は、複写伝播処理手段41で削除できない移
行テキストを含み、拡張複写伝播処理手段42の対象
となる中間テキスト列51である。移送テキストとそ
の左辺オペランドの参照テキストの間にの右辺オペ
ランドの定義テキストがあるため、従来の複写伝播処
理ではが削除できない。まず、ステップ22において
の移送テキストの右辺オペランドBの定義テキストを
見つける。見つかった定義テキストが(B=C*2.
0)である。との間では、オペランドAおよびオペ
ランドBは使用されていないのでステップ23はYES
となり、ステップ24に移行する。ステップ25での
次のテキスト、すなわち、(Z=B/2.0)を取り
出し以後の処理を行う。は、の右辺オペランドBの
定義テキストでないので、ステップ25はYESとな
り、ステップ26に移行する。さらに、は、の左辺
オペランドAの定義テキストでもないのでNOとなりス
テップ28に移行する。は、の右辺オペランドBを
参照しているが、フラッグDEF_FLAGが「0」の
ままなのでステップ30に移行する。ここで、のオペ
ランドBの参照をオペランドAの参照に変更する。この
時点での中間テキスト列が図3(b)の置換テキスト列
52である。
【0013】つぎに、ステップ31でのつぎのテキス
トを取り出し、ステップ25からステップ31までを同
じように施す。中間テキストが取り出されると、の
右辺オペランドBの定義テキストであるため、ステップ
25はNOとなりステップ32に移行する。ここで、
の左辺オペランドBをの左辺オペランドAで置き換え
て、の移送テキストを削除する。この時点の中間テキ
スト列が図3(c)の削除テキスト列53である。
【0014】
【発明の効果】第1の効果は、移送(命令)テキストを
含む(命令)テキスト列において、移送命令の右辺オペ
ランドの定義テキストが現れても、移送命令の削除が行
えるということである。これにより、コンパイラの最適
化において不要な移送命令を削除した効率の良い目的プ
ログラムを生成できる。
【0015】その理由は、移送命令以後の命令列におけ
る移送命令の右辺のオペランドの参照を移送命令の左辺
のオペランドによって置換し、また、右辺オペランドの
定義命令において左辺オペランドを移送命令の左辺オペ
ランドで置換するようにしたからである。
【図面の簡単な説明】
【図1】この発明の実施の形態の構成を示す図である。
【図2】図1の拡張複写伝播処理手段の動作を示す図で
ある。
【図3】移送命令を含む中間テキスト列の最適化を例示
する図である。
【符号の説明】
1 原始プログラム 2 中間プログラム生成手段 3 中間プログラム 4 中間テキスト最適化手段 5 目的プログラム生成手段 6 目的プログラム 41 複写伝播処理手段 42 拡張複写伝播処理手段

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムをコンパイルし、中間テ
    キスト列を生成して蓄積する中間プログラムファイル
    と、前記中間テキスト列から移送命令の削除条件を判定
    し、削除可能な移送命令を削除して最適化する複写伝播
    処理手段と、前記削除可能な移送命令を削除した中間テ
    キスト列から目的プログラムを生成する目的プログラム
    生成手段と、を備える装置において、 前記削除条件の判定で、削除不可な移送命令に対して、
    前記移送命令以後の中間テキスト列で、前記移送命令の
    右辺のオペランドの参照を前記移送命令の左辺のオペラ
    ンドで置換し、前記移送命令の右辺オペランドの定義命
    令に対して、前記定義命令の左辺オペランドを前記移送
    命令の左辺オペランドで置換し、前記移送命令を削除す
    る拡張複写伝播処理手段を有することを特徴とする移送
    命令最適化装置。
  2. 【請求項2】 原始プログラムをコンパイルし、中間テ
    キスト列を生成して蓄積する中間プログラムファイルの
    中間テキスト列から移送命令の削除条件を判定し、削除
    可能な移送命令を削除する移送命令最適化の方法におい
    て、 前記判定で削除不可な移送命令に対して、前記移送命令
    以後の中間テキスト列で、前記移送命令の右辺のオペラ
    ンドの参照を前記移送命令の左辺のオペランドで置換
    し、 前記移送命令の右辺オペランドの定義命令に対して、前
    記定義命令の左辺オペランドを前記移送命令の左辺オペ
    ランドで置換し、 前記第1及び第2の工程を施した中間テキスト列の前記
    移送命令の削除を実行する拡張複写伝播処理を含む拡張
    移送命令最適化方法を実行することを特徴とする移送命
    令最適化方法。
  3. 【請求項3】 前記移送命令最適化方法の拡張複写伝播
    処理を実行するプログラムを記憶するコンピュータ読み
    とり可能な記憶媒体。
JP01555098A 1998-01-28 1998-01-28 移送命令最適化装置および方法 Expired - Fee Related JP3239830B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP01555098A JP3239830B2 (ja) 1998-01-28 1998-01-28 移送命令最適化装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01555098A JP3239830B2 (ja) 1998-01-28 1998-01-28 移送命令最適化装置および方法

Publications (2)

Publication Number Publication Date
JPH11212800A true JPH11212800A (ja) 1999-08-06
JP3239830B2 JP3239830B2 (ja) 2001-12-17

Family

ID=11891893

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01555098A Expired - Fee Related JP3239830B2 (ja) 1998-01-28 1998-01-28 移送命令最適化装置および方法

Country Status (1)

Country Link
JP (1) JP3239830B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101942111B1 (ko) 2011-01-31 2019-01-24 히다치 오토모티브 시스템즈 가부시키가이샤 서스펜션 제어 장치

Also Published As

Publication number Publication date
JP3239830B2 (ja) 2001-12-17

Similar Documents

Publication Publication Date Title
JP4118456B2 (ja) プログラム言語処理システム、コード最適化方法、及び機械読み出し可能な記憶媒体
CN100465895C (zh) 编译器、编译方法
JPH08263299A (ja) プログラム変換方法
JP3239830B2 (ja) 移送命令最適化装置および方法
KR100305097B1 (ko) 최적화에 있어서 인터럽트 처리의 경감을 실현하는 컴파일러 및 그의 최적화 방법
JP2018120389A (ja) コンパイル方法、コンパイルプログラム及び情報処理装置
US6944852B2 (en) Compiler
JPH0756745A (ja) 言語処理プログラムのコンパイラ処理方式
JPH0546404A (ja) 分岐命令削除最適化方式
JP2002082811A (ja) コンパイル方法および記録媒体
JPH05197561A (ja) コンパイル方式
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JP3714201B2 (ja) コール命令並び替え方法と装置並びにプログラム
JPH11149380A (ja) コンパイラとプログラム最適化方法およびその処理プログラムを記録した記録媒体
JPH03127127A (ja) コンピュータプログラムの最適化方法
JPH0689187A (ja) インライン展開最適化方法
JPH0527986A (ja) コンパイラの最適化方法および最適化装置
JP2003015884A (ja) 重複定義チェック装置及びプログラム
JPH05210575A (ja) トランザクションファイルのコンペア方法
JPH04326424A (ja) プログラム修正方式
JPH1031591A (ja) 関数のインライン展開装置
JP2004139369A (ja) 定数アドレス領域を指示するポインタ解析方法
JPH02181830A (ja) ループ最適化処理方法
JPH06314194A (ja) パッチ方式
JPH06208470A (ja) 目的コード最適化装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20010911

LAPS Cancellation because of no payment of annual fees
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20051118