JPH06214802A - レジスタ割り付け方式 - Google Patents

レジスタ割り付け方式

Info

Publication number
JPH06214802A
JPH06214802A JP5024658A JP2465893A JPH06214802A JP H06214802 A JPH06214802 A JP H06214802A JP 5024658 A JP5024658 A JP 5024658A JP 2465893 A JP2465893 A JP 2465893A JP H06214802 A JPH06214802 A JP H06214802A
Authority
JP
Japan
Prior art keywords
priority
variable
variables
allocation
window
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.)
Granted
Application number
JP5024658A
Other languages
English (en)
Other versions
JP3239907B2 (ja
Inventor
Hitoshi Abe
仁 阿部
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co 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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP02465893A priority Critical patent/JP3239907B2/ja
Publication of JPH06214802A publication Critical patent/JPH06214802A/ja
Application granted granted Critical
Publication of JP3239907B2 publication Critical patent/JP3239907B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 コンパイル装置の最適化処理部に於て、最適
レジスタ割り付けを可能にする。 【構成】 命令が所定数毎に区切られ、その各区間につ
いて、変数の出現状態が検査される。その状態を基に、
各区間での各変数の優先度が算定され、優先度の高い方
から順にレジスタ個数分迄の変数が、その区間の割り付
け候補とされる。割り付け候補とされた全変数につい
て、夫々が出現している夫々の区間での優先度を基に、
全変数についての優先順位が算定され、優先順位の高い
ものから順に、それが出現している各区間に於て、その
変数のその区間の空きレジスタへの割り付けが行なわれ
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はレジスタ割り付け方式に
関し、詳しくは、ソースコードをオブジェクトコードに
変換するコンパイル装置(コンパイラ)のレジスタ割り
付け方式に関する。なお「レジスタ割り付け」と「レジ
スタ割り当て」の語を下記(1)と(2)のように厳格
に区別している文献もあるが、本明細書では、「レジス
タ割り付け」の語を下記(1)と(2)の双方の意味で
用いる。 (1)レジスタ割り付け=プログラム中のある点で、値
をレジスタに常駐させたい変数の集合を求める。 (2)レジスタ割り当て=レジスタ割り付けフェーズに
続いて、変数の値を常駐させる為のレジスタを選ぶ。 (上記(1)、(2)を区別している文献としては、例
えば、A.V.Aho ほか著、原田賢一訳 "コンパイラ2(但
し「2」はローマ数字)" (1990.10.10) サイエンス社
p.628)
【0002】
【従来の技術】コンパイル装置でのレジスタ割り付けの
適、不適は、プログラムの実行速度に大きな影響があ
る。その最適化はコンパイル装置設計時の大きなテーマ
である。これに関する技術として、従来、下記文献に記
載されたようなものがあった。 文献1) Computer Language,1981[6] (米) G.J.Chaiti
n, M.A.Auslander, A.K.Chandra, J.Cocke, M.E.Hopkin
s and P.W.Markstein,"Register Allocation via Color
ing",p.47-57 文献2) Proceedings of the ACM SIGPLAN Symposium o
n Compiler Construction,(June 17-22,1984) (米) F.
C.Chow and J.Hennesy,"Register Allocation by Prior
ity-based Coloring",p.222-232 (ACM SIGPLAN = Assoc
iation for Computing Machinery Special interest gr
oup on programing languages) 文献3) 特開平1−103742号公報「最適コンパイ
ル方式」
【0003】
【発明が解決しようとする課題】文献1の技術では、グ
ラフ彩色法を応用してレジスタ割り付けを行っている。
例えば、図6(A)のようなソースコードの場合、まず変
数の生存区間を求め(図6(B))、その生存区間から干渉
グラフを生成し(図6(C))、このグラフを基に各変数
のレジスタ(Reg1〜3)への割り付けを行なう(図
6(D))。この従来技術では、各変数の生存区間全体を
レジスタ割り付けの最小単位としている。この為、例え
ば図7(A)のように変数(E)が一つ増え、その生存
区間のごく一部だけが他(C)と干渉しているに過ぎ
ず、他の区間ではレジスタへの割り付けが可能な場合で
あっても、干渉した変数の何れかが生存区間全体として
スピルの対象となってしまい(割り付けの対象外となっ
てしまい)、生成されたオブジェクトコードの効率が良
くない、という場合があった。
【0004】また文献2では、一通り彩色が終わった
後、スピルの対象となった変数の生存区間を複数に分割
する事で上記問題点を解消している。しかし、その際、
最初に生成した干渉グラフに新たなノードを付加し、再
計算を行なう為、計算時間が長くなり、且つ分割される
変数の生存区間が妥当でない場合があった。例えば図7
(B)のように変数A、Bが区間IR2で干渉してお
り、変数Aはこの区間IR2以外で10回参照され、終
点PEを除いて、干渉区間IR2では全く参照されてい
ない、また変数Bは干渉区間IR2の区間内のみで3回
参照されているものとする。グラフ彩色の結果では、ス
ピルの対象になるのは変数Bであり、Bが分割される。
しかしスピルの原因となった干渉区間IR2について上
記のような事情があったとすると、参照回数の多い変数
Bの方をレジスタへ割り付けるものとして残し、むしろ
変数Aを分割した方が、生成されるオブジェクトコード
の実行効率は高い。
【0005】文献3でも、彩色のあとで割り付けの済ん
でいない変数を分割する。しかし、それによって生じた
ノードを新たに干渉グラフには追加せず、残っているレ
ジスタの空き区間に対し、残っている変数の中の優先順
位の高いものの生存区間が出来る限り長くなるようその
変数の生存区間を分割して割り付けを行う。しかしこの
従来技術でも、上記文献2のものと同じく、既に彩色さ
れてしまった干渉部分の変数の参照状況については考慮
が為されておらず、上記文献2のものについて指摘した
欠点は、解消されていない。本発明の目的は、上記従来
技術の欠点を解消し、コンパイル装置の最適化処理部に
おいて、最適レジスタ割り付けが可能なレジスタ割り付
け方式を提供することにある。
【0006】
【課題を解決するための手段】上記目的達成のため本発
明では、ソースコードをオブジェクトコードに変換する
コンパイル装置において、命令を所定数毎に区切った各
区間について、各変数の出現状態を検査する出現状態検
査手段と、前記各変数の出現状態を基に前記各区間にお
ける各変数の優先度を算定し、優先度の高い方から順に
レジスタ個数分迄の変数を割り付け候補とする割り付け
候補抽出手段と、前記各区間で割り付け候補とされた全
変数について、夫々が出現している夫々の区間での優先
度を基に該全変数についての優先順位を算定する全候補
優先順位算定手段と、前記全変数について優先順位の高
いものから順に、その変数が出現している各区間につい
て、その区間の空きレジスタへのその変数の割り付けを
行なう割り付け処理手段とを備える。
【0007】
【作用】コンパイラ装置では、ソースコードのパージン
グ、中間言語生成、最適化処理を経てオブジェクトコー
ド生成が行なわれる。本発明レジスタ割り付け方式は、
その中の最適化処理の1つとして実施される。先ず、生
成された中間言語の一連の命令が所定数毎に区切られ、
この各区間(以後「ウィンドウ」という)について、各
変数の出現状態が検査される。出現状態の検査とは、そ
のウィンドウ内に変数の生存区間の始まり又は終りがあ
るか、そのウィンドウ内でその変数が何回参照、代入等
されているか等の検査をいう。生存区間の始まりと終り
では、レジスタ・メモリ間の変数の移動が行なわれる。
この処理はコストが高い(処理時間が掛かる)。従って
着目したウィンドウに始点、終点がある変数は、そこで
生存区間が連続しているものに比べ、レジスタ割り付け
の優先度が低く計算される。また周知のように、参照、
代入等の回数の多い変数ほどレジスタにおいた場合の処
理速度が上がる。従ってこの回数の多いものは、逆にレ
ジスタ割り付けの優先度が高く計算される。これら出現
状態を基に、各ウィンドウに於て各変数についての優先
度が算定される。そして優先度の高い方から順にレジス
タ個数分迄の変数がそのウィンドウにおけるレジスタへ
の割り付け候補とされる。例えば、そのウィンドウで使
用される変数が7個あり、レジスタが3個であったとす
れば、優先度1番から3番迄の変数が、そこでの割り付
け候補とされる。
【0008】このようにして各ウィンドウで割り付け候
補とされた変数全てについて、今度は、夫々が出現して
いる夫々のウィンドウでの優先度を基に、全変数を対象
とした優先順位が算定される。例えば、レジスタ数が3
個であれば各ウィンドウで3個づつ割り付け候補が抽出
される。ここで、ウィンドウ3では変数x,y,u、ウ
ィンドウ4では、変数j,u,y、というように、各ウ
ィンドウ、例えば10個のウィンドウ夫々で割り付け候
補とされたものを集めると、a〜z迄の27個の変数が
あったする。この27個の変数について1番から27番
迄の優先順位が定められる。この優先順位は例えば次の
ように定められる。即ち各ウィンドウにおける優先度が
評価値の大小に比例するとされているとき、同じ変数に
ついて、それが割り付け候補とされているウィンドウ全
てに於て、その変数に与えられている評価値の積算が行
なわれ、その値の大きいものの方が優先順位が高いとさ
れる。この優先順位に従い、その変数が出現している全
ウィンドウについて、その変数の各ウィンドウの空きレ
ジスタへの割り付けが行なわれる。例えば上記例示した
変数について、優先順位がu,h,j,…,…であった
とし、またこの変数uが、ウィンドウ6〜10でも出現
していたとする。変数uは、そこでは最優先でないウィ
ンドウ3,4を始め、ウィンドウ6〜10の全てに於
て、真っ先にレジスタに割り付けられる。但し割り付け
候補外となっているウィンドウでは割り付けられない。
次は、前記例示した優先順位に従えば、変数hについ
て、それが出現するウィンドウ全てにおいてレジスタ割
り付けが行なわれる。そして全てのウィンドウで割り付
け候補の変数が無くなったとき、レジスタ割り付け処理
は終了となり、各ウィンドウのレジスタ割り付けの情報
は、後処理のコード生成ユニットに与えられ、この情報
に基づいてコード化が行なわれる。
【0009】
【実施例】以下本発明の詳細を図示実施例に基いて説明
する。図2にコンパイル装置1の概略構成を示す。前述
のように、ソースコードは先ずパーザ2によりパージン
グされる。次に中間言語生成ユニット3により、中間言
語に置き換えられる。この中間言語は最適化処理ユニッ
ト4に於て、本発明方式によるレジスタ割り付けや、そ
の他の最適化処理を受ける。そしてコード生成ユニット
5に於てコード化され、オブジェクトコードとされる。
なお各種最適化の処理、例えば共通部分式の削除、命令
再配置、ピープホール最適化等については、A.V.Aho ほ
か著 "Compilers Principles, Technique, andTools"
(1986) Addison-Wesley Publishers Limited (米) 等に
述べられており、またコンパイラ装置の他の各処理につ
いても同書に述べられている。
【0010】本発明の一実施例たる割り付け装置の構成
を図1に示す。この装置41は前記最適化処理ユニット
4の中に配置される。なお前後のユニット等、既に説明
をしたものは、同じ符号を付すのみとし、再度の説明は
しない。図に於て31は中間言語保持部で、中間言語生
成ユニット3で生成された中間言語を保持する。411
は出現状態検査部で、この中間言語の一連の命令を所定
数づつ(1ウィンドウ分づつ)読み込み、各変数の出現
状態を検査して、各ウィンドウでの各変数の出現状態を
表わす情報を出現情報保持部412に格納する。ここに
出現状態の検査とは、その変数の生存区間がそのウィン
ドウで始まっているか、或いは終りとなっているか、ま
た、その変数がそのウィンドウ内で何回参照され或いは
代入されるか等の検査をいう。前述のように、生存区間
の始まりと終りでは、レジスタ・メモリ間の変数の移動
が行なわれる。この処理はコストが高い(処理時間が掛
かる)。従って着目したウィンドウに始点、終点がある
変数は、そこで生存区間が連続しているものに比べ、優
先度が低いと算定される。また参照回数或いは代入回数
の多い変数ほどレジスタにおいた場合の処理速度が上が
る。従ってこの回数の多いものほど、レジスタ割り付け
の優先度が高いと算定される。
【0011】413は割り付け候補抽出部で、出現情報
保持部412に格納されているこれら各変数の出現状態
の情報に基づき、各ウィンドウにおける各変数の優先度
を算定する。なお図では「割り付け」は「割付」と表示
する。例えば前述のように、そのウィンドウで使用され
る変数が7個あり、レジスタが3個であったとすれば、
優先度1番から3番迄の変数が、そのウィンドウでの割
り付け候補として抽出され、割り付け候補保持部414
に格納される。なお優先度の具体的算定例は後述する。
415は全候補優先順位算定部で、割り付け候補保持部
414に格納されている割り付け候補全てについて、夫
々が出現している夫々のウィンドウでの優先度を基に、
全変数通しての優先順位を算定する。例えば前述のよう
に、レジスタ数が3個であれば、各ウィンドウで割り付
け候補が3個づつ抽出される。そしてウィンドウ3では
変数x,y,u、ウィンドウ4では、変数j,u,y、
というように、各ウィンドウ、例えば10個のウィンド
ウ夫々で、a〜z迄の27個の変数があったする。この
27個の変数について1番から27番迄の優先順位が定
められる。この優先順位は、本実施例では次のように定
める。即ち、評価値の大なるものを優先度が高いとし、
同じ変数について、それが割り付け候補とされているウ
ィンドウ全てに於て与えられている評価値を積算する。
この積算値を大きさの順にソートし、大きいものの方を
優先順位が高いとする。全候補優先順位算定部415は
このようにして算定した全割り付け候補についての優先
順位の情報を全候補優先順位保持部416に格納する。
【0012】417は割り付け処理部で、この優先順位
に従い、その変数が出現している全ウィンドウについ
て、そのウィンドウの空きレジスタへの割り付けを行な
う。例えば上記例示した変数について、優先順位がu,
h,j,…,…であったとし、この変数uが、他にもウ
ィンドウ6〜10でも出現していたとする。割り付け処
理部417は、上記例示では最優先でないウィンドウ
3,4を始め、ウィンドウ6〜10の全てに於て、この
変数uに対し、真っ先にレジスタを割り付ける。その後
は、前記例示した優先順位に従って、その変数が出現す
るウィンドウ全てに於て、それに対しレジスタが割り付
ける。全てのウィンドウで割り付け候補の変数が無くな
ったとき、割り付け処理部417はその処理を終了し、
この処理で生成されたレジスタ割り付けの情報を割り付
け情報保持部51に格納する。後処理のコード生成ユニ
ット5は、この情報に基づいてコード化処理を行なう。
【0013】具体的処理例を図3に示す。同図(A)の
ようなソースコードをパージングし、同図(B)のよう
な内部表現に変えた場合、この状態ではコストの高いロ
ード/ストア命令が6回ある。例えば3命令を1つのウ
ィンドウとすると、同図(C)のように各変数a,b,
cの生存区間が分割される。これら各ウィンドウW1〜
W3内の各変数について、下記式(1)により優先順位
が算定される。レジスタ数を2とすると、その結果は同
図(D)のようになる。なお、優先順位が高いものを左
側に記載し、そのウィンドウではメモリ中に追い出され
るものを、( )で囲って表示した。次に3つのウィンド
ウW1〜W3の全部の割り付け候補が取り出され、夫々
の優先度が積算される。ここでは後述の式(1)によら
ず、単純に優先順位1位にポイント2、2位にポイント
1が与えられるとする。変数bが積算ポイント「5」、
cが「3」、aが「1」となる。
【0014】この積算ポイントの大きい方が優先順位が
高いとされる。従って変数bが最優先とされ、この変数
bに対し、これが生存している全てのウィンドウW1〜
W3で、その部分のレジスタ1が割り付けられる(図3
(E))。優先順位2番目は変数cであった。この変数
cの生存区間はウィンドウW2,W3である。これらウ
ィンドウではまだ空きレジスタ(レジスタ2)がある。
これに変数cが割り付けられる(図3(E))。次に変
数aに対し、レジスタの割り付けが行なわれる。この変
数aの生存区間はウィンドウW1であった。このウィン
ドウではまだレジスタ2が空いている。この部分のレジ
スタ2に変数aが割り付けられる(図3(E))。図3
(E)で示されるようなレジスタ割り付け情報は、割り
付け情報保持部51を介してコード生成ユニット5に供
給される。コード生成ユニット5がこの情報に従い図3
(B)の内部表現を置き換えると、図3(F)のように
なる。命令数では1つ増えているが、コストの高い命
令、即ちメモリからのロード/ストア命令は、図3
(B)の6個から2個へと極端に減少している。この
為、実行効率は向上する。
【0015】優先度は例えば下記式(1)で算出され
る。この優先度の値が大きい変数ほど優先順位が高いと
され、各ウィンドウにおいて、優先度の大きいものから
順にレジスタ数と同じ数だけ変数が抽出され、これらが
割り付け候補とされる。 優先度=ロード利益×ウィンドウ内の参照回数+ストア利益×ウィン ドウ内の代入回数−移動費用×n …………(式1) 各項目の内容は次の通りである。 ロード利益:その変数をレジスタに置いた場合、メモリ
に置いて参照する場合に比べ節約される実行時間 ストア利益:その変数をレジスタに置いた場合、メモリ
へストアする場合に比べ節約される実行時間 移動費用 :メモリ・レジスタ間の移動に要する時間。 n :メモリ・レジスタ間で移動する回数。
【0016】参照回数、代入回数が多いものほどレジス
タに置いた方が有利なことは知られている。そこでこの
式(1)でも、「ロード利益×ウィンドウ内の参照回
数」及び「ストア利益×ウィンドウ内の代入回数」の値
は、優先度に対してプラスとし優先度を高める要素とし
ている。一方、レジスタに置くためには、生存区間の最
初と最後にメモリ・レジスタ間で変数の移動をしなけれ
ばならない。この移動の費用(処理時間)は高い。そこ
で「移動費用×n」の値は優先度に対しマイナスとし、
優先度を下げる要素としている。なお移動する回数n
は、具体的にはそのウィンドウ内に、その変数の生存区
間の始まり又は終りがあった場合に1を加算していくこ
とで計数され、その生存区間が前後のウィンドウに跨が
っていれば「n=0」、そのウィンドウ内に始点又は終
点があれば「n=1」、始点、終点の双方があるものは
「n=2」となり、大きいほどその変数の優先度が下が
る。
【0017】図4に割り付け候補を抽出するまでのフロ
ーを示す。尚このフローは1つの変数についてのもので
ある。処理されるのは複数の変数であり、これらに対し
ては、図4のフロー全体を変数の数の分繰り返しても良
く、或いは各ステップ毎に変数全部に対して並列に処理
をしても良い。まず式(1)のnの値が初期値「0」に
される(ステップS1)。なお「ステップ」の語は以後
省略する。次にウィンドウの大きさ分のコードが読み込
まれる(ステップS2)。次に移動回数nが求められる
(S3〜S6)。そのウィンドウから生存区間が開始し
ている、あるいはそのウィンドウで生存区間が終了して
いるならば、nに1が加えられる。次に1ウィンドウ分
の各命令が順にチェックされ、その変数の参照回数と代
入回数が計数される(S7)。此処までの処理は出現状
態検査部411によって実行され、これらの値は出現情
報保持部412に格納される。
【0018】次にこれらの値が式(1)に代入され、そ
の変数の優先度が算出される(S8)。算出されたその
変数の優先度は割り付け候補保持部414に格納される
(S9)。このS8,S9の処理は割り付け候補抽出部
413によって行なわれる。これらの処理(S1〜S
9)を全てのウィンドウについて繰り返す(S10)。
図4の処理が終ると、割り付け候補抽出部413は割り
付け候補保持部414の変数を優先度について大きさ順
になるようにソートする。そして各ウィンドウ毎に優先
度が大きいものからレジスタ数分の変数を、そのウィン
ドウの割り付け候補として残し割り付け候補保持部41
4に再格納する。なお全ての変数について図4の処理が
終ったとき、各ウィンドウ毎の割り付け候補がレジスタ
分だけ残っているようにしても良い。このようにする場
合は割り付け候補保持部414には、始めから各ウィン
ドウ毎にレジスタ数分の格納領域のみを設けておく。そ
して各変数の優先度格納の際、先ずそのウィンドウの領
域に空きがあるかをチェックし、あれば、そのまま格納
し、また空きがないときは、既に格納されている優先度
にこの新たな優先度を加えてソートし、大きい順に領域
数分の優先度を再格納する。このようにすると、全ての
変数について図4の処理が終ったとき、割り付け候補保
持部414の各ウィンドウ毎の領域に、レジスタ分の割
り付け候補が残っていることになる。
【0019】図5にレジスタ割り付け処理のフローを示
す。まず各ウィンドウで割り付け候補とされた変数全て
について、各ウィンドウで、その変数に与えられた優先
度の積算が行なわれ、積算値の大きさの順にソートされ
る(S11)。この処理は全候補優先順位算定部415
によって行なわれ、優先順位の情報は全候補優先順位保
持部416に格納される。ここでは積算値の大きいもの
が優先順位が高い。この優先順位の高い変数から順に、
それが出現している全てのウィンドウで、その変数の空
きレジスタへの割り付けが行なわれる(S12)。この
処理は割り付け処理部417によって、割り付け候補と
された変数が無くなるまで続けられる(S13)。処理
が終ったら、生成された割り付け情報は割り付け情報保
持部51に格納される。コード生成ユニット5はこの情
報を基にコード生成を行なう。最後に請求項の構成と実
施例の構成とで名称が異なるものについて対応を説明す
る。411が出現状態検査手段にあたる。割り付け候補
抽出部413が割り付け候補抽出手段にあたる。全候補
優先順位算定部415が全候補優先順位算定手段にあた
る。割り付け処理部417が割り付け処理手段にあた
る。
【0020】
【発明の効果】以上説明したように本発明では、命令を
所定数毎に区切り、その各区間について、各変数の出現
状態を検査し、その状態を基に各区間における各変数の
優先度を算定し、優先度の高い方から順にレジスタ個数
分迄の変数を割り付け候補とし、各区間で割り付け候補
とされた全ての変数を対象にして、夫々が出現している
夫々の区間での優先度を基に優先順位を算定し、優先順
位の高いものから順に、その変数が出現している各区間
について、その区間の空きレジスタへの割り付けを行な
うようにした。従って、レジスタ割り付けの効果が高い
ものから順にレジスタへの割り付けが行なわれることに
なり、従来の手法より効率の高いレジスタ割り付けが実
現できる。
【図面の簡単な説明】
【図1】実施例装置の構成を示すブロック図。
【図2】コンパイル装置の構成例を示すブロック図。
【図3】本発明によるレジスタ割り付け例を示す線図。
【図4】各ウィンドウ毎の割り付け候補抽出手順例を示
すフローチャート。
【図5】レジスタ割り付け手順例を示す線図。
【図6】従来技術によるレジスタ割り付けの手順を説明
するための線図(その1)。
【図7】従来技術によるレジスタ割り付けの手順を説明
するための線図(その2)。
【符号の説明】
1 コンパイル装置 411 出現状態検査手段 413 割り付け候補抽出手段 415 全候補優先順位算定手段 417 割り付け処理手段

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ソースコードをオブジェクトコードに変
    換するコンパイル装置において、 命令を所定数毎に区切った各区間について、各変数の出
    現状態を検査する出現状態検査手段と、 前記各変数の出現状態を基に前記各区間における各変数
    の優先度を算定し、優先度の高い方から順にレジスタ個
    数分迄の変数を割り付け候補とする割り付け候補抽出手
    段と、 前記各区間で割り付け候補とされた全変数について、夫
    々が出現している夫々の区間での優先度を基に該全変数
    についての優先順位を算定する全候補優先順位算定手段
    と、 前記全変数について優先順位の高いものから順に、その
    変数が出現している各区間について、その区間の空きレ
    ジスタへのその変数の割り付けを行なう割り付け処理手
    段とを備えたことを特徴とするレジスタ割り付け方式。
JP02465893A 1993-01-20 1993-01-20 レジスタ割り付け方式 Expired - Fee Related JP3239907B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP02465893A JP3239907B2 (ja) 1993-01-20 1993-01-20 レジスタ割り付け方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP02465893A JP3239907B2 (ja) 1993-01-20 1993-01-20 レジスタ割り付け方式

Publications (2)

Publication Number Publication Date
JPH06214802A true JPH06214802A (ja) 1994-08-05
JP3239907B2 JP3239907B2 (ja) 2001-12-17

Family

ID=12144252

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02465893A Expired - Fee Related JP3239907B2 (ja) 1993-01-20 1993-01-20 レジスタ割り付け方式

Country Status (1)

Country Link
JP (1) JP3239907B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284968A (ja) * 1999-03-31 2000-10-13 Toshiba Corp コンパイル方法及びコンパイラ装置
JP2006286027A (ja) * 2006-07-28 2006-10-19 Matsushita Electric Ind Co Ltd コンパイラ装置およびコンパイル方法
JP2009301326A (ja) * 2008-06-13 2009-12-24 Nec System Technologies Ltd コンパイル装置、コンパイラ、コンパイル方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7012402B1 (ja) 2021-10-13 2022-01-28 株式会社ヤマサ 砂利生産管理方法および砂利生産管理用コンピュータプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284968A (ja) * 1999-03-31 2000-10-13 Toshiba Corp コンパイル方法及びコンパイラ装置
JP2006286027A (ja) * 2006-07-28 2006-10-19 Matsushita Electric Ind Co Ltd コンパイラ装置およびコンパイル方法
JP4721975B2 (ja) * 2006-07-28 2011-07-13 パナソニック株式会社 コンパイラ装置およびコンパイル方法
JP2009301326A (ja) * 2008-06-13 2009-12-24 Nec System Technologies Ltd コンパイル装置、コンパイラ、コンパイル方法

Also Published As

Publication number Publication date
JP3239907B2 (ja) 2001-12-17

Similar Documents

Publication Publication Date Title
US5428793A (en) Method and apparatus for compiling computer programs with interproceduural register allocation
US7353503B2 (en) Efficient dead code elimination
EP0810523A2 (en) Method for sequencing computer instruction execution in a data processing system
JP2500079B2 (ja) プログラムの最適化方法及びコンパイラ・システム
US7308682B2 (en) Method and apparatus for recovering data values in dynamic runtime systems
US5418958A (en) Register allocation by decomposing, re-connecting and coloring hierarchical program regions
EP0702293B1 (en) Compiler with improved live range interference investigation
US20020010911A1 (en) Compile time pointer analysis algorithm statement of government interest
US7120904B1 (en) Data-flow method for optimizing exception-handling instructions in programs
US6117185A (en) Skip list data storage during compilation
US5367684A (en) Register allocation using an improved register candidate usage matrix
EP0795821A1 (en) Optimization apparatus using global analysis to remove redundant transfer instructions
Davidson et al. Register allocation and exhaustive peephole optimization
JPH04213118A (ja) プログラム翻訳装置およびプログラム翻訳方法
JPH06214802A (ja) レジスタ割り付け方式
Hank Machine independent register allocation for the IMPACT-I C compiler
CN1188933A (zh) 程序设计中内存操作错误的识别方法
Goubault Implementing functional languages with fast equality, sets and maps: an exercise in hash consing
Johnson et al. Optimal Algorithms for the Vertex Updating Problem of a Minimum Spanning Tree.
JPH02236638A (ja) レジスタ割付け管理方式
Bloom et al. Criteria for Evaluating the Performance of Compilers
El Naga et al. A hardware Algol machine
JPH0371233A (ja) コンパイラにおける最適データ割付け方式
Nowicki et al. Flow line scheduling by tabu search
JP2000029716A (ja) レジスタ割り付け方法

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees