JPH0411888B2 - - Google Patents

Info

Publication number
JPH0411888B2
JPH0411888B2 JP56151050A JP15105081A JPH0411888B2 JP H0411888 B2 JPH0411888 B2 JP H0411888B2 JP 56151050 A JP56151050 A JP 56151050A JP 15105081 A JP15105081 A JP 15105081A JP H0411888 B2 JPH0411888 B2 JP H0411888B2
Authority
JP
Japan
Prior art keywords
size
section
loop
instruction
block
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.)
Expired - Lifetime
Application number
JP56151050A
Other languages
English (en)
Other versions
JPS5852752A (ja
Inventor
Hisao Nakagawa
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 JP15105081A priority Critical patent/JPS5852752A/ja
Publication of JPS5852752A publication Critical patent/JPS5852752A/ja
Publication of JPH0411888B2 publication Critical patent/JPH0411888B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 本発明は、セクシヨン向きの分岐の最適化方式
において、ループを意識してセクシヨンの区切り
を決定するようにしたセクシヨン決定方式に関す
るものである。
ソース・プログラムはコンパイラ又はアセンブ
ラによつてオブジエクト・プログラムに変換され
るが、変換に際して出来るだけ効率の良いオブジ
エクト・プログラムが作成されるように変換が行
われる。例えばFORTRANの「GO TO200」と
言う文を、 L 14、#200 BCR 15、14 というRR型の分岐オブジエクトに変換するより
も、 BC 15、(D(0、11) というRX型分岐オブジエクトに変換する方が、
分岐先アドレス定数を生成する必要もなく、有利
である。
従来の分岐の最適化では、第1図に示すよう
に、最大5個の汎用レジスタに対し、プログラ
ム・ベースを静的に割り当てていたために、5個
のベース・レジスタを用いても、ベース修飾不可
能な巨大プログラムではRR型分岐が生じた。第
1図において、GO TO文は、 L 14、#300 BCR 15、14 と変換され、DOループの制御は、 L 14、#(ループの先頭) BCTR 10、14 と変換される。セクシヨン向き分岐の最適化方式
では、第2図に示すように、プログラム・ベー
ス・レジスタを最高3個に抑え、3個のベース・
レジスタで修飾不可の場合には、プログラムをセ
クシヨン(1セクシヨンは4KB以下)に分割し、
分岐先のセクシヨン番地を動的にベース・レジス
タに設定する。なお、第2図において、S1,S
2,S3はセクシヨンを表している。この方式に
よつて、プログラム・サイズに関わらず、高速分
岐が可能となり、かつ汎用レジスタのグローバル
割当て個数を2個拡張する効果も得られる。第2
図のGO TO文は、 L 11、#(S2) BC 15、D(0、11) と変換され、DOループの制御は、 BCT 10、D(0、11) と変換される。なお、デイスプレースメントDは
12ビツト構成で、0から4095までを表すことが出
来る。この第2図の場合、さらにセクシヨンS3
の先頭番地に、 L 11、#(S3) と言う命令が配置される。
第3図と第4図は実際のセクシヨン分岐を説明
するものであり、第3図はセクシヨン内分岐を示
し、第4図はセクシヨン外分岐を示している。第
3図、第4図においてA(S1)はセクシヨンS
1の先頭アドレス、A(S2)はセクシヨンS2
の先頭アドレス、D1とD2はデイスプレースメ
ント、RSはセクシヨン・レジスタ、Lはロード
命令、Bは分岐命令をそれぞれ示している。
第3図に示すセクシヨン内分岐においては、各
セクシヨンの先頭でセクシヨン・レジスタRSに
必ずロードされる自セクシヨンの先頭アドレス
を、自セクシヨンのベースとして、そこからの相
対値(デイスプレースメント)で分岐する。第4
図のセクシヨン外分岐においては、分岐する直前
に分岐先セクシヨンの先頭アドレスをセクシヨ
ン・レジスタRSにロードし、このセクシヨン・
レジスタRSをベースとして別セクシヨンに分岐
する。
第5図は従来のセクシヨン区切り処理を示すフ
ローチヤートである。SSはセクシヨンの命令サ
イズ、BSはブロツク・サイズをそれぞれ示して
いる。ここで、ブロツクとは、その途中で飛び込
みや分岐が存在しないような命令列単位である。
ブロツク・サイズとは、ブロツクの命令サイズで
ある。例えば、 N=0 (1) DO 10 I=1、10 (2) N=N+K() (3) 10 CONTINUE (4) と言うFORTRAN文があつた場合、(1)と(2)の部
分は同じブロツクを構成し、(3)と(4)の部分は他の
ブロツクを構成する。
第5図のセクシヨン区切り処理では下記のよう
な処理が行われる。
(イ) セクシヨン・サイズSSを0にする。
(ロ) 最初又は次のブロツクのサイズ(BS)を取
り出す。後述する(ハ)の処理で、セクシヨン・サ
イズにブロツクBi(i番目のブロツク)のサイ
ズを加算したものが4096以上になつた場合に
は、ブロツクBiのサイズが再び取り出される。
(ハ) セクシヨン・サイズにブロツク・サイズを加
算したものが4096以上であるか否かを調べる。
YESのときは(ヘ)へ進み、NOのときは(ニ)に進
む。
(ニ) セクシヨン・サイズSSにブロツク・サイズ
BSを加算することにより、セクシヨン・サイ
ズを更新する。
(ホ) ブロツクが終わりか否かを調べる。YESの
ときは終了とし、NOのときは(ロ)に戻どる。
(ヘ) セクシヨンの区切り処理を行う。例えば、(ハ)
の処理でセクシヨン・サイズSSにブロツクBi
のサイズを加算したものが4096以上になつた場
合には、ブロツクBiの前でセクシヨンを区切
る。
従来のセクシヨン分岐の最適化では、ループを
意識せずセクシヨンを区切つているため、第6図
に示すようにセクシヨンとセクシヨンにまたがる
ループが存在する可能性がある。このような場
合、セクシヨンにまたがるループの中に、自セク
シヨンの先頭アドレスをロードする命令と、ルー
プにおける戻り先セクシヨンの先頭アドレスをロ
ードする命令が組込まれ、実行速度に影響をきた
す。第6図において、自セクシヨンの先頭アドレ
スをロードする命令は、 L RS,A(S2) であり、ループにおける戻り先セクシヨンの先頭
アドレスをロードする命令は、 L RS,A(S1) である。
本発明は、上記の考察に基づくものであつて、
ループの範囲内では分岐のための余分な命令を排
除し、プログラムの実行速度を向上させ得るよう
にセクシヨンを区切るようにしたセクシヨン決定
方式を提供することを目的としている。そしてそ
のため、本発明のセクシヨン決定方式は、 ソース・プログラムを入力する入力装置と、コ
ンパイラ処理装置と、オブジエクト・プログラム
を出力する出力装置とを備え、 コンパイラ処理装置が、入力装置からソース・
プログラムを読み込んでソース解析を行うソース
解析処理部と、番地割付け処理部と、最適化処理
部と、セクシヨンの先頭アドレスをロードするた
めの命令を減少させるためにループがセクシヨン
内に含まれるようにセクシヨンを区切るセクシヨ
ン区切り処理部と、コード生成を行い生成された
コード列をオブジエクト・プログラムとして出力
装置に出力させるコード生成部とを有するコンパ
イラ・システムにおけるセクシヨン決定方式であ
つて、 セクシヨン区切り処理部は、 ループの命令サイズを計算するループ命令サイ
ズ計算手段と、 ループ命令サイズ計算手段の動作が終了した後
に動作し、セクシヨン・サイズを初期値に設定す
るセクシヨン・サイズ初期値設定手段と、 セクシヨン・サイズ初期値設定手段の動作が終
了した後に動作を開始し、最初または次のブロツ
クの命令サイズを取り出すブロツク命令サイズ取
出手段と、 ブロツク命令サイズ取出手段の動作が終了した
後に動作し、取り出されたブロツクがループの先
頭であるか否かを判定するループ先頭判定手段
と、 ループ先頭判定手段によつてループの先頭と判
定された後に動作し、現ループの命令サイズを取
り出す現ループ命令サイズ取出手段と、 現ループ命令サイズ取出手段が動作した後に動
作し、現在のセクシヨン・サイズに現ループの命
令サイズを加算したものが所定値以上であるか否
かを判定する第1のサイズ判定手段と、 第1のサイズ判定手段によつて所定値以上と判
定された時に動作を開始し、現在のセクシヨン番
号と現在のセクシヨン・サイズをセクシヨン・テ
ーブルに登録し、登録した後にセクシヨン・サイ
ズ初期値設定手段を起動するセクシヨン・テーブ
ル登録手段と、 ループ先頭判定手段によつてループの先頭でな
いと判定された場合、又は第1のサイズ判定手段
によつて所定値以上でないと判定された場合に動
作を開始し、現在のセクシヨン・サイズに取り出
したブロツクの命令サイズを加算したものが所定
値以上であるか否かを判定し、所定値以上の場合
にはセクシヨン・テーブル登録手段を起動する第
2のサイズ判定手段と、 第2のサイズ判定手段によつて所定値以上では
ないと判定された場合に動作を開始し、現在のセ
クシヨン・サイズに取り出したブロツクの命令サ
イズを加算したものを新たな現在のセクシヨン・
サイズとするセクシヨン・サイズ更新手段と、 セクシヨン・サイズ更新手段が動作を終了した
後に動作を開始し、取り出したブロツクが最後の
ブロツクか否かを判定し、最後のブロツクでない
場合にはブロツク命令サイズ取出手段を起動する
ブロツク終了判定手段と を有する ことを特徴とするものである。以下、本発明を図
面を参照しつつ説明する。
第7図は本発明におけるオブジエクト・プログ
ラムの構成を示す図、第8図は本発明におけるセ
クシヨン区切り処理のフローチヤートである。
本発明は、セクシヨンを区切るとき、ループを
意識し、少なくとも最内ループがセクシヨンにま
たがらないようにしたものである。このようにす
れば、第7図に示すように、ループにおける戻り
先のセクシヨンの先頭アドレスをロードする命令
を除去することが出来る。第7図において、 L RS,A(S2) は、先に述べたようにセクシヨン・レジスタRS
にセクシヨン先頭アドレスをロードするための命
令であり、 BCT R、D2(RS) は、レジスタR(ループの残り回数が入つている)
の内容が零であれば、セクシヨン・レジスタRS
に相対値D2を加算したアドレスにジヤンプし、
レジスタRの内容が零のときは次のアドレスに移
行するための命令である。
第8図は本発明におけるセクシヨン区切り処理
を示すものである。コンパイラは、入力装置、出
力装置およびコンパイラ用処理装置から構成さ
れ、コンパイラ用処理装置は、ソース・プログラ
ムの解析、データの番地割付、テキスト/レジス
タの最適化、分岐の最適化およびコード生成を行
つているが、第8図の処理は分岐の最適化処理の
一環として行われるものである。
第8図において、SSはセクシヨンの命令サイ
ズ、BSはブロツク・サイズ、LSはループの命令
サイズをそれぞれ示し、点数の枠は本発明におい
て新たに追加された処理を示している。
前述のように、ブロツクとは、その途中に飛び
込みとか、分岐が存在しない命令列の単位であ
る。DOの本体部分が1個のブロツクから構成さ
れている場合はブロツク・サイズはループ・サイ
ズに等しくなり、ループが複数のブロツクから構
成されている場合は、ループ・サイズの方がブロ
ツク・サイズより大きくなる。また、ループの先
頭は必ずブロツクの先頭になるが、ブロツクの先
頭は必ずしもループの先頭ではない。更に、ブロ
ツクの中に、前のループの末尾と次のループの先
頭が含まれることはない。更に、第8図では、ル
ープの命令サイズが4KBよりも小であることを
前提としている。
第8図の処理フローについて説明する。なお、
ループの命令サイズやブロツクの命令サイズは、
テキスト/レジスタの最適化後のプログラムから
求める。
(イ) ループの命令サイズLSを計算する。
(ロ) セクシヨン・サイズSSを“0”にする。
(ハ) 最初又は次のブロツクの命令サイズBSを取
り出す。ブロツクBi(i番目のブロツクを示す)
を取り出したときに、(ホ)の処理又は(リ)の処理で
4096バイト以上と判定された場合には、ブロツ
クBiが再び取り出される。
(ニ) 取り出したブロツクがループの先頭のブロツ
クか否かを調べる。YESであれば(チ)の処理を
行い、NOであれば(ホ)の処理を行う。
(ホ) セクシヨン・サイズSSにブロツク・サイズ
BSを加えたものが4096バイト以上であるか否
かを調べる。YESであれば(ヌ)の処理を行い、
NOであれば(ヘ)の処理を行う。
(ヘ) セクシヨン・サイズを元のセクシヨン・サイ
ズSSにブロツク・サイズBSを加算したものと
する。
(ト) ブロツクの終りか否かを調べる。NOでああ
れば(ハ)の処理に戻り、YESであれば終了とす
る。なお、YESのときは、その時のセクシヨ
ン番号とセクシヨン・サイズSSをセクシヨ
ン・テーブルに登録する。
(チ) 現ループの命令サイズLSを取り出す。
(リ) セクシヨン・サイズSSに現ループの命令サ
イズLSを加算したものが4096バイト以上であ
るか否かを調べる。YESのときは(ヌ)の処理を
行い、NOのときは(ホ)の処理を行う。
(ヌ) セクシヨン区切り処理を行い、(ロ)に戻る。こ
こで言うセクシヨン区切り処理とは、セクシヨ
ン番号とセクシヨン・サイズSSが対になつて
書き込まれるようになつたセクシヨン・テーブ
ルに、その時のセクシヨン番号とセクシヨン・
サイズSSを登録することを意味している。ブ
ロツクBiを取り出した所、ブロツクBiがループ
の先頭であり、このループの命令サイズとセク
シヨン・サイズを加算したものが4096以上にな
つたと仮定する。このような場合には、ブロツ
クBiの前でセクシヨンが区切られる。同様に、
セクシヨン・サイズSSにブロツクBiのサイズ
を加算したものが4096以上になつた場合にも、
ブロツクBiの前でセクシヨンが区切られる。
以上の説明から明らかなように、本発明によれ
ば、ループをセクシヨン間に跨がらないようにす
ることが出来るので、セクシヨンの先頭アドレス
をロードする命令を減らすことができ、延いては
実行比重の高いループの中に分岐のための余分な
命令を含まないオブジエクト・プログラムを生成
できるので、実行速度の向上が期待できる。
【図面の簡単な説明】
第1図はセクシヨン構造を持たないプログラム
の1例を示す図、第2図はセクシヨン構造を持つ
プログラムの1例を示す図、第3図はセクシヨン
内分岐の1例を示す図、第4図はセクシヨン外の
分岐の1例を示す図、第5図は従来のセクシヨン
区切り処理のフローチヤート、第6図はループが
セクシヨン間にまたがつているオブジエクト・プ
ログラムの1例を示す図、第7図は本発明による
ループを含むオブジエクト・プログラムの1例を
示す図、第8図は本発明におけるセクシヨン区切
り処理のフローチヤートである。 S1ないしS3……セクシヨン、A(S1)と
A(S2)……セクシヨン先頭アドレス、D1と
D2……デイスプレースメント、RS……セクシ
ヨン・レジスタ。

Claims (1)

  1. 【特許請求の範囲】 1 ソース・プログラムを入力する入力装置と、
    コンパイラ処理装置と、オブジエクト・プログラ
    ムを出力する出力装置とを備え、 コンパイラ処理装置が、入力装置からソース・
    プログラムを読み込んでソース解析を行うソース
    解析処理部と、番地割付け処理部と、最適化処理
    部と、セクシヨンの先頭アドレスをロードするた
    めの命令を減少させるためにループがセクシヨン
    内に含まれるようにセクシヨンを区切るセクシヨ
    ン区切り処理部と、コード生成を行い生成された
    コード列をオブジエクト・プログラムとして出力
    装置に出力させるコード生成部とを有するコンパ
    イラ・システムにおけるセクシヨン決定方式であ
    つて、 セクシヨン区切り処理部は、 ループの命令サイズを計算するループ命令サイ
    ズ計算手段と、 ループ命令サイズ計算手段の動作が終了した後
    に動作し、セクシヨン・サイズを初期値に設定す
    るセクシヨン・サイズ初期値設定手段と、 セクシヨン・サイズ初期値設定手段の動作が終
    了した後に動作を開始し、最初または次のブロツ
    クの命令サイズを取り出すブロツク命令サイズ取
    出手段と、 ブロツク命令サイズ取出手段の動作が終了した
    後に動作し、取り出されたブロツクがループの先
    頭であるか否かを判定するループ先頭判定手段
    と、 ループ先頭判定手段によつてループの先頭と判
    定された後に動作し、現ループの命令サイズを取
    り出す現ループ命令サイズ取出手段と、 現ループ命令サイズ取出手段が動作した後に動
    作し、現在のセクシヨン・サイズに現ループの命
    令サイズを加算したものが所定値以上であるか否
    かを判定する第1のサイズ判定手段と、 第1のサイズ判定手段によつて所定値以上と判
    定された時に動作を開始し、現在のセクシヨン番
    号と現在のセクシヨン・サイズをセクシヨン・テ
    ーブルに登録し、登録した後にセクシヨン・サイ
    ズ初期値設定手段を起動するセクシヨン・テーブ
    ル登録手段と、 ループ先頭判定手段によつてループの先頭でな
    いと判定された場合、又は第1のサイズ判定手段
    によつて所定値以上でないと判定された場合に動
    作を開始し、現在のセクシヨン・サイズに取り出
    したブロツクの命令サイズを加算したものが所定
    値以上であるか否かを判定し、所定値以上の場合
    にはセクシヨン・テーブル登録手段を起動する第
    2のサイズ判定手段と、 第2のサイズ判定手段によつて所定値以上では
    ないと判定された場合に動作を開始し、現在のセ
    クシヨン・サイズに取り出したブロツクの命令サ
    イズを加算したものを新たな現在のセクシヨン・
    サイズとするセクシヨン・サイズ更新手段と、 セクシヨン・サイズ更新手段が動作を終了した
    後に動作を開始し、取り出したブロツクが最後の
    ブロツクか否かを判定し、最後のブロツクでない
    場合にはブロツク命令サイズ取出手段を起動する
    ブロツク終了判定手段と を有する ことを特徴とするセクシヨン決定方式。
JP15105081A 1981-09-24 1981-09-24 セクション決定方式 Granted JPS5852752A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP15105081A JPS5852752A (ja) 1981-09-24 1981-09-24 セクション決定方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15105081A JPS5852752A (ja) 1981-09-24 1981-09-24 セクション決定方式

Publications (2)

Publication Number Publication Date
JPS5852752A JPS5852752A (ja) 1983-03-29
JPH0411888B2 true JPH0411888B2 (ja) 1992-03-02

Family

ID=15510199

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15105081A Granted JPS5852752A (ja) 1981-09-24 1981-09-24 セクション決定方式

Country Status (1)

Country Link
JP (1) JPS5852752A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6135261A (ja) * 1984-07-27 1986-02-19 Tokyo Juki Ind Co Ltd ドツト・プリンタ−ヘツドのポ−ルベ−スの製造方法
JPS6155739A (ja) * 1984-08-27 1986-03-20 Fujitsu Ltd 手続区画サイズの決定方式
JPS6182241A (ja) * 1984-08-29 1986-04-25 Fujitsu Ltd 手続区画の分割方式
JPS61224042A (ja) * 1985-03-29 1986-10-04 Nec Corp 仮想記憶システムにおける配列要素接近に関する最適化コ−ド生成方式

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
COMMUNICATIONS OF THE ACM=1969USA *
IBM JOURNAL OF RESEARCH AND DEVELOPMENT=1980USA *

Also Published As

Publication number Publication date
JPS5852752A (ja) 1983-03-29

Similar Documents

Publication Publication Date Title
JPH1173325A (ja) プログラム変換装置及び記録媒体
US6611956B1 (en) Instruction string optimization with estimation of basic block dependence relations where the first step is to remove self-dependent branching
JPH0411888B2 (ja)
JPH10301790A (ja) アセンブル処理方式
JPS5922140A (ja) 対話型コンパイル方式
JP2000122876A (ja) 情報処理装置
JP3464019B2 (ja) レジスタの割付方式
JP3036900B2 (ja) アセンブラ処理装置
JPH06266553A (ja) 計算機システム
JP2809073B2 (ja) 配列のメモリ割り付け方式
JPH05100866A (ja) コンパイル・リンク方式
JPH05313910A (ja) 機械語命令生成方式
JP2655608B2 (ja) プログラムソース複写処理方式
CN113220277A (zh) 一种嵌入式服务化的开发方法及装置
JPH04243424A (ja) 動的リンク方式
JPH10171656A (ja) スクリプト言語処理装置
JPS62212735A (ja) コンパイル方式
JPH0254368A (ja) 機械翻訳における翻訳制御方式
JPH05174167A (ja) データフロープログラムの実行制御方法
JPS6155738A (ja) 演算モ−ドの決定方式
McIsaac Combining ALGOL statement analysis with validity checking
JPH025135A (ja) メッセージスケジュール方式
JPH0296244A (ja) プログラム実行方式
JPH0588857A (ja) 実行形式フアイルの変換方式
JPH04248624A (ja) プログラム変換処理装置