JPH07200310A - 多方向分岐を行うオブジェクトプログラムの生成方法 - Google Patents

多方向分岐を行うオブジェクトプログラムの生成方法

Info

Publication number
JPH07200310A
JPH07200310A JP4894A JP4894A JPH07200310A JP H07200310 A JPH07200310 A JP H07200310A JP 4894 A JP4894 A JP 4894A JP 4894 A JP4894 A JP 4894A JP H07200310 A JPH07200310 A JP H07200310A
Authority
JP
Japan
Prior art keywords
object program
value
branch
generated
selection
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
JP4894A
Other languages
English (en)
Inventor
Onori Yokozuka
大典 横塚
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP4894A priority Critical patent/JPH07200310A/ja
Publication of JPH07200310A publication Critical patent/JPH07200310A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 多方向分岐を行うオブジェクトプログラムを
生成する方法において、制御値を補正することにより、
即値として表現できる選択定数の個数を増やし、多方向
分岐を行うオブジェクトプログラムの実行性能を向上さ
せること。 【構成】 多方向分岐を行なう計算機言語をコンパイラ
して多方向分岐を行うオブジェクトプログラムを生成す
る方法において、多方向分岐を行うオブジェクトプログ
ラムを条件判定の連続形式として生成する際に、多方向
分岐の制御値を補正し、この補正された制御値に対応す
る選択定数との比較を行なうオブジェクトプログラムを
生成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、多方向分岐を行なう計
算機言語をコンパイルして多方向分岐のオブジェクトプ
ログラムを生成する方法に係わり、特に、多方向分岐を
行うオブジェクトプログラムの実行性能を向上させる方
法に関する。
【0002】
【従来の技術】従来、多方向分岐を行なう計算機言語を
コンパイルして多方向分岐を行うオブジェクトプログラ
ムを生成する方法としては、分岐表形式として展開され
る場合と、条件判定の連続形式として展開される場合と
がある。
【0003】この方法については、A.Aho、R.Sethi、J.
Ullman共著の“Compilers Principles, Techniques, an
d Tools”に記載されているが、多方向分岐の選択定数
が全てある範囲内にあり、かつ、その範囲が小さければ
分岐表形式とすることができるとされている。
【0004】ところが、分岐表形式にできる場合であっ
ても、選択定数の個数が少なければ、条件判定の連続形
式とした方が、オブジェクトプログラムの実行性能が良
い場合がある。
【0005】分岐表形式と条件判定の連続形式のどちら
が有利であるかは、多方向分岐の分岐数と分岐確率をも
とに、以下の式で求めたコストのどちらが低いかで決定
される。
【0006】分岐表形式の場合のコスト: 分岐先までの合計サイクル数 条件判定の連続形式の場合のコスト:
【0007】
【数1】
【0008】この条件判定の連続形式の場合の式におけ
る、分岐先までのサイクル数の算出にあたっては、「制
御式と選択定数の比較を行ない、両者が等しい場合に該
当するラベルに分岐する」という機能を持つオブジェク
トプログラムを生成するものとして算定していた。
【0009】また、実際のオブジェクトプログラムを生
成する際にも、この機能を実現するオブジェクトプログ
ラムを生成していた。
【0010】
【発明が解決しようとする課題】しかしながら、「制御
式と選択定数の比較」を行なうオブジェクトプログラム
の命令数は、選択定数をメモリからロードしなくてはな
らないか、または、即値として命令語中に保持できるか
によって異なる。
【0011】一般に選択定数が即値として命令語中に保
持できる場合には、そうでない場合より1命令少ないオ
ブジェクトプログラム生成が可能である。
【0012】近年のRISCアーキテクチャでは、メモ
リからのロードは、レジスタだけを使用した命令に比べ
て高価なものとなっている。
【0013】この傾向は、プロセッサ技術の進歩による
周波数の伸びが、メモリからの転送速度の高速化を上回
っているからであり、今後ともこの傾向は継続するもの
である。
【0014】この様な状況では、選択定数を即値として
保持する利点が更に増大する。
【0015】即値として命令語中に保持できる定数の範
囲は、アーキテクチャによって異なるが、一般にその範
囲は狭い。
【0016】例えば、PA−RISCアーキテクチャで
は−16から15の範囲の定数だけが即値として比較命
令の中に保持できるが、この範囲を超えた定数は、比較
命令以外の命令によりレジスタに設定しなければならな
い。
【0017】本発明は、前記従来技術の問題点を解決す
るためになされたものであり、本発明の目的は、多方向
分岐を行うオブジェクトプログラムを生成する方法にお
いて、制御値を補正することにより、即値として表現で
きる選択定数の個数を増やし、多方向分岐を行うオブジ
ェクトプログラムの実行性能を向上させることが可能な
技術を提供することにある。
【0018】本発明の前記目的並びにその他の目的及び
新規な特徴は、本明細書の記載及び添付図面によって明
らかにする。
【0019】
【課題を解決するための手段】前記目的を達成するため
に、本発明では、多方向分岐を行なう計算機言語をコン
パイラして多方向分岐を行うオブジェクトプログラムを
生成する方法において、多方向分岐を行うオブジェクト
プログラムを条件判定の連続形式として生成する際に、
多方向分岐の制御値を補正し、この補正された制御値に
対応する選択定数との比較を行なうオブジェクトプログ
ラムを生成することを特徴とする。
【0020】
【作用】前記手段によれば、多方向分岐を行うオブジェ
クトプログラムを条件判定の連続形式として生成する際
に、制御値を補正し、即値として表現できる選択定数の
個数を増やすようしたので、多方向分岐を行うオブジェ
クトプログラムの実行性能を向上させることが可能であ
る。
【0021】
【実施例】以下、図面を参照して本発明の実施例を詳細
に説明する。
【0022】なお、実施例を説明するための全図におい
て、同一機能を有するものは同一符号を付け、その繰り
返しの説明は省略する。
【0023】図1は、本実施例を説明するための図であ
り、C言語で記述された第1のソースプログラムを示す
図である。
【0024】図1において、制御値は変数iであり、選
択定数は、−30、−29、−28、−27、−26で
ある。
【0025】図2、図3、図4は、図1のソースプログ
ラムに対して生成されるオブジェクトプログラムを示す
図である。
【0026】図2は分岐表形式のオブジェクトプログラ
ムを、図3は条件判定の連続形式のオブジェクトプログ
ラムを、図4は本実施例における制御値を補正した条件
判定の連続形式のオブジェクトプログラムを、それぞれ
示している。
【0027】図2、図3、図4では、PA−RISCア
ーキテキチャの命令語を使用している。
【0028】図2、図3、図4に示すオブジェクトプロ
グラムにおいては、制御値iは19番レジスタ(r1
9)にロードしてあるものとする。
【0029】図2、図3、図4中において、各命令は以
下の意味を持つ。
【0030】 LDO c(rs),rt rsレジスタの値に定数cを加えた結果をrtレジスタ
に格納する。
【0031】 COMIBT,cc,n c,rs,lab 定数cとレジスタrsを比較し、条件ccが成立すれば
ラベルlabに分岐する。
【0032】BLR rs,0 この命令から((レジスタrsの値+1)×2)先の命
令に分岐する。
【0033】NOP 何も行なわない。
【0034】BL lab ラベルlabに分岐する。
【0035】LDI c,rt 定数cをレジスタrtに格納する。
【0036】COMBT,cc,n r
s1,rs2,lab レジスrs1とrs2を比較し、条件ccが成立すれば
ラベルlabに分岐する。
【0037】また、すべての命令は1サイクルで実行で
きるが、分岐命令は後続する命令を実行してから、分岐
先の命令を実行することになる。
【0038】COMIBT及びCOMBT命令中の「,
n」は、後続する命令の効果を取り消す意味を持つ。
【0039】COMIBT命令中に即値として割り当て
られるビット数が5ビット程度であることから、COM
IBT命令で指定できる定数は、−16から15の範囲
でなければならない。
【0040】本実施例では、多方向分岐を行うオブジェ
クトプログラムを生成するにあたり、多方向分岐の制御
値を補正して、即値として表現できる選択定数の個数を
増やし、この補正された制御値に対応する選択定数との
比較を行なうオブジェクトプログラムを生成する。
【0041】即ち、図3に示す条件判定の連続形式のオ
ブジェクトプログラムにおいては、選択定数の最小値が
−30であるのに対して、図4に示す本実施例により生
成されたオブジェクトプログラムにおいては、選択定数
の最小値が−30から即値の最小値−16を減じた値−
14となり、制御値から補正値−14を減じる(14を
加える)命令が先頭に出力されている。
【0042】また、図3に示す条件判定の連続形式のオ
ブジェクトプログラムにおける他の選択定数もそれぞれ
補正され、−16、−15、−14、−13、−12と
なっている。
【0043】一般には、選択定数の最小値が、即値とし
て表現できる値の最小値と等しくなるか、または選択定
数の最大値が即値の最大値と等しくなるように、補正を
行なえば良い。
【0044】また、制御値を補正するためには、補正を
行なう動作が必要となる。
【0045】従って、補正を行なうことが、必ずしも高
速なオブジェクトプログラムを生成することにはならな
い。
【0046】そのため、分岐表形式、条件判定の連続形
式、及び制御値を補正した条件判定連続形式のいずれが
有利であるかは、多方向分岐の分岐数と分岐確率をもと
に、以下の式で求めたコストのいずれが低いかで決定す
る必要がある。
【0047】分岐表形式の場合のコスト: 分岐先までの合計サイクル数 条件判定の連続形式の場合のコスト:
【0048】
【数2】
【0049】制御値を補正した条件判定の連続形式の場
合のコスト:
【0050】
【数3】
【0051】図5は、本発明の一実施例である多方向分
岐を行うオブジェクトプログラムの生成方法の処理手順
を示すフローチャートである。
【0052】図2ないし図5を用いて本発明の一実施例
である多方向分岐を行うオブジェクトプログラムの生成
方法の処理手順について説明する。
【0053】なお、この処理の前段階において、ソース
プログラムが構文解析され、中間言語に変換されてい
る。
【0054】始めに、ステップ101において、分岐表
形式でオブジェクトプログラムを生成する場合の分岐コ
ストを計算する。
【0055】なお、前記分岐コストは、中間言語から計
算されるものであるが、理解しやすいように、図2に示
す実際の分岐表形式のオブジェクトプログラム用いて、
前記ステップ101における分岐コストの計算について
説明する。
【0056】図2に示す分岐表形式のオブジェクトプロ
グラムにおいて、2番目の命令から処理6へ分岐するま
でのサイクル数は3であり、3番目の命令から処理6へ
分岐するまでのサイクル数は4である。
【0057】処理1、2、3、4、5へ分岐するまでの
サイクル数はすべて6であり、全ての処理への分岐確率
が等しいとすると、分岐のコストは
【0058】
【数4】((3+4)/2+6×5)/6 = 5.5
83サイクルである。
【0059】即ち、図5のフローチャートにおいてaの
値は5.583となる。
【0060】次に、ステップ102において、条件判定
の連続形式でオブジェクトプログラムを生成する場合の
分岐コストを計算する。
【0061】前記図2に示す分岐表形式のオブジェクト
プログラムの場合と同様に、図3に示す実際の条件判定
の連続形式のオブジェクトプログラムを用いて、ステッ
プ102における分岐コストの計算について説明する。
【0062】図3に示す条件判定の連続形式のオブジェ
クトプログラムにおいて、処理1へ分岐するまでのサイ
クル数は3であり、処理2までは5、処理3までは7、
処理4までは9、処理5までは11、処理6までは10
サイクルである。
【0063】したがって、分岐のコストは
【0064】
【数5】(3+5+7+9+11+10)/6 =
7.5サイクルである。
【0065】即ち、図5のフローチャートにおいてbの
値は7.5となる。
【0066】次に、ステップ103において、選択定数
の最小値が即値の最小値より小さいか否かを判断する。
【0067】ステップ103において、選択定数の最小
値が即値の最小値より小さい場合には、ステップ104
に進み、選択定数の最小値から即値の最小値を減算する
ことにより補正値xを求める。その後、ステップ107
に進む。
【0068】また、ステップ103において、選択定数
の最小値が即値の最小値より大きい場合には、ステップ
105に進み、選択定数の最大値が即値の最大値より大
きい否かを判断する。
【0069】ステップ105において、選択定数の最大
値が即値の最大値より大きい場合には、ステップ106
に進み、選択定数の最大値から即値の最大値を減算する
ことにより補正値xを求める。その後、ステップ107
に進む。
【0070】また、ステップ105において、選択定数
の最大値が即値の最大値より小さい場合には、c=∞と
してステップ108に進む。
【0071】次に、ステップ105において、制御値を
補正した条件判定の連続形式でオブジェクトプログラム
を生成する場合の分岐コストを計算する。
【0072】前記図2に示す分岐表形式のオブジェクト
プログラムの場合と同様に、図4に示す本実施例による
生成方法により生成された、制御値を補正した条件判定
の連続形式のオブジェクトプログラムを用いて、ステッ
プ105における分岐コストの計算について説明する。
【0073】図4に示す本実施例による生成方法により
生成された、制御値を補正した条件判定の連続形式のオ
ブジェクトプログラムにおいて、前記したように、補正
値xは、選択定数の最小値−30から即値の最小値−1
6を減じた値−14となり、制御値から補正値−14を
減じる(14を加える)命令が先頭に出力されている。
【0074】また、選択定数もそれぞれ補正され、−1
6、−15、−14、−13、−12となっている。
【0075】ここで、処理1へ分岐するまでのサイクル
数は3であり、処理2までは4、処理3までは5、処理
4までは6、処理5までは7、処理6までは6サイクル
である。
【0076】従って、分岐のコストは
【0077】
【数6】(3+4+5+6+7+6)/6 = 5.1
67サイクルである。
【0078】即ち、図5のフローチャートにおいてcの
値は7.5となる。
【0079】次に、ステップ108において、求められ
たa、b、c値のうち最小なものを判断し、ステップ1
09ないしステップ111でそれぞれの場合におけるオ
ブジェクトプログラムを作成する。
【0080】図1に示すソースプログラム場合には、
a、b、cのうちの最小なのはcであるから、コンパイ
ラは、制御値を補正した条件判定の連続形式のオブジェ
クトプログラムを作成する。
【0081】また補正値は−14である。
【0082】図6は、本実施例を説明するための図であ
り、C言語で記述された第2のソースプログラムを示す
図である。
【0083】図6において、制御値は変数iであり、選
択定数は、13、14、15、16、17である。
【0084】図6のソースプログラムは、制御値を補正
しないほうが良い場合の例である。
【0085】図7、図8、図9は、図6のソースプログ
ラムに対して生成されるオブジェクトプログラムを示す
図である。
【0086】図7は分岐表形式のオブジェクトプログラ
ムを、図8は条件判定の連続形式のオブジェクトプログ
ラムを、図9は本実施例における制御値を補正した条件
判定の連続形式のオブジェクトプログラムを、それぞれ
示している。
【0087】図7、図8、図9において、PA−RIS
Cアーキテキチャの命令語を使用している。
【0088】これらオブジェクトプログラムの例では、
制御値iは19番レジスタ(r19)にロードしてある
ものとする。
【0089】また、図7、図8、図9中における各命令
の意味は、前記図2、図3、図4中の各命令の意味と同
じである。
【0090】図7に示す分岐表形式のオブジェクトプロ
グラムにおいて、その分岐のコストは、図2の場合と同
じく5.583サイクルである。
【0091】即ち、図5のフローチャートにおいてaの
値は5.583となる。
【0092】次に、前記図3に示す条件判定の連続形式
のオブジェクトプログラムの場合と同様に、図8に示す
条件判定の連続形式のオブジェクトプログラム分岐コス
トを計算する。
【0093】図8に示す条件判定の連続形式のオブジェ
クトプログラムにおいて、処理1へ分岐するまでのサイ
クル数は2であり、処理2までは3、処理3までは4、
処理4までは6、処理5までは8、処理6までは7サイ
クルである。
【0094】従って分岐のコストは
【0095】
【数7】(2+3+4+6+8+7)/6 = 5サイ
クルである。
【0096】即ち、図5のフローチャートにおいてbの
値は5となる。
【0097】次に、前記図4に示す本実施例の生成方法
により生成された、制御値を補正した条件判定の連続形
式のオブジェクトプログラムの場合と同様に、図9に示
す本実施例の生成方法により生成された、制御値を補正
した条件判定の連続形式のオブジェクトプログラムの分
岐コストを計算する。
【0098】図9に示す本実施例の生成方法により生成
された、制御値を補正した条件判定の連続形式のオブジ
ェクトプログラムにおいては、補正値xは、選択定数の
最大値17から即値の最大値15を減じた値2となり、
制御値から補正値2を減じる命令が先頭に出力されてい
る。
【0099】また、選択定数もそれぞれ補正され、1
1、12、13、14、15となっている。
【0100】ここで、処理1へ分岐するまでのサイクル
数は3であり、処理2までは4、処理3までは5、処理
4までは6、処理5までは7、処理6までは6サイクル
である。
【0101】従って、分岐のコストは
【0102】
【数8】(3+4+5+6+7+6)/6 = 5.1
67サイクルである。
【0103】即ち、図5のフローチャートにおいてcの
値は5.167となる。
【0104】したがって、図6に示すソースプログラム
の場合には、a、b、cのうちの最小なものはbであ
り、コンパイラは条件判定の連続形式のオブジェクトプ
ログラムを作成する。
【0105】以上説明したように、本実施例によれば、
多方向分岐を行うオブジェクトプログラムを生成するに
あたり、多方向分岐の制御値を補正し、即値として表現
できる選択定数の個数を増やし、この補正された制御値
に対応する選択定数との比較を行なうオブジェクトプロ
グラムを生成するようにしたので、多方向分岐を行うオ
ブジェクトプログラムの実行性能を向上させることが可
能である。
【0106】また、分岐表形式、条件判定の連続形式、
及び制御値を補正した条件判定の連続形式いずれの形式
が最も有利であるかの判定を行なうことにより、たと
え、分岐表形式や、条件判定の連続形式が最も有利であ
る場合であったとしても、実行性能の低下を招くことは
ない。
【0107】以上、本発明を実施例に基づき具体的に説
明したが、本発明は、前記実施例に限定されるものでは
なく、その要旨を逸脱しない範囲で種々変更し得ること
は言うまでもない。
【0108】
【発明の効果】以上説明したように、本発明によれば、
他方向分岐を行うオブジェクトプログラムを生成するに
際し、多方向分岐の制御値を補正し、即値として表現で
きる選択定数の個数を増やすようにしたので、多方向分
岐を行うオブジェクトプログラムの実行性能を向上させ
ることが可能である。
【図面の簡単な説明】
【図1】本発明の実施例を説明するための図であり、第
1のソースプログラムを示す図である。
【図2】図1のソースプログラムに対して生成されるP
A−RISCアーキテキチャでの分岐表形式のオブジェ
クトプログラムを示す図である。。
【図3】図1のソースプログラムに対して生成されるP
A−RISCアーキテキチャでの条件判定の連続形式の
オブジェクトプログラムを示す図である。。
【図4】図1のソースプログラムに対して生成されるP
A−RISCアーキテキチャでの、本実施例の生成方法
により生成された制御値を補正した条件判定の連続形式
のオブジェクトプログラムを示す図である。
【図5】本発明の一実施例である多方向分岐を行うオブ
ジェクトプログラムの生成方法の処理手順を示すフロー
チャートである。
【図6】本発明の実施例を説明するための図であり、第
2のソースプログラムを示す図である。
【図7】図6のソースプログラムに対して生成されるP
A−RISCアーキテキチャでの分岐表形式のオブジェ
クトプログラムを示す図である。
【図8】図6のソースプログラムに対して生成されるP
A−RISCアーキテキチャでの条件判定の連続形式の
オブジェクトプログラムを示す図である。
【図9】図6のソースプログラムに対して生成されるP
A−RISCアーキテキチャでの、本実施例の生成方法
により生成された制御値を補正した条件判定の連続形式
のオブジェクトプログラムを示す図である。
【符号の説明】
101ないし111…多方向分岐を行うオブジェクトプ
ログラムの生成方法の処理手順。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 多方向分岐を行なう計算機言語をコンパ
    イラして多方向分岐を行うオブジェクトプログラムを生
    成する方法において、多方向分岐を行うオブジェクトプ
    ログラムを条件判定の連続形式として生成する際に、多
    方向分岐の制御値を補正し、この補正された制御値に対
    応する選択定数との比較を行なうオブジェクトプログラ
    ムを生成することを特徴とする多方向分岐を行うオブジ
    ェクトプログラムの生成方法。
JP4894A 1994-01-04 1994-01-04 多方向分岐を行うオブジェクトプログラムの生成方法 Pending JPH07200310A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4894A JPH07200310A (ja) 1994-01-04 1994-01-04 多方向分岐を行うオブジェクトプログラムの生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4894A JPH07200310A (ja) 1994-01-04 1994-01-04 多方向分岐を行うオブジェクトプログラムの生成方法

Publications (1)

Publication Number Publication Date
JPH07200310A true JPH07200310A (ja) 1995-08-04

Family

ID=11463392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4894A Pending JPH07200310A (ja) 1994-01-04 1994-01-04 多方向分岐を行うオブジェクトプログラムの生成方法

Country Status (1)

Country Link
JP (1) JPH07200310A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017033342A (ja) * 2015-08-03 2017-02-09 富士通株式会社 コンパイル装置、コンパイル方法およびコンパイルプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017033342A (ja) * 2015-08-03 2017-02-09 富士通株式会社 コンパイル装置、コンパイル方法およびコンパイルプログラム

Similar Documents

Publication Publication Date Title
JP2834171B2 (ja) コンパイル方法
US6571385B1 (en) Early exit transformations for software pipelining
US4843545A (en) Compile method using copy propagation of a variable
JPS63132338A (ja) コード生成方法
EP0297943B1 (en) Microcode reading control system
US6389590B1 (en) Indefinite-size variables within an intermediate language
US5349665A (en) Compiler vectorizing system
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JPH07200310A (ja) 多方向分岐を行うオブジェクトプログラムの生成方法
US5812837A (en) Data processing apparatus for controlling an interrupt process and its method
JP3763516B2 (ja) 変換プログラム、コンパイラ、コンピュータ装置およびプログラム変換方法
EP0633525B1 (en) Method for compilation of programming languages
US5437035A (en) Method and apparatus for compiling a program incending a do-statement
JP2585793B2 (ja) コンパイラシステム
JPH09265400A (ja) コンパイル最適化方式
JPH086797A (ja) 定数参照最適化処理装置
JPS62165268A (ja) ベクトル化コンパイル処理方式
JP2002099425A (ja) グローバル変数のローカル変数変換方法
JPS62169272A (ja) ベクトル演算列ル−プアンロ−リング処理方式
JPH11212807A (ja) プログラム実行方法
KR0179179B1 (ko) 비동기 전달모드 프로세서를 위한 최적 명령 수순 선택 방법
JP2002073369A (ja) オブジェクト指向プログラム性能改善支援装置、記録媒体及びプログラム
US5960203A (en) Assembler device and its assembling method for use in a microcomputer or other computer system
JPH04343140A (ja) コンパイラの最適化処理方法
JP2000010789A (ja) forループ構造変換装置、forループ構造変換方法、記憶媒体