JP2001265605A - コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム - Google Patents

コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム

Info

Publication number
JP2001265605A
JP2001265605A JP2001003885A JP2001003885A JP2001265605A JP 2001265605 A JP2001265605 A JP 2001265605A JP 2001003885 A JP2001003885 A JP 2001003885A JP 2001003885 A JP2001003885 A JP 2001003885A JP 2001265605 A JP2001265605 A JP 2001265605A
Authority
JP
Japan
Prior art keywords
program
block
compiler
branch
instruction
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
JP2001003885A
Other languages
English (en)
Inventor
Yutaka Yamanaka
豊 山中
Akira Kusakabe
明 日下部
Tadashi Sugimoto
直史 杉本
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 JP2001003885A priority Critical patent/JP2001265605A/ja
Publication of JP2001265605A publication Critical patent/JP2001265605A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】分岐命令の低減を図ることのできるコンパイラ
装置を提供すること。 【解決手段】コンパイラ1の最適化実行部12は、原始
プログラム1から変換された第1中間言語プログラム1
4に含まれる複数の比較分岐ブロックを、1つの比較分
岐命令ブロックに融合した第2中間言語プログラム15
を生成する。そのプログラム15をオブジェクトプログ
ラム2に変換することで、分岐命令の数が低減される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、計算機のオブジェ
クトプログラムに原始プログラムを変換するコンパイラ
の命令列最適化方法、コンパイラ装置、記録媒体、及び
プログラムに関する。
【0002】言語プロセッサとして知られたコンパイラ
は、FORTRAN,C,COBOL,PL/Iなどの
プログラミング言語で記述された原始プログラムを、計
算機で実行可能なアセンブラ語や機械語に変換してオブ
ジェクトプログラムを作成する。
【0003】このようなコンパイラにあっては、中間コ
ードへの変換生成が済んだ段階で、コードの最適化処理
を行っている。このコードの最適化を行うことで、原始
プログラムから最小容量で且つ最も早い速度で実行する
命令列のオブジェクトプログラムに変換することがで
き、コンパイラの性能向上に大きく貢献する。
【0004】
【従来の技術】従来、計算機の原始プログラムからオブ
ジェクトプログラムを生成するコンパイラの処理では、
よく知られているように、先ず原始プログラムの構文解
析を行い、解析結果に基づいて原始プログラムを中間テ
キストと呼ばれる内部コードで表現した中間言語プログ
ラムに変換し、次に中間言語プログラムからオブジェク
トプログラムを生成する。
【0005】ここで、中間言語プログラムとは、コンパ
イル処理の便宜のために、目的プログラムを実行するプ
ロセッサの機械語命令に、より近い表現として定めた言
語で記述されたプログラムである。
【0006】また、このようなコンパイラの処理におい
て、プログラムの実行時間やメモリ使用量の削減などの
ためにプログラムを変換する最適化が行われている。最
適化では、処理の流れに沿って命令順序の入れ替えやレ
ジスタの変更等のスケジューリングを行い、コードの変
更や結果を変えない範囲で命令の順序を入れ替える等の
処理を行う。
【0007】
【発明が解決しようとする課題】ところで、プログラム
中の分岐命令の存在はスケジューリング範囲を狭め、実
行速度を低下させる要因となっている。そのため、分岐
命令を減少させるために、分岐確率を求めその確率の大
きい方の分岐路をシーケンシャルな命令実行によって通
るように最適化するものや、分岐命令を無効化するもの
等の手法が考えられる。
【0008】しかし、分岐を完全に予測することは難し
く、また、条件に満たないため無効化できない分岐命令
が存在していた。このため、プログラムの実行速度を削
減することが難しかった。
【0009】本発明は上記問題点を解決するためになさ
れたものであって、その目的は分岐命令の低減を図るこ
とのできるコンパイラの命令列最適化方法、コンパイラ
装置、記録媒体、及びプログラムを提供することにあ
る。
【0010】
【課題を解決するための手段】上記目的を達成するた
め、本発明によれば、原始プログラムの命令列を計算機
に対応する目的プログラムに変換するコンパイラにおい
て、前記原始プログラムの所定の命令に対応して変換さ
れた複数の分岐命令をそれぞれ含む複数のブロックを、
少なくとも1つの分岐命令を含む1つのブロックに融合
する。これにより、分岐命令の数が低減し、プログラム
の実行速度の向上が図られる。
【0011】また、前記融合後のブロックが不具合を発
生する場合に該ブロックの融合を抑止することで、意図
しない動作を実行するコード生成を防ぐことができる。
請求項5に記載の発明は、原始プログラムの命令列を計
算機に対応する目的プログラムに変換するコンパイラ装
置において、前記原始プログラムを解析して第1の中間
プログラムを生成する原始プログラム解析部と、前記第
1の中間プログラムの複数の分岐命令を含むブロックを
1つのブロックに融合した第2の中間プログラムを生成
する最適化実行部と、前記第2の中間プログラムを前記
目的プログラムに変換するスケジューリング及びコード
生成部とを備えた。
【0012】
【発明の実施の形態】以下、本発明を具体化した一実施
の形態を図1〜図7に従って説明する。図1は、コンパ
イラ装置の内部構成を示すブロック図である。
【0013】コンパイラ装置1は、原始プログラム2を
入力し、直接計算機にて実行可能な機械語あるいはそれ
に近いアセンブリ言語のオブジェクトプログラム3に変
換する。
【0014】コンパイラ装置1は、原始プログラム解析
部11、最適化実施部12、スケジューリング及びコー
ド生成部13を有する。原始プログラム解析部11は、
入力した原始プログラム2の構文解析を行い、その解析
後原始プログラム2を中間テキストと呼ばれる内部コー
ドで表現した第1中間言語プログラム14に変換する。
【0015】最適化実施部12は、分岐命令融合機能
と、融合抑止機能を持つ。命令融合機能は、所定の第1
の条件を満たす複数の分岐命令を1つの分岐命令に融合
する機能であり、融合抑止機能は、上記の複数の分岐命
令が所定の第2の条件を満たすときに上記融合機能を抑
止する機能である。
【0016】第1の条件は、以下のとおりである。 (1)複数の分岐命令が連続する、又は所定の命令を挟
んで連続している。 (2)各分岐命令の分岐先が同一ブロックである。
【0017】最適化実行部12は、中間言語プログラム
14を入力し、そのプログラム14に含まれる分岐命令
が上記第1の条件を満たすか否かを判定する。そして、
最適化実行部12は、第1の条件を満たす複数の分岐命
令を融合した1つの分岐命令を得る。
【0018】分岐命令の融合は、論理積や論理和などの
論理演算により実現される。最適化実行部12は、複数
の分岐命令を論理演算して1つの分岐命令を得る、又は
各分岐命令に先行する比較命令等の命令又はその命令を
実行した結果を論理演算し、その演算結果に基づく1つ
の分岐命令を配置する。
【0019】例えば、分岐命令は、if文など(if文
の入れ子も含む)を展開した中間言語プログラム14に
おいて、処理を排他に制御するような場合に使用され
る。if文は、少なくともif節ブロックとthen節
ブロックを含み、処理によってelse節ブロックを含
むこともある。
【0020】if節ブロックは、比較命令(判定処理)
とその比較結果に基づいて所定のブロックに分岐する分
岐命令を含む比較分岐ブロックに展開される。そして、
if節ブロックに比較演算子が複数記述されている場
合、そのif節ブロックは記述された比較演算子の数の
比較分岐ブロックに展開される。
【0021】最適化実行部12は、このように比較命令
を挟んで連続する分岐命令を認識し、各分岐命令を論理
演算して1つの分岐命令を得る、又は各比較命令又はそ
の結果を論理演算して1つの分岐命令を配置する。この
ようにして、最適化実行部12は複数の分岐命令を1つ
の分岐命令に融合する。
【0022】第2の条件は、上記の第1の条件を満たす
複数の分岐命令を融合した結果が原始プログラムの意図
しない処理を行う内部コード列になるのを防ぐために設
定された条件であり、例えば以下のとおりである。 (1)2つの判定処理において、判定する変数がポイン
タ変数である。 (2)同一の変数に対する判定を行っている。 (3)最初の判定処理にNULLが存在する場合。
【0023】最適化実行部12は、複数の分岐命令を含
むブロック(例えば、上記の比較分岐ブロック)に含ま
れる判定処理が上記の第2の条件を満たすか否かを判定
し、その判定結果に基づいて、上記第2の条件を満たす
分岐命令に対する分岐命令融合機能を抑止する。
【0024】このようにして、最適化実施部12は、連
続する複数の分岐命令を1つの分岐命令に融合して最適
化した内部コード列からなる第2中間言語プログラム1
5を作成する。
【0025】スケジューリング及びコード生成部13
は、第2中間言語プログラム15を入力し、そのプログ
ラムのスケジューリングを行い、その後ターゲットとす
る計算機に対応して生成したハードウェア命令を含むオ
ブジェクトプログラム3を生成する。
【0026】尚、上記コンパイラ1は、1又は複数の計
算機上で実行するコンピュータプログラムにより実現す
ることもできる。即ち、図2に示すように、計算機20
は、処理装置21、入出力装置22、主記憶装置23、
補助記憶装置24などから構成され、コンピュータプロ
グラムを実行するものであり、コンピュータプログラム
は、フロッピー(登録商標)ディスクやCD−ROM等
の可搬型記録媒体25やネットワーク接続された他の計
算機の主記憶装置や補助記憶装置等に格納されて提供さ
れる。
【0027】提供されたコンピュータプログラムは、可
搬型媒体25から一旦補助記憶装置24にコピーまたは
インストール後に主記憶装置23にロードされ、または
可搬型媒体25から直接計算機20の主記憶装置23に
ロードされ実行する。また、ネットワーク接続された他
の装置に格納されて提供された場合も、他の装置からネ
ットワークを経由して受信後に補助記憶装置24にコピ
ーまたはインストール後に主記憶装置23にロードさ
れ、または直接主記憶装置23にロードされ実行するも
のである。
【0028】次に、上記のように構成されたコンパイラ
装置1の作用を説明する。先ず、命令融合機能を、図3
〜図6に従って説明する。図3は、C言語にて記述され
た原始プログラム2の一部と、それを展開した中間言語
プログラム14及びその操作内容を示す。尚、図では、
内部コードをアセンブラのイメージで表している。
【0029】この原始プログラム2は、「if〜the
n〜else」型プログラムの一例を示し、if節ブロ
ック31、then節ブロック32、else節ブロッ
ク33からなる。if節ブロック31には条件式(x==1
&& y==1)が含まれている。尚、「==」は比較演算の記
号、「&&」は論理積の記号である。
【0030】この条件式によりif節ブロック31は、
中間言語プログラム14において、2つの比較分岐ブロ
ック41,42に展開される。そして、then節ブロ
ック32はthen節ブロック43に、else節ブロ
ック33はelse節ブロック44に展開される。そし
て、各ブロック41〜44には処理ブロックを表現する
ためのラベルlab_000:〜lab_003:が付
けられる。尚、中間言語プログラム14のブロック45
はif文の次の文を展開したブロックであり、ラベルl
ab_004が付されている。
【0031】この中間言語プログラム14において、分
岐命令はブロック41,42に含まれる分岐命令[b
r](iccs.z等の条件コードで示され、1つ前の
cmp命令により得られた結果により分岐する命令)と
ブロック43のジャンプ命令(無条件分岐命令)[go
to]である。これら分岐命令によって、中間言語プロ
グラム14は、図4のフローチャートに示す流れとな
る。尚、図4の各処理には、図3に於けるブロックの符
号を付して対応関係を解りやすくしている。
【0032】これらの命令の内、2つの分岐命令[b
r]は、1つ前の命令[cmp]により得られた結果に
基づいて条件コード[iccs.z]により同じブロッ
クであるラベルlab_003に分岐する。従って、図
1の最適化実行部12は、この2つの分岐命令[br]
を含む比較分岐ブロック41,42を融合する。その融
合結果を図5,6に示す。
【0033】融合後の中間言語プログラム15は、if
節ブロック31は1つの比較分岐ブロック51に、th
en節ブロック32はthen節ブロック52に、el
se節ブロック33はelse節ブロック53にそれぞ
れ展開される。ブロック54はif文の次の文を展開し
たブロックである。
【0034】比較分岐ブロック51は、2つの比較命令
[cmp]、論理積命令[and]、分岐命令[br]
からなる。そして、この中間言語プログラム15におい
て、分岐命令はブロック51の分岐命令[br]とブロ
ック52のジャンプ命令[goto]である。これら分
岐命令によって、中間言語プログラム15は、図6のフ
ローチャートに示す流れとなる。尚、図6の各処理に
は、図5に於けるブロックの符号を付して対応関係を解
りやすくしている。
【0035】このように、中間言語プログラム14の2
つの比較分岐ブロック41,42を、中間言語プログラ
ム15の1つの比較分岐ブロック51に融合すること
で、分岐命令の数を減らすとともに、処理の流れを単純
にすることができる。
【0036】次に、融合抑止機能を図7を用いて説明す
る。図7の原始プログラム2aは、分岐命令融合処理に
より不具合が発生する典型例を示す。この原始プログラ
ム2aはif節ブロック61、then節ブロック6
2、else節ブロック63からなる。if節ブロック
61は、条件式(p!=NULL && *p==10) を含む。尚、「!
=」「==」は比較演算の記号、「&&」は論理積の記号、
「*p」は変数pの値をアドレスとして示される記憶領域
の内容を指し示す記号(pのポインタ)である。
【0037】通常、条件式(p!=NULL) が真であれば条件
式(*p==10)を判定する。一方、条件式(p!=NULL) が偽で
あれば条件式(*p==10)の判定処理はせず、次の処理を行
う。しかし、2つの比較分岐ブロックを融合することで
優先順位がなくなり、2つの判定処理が必ず実行されて
しまう。即ち、条件式(p!=NULL) が偽であっても次の条
件式(*p==10)の判定処理(アドレスpに記憶された内容
が10か否かを判断する)を行ってしまうため、「*p」
によって0アクセス(0番地をアクセスすること)し、
意図しない結果になってしまう可能性がある。
【0038】そのため、最適化実行部12は、融合抑止
機能によって、このような原始プログラム2aにおける
分岐命令の融合を抑止する。これにより、原始プログラ
ム2aから変換されたオブジェクトプログラムが意図し
ない結果を招くことが防がれる。
【0039】以上記述したように、本実施の形態によれ
ば、以下の効果を奏する。 (1)最適化実行部12は、原始プログラム2のif節
ブロック31から変換された2つの比較分岐ブロック4
1,42を、1つの比較分岐命令ブロック51に融合し
た。その結果、分岐命令の数を低減し、プログラムの実
行速度の向上を図ることができる。
【0040】(2)原始プログラム2aのように、融合
後のブロックが不具合を発生する場合にそのブロックの
融合を抑止するようにした。その結果、意図しない動作
を実行するコード生成を防ぐことができる。
【0041】尚、前記実施形態は、以下の態様に変更し
てもよい。 ○上記実施形態では、if節ブロック31から変換した
2つの比較分岐ブロック41,42を1つのブロック5
1に融合して分岐命令の数を低減するようにしたが、t
hen節ブロック及びelse節ブロックに含まれるi
f節ブロックを変換した複数の比較分岐ブロックを1つ
の比較分岐ブロックに融合しても良い。また、その他の
原始プログラムの命令に基づいて生成された分岐命令を
含む複数のブロックを1つのブロックに融合するように
してもよい。
【0042】○上記実施形態では、プログラミング言語
としてC言語にて記述した原始プログラム2をオブジェ
クトプログラム3に変換するコンパイラ1に具体化した
が、他のプログラミング言語としてFORTRAN、C
OBOL、PL/Iなどで記述された原始プログラムを
オブジェクトプログラムに変換するコンパイラ装置(コ
ンパイラプログラム)に具体化しても良い。また上記の
実施形態にあっては、説明の都合上、中間言語プログラ
ム14,15をアセンブリ語で表現しているが、本発明
はこれによる限定は受けない。
【0043】○上記実施形態では、複数の比較分岐ブロ
ックを1つのブロックに融合する第1の条件として2つ
の条件を例示したが、1つのブロックに融合可能であれ
ば上記条件に限定されない。
【0044】また、分岐命令融合機能を抑止する第2の
条件として3つの条件を例示したが、これは図7に示す
原始プログラム2aに対するものであり、分岐命令を融
合した結果が意図しない処理を行う場合であれば、上記
条件に限定されることなく分岐命令融合処理を抑止する
ことはいうまでもない。
【0045】以上の実施形態をまとめ、本発明の構成に
関する以下の事項を開示する。 (付記1) 原始プログラムの命令列を計算機に対応す
る目的プログラムに変換するコンパイラにおいて、前記
原始プログラムの所定の命令に対応して変換された複数
の分岐命令をそれぞれ含む複数のブロックを、少なくと
も1つの分岐命令を含む1つのブロックに融合すること
を特徴とするコンパイラの命令列最適化方法。 (付記2) 前記融合後のブロックが不具合を発生する
場合に該ブロックの融合を抑止することを特徴とする付
記1に記載のコンパイラの命令列最適化方法。 (付記3) 前記各分岐命令が第1の条件を満たすか否
かを判定し、前記各分岐命令が前記第1の条件を満たす
場合に前記複数のブロックを1つのブロックに融合する
ことを特徴とする付記1に記載のコンパイラの命令列最
適化方法。 (付記4) 前記各分岐命令は原始プログラムのif文
により生成された複数の比較分岐ブロックに含まれるも
のであり、各分岐命令が同一ブロックに分岐する場合に
複数の比較分岐ブロックを1つの比較分岐ブロックに融
合することを特徴とする付記1に記載のコンパイラの命
令列最適化方法。 (付記5) 前記複数の分岐命令を含む各ブロックの所
定の命令が、前記不具合に対応して設定された第2の条
件を満たすか否かを判定し、前記所定の命令が前記第2
の条件を満たす場合に前記ブロックの融合を抑止するこ
とを特徴とする付記2に記載のコンパイラの命令列最適
化方法。 (付記6) 原始プログラムの命令列を計算機に対応す
る目的プログラムに変換するコンパイラ装置において、
前記原始プログラムの所定の命令に対応して変換された
複数の分岐命令をそれぞれ含む複数のブロックを、少な
くとも1つの分岐命令を含む1つのブロックに融合する
最適化実行部を備えたことを特徴とするコンパイラ装
置。 (付記7) 前記最適化実行部は、前記融合後のブロッ
クが不具合を発生する場合に該ブロックの融合を抑止す
ることを特徴とする付記6に記載のコンパイラ装置。 (付記8) 原始プログラムの命令列を計算機に対応す
る目的プログラムに変換するコンパイラ装置において、
前記原始プログラムを解析して第1の中間プログラムを
生成する原始プログラム解析部と、前記第1の中間プロ
グラムの複数の分岐命令を含むブロックを1つのブロッ
クに融合した第2の中間プログラムを生成する最適化実
行部と、前記第2の中間プログラムを前記目的プログラ
ムに変換するスケジューリング及びコード生成部とを備
えたことを特徴とするコンパイラ装置。 (付記9) 前記最適化実行部は、前記各分岐命令が第
1の条件を満たすか否かを判定し、前記各分岐命令が前
記第1の条件を満たす場合に前記複数のブロックを1つ
のブロックに融合することを特徴とする付記6に記載の
コンパイラ装置。 (付記10) 前記各分岐命令は原始プログラムのif
文により生成された複数の比較分岐ブロックに含まれる
ものであり、各分岐命令が同一ブロックに分岐する場合
に複数の比較分岐ブロックを1つの比較分岐ブロックに
融合することを特徴とする付記6に記載のコンパイラ装
置。 (付記11) 前記最適化実行部は、前記複数の分岐命
令を含む各ブロックの所定の命令が、前記不具合に対応
して設定された第2の条件を満たすか否かを判定し、前
記所定の命令が前記第2の条件を満たす場合に前記ブロ
ックの融合を抑止することを特徴とする付記7に記載の
コンパイラ装置。 (付記12) 原始プログラムの命令列を計算機に対応
する目的プログラムに変換するコンパイラプログラムを
記録した記録媒体であって、前記プログラムは、前記原
始プログラムの所定の命令に対応して変換された複数の
分岐命令を含むブロックを1つのブロックに融合するス
テップを含むことを特徴とする記録媒体。 (付記13) 前記プログラムは、前記融合後のブロッ
クが不具合を発生する場合に該ブロックの融合を抑止す
るステップを含むことを特徴とする付記12に記載の記
録媒体。 (付記14) 前記ステップでは、前記各分岐命令が第
1の条件を満たすか否かを判定し、前記各分岐命令が前
記第1の条件を満たす場合に前記複数のブロックを1つ
のブロックに融合することを特徴とする付記12に記載
の記録媒体。 (付記15) 前記ステップでは、前記原始プログラム
のif文により生成された複数の比較分岐ブロックに含
まれる各分岐命令が同一ブロックに分岐する場合に複数
の比較分岐ブロックを1つの比較分岐ブロックに融合す
ることを特徴とする付記12に記載の記録媒体。 (付記16) 前記ステップでは、前記複数の分岐命令
を含む各ブロックの所定の命令が、前記不具合に対応し
て設定された第2の条件を満たすか否かを判定し、前記
所定の命令が前記第2の条件を満たす場合に前記ブロッ
クの融合を抑止することを特徴とする付記13に記載の
記録媒体。 (付記17) 原始プログラムの命令列を計算機に対応
する目的プログラムに変換するコンパイラプログラムで
あって、前記原始プログラムの所定の命令に対応して変
換された複数の分岐命令を含むブロックを1つのブロッ
クに融合するステップを含むことを特徴とするプログラ
ム。 (付記18) 前記融合後のブロックが不具合を発生す
る場合に該ブロックの融合を抑止するステップを含むこ
とを特徴とする付記17に記載のプログラム。 (付記19) 前記ステップでは、前記各分岐命令が第
1の条件を満たすか否かを判定し、前記各分岐命令が前
記第1の条件を満たす場合に前記複数のブロックを1つ
のブロックに融合することを特徴とする付記17に記載
のプログラム。 (付記20) 前記ステップでは、前記原始プログラム
のif文により生成された複数の比較分岐ブロックに含
まれる各分岐命令が同一ブロックに分岐する場合に複数
の比較分岐ブロックを1つの比較分岐ブロックに融合す
ることを特徴とする付記17に記載のプログラム。 (付記21) 前記ステップでは、前記複数の分岐命令
を含む各ブロックの所定の命令が、前記不具合に対応し
て設定された第2の条件を満たすか否かを判定し、前記
所定の命令が前記第2の条件を満たす場合に前記ブロッ
クの融合を抑止することを特徴とする付記18に記載の
プログラム。
【0046】
【発明の効果】以上詳述したように、本発明によれば、
複数の分岐命令を1つに融合して分岐命令の数を低減す
ることで、目的プログラムの実行速度向上を図ることが
できる。
【0047】また、条件によって分岐命令の融合を抑止
することで、意図しないコード生成を防ぐことができ
る。
【図面の簡単な説明】
【図1】 コンパイラの内部構成の説明図である。
【図2】 システムのハードウェア構成を示す概略図で
ある。
【図3】 プログラム例による説明図である。
【図4】 分岐命令融合前のフローチャートである。
【図5】 プログラム例による説明図である。
【図6】 分岐命令融合後のフローチャートである。
【図7】 プログラム例による説明図である。
【符号の説明】
1 コンパイラ装置 2 原始プログラム 3 オブジェクトプログラム 12 最適化実施部 14,15 中間言語プログラム
───────────────────────────────────────────────────── フロントページの続き (72)発明者 杉本 直史 東京都港区芝浦四丁目15番33号 株式会社 富士通ビー・エス・シー内 Fターム(参考) 5B081 AA06 CC22

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムの命令列を計算機に対応
    する目的プログラムに変換するコンパイラにおいて、 前記原始プログラムの所定の命令に対応して変換された
    複数の分岐命令をそれぞれ含む複数のブロックを、少な
    くとも1つの分岐命令を含む1つのブロックに融合する
    ことを特徴とするコンパイラの命令列最適化方法。
  2. 【請求項2】 前記融合後のブロックが不具合を発生す
    る場合に該ブロックの融合を抑止することを特徴とする
    請求項1に記載のコンパイラの命令列最適化方法。
  3. 【請求項3】 原始プログラムの命令列を計算機に対応
    する目的プログラムに変換するコンパイラ装置におい
    て、 前記原始プログラムの所定の命令に対応して変換された
    複数の分岐命令をそれぞれ含む複数のブロックを、少な
    くとも1つの分岐命令を含む1つのブロックに融合する
    最適化実行部を備えたことを特徴とするコンパイラ装
    置。
  4. 【請求項4】 前記最適化実行部は、前記融合後のブロ
    ックが不具合を発生する場合に該ブロックの融合を抑止
    することを特徴とする請求項3に記載のコンパイラ装
    置。
  5. 【請求項5】 原始プログラムの命令列を計算機に対応
    する目的プログラムに変換するコンパイラ装置におい
    て、 前記原始プログラムを解析して第1の中間プログラムを
    生成する原始プログラム解析部と、 前記第1の中間プログラムの複数の分岐命令を含むブロ
    ックを1つのブロックに融合した第2の中間プログラム
    を生成する最適化実行部と、 前記第2の中間プログラムを前記目的プログラムに変換
    するスケジューリング及びコード生成部とを備えたこと
    を特徴とするコンパイラ装置。
  6. 【請求項6】 原始プログラムの命令列を計算機に対応
    する目的プログラムに変換するコンパイラプログラムを
    記録した記録媒体であって、 前記プログラムは、 前記原始プログラムの所定の命令に対応して変換された
    複数の分岐命令を含むブロックを1つのブロックに融合
    するステップを含むことを特徴とする記録媒体。
  7. 【請求項7】 前記プログラムは、前記融合後のブロッ
    クが不具合を発生する場合に該ブロックの融合を抑止す
    るステップを含むことを特徴とする請求項6に記載の記
    録媒体。
  8. 【請求項8】 原始プログラムの命令列を計算機に対応
    する目的プログラムに変換するコンパイラプログラムで
    あって、 前記原始プログラムの所定の命令に対応して変換された
    複数の分岐命令を含むブロックを1つのブロックに融合
    するステップを含むことを特徴とするプログラム。
  9. 【請求項9】 前記融合後のブロックが不具合を発生す
    る場合に該ブロックの融合を抑止するステップを含むこ
    とを特徴とする請求項8に記載のプログラム。
JP2001003885A 2000-01-12 2001-01-11 コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム Pending JP2001265605A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001003885A JP2001265605A (ja) 2000-01-12 2001-01-11 コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000003732 2000-01-12
JP2000-3732 2000-01-12
JP2001003885A JP2001265605A (ja) 2000-01-12 2001-01-11 コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム

Publications (1)

Publication Number Publication Date
JP2001265605A true JP2001265605A (ja) 2001-09-28

Family

ID=26583394

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001003885A Pending JP2001265605A (ja) 2000-01-12 2001-01-11 コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム

Country Status (1)

Country Link
JP (1) JP2001265605A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013210920A (ja) * 2012-03-30 2013-10-10 Nec Corp コンパイル装置、コンパイル方法及びコンパイラ
JP2015201119A (ja) * 2014-04-10 2015-11-12 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
US10108405B2 (en) 2015-08-03 2018-10-23 Fujitsu Limited Compiling apparatus and compiling method

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013210920A (ja) * 2012-03-30 2013-10-10 Nec Corp コンパイル装置、コンパイル方法及びコンパイラ
JP2015201119A (ja) * 2014-04-10 2015-11-12 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
US10108405B2 (en) 2015-08-03 2018-10-23 Fujitsu Limited Compiling apparatus and compiling method

Similar Documents

Publication Publication Date Title
US6243864B1 (en) Compiler for optimizing memory instruction sequences by marking instructions not having multiple memory address paths
US5778212A (en) Interprocedural analysis user interface
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JPH11242597A (ja) Javaバイトコードデータのフローグラフの生成方法
JP3280332B2 (ja) ループに対するバージョニングを実行する方法及び装置、配列レンジ・チェックに関する情報をベーシック・ブロック内において収集する方法及び装置、配列レンジ・チェックに関する情報を変更する方法、配列レンジ・チェック最適化方法、配列レンジ・チェックのためのコードを生成する方法、不要配列レンジ・チェック除去方法及び装置、配列レンジ・チェックを選択する方法、配列レンジ・チェック変更方法、配列レンジ・チェック収集方法、及び配列レンジ・チェック取扱判断方法
US20020095668A1 (en) Compiler and register allocation method
JP3130446B2 (ja) プログラム変換装置及びプロセッサ
CN115809063B (zh) 一种存储过程编译方法、系统、电子设备和存储介质
JP3765923B2 (ja) ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体
US20010016866A1 (en) Computer and computer-readable storage medium
EP1681626A2 (en) Software tool with modeling of asynchronous program flow
US11068463B2 (en) System and method for managing log data
CN105117269A (zh) 基于向量中断的编译器的优化方法
JP2001265605A (ja) コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム
JP4719415B2 (ja) 情報処理システム及びコード生成方法
CN114281339A (zh) 程序编译方法、编译器、设备及存储介质
US6944852B2 (en) Compiler
JPH03260766A (ja) 括弧生成判定機能付翻訳装置
JP2585793B2 (ja) コンパイラシステム
US20230342068A1 (en) High-throughput regular expression processing using an integrated circuit
US20230342030A1 (en) High-throughput regular expression processing with capture using an integrated circuit
JP2006031363A (ja) バッファオーバーフロー脆弱性検出プログラム及びバッファオーバーフロー脆弱性検出方法
JP2000305786A (ja) コンパイル処理装置及びプログラム記録媒体
JPH11195011A (ja) 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体
JPH0527986A (ja) コンパイラの最適化方法および最適化装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060822

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061023

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061219