JPH0367337A - レジスタ割り付け処理方式 - Google Patents

レジスタ割り付け処理方式

Info

Publication number
JPH0367337A
JPH0367337A JP20301989A JP20301989A JPH0367337A JP H0367337 A JPH0367337 A JP H0367337A JP 20301989 A JP20301989 A JP 20301989A JP 20301989 A JP20301989 A JP 20301989A JP H0367337 A JPH0367337 A JP H0367337A
Authority
JP
Japan
Prior art keywords
basic block
basic
register allocation
blocks
block group
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
JP20301989A
Other languages
English (en)
Inventor
Kazuo Sugata
菅田 和男
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 JP20301989A priority Critical patent/JPH0367337A/ja
Publication of JPH0367337A publication Critical patent/JPH0367337A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概 要] 計算機の原始プログラムを翻訳して目的プログラムを生
成するコンパイラにおける、レジスタ割り付け処理に関
し、 レジスタの内容の退避、設定を減少して、実行効率の良
い目的プログラムを生成できるようにしたレジスタ割り
付け処理方式を目的とし、基本ブロック分割部、基本ブ
ロック群生成部及びレジスタ割り付け部を有し、該基本
ブロック分割部は、計算機の原始プログラムを解析して
得られる中間テキストを、逐次実行される命令からなる
命令列ごとの基本ブロックに分割し、各該基本ブロック
を、該命令列の先頭及び末尾のみに、それぞれ入口及び
出口を有するように構成し、該基本ブロック群生酸部は
、該基本ブロックを基本ブロック群に群分けして、各該
基本ブロック群を、該基本ブロック群に属するすべての
該基本ブロックが、該原始プログラム上の実行順の関係
によって相互に接続した場合に1つの入口及び出口を有
し、且つ該基本ブロック群の再帰的呼出が無いように構
成し、該基本ブロックを該実行順に基づいて順序付けし
、該レジスタ割付け部は、各該基本ブロック群ごとに、
該基本ブロック群に属する該基本ブロックごとのレジス
タ割り付けを該配列順に行い、該レジスタ割り付けは、
該配列順の前位の該基本ブロックの該レジスタ割り付け
結果を順次継承するように構成する。
〔産業上の利用分野〕
本発明は、計算機の原始プログラムを翻訳して目的プロ
グラムを生成するコンパイラにおける、レジスタ割り付
け処理方式に関する。
〔従来の技術〕
公知のC0BOLSFORTRAN等のプログラミング
言語で記述された原始プログラムを翻訳して目的プログ
ラムを生成するコンパイラの処理では、原始プログラム
を解析して中間言語で表現された中間テキストを生成し
た後、いわゆるレジスタ割り付けを行って、レジスタを
オペランドにする命令を含む中間テキストに展開する。
レジスタ割り付けとは公知のように、目的プログラムを
実行する計算機が持つ所定個数のレジスタからレジスタ
を適当に選んで、プログラムの命令のオペランドに指定
されているデータを、その演算のために必要な場合に保
持するように、そのオペランドに割り付ける処理である
レジスタ割り付けの処理は第3図に示すように、基本ブ
ロック分割部2が中間テキスト1を基本ブロックに分割
した後、レジスタ割り付け部3が基本ブロックごとにレ
ジスタ割り付けを行って、割り付けたレジスタを使用し
た中間テキスト展開4を生成する。
基本ブロックとは、第4図(a)に示すプログラム例に
おいて、■〜■として示すように、先頭から入って末尾
まで逐次実行され、末尾から出るだけで、その他に入口
及び出口の無い命令列であり、この条件を満足する命令
列を最長の命令列になるように切り出して1つの基本ブ
ロックとする。
レジスタ割り付け部3は、この基本ブロックを例えばプ
ログラムに記述された順(例の場合■〜■の番号順)に
取り上げて、各基本ブロックごと独立に、レジスタ割り
付け処理を行う。
第4図(b)は(a)のプログラムに対するレジスタ割
り付けを説明する図であり、例えば基本ブロック■につ
いて、命令rA=A+XJでオペランドAにレジスタの
割り付けが必要で、レジスタRII+を割り付け、命令
は中間テキスト展開の■に示すように、rRw=A」、
rRm=Rm+AJ 、rA=Rm」に展開される。他
の基本プロ・ンク■〜■につし)ても、それぞれレジス
タ割り付け状態を初期化して、同様のレジスタ割り付け
を図のように行し)、それGこ基づく中間テキストの展
開が行われる。
〔発明が解決しようとする課題〕
前記のレジスタ割り付けによると、基本プロ・ンクを相
互の実行順序に関係なく、それぞれ独立に処理するので
、他の基本ブロックのレジスタの内容を引き継ぐことが
できず、又必要なレジスタの内容を基本ブロックごとに
退避して、処理結果を保存することが必要になり、第4
図(b)の中間テキスト展開の例で下線を付けて示すよ
うに、プログラム全体を通して見れば、明らかに不要な
レジスタの退避、設定命令が挿入されることになる。
本発明は、レジスタの内容の退避、設定を減少して、実
行効率の良い目的プログラムを生成できるようにしたレ
ジスタ割り付け処理方式を目的とする。
〔課題を解決するための手段〕
第1図は、本発明の構成を示すブロック図である。
図はレジスタ割り付け処理方式であって、基本ブロック
分割部2、基本ブロック群生酸部10及びレジスタ割り
付け部11を有し、基本ブロック分割部2は、計算機の
原始プログラムを解析して得られる中間テキスト1を、
逐次実行される命令からなる命令列ごとの基本ブロック
に分割し、各該基本ブロックを、該命令列の先頭及び末
尾のみに、それぞれ入口及び出口を有するように構成し
、基本ブロック群生酸部10は、該基本ブロックを基本
ブロック群に群分けして、各咳基本ブロック群を、該基
本ブロック群に属するすべての該基本ブロックが、該原
始プログラム上の実行順の関係によって相互に接続した
場合に1つの入口及び出口を有し、且つ該基本ブロック
群の再帰的呼出が無いように構成し、該基本ブロックを
該実行順に基づいて順序付けし、レジスタ割付け部11
は、各該基本ブロック群ごとに、該基本ブロック群に属
する該基本ブロックごとのレジスタ割り付けを該配列順
に行い・該レジスタ割り付けは、該配列順の前位の該基
本ブロックの該レジスタ割り付け結果を1頃次継承する
ようにして処理し、割り付けたレジスタに従って中間テ
キスト展開12を生成する。
〔作 用〕
以上の処理方式により、逐次実行される所定条件内の基
本ブロックからなる基本ブロック群の中では、基本ブロ
ック間の実行順を考慮して、実行順にレジスタ割り付け
を行うので、直前に実行する基本ブロックのレジスタ割
り付け状態を、次の基本ブロックのレジスタ割り付けに
引き継ぐことが可能になり、その結果そのま\利用でき
ないレジスタ割り付けのみに関して、必要な割り付けの
変更、追加のためのレジスタの退避、設定を行うようし
て、冗長なレジスタ操作の無いプログラムを生成するこ
とができる。
〔実施例〕
第1図の基本ブロック分割部2は、前記従来の場合と同
様に中間テキスト1を処理して、例えば第4図(a)に
示すような基本ブロック■〜■に分割する。
基本ブロック群生酸部10は基本ブロック分割部2の処
理結果を受は取って、例えば第2図に処理の流れを示す
処理により、基本ブロックの群分けを行って、1個以上
の基本ブロック群を生威し、且つ各基本ブロック群ごと
に属する基本ブロックを実行順に基づいて順序付ける。
その結果、基本ブロック群生酸部10は、実行順に基づ
いて後述第2表にBG(■、■、■、■、■)で示すよ
うに、実行順に基づいて基本ブロックを配列したリスト
を得る。なお、この例では基本ブロック群は1群のみで
ある。
第2図の処理の流れの説明において、各基本ブロック(
以下においてブロックと略称する場合がある)をbiと
し、プログラムはblを入口ブロックとしてbl、b2
、・−・−・−1bnブロツクに分割されているものと
する。又次の記号を使用する。
(a)  ブロックbiの直前に実行される全ブロック
のリストをIP(bi)とする。
(b)  ブロックbiの直後に実行される全ブロック
のリストをl5(bi)とする。
(C)  ブロックbhを先頭ブロックとする基本ブロ
ック群をBG (bh)とし、bhをブロック群ヘッダ
と呼ぶ。
(d)  ブロック群ヘッダのリストをLで表す。
(e)  カウンタp、q、rを設ける。
基本ブロック群生酸部10は第2図の処理ステップ20
で初期設定としてブロック群の登録を空にし、Lのメン
バをblにし、カウンタrを1に設定した後、処理ステ
ップ21からLOr番目のメンバの基本ブロックをヘッ
ダとする基本ブロック群を構成する処理を以下のように
実行する。
処理ステップ21では、Lの1番目のメンバをbrとし
て、bh4−br、 bl4−brとし、処理ステップ
22でBG (bh)を登録する。従って、最初はbl
のみをメンバとするプロ・ンク群が登録されてこのブロ
ック群の処理を開始する。
処理ステップ23でカランタルとqを1に設定し、以下
でTS(bi)について処理するため2こ、先ず処理ス
テップ24でl5(bi)があるか判定し、l5(bi
)力くあれば処理ステップ25でその未処理のメンiく
の1つをbjとし、処理ステップ26でbjがBG (
bh)のメンノ\“か識別する。既にメンバになってい
れば次のフ゛ロックの処理に移るが、メンバでなければ
処理ステップ27でIP(bj)にBG (bh)のメ
ンバでないものがあるか識別する。
IP(bj)のメンバがすべてBG (bh)のメンバ
であれば、処理ステップ28でカランタルを+1し、処
理ステップ29でフ゛ロックbjをBG (bh)のr
番目のメンバに登録し、処理ステップ30でbjがLの
メンi<であったらLから除く。又IP(bj)にBG
 (bh)のメン/NJでないものがあれば、bjを別
のブロック群のへ・ンダにするために、処理ステップ3
1でbjがLのメンバでなければLのメンバに入れてお
く。
以上でl5(bi)の1ブロツクbjの処理を終わるの
で、処理ステップ32でl5(bi)の全メン゛バにつ
いて処理したか識別し、未処理があれば処理ステップ2
5に戻り、以上のようにしてl5(bi)の全メンバに
ついて処理ステップ25〜処理ステツプ31の処理を繰
り返す。
TS(bi)の全メンバを処理すると、処理ステップ3
3に進み、カウンタqを+工して処理ステップ34でB
G (bh)にq番目のメンバがあるか識別し、メンバ
があれば処理ステップ35でq番目のメンバを新たなり
iにして処理ステップ24に戻り、BG (bh)に未
処理のメンバが無くなるまで、処理ステップ24〜処理
ステツプ35の処理を繰り返して、現処理中のブロック
群BG (bh)のメンバを追加していく。
BG (bh)のメンバの処理が終わったことを処理ス
テップ34又は処理ステップ24で識別すると、処理ス
テップ36でカウンタrを+1して、処理ステップ37
でLのr番目のメンバがあるか識別し、r番目のメンバ
があれば処理ステップ21に戻って、そのメンバbrを
ヘッダとするブロック群の処理を登録から始める。この
ようにして、Lに入ったブロックをヘッダとする前記の
処理を、Lの全メンバについて終わったことを処理ステ
ップ37で識別すると、基本ブロック群生酸部10によ
る部分は処理が完了し、実行順に基づいて配列された基
本ブロックからなる、1個以上の基本プロ・ンク群が生
成される。
以上の処理を第4図(a)のプログラム例の基本ブロッ
ク■〜■について実行すると、各プロ・ンクとその直前
(IP)及び直後(Is)の実行順のブロックとはプロ
グラム例に従って第1表のようになる。
従って基本ブロック群はBG(■)から初めて、第2表
に示すような過程で生成される。この例ではブロック群
は■個のみになる。
レジスタ割り付け部11は、基本ブロック群生酸部10
が生成した基本ブロック群ごとに、基本ブロック群のリ
ストの順に先頭のブロックから順次処理して、レジスタ
割り付けを行い、各ブロックの処理では直前のブロック
のレジスタ割り付け状態を参照して、割り付け状態の変
更が必要な部分のみ変更するように処理し、レジスタ割
り付けに応じて展開した中間テキスト展開を出力する。
第1表 第2表 第4図(C)に、前記(a)のプログラムについて第2
表の処理で得られた基本ブロック群について、レジスタ
割り付け部11が行う処理を示す。(C)の中間テキス
ト展開を、(ロ)の従来の結果と比較して明らかなよう
に、本発明によりレジスタの設定、退避の命令が減少し
ている。
〔発明の効果〕
以上の説明から明らかなように本発明によれば、計算機
の原始プログラムを翻訳して目的プログラムを生成する
コンパイラにおける、レジスタ割り付け処理において、
レジスタの内容の退避、設定を減少して、実行効率の良
い目的プログラムを生成できるという著しい工業的効果
がある。
【図面の簡単な説明】
第1図は本発明の構成を示すブロック図、第2図は本発
明の処理の流れ図、 第3図は従来の構成例を示すブロック図、第4図はプロ
グラム例による処理説明図である。 図において、 1は中間テキスト、   2は基本ブロック分割部、3
.11はレジスタ割り付け部、 4.12は中間テキスト展開、 10は基本ブロック群生底部、 本発明の処理の流れ図 第2図 本発明の構成を示すブロック図 第1図 従来の構成例を示すブロック図 第3図 (b) プログラム例による処理説明図 第 4 図(そのl)

Claims (1)

  1. 【特許請求の範囲】 基本ブロック分割部(2)、基本ブロック群生成部(1
    0)及びレジスタ割り付け部(11)を有し、該基本ブ
    ロック分割部(2)は、計算機の原始プログラムを解析
    して得られる中間テキスト(1)を、逐次実行される命
    令からなる命令列ごとの基本ブロックに分割し、 各該基本ブロックを、該命令列の先頭及び末尾のみに、
    それぞれ入口及び出口を有するように構成し、 該基本ブロック群生成部(10)は、該基本ブロックを
    基本ブロック群に群分けして、 各該基本ブロック群を、該基本ブロック群に属するすべ
    ての該基本ブロックが、該原始プログラム上の実行順の
    関係によって相互に接続した場合に1つの入口及び出口
    を有し、且つ該基本ブロック群の再帰的呼出が無いよう
    に構成し、該基本ブロックを該実行順に基づいて順序付
    けし、 該レジスタ割付け部(11)は、各該基本ブロック群ご
    とに、該基本ブロック群に属する該基本ブロックごとの
    レジスタ割り付けを該配列順に行い、該レジスタ割り付
    けは、該配列順の前位の該基本ブロックの該レジスタ割
    り付け結果を順次継承するようにして処理することを特
    徴とするレジスタ割り付け処理方式。
JP20301989A 1989-08-04 1989-08-04 レジスタ割り付け処理方式 Pending JPH0367337A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20301989A JPH0367337A (ja) 1989-08-04 1989-08-04 レジスタ割り付け処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20301989A JPH0367337A (ja) 1989-08-04 1989-08-04 レジスタ割り付け処理方式

Publications (1)

Publication Number Publication Date
JPH0367337A true JPH0367337A (ja) 1991-03-22

Family

ID=16467002

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20301989A Pending JPH0367337A (ja) 1989-08-04 1989-08-04 レジスタ割り付け処理方式

Country Status (1)

Country Link
JP (1) JPH0367337A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5994165A (en) * 1997-02-05 1999-11-30 Nec Corporation Method for mounting a semiconductor chip

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6325374A (ja) * 1986-02-11 1988-02-02 Nippon Denso Co Ltd 内燃機関用点火装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6325374A (ja) * 1986-02-11 1988-02-02 Nippon Denso Co Ltd 内燃機関用点火装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5994165A (en) * 1997-02-05 1999-11-30 Nec Corporation Method for mounting a semiconductor chip

Similar Documents

Publication Publication Date Title
JP2738692B2 (ja) 並列化コンパイル方法
US6219775B1 (en) Massively parallel computer including auxiliary vector processor
US4905143A (en) Array processor and control method thereof
Gross et al. Compilation for a high-performance systolic array
US5557797A (en) Scheduling method for automatically developing hardware patterns for integrated circuits
EP0798636B1 (en) Method, system and computer program product for register allocation using multiple interference graphs
EP0578361B1 (en) Digital signal processing apparatus
JPH0367337A (ja) レジスタ割り付け処理方式
US20020156611A1 (en) Performance simulation process, and multiprocessor application production process, and devices for implementing said processes
JPS62217325A (ja) アセンブラコ−ド最適化方式
JPH04307624A (ja) ループ最適化方法及び装置
JPH1196203A (ja) 論理回路設計方法
JP3464019B2 (ja) レジスタの割付方式
JPH03174631A (ja) マイクロプログラムのコンパイル方法
JPH0644270B2 (ja) ベクトルプロセッサの制御処理方式
JPH08287025A (ja) マルチプロセッサシステムの同期制御方法及びそれを用いたマルチプロセッサシステム
JPS60209843A (ja) 並列処理命令生成方式
JP2004078617A (ja) アプリケーションの並列処理方法
JP2001159983A (ja) 共通式認識型命令スケジューリング方法
JPS6378238A (ja) 目的コ−ド生成装置
JPH08234999A (ja) 機械語命令スケジューラ
JPH07219909A (ja) プログラム変換方法
JPH039430A (ja) コンパイラにおけるレジスタ割付方式
Ding et al. A parallelizing compiler approach based on ixa
JPH0371362A (ja) 論理シミュレーション用並列計算機