JPH0527986A - コンパイラの最適化方法および最適化装置 - Google Patents

コンパイラの最適化方法および最適化装置

Info

Publication number
JPH0527986A
JPH0527986A JP3184355A JP18435591A JPH0527986A JP H0527986 A JPH0527986 A JP H0527986A JP 3184355 A JP3184355 A JP 3184355A JP 18435591 A JP18435591 A JP 18435591A JP H0527986 A JPH0527986 A JP H0527986A
Authority
JP
Japan
Prior art keywords
instruction
loop
comparison
invariant variable
loop invariant
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
Application number
JP3184355A
Other languages
English (en)
Inventor
Minoo Abe
美乃夫 安部
Hiroaki Hirata
博章 平田
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP3184355A priority Critical patent/JPH0527986A/ja
Publication of JPH0527986A publication Critical patent/JPH0527986A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】無用な比較命令を削除して、実行効率の良い目
的プログラムを生成できるコンパイラの最適化方法およ
び最適化装置を提供する。 【構成】ループ不変変数判定部1は、ループ中にループ
不変変数と定数あるいは他のループ不変変数とを比較す
る比較命令およびこの比較命令に関連した条件分岐命令
が存在することを検出する。レジスタ設定命令生成部2
は、ループ不変変数判定部1で検出されたループ不変変
数に応じて分岐先アドレスをレジスタに格納する命令列
をループの直前に生成する。比較・分岐命令置換部3
は、ループ不変変数判定部1で検出された比較命令と条
件分岐命令とをレジスタ設定命令生成部2で生成された
命令列で設定されたレジスタ中のアドレスに対する無条
件分岐命令に置換する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は目的プログラムの実行効
率を向上させるコンパイラの最適化方法および最適化装
置に関するものである。
【0002】
【従来の技術】近年、RISC型マイクロプロセッサの
発達に伴い、その性能を引き出すために、高度な最適化
機能を備えたコンパイラが開発されている。このような
最適化コンパイラでは、ループ中の命令数を減少させる
ことが、目的プログラムの実行効率の向上に大きく寄与
する。
【0003】従来のコンパイラは、例えば図4のような
目的プログラムを生成する。この目的プログラムは、プ
ロセッサにより命令が順に1命令ずつ実行される。比較
命令31では、変数VAR1の内容が定数0と比較され
る。次に条件分岐命令32では、比較命令31の結果に
応じて、ラベル33へ分岐するか、分岐せずに条件分岐
命令32の次の命令を実行するかを決定し、どちらかの
アドレスへ制御を移す。以下それ以降の命令が順に実行
され、ループ終了条件が満たされるまで繰り返しループ
34の各命令が実行される。
【0004】
【発明が解決しようとする課題】しかしながら上記のよ
うな目的プログラムでは、変数VAR1がループ34中
で不変である場合、条件分岐命令32による分岐先も不
変であるにもかかわらず、ループ34の毎回の実行ごと
に無用な比較命令31が実行されるという問題点を有し
ていた。
【0005】本発明はかかる事情に鑑みて成されたもの
であり、無用な比較命令を削除して、実行効率の良い目
的プログラムを生成できるコンパイラの最適化方法およ
び最適化装置を提供することを目的とする。
【0006】
【課題を解決するための手段】請求項1の発明は、高級
プログラミング言語で記述された原始プログラムを入力
として目的プログラムを生成するコンパイラに採用され
る最適化方法であって、ループ中にループ不変変数と定
数あるいは他のループ不変変数とを比較する比較命令お
よびこの比較命令に関連した条件分岐命令が存在するこ
とを検出するループ不変変数検出ステップと、このルー
プ不変変数検出ステップで検出した前記ループ不変変数
に応じて分岐先アドレスをレジスタに格納する命令列を
前記ループの直前に生成するレジスタ設定命令生成ステ
ップと、前記ループ不変変数検出ステップで検出した前
記比較命令と前記条件分岐命令とを前記レジスタ設定命
令生成ステップで生成した前記命令列で設定された前記
レジスタ中のアドレスに対する無条件分岐命令に置換す
る比較・分岐命令置換ステップとを実行することを特徴
としている。
【0007】請求項2の発明は、高級プログラミング言
語で記述された原始プログラムを入力として目的プログ
ラムを生成するコンパイラに採用される最適化装置であ
って、ループ中にループ不変変数と定数あるいは他のル
ープ不変変数とを比較する比較命令およびこの比較命令
に関連した条件分岐命令が存在することを検出するルー
プ不変変数検出部と、このループ不変変数検出部で検出
された前記ループ不変変数に応じて分岐先アドレスをレ
ジスタに格納する命令列を前記ループの直前に生成する
レジスタ設定命令生成部と、前記ループ不変変数検出部
で検出された前記比較命令と前記条件分岐命令とを前記
レジスタ設定命令生成部で生成された前記命令列で設定
された前記レジスタ中のアドレスに対する無条件分岐命
令に置換する比較・分岐命令置換部とを備えたことを特
徴としている。
【0008】
【作用】請求項1の発明においては、ループ中にループ
不変変数と定数あるいは他のループ不変変数とを比較す
る比較命令およびこの比較命令に関連した条件分岐命令
が存在することを検出するループ不変変数検出ステップ
と、このループ不変変数検出ステップで検出したループ
不変変数に応じて分岐先アドレスをレジスタに格納する
命令列をループの直前に生成するレジスタ設定命令生成
ステップと、ループ不変変数検出ステップで検出した比
較命令と条件分岐命令とをレジスタ設定命令生成ステッ
プで生成した命令列で設定されたレジスタ中のアドレス
に対する無条件分岐命令に置換する比較・分岐命令置換
ステップとを実行する。
【0009】請求項2の発明において、ループ不変変数
検出部は、ループ中にループ不変変数と定数あるいは他
のループ不変変数とを比較する比較命令およびこの比較
命令に関連した条件分岐命令が存在することを検出す
る。レジスタ設定命令生成部は、ループ不変変数検出部
で検出されたループ不変変数に応じて分岐先アドレスを
レジスタに格納する命令列をループの直前に生成する。
比較・分岐命令置換部は、ループ不変変数検出部で検出
された比較命令と条件分岐命令とをレジスタ設定命令生
成部で生成された命令列で設定されたレジスタ中のアド
レスに対する無条件分岐命令に置換する。
【0010】
【実施例】以下、本発明の実施例を図面を用いて詳細に
説明する。図1は本発明の一実施例におけるコンパイラ
の最適化装置のブロック図で、この最適化装置は、ルー
プ不変変数判定部1と、レジスタ設定命令生成部2と、
比較・分岐命令置換部3とにより構成されている。ルー
プ不変変数判定部1は、ループ中にループ不変変数と定
数あるいは他のループ不変変数とを比較する比較命令お
よびこの比較命令に関連した条件分岐命令が存在するこ
とを検出する。なおこの明細書において、ループ不変変
数とは、ループ中で不変の変数をいう。レジスタ設定命
令生成部2は、ループ不変変数判定部1で検出されたル
ープ不変変数に応じて分岐先アドレスをレジスタに格納
する命令列をループの直前に生成する。比較・分岐命令
置換部3は、ループ不変変数判定部1で検出された比較
命令と条件分岐命令とをレジスタ設定命令生成部2で生
成された命令列で設定されたレジスタ中のアドレスに対
する無条件分岐命令に置換する。
【0011】図2は図4の目的プログラムに対して図1
の最適化装置を採用したコンパイラにより最適化を施し
た目的プログラムの説明図である。次に図1の最適化装
置の動作を説明する。まずループ不変変数判定部1は、
最適化前のループ34中のループ不変変数と定数とを比
較する比較命令31および条件分岐命令32とを検出す
る。ループ不変変数判定部1により検出されたループ不
変変数の内容は、ループ34に入る前の段階で既に決ま
っているので、条件分岐命令32による分岐先は、ルー
プ34に入る前の段階で決定することができる。次にレ
ジスタ設定命令生成部2は、レジスタ設定命令列11を
生成してループ12の直前に挿入する。ここで生成され
るレジスタ設定命令列11は、比較命令31の結果に応
じて条件分岐命令32の次に実行される命令のアドレス
(ラベル13のアドレスまたはラベル14のアドレス)
を特定のレジスタ(図示せず)に設定する命令列であ
る。このレジスタ設定命令列11のフローチャートを図
3に示す。なおラベル13は、条件分岐命令32におい
て分岐しなかった場合に次に実行されるアドレスに付け
られたラベルであり、ラベル14は、条件分岐命令32
において分岐した場合の分岐先アドレス(ラベル33と
同じアドレス)に付けられたラベルである。次に比較・
分岐命令置換部3は、比較命令31と条件分岐命令32
とを無条件分岐命令15に置き換える。かくして、図4
の目的プログラムと等価で実行効率の良い図2の目的プ
ログラムが生成される。
【0012】このように、ループ中のループ不変変数と
定数あるいは他のループ不変変数とを比較する比較命令
およびこの比較命令に関連した条件分岐命令を検出し、
これを単一の無条件分岐命令に置き換えるので、ループ
中の命令数を削減することができ、ループ実行時には無
用な比較命令を実行する必要がなくなることから、実行
効率の良い目的プログラムを生成することができる。
【0013】なお上記実施例では、ループ34中にルー
プ不変変数と定数とを比較する比較命令31が存在する
場合について説明したが、ループ不変変数と他のループ
不変変数とを比較する比較命令が存在する場合も同様に
取り扱うことができる。また上記実施例では、従来のコ
ンパイラで生成された目的プログラムに対して本発明の
最適化方法を適用したが、中間言語段階で本発明の最適
化方法を適用して直接最適化された目的プログラムを生
成してもよい。
【0014】
【発明の効果】以上説明したように本発明によれば、ル
ープ中のループ不変変数に対する比較・条件分岐命令を
検出して、単一の無条件分岐命令に置き換えるので、ル
ープ中の命令数を削減でき、実行効率を良好に向上させ
ることができるという優れた効果を奏する。
【図面の簡単な説明】
【図1】本発明の一実施例における最適化装置のブロッ
ク図である。
【図2】本発明の一実施例における最適化装置を採用し
たコンパイラにより生成された目的プログラムの説明図
である。
【図3】本発明の一実施例における最適化装置を採用し
たコンパイラにより生成された目的プログラムにおける
レジスタ設定命令列のフローチャートである。
【図4】従来のコンパイラにより生成された目的プログ
ラムの説明図である。
【符号の説明】
1 ループ不変変数判定部 2 レジスタ設定命令生成部 3 比較・分岐命令置換部

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 高級プログラミング言語で記述された原
    始プログラムを入力として目的プログラムを生成するコ
    ンパイラに採用される最適化方法であって、ループ中に
    ループ不変変数と定数あるいは他のループ不変変数とを
    比較する比較命令およびこの比較命令に関連した条件分
    岐命令が存在することを検出するループ不変変数検出ス
    テップと、このループ不変変数検出ステップで検出した
    前記ループ不変変数に応じて分岐先アドレスをレジスタ
    に格納する命令列を前記ループの直前に生成するレジス
    タ設定命令生成ステップと、前記ループ不変変数検出ス
    テップで検出した前記比較命令と前記条件分岐命令とを
    前記レジスタ設定命令生成ステップで生成した前記命令
    列で設定された前記レジスタ中のアドレスに対する無条
    件分岐命令に置換する比較・分岐命令置換ステップとを
    実行することを特徴とするコンパイラの最適化方法。
  2. 【請求項2】 高級プログラミング言語で記述された原
    始プログラムを入力として目的プログラムを生成するコ
    ンパイラに採用される最適化装置であって、ループ中に
    ループ不変変数と定数あるいは他のループ不変変数とを
    比較する比較命令およびこの比較命令に関連した条件分
    岐命令が存在することを検出するループ不変変数検出部
    と、このループ不変変数検出部で検出された前記ループ
    不変変数に応じて分岐先アドレスをレジスタに格納する
    命令列を前記ループの直前に生成するレジスタ設定命令
    生成部と、前記ループ不変変数検出部で検出された前記
    比較命令と前記条件分岐命令とを前記レジスタ設定命令
    生成部で生成された前記命令列で設定された前記レジス
    タ中のアドレスに対する無条件分岐命令に置換する比較
    ・分岐命令置換部とを備えたことを特徴とするコンパイ
    ラの最適化装置。
JP3184355A 1991-07-24 1991-07-24 コンパイラの最適化方法および最適化装置 Pending JPH0527986A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3184355A JPH0527986A (ja) 1991-07-24 1991-07-24 コンパイラの最適化方法および最適化装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3184355A JPH0527986A (ja) 1991-07-24 1991-07-24 コンパイラの最適化方法および最適化装置

Publications (1)

Publication Number Publication Date
JPH0527986A true JPH0527986A (ja) 1993-02-05

Family

ID=16151801

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3184355A Pending JPH0527986A (ja) 1991-07-24 1991-07-24 コンパイラの最適化方法および最適化装置

Country Status (1)

Country Link
JP (1) JPH0527986A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010085177A (ja) * 2008-09-30 2010-04-15 Yokogawa Electric Corp 半導体試験装置
US9588747B2 (en) 2013-09-27 2017-03-07 Samsung Electronics Co., Ltd. Method and apparatus for converting programs

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010085177A (ja) * 2008-09-30 2010-04-15 Yokogawa Electric Corp 半導体試験装置
US9588747B2 (en) 2013-09-27 2017-03-07 Samsung Electronics Co., Ltd. Method and apparatus for converting programs

Similar Documents

Publication Publication Date Title
US11216258B2 (en) Direct function call substitution using preprocessor
US6233733B1 (en) Method for generating a Java bytecode data flow graph
JPH06314203A (ja) コンパイラの最適化方法および装置
JP2000222220A (ja) 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
JPH0883185A (ja) コンパイラ
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US6120552A (en) Method to exhibit parallelism for computer implementation of computational processing
JPH0527986A (ja) コンパイラの最適化方法および最適化装置
US20050144605A1 (en) Information processing system and code generation method
US8117604B2 (en) Architecture cloning for power PC processors
US7080204B2 (en) Cache controller computer system and method for program recompilation
JPH0756745A (ja) 言語処理プログラムのコンパイラ処理方式
US11301252B2 (en) Executing mutually exclusive vector instructions according to a vector predicate instruction
KR20080045545A (ko) 조건부 영역을 전처리하는 방법
US20020049965A1 (en) Compiler
JP3608446B2 (ja) コンパイラ装置とプロセッサ
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
JPH09265400A (ja) コンパイル最適化方式
JP2564904B2 (ja) プログラム最適化処理方法
JP2001265605A (ja) コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム
JPH11195011A (ja) 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体
JPH11296368A (ja) プロセッサ、コンパイラ及び命令列変換装置
JPH05189243A (ja) 条件付演算のコンパイル処理装置
JPH11272650A (ja) 動的ベクトル化装置および記録媒体
JPH05224926A (ja) 条件分岐命令制御方式