JPH0546404A - 分岐命令削除最適化方式 - Google Patents

分岐命令削除最適化方式

Info

Publication number
JPH0546404A
JPH0546404A JP20022291A JP20022291A JPH0546404A JP H0546404 A JPH0546404 A JP H0546404A JP 20022291 A JP20022291 A JP 20022291A JP 20022291 A JP20022291 A JP 20022291A JP H0546404 A JPH0546404 A JP H0546404A
Authority
JP
Japan
Prior art keywords
branch
instruction
branch instruction
intermediate language
operands
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
JP20022291A
Other languages
English (en)
Inventor
Yuuki Tachikawa
結貴 立川
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP20022291A priority Critical patent/JPH0546404A/ja
Publication of JPH0546404A publication Critical patent/JPH0546404A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 本発明は、翻訳時に分岐命令を削除して最適
化する分岐命令削除最適化方式に関し、翻訳時に、既に
分岐命令の分岐先が確定する分岐命令を削除し、実行性
能を向上させることを目的とする。 【構成】 ソースプログラム(中間言語)の判定文のオ
ペランドが定数のときあるいは変数が同じときに、分岐
命令を削除する比較・分岐削除処理2を備え、この比較
・分岐削除処理2が翻訳時にソースプログラム(中間言
語)の判定文のオペランドが全て定数のときあるいはオ
ペランドの変数が同じときに、当該判定文および分岐先
でない方の命令を削除し、最適化するように構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、翻訳時に分岐命令を削
除して最適化する分岐命令削除最適化方式に関するもの
である。
【0002】
【従来の技術】ソースプログラムに判定文を書いた場
合、機械命令では分岐命令になる。従来のコンパイラ
は、翻訳時に分岐先が確定している分岐命令であっても
分岐命令を削除していなくそのまま翻訳し、機械命令を
生成していた。例えば図5の(イ)に示すC言語のソー
スプログラム(中間言語)のif文 について、最適化を行うと、図5の(ロ)に示すよう
に、当該if文のオペランドa、bに値が置き換えら
れ、下記のようにしていた。
【0003】
【0004】
【発明が解決しようとする課題】このように、従来はi
f文などで分岐先が確定していても、図5の(イ)を最
適化によって図5の(ロ)に示すようにif文などのオ
ペランドに値(定数)を置き換え、これを機械語に翻訳
していたため、機械語で分岐命令の分だけ実行時間が多
く必要になってしまい、実行性能が悪くなると共に、実
行しない個所があり、余分な機械語が残ってしまい、ロ
ードモジュールのサイズを大きくしてしまうという問題
があった。このため、実行しない個所を最適化して削除
することが望まれている。
【0005】本発明は、翻訳時に、既に分岐命令の分岐
先が確定する分岐命令を削除し、実行性能を向上させる
ことを目的としている。
【0006】
【課題を解決するための手段】図1を参照して課題を解
決するための手段を説明する。図1において、比較・分
岐削除処理2は、ソースプログラム(中間言語)4の判
定文のオペランドが定数かあるいは変数が同じかを比較
したり、分岐命令を削除したりするものである。
【0007】ソースプログラム(中間言語)4は、最適
化対象のソースプログラムを変換した中間言語である。
【0008】
【作用】本発明は、図1に示すように、比較・分岐削除
処理2が翻訳時にソースプログラム(中間言語)4を順
次取込み、判定文のオペランドが全て定数であった場
合、あるいはオペランドの変数が全て同じであった場
合、ソースプログラム(中間言語)4の判定文および分
岐先でない方の命令を削除し、最適化を行うようにして
いる。
【0009】従って、翻訳時に、既に分岐命令の分岐先
が確定する分岐命令の判定文および分岐先でない方の命
令を削除し、実行性能を向上させることが可能となる。
【0010】
【実施例】次に、図1から図4を用いて本発明の実施例
の構成および動作を順次詳細に説明する。
【0011】図1において、コンパイラ1は、ソースプ
ログラムを読込み、中間言語に変換したり、この中間言
語について最適化を行ったり、最適化後の中間言語を機
械語に翻訳したりなどするものであって、ここでは、本
発明の比較・分岐削除処理2などから構成されるもので
ある。
【0012】比較・分岐削除処理2は、ソースプログラ
ム(中間言語)4の判定文のオペランドが定数である
か、あるいは変数が同じかを比較したり、分岐命令を削
除したりするものである。例えばif文 のうちのif(a==b)のオペランドaと、bとが定
数か否かを判定する。これが例えば図3の(イ)のよう
にif(10==8)と判明したときにオペランドa、
bが共に定数となり、削除対象と判定する。
【0013】メモリ3は、ソースプログラム(中間言
語)4などを格納するメモリである。ソースプログラム
(中間言語)4は、本実施例の判定文を削除する対象
の、ソースプログラムを変換した中間言語である。右側
のフローは、左側のソースプログラム(中間言語)の処
理をイメージ図として表示したものである。ここでin
t a,b,x;/変数a、b、xは整数である a=10;/変数aの値は10である b=8;/変数bの値は8である 次に、図2のフローチャートに示す順序に従い、図3
の(イ)の最適化前の状態から図3の(ロ)の最適化後
の状態を生成する処理を詳細に説明する。
【0014】図2において、S1は、命令は残っている
か否かを判別する。これは、図3の(イ)の最適化前の
状態(ソースプログラムを変換した中間言語の本発明の
最適化前の状態)で命令を先頭から順次取込み、未処理
の命令が残っているか否かを判別する。NOの場合に
は、終了する。YESの場合には、S2で次の命令(中
間言語の命令)を1つ読み出し、S3に進む。
【0015】S3は、命令が分岐命令か否かを判別す
る。YESの場合には、本発明の最適化の対象の分岐命
令であったので、S4に進む。NOの場合には、本発明
の最適化の対象の分岐命令でなかったので、S1を繰り
返し行う。
【0016】S4は、分岐命令のオペランドが全て定数
か否かを判別する。これは、例えばif文がif(a=
=b)のときオペランドa、bが共に定数であるか否か
を判別する。YESの場合には、分岐命令のオペランド
が全て定数であって、分岐先が確定しているので、当該
分岐命令を削除できることが判明したので、S6に進
み、オペランドと分岐条件から真か偽か判定し、真のと
きにS7で分岐命令と偽のときの命令とを削除し、偽の
ときにS8で分岐命令と真のときの命令とを削除する。
一方、S4でNOの場合、オペランドが全て定数でなか
ったので、S5に進む。
【0017】S5は、分岐命令のオペランドの変数が同
じか否かを判別する。YESの場合には、S6に進み、
オペランドと分岐条件から真か偽かを判定し、真のとき
にS7で分岐命令と偽のときの命令を削除し、偽のとき
にS8で分岐命令と真のときの命令を削除する。
【0018】具体的に説明すると、図3の(イ)におい
て、if文である のうちのif(10==8)のオペランド10、8が共
に定数であると判明したので(図2のS4のYES)、
オペランドと分岐条件からここでは偽と判定し(図2の
S6の偽)、分岐命令if(10==8)と、真のとき
の命令x=18を削除し、上記一連のif文を x=2; とする。これにより、図3の(イ)の最適化前の状態の
中間言語が、図3の(ロ)の最適化後の中間言語に最適
化されることとなる。
【0019】以上のように、最適化前の状態の中間言語
の命令を1つ1つ読込み、分岐命令であった場合に、こ
の分岐命令のオペランドが全て定数であったとき、ある
いは全て同一の変数であったとき、分岐先が確定したの
で、分岐命令および分岐先以外の命令を削除してもよ
い。これにより、翻訳時に分岐先の確定した無意味の分
岐命令を削除して最適化を行うことが可能となる。
【0020】図3は、具体例説明図を示す。これは、c
言語のif文の最適化の場合のものである。図3の
(イ)は、ソースプログラムを変換した中間言語の最適
化前の状態を示す。左側は中間言語のif文を示し、右
側はそのときの処理のフローをイメージ図として表わし
たものを示す。
【0021】ここで、if文であるif(10==8)
のオペランド10、8が共に定数であり、偽であるので
(図2のS1のYES、S2、S3のYES、S4のY
ES、S5の偽であるので)、図2のS8で分岐命令で
ある if(10==8) と、真のときの命令である x=18; と、if文に付随したelseなどを削除し、図3の
(ロ)に示すようにする。
【0022】図3の(ロ)は、図3の(イ)の最適化前
の状態の中間言語を、最適化した後の中間言語を示す。
ここで、図3の(イ)の のif文および真の命令などを削除し、 x=2; に最適化している。
【0023】図4は、本発明の他の具体例説明図を示
す。これは、c言語のswitch文の最適化の場合の
ものである。図4の(イ)は、ソースプログラムを変換
した中間言語の最適化前の状態を示す。左側は中間言語
のswitch文を示し、右側はそのときの処理のフロ
ーをイメージ図として表わしたものを示す。
【0024】ここで、switch文であるswitc
h(c)のオペランドcが定数2であるので(図2のS
1のYES、S2、S3のYES、S4のYES、S5
の真であるので)、図2のS7で分岐命令である switch(c) と、偽の命令である case 1: x=a+b; break case 3: x=a/b; break default: x=a*b; break などを削除し、図4の(ロ)に示すようにする。
【0025】図4の(ロ)は、図4の(イ)の最適化前
の状態の中間言語を、最適化した後の中間言語を示す。
ここで、図4の(イ)の からswitch文および偽の命令などを削除し、 に最適化している。
【0026】
【発明の効果】以上説明したように、本発明によれば、
翻訳時に、既に分岐命令の分岐先が確定する分岐命令の
判定文および分岐先でない方の命令を削除して最適化を
行う構成を採用しているため、翻訳性能を向上させ、翻
訳した後の機械語の実行時に分岐命令の実行を無くして
実行速度を向上させることができる。
【図面の簡単な説明】
【図1】本発明の1実施例構成図である。
【図2】本発明の動作説明フローチャートである。
【図3】本発明の具体例説明図である。
【図4】本発明の他の具体例説明図である。
【図5】従来技術の説明図である。
【符号の説明】
1:コンパイラ 2:比較・分岐削除処理 3:メモリ 4:ソースプログラム(中間言語)

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 翻訳時に分岐命令を削除して最適化する
    分岐命令削除最適化方式において、 ソースプログラム(中間言語)の判定文のオペランドが
    定数のときあるいは変数が同じときに、分岐命令を削除
    する比較・分岐削除処理(2)を備え、 この比較・分岐削除処理(2)が翻訳時にソースプログ
    ラム(中間言語)の判定文のオペランドが全て定数のと
    きあるいはオペランドの変数が同じときに、当該判定文
    および分岐先でない方の命令を削除し、最適化するよう
    に構成したことを特徴とする分岐命令削除最適化方式。
JP20022291A 1991-08-09 1991-08-09 分岐命令削除最適化方式 Pending JPH0546404A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20022291A JPH0546404A (ja) 1991-08-09 1991-08-09 分岐命令削除最適化方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20022291A JPH0546404A (ja) 1991-08-09 1991-08-09 分岐命令削除最適化方式

Publications (1)

Publication Number Publication Date
JPH0546404A true JPH0546404A (ja) 1993-02-26

Family

ID=16420841

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20022291A Pending JPH0546404A (ja) 1991-08-09 1991-08-09 分岐命令削除最適化方式

Country Status (1)

Country Link
JP (1) JPH0546404A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0744397A (ja) * 1993-07-30 1995-02-14 Nec Corp プログラム処理高速化方式
JPH07152583A (ja) * 1993-11-30 1995-06-16 Nec Corp 実行形式ファイル生成装置
US6440062B1 (en) 1999-11-10 2002-08-27 Asahi Kogaku Kogyo Kabushiki Kaisha Control wire driving mechanism for use in endoscope
WO2009098739A1 (ja) * 2008-02-05 2009-08-13 Panasonic Corporation プログラム最適化装置およびプログラム最適化方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0744397A (ja) * 1993-07-30 1995-02-14 Nec Corp プログラム処理高速化方式
JPH07152583A (ja) * 1993-11-30 1995-06-16 Nec Corp 実行形式ファイル生成装置
US6440062B1 (en) 1999-11-10 2002-08-27 Asahi Kogaku Kogyo Kabushiki Kaisha Control wire driving mechanism for use in endoscope
WO2009098739A1 (ja) * 2008-02-05 2009-08-13 Panasonic Corporation プログラム最適化装置およびプログラム最適化方法
JPWO2009098739A1 (ja) * 2008-02-05 2011-05-26 パナソニック株式会社 プログラム最適化装置およびプログラム最適化方法

Similar Documents

Publication Publication Date Title
JPH0721033A (ja) 言語処理装置及びその方法
JPH0546404A (ja) 分岐命令削除最適化方式
JP2636665B2 (ja) 実行情報採取装置
JP3430635B2 (ja) 定数参照最適化処理装置
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JP3239830B2 (ja) 移送命令最適化装置および方法
JPH05113882A (ja) 中間フアイルによる外付けマン・マシン・インターフエース実現方式
JP3004340B2 (ja) プログラム最適化装置
JPS5852752A (ja) セクション決定方式
JPH0527986A (ja) コンパイラの最適化方法および最適化装置
JPS63318634A (ja) 命令先取り方式
JPH0644082A (ja) 最適化テキスト作成方式
JPH0776926B2 (ja) ループ制御処理方法
JPH05100720A (ja) プログラムの管理装置
JPH09330231A (ja) インタプリタ実行装置
JP3327634B2 (ja) プログラム変換装置、およびプログラム変換方法
JPH04116756A (ja) アプリケーション内のユーザ定義コマンドのダイナミックリンクシステム
JPH04323731A (ja) 最適化テキスト編集方式
JPH1124939A (ja) プログラム変換方法
JPS60220468A (ja) ベクトル演算制御方式
JPS6297031A (ja) 仮数部のビツト数整合方式
KR19990069515A (ko) 피엘씨 시스템의 데이터 실시간 처리장치 및 방법
JPH05158706A (ja) 中間言語の最適化処理方式
JPH05158507A (ja) 計装制御装置
JPH05151000A (ja) 最適な内部呼び出し命令の生成処理方式

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20001024