JP5165969B2 - プログラムのコンパイルのために変数にレジスタを割り付ける技術 - Google Patents
プログラムのコンパイルのために変数にレジスタを割り付ける技術 Download PDFInfo
- Publication number
- JP5165969B2 JP5165969B2 JP2007223143A JP2007223143A JP5165969B2 JP 5165969 B2 JP5165969 B2 JP 5165969B2 JP 2007223143 A JP2007223143 A JP 2007223143A JP 2007223143 A JP2007223143 A JP 2007223143A JP 5165969 B2 JP5165969 B2 JP 5165969B2
- Authority
- JP
- Japan
- Prior art keywords
- variable
- register
- variables
- interference
- assignment
- 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 - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
非特許文献1−5については後述する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
図11は、本実施形態に係る割付結果66の一例を示す。変数a1には物理レジスタr1が割り付けられる。変数a3−4のそれぞれには物理レジスタr1が割り付けられる。変数b1−4のそれぞれには物理レジスタr2が割り付けられる。変数c1−3のそれぞれには物理レジスタr1が割り付けられる。変数c4には物理レジスタr2が割り付けられる。一方、変数a2には仮想レジスタr4が割り付けられ、変数b5には仮想レジスタr3が割り付けられる。
図12は、本実施形態に係る干渉情報62Bの一例を示す。更新部640は、図11において同一グループに分類された複数の変数を、新たな1つの変数に置換する。例えば、更新部640は、変数c1−3を、変数c1´に置換し、変数a3−4を、変数a3´に置換し、変数b1−4を、変数b1´に置換する。
[欠点]変数x1と変数x2を融合すると、融合後の変数xと干渉関係にある他の変数の数は、融合前の変数x1および変数x2の何れかの次数と等しいかそれより多くなる。従って、変数xをレジスタに割り付けにくくなる。
なお、シンプリファイ部652がS1762として行う処理も、上記干渉情報62Aに代えて干渉情報62Bに基づき、上記優先度65Aに代えて優先度65Bに基づくことの他は、図18に示す処理と略同一であるから説明を省略する。
図21は、本実施形態に係るコンパイラ装置10がコンパイルの対象とする他のプログラムについて、変数の干渉関係及び優先度の一例を示す。
図29は、変数の融合(S1740)によって変数の干渉情報および優先度が併合される処理の一例を示す。
22 対象プログラム
24 出力プログラム
60 プログラム
62 干渉情報
64 代入情報
65 優先度
66 割付結果
68 割付結果
69 結果プログラム
100 第1最適化部
110 レジスタ割付部
120 記憶装置
130 第2最適化部
500 コンピュータ
600 変数変換部
610 代入命令生成部
620 情報生成部
630 第1割付部
632 シンプリファイ部
635 セレクト部
640 更新部
650 第2割付部
652 シンプリファイ部
655 セレクト部
660 スピル生成部
670 出力部
Claims (12)
- コンパイルの対象となるプログラムの中で使用される変数にレジスタを割り付けるコンパイラ装置であって、
前記プログラムの中で使用されるある変数と他の変数とが前記プログラムの実行中の何れかの時点において同時に有効な値を保持している関係である干渉関係にあるかどうかを示す干渉情報、および、前記プログラム中の代入命令の代入元の変数を代入先の変数に対応付けた代入情報を記憶している記憶装置と、
前記プログラムの中で使用されるそれぞれの変数に、前記干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において、予め定められた基準数以上のレジスタの中から予め定められた手順に従ってレジスタを選択して割り付ける第1割付部と、
複数の前記変数に、前記第1割付部により同一のレジスタが割り付けられ、かつ、当該複数の変数が前記代入情報において互いに対応付けられていることを条件に、当該複数の変数を新たな変数に置換すると共に、当該複数の変数のそれぞれについての前記干渉関係を前記記憶装置から読み出して併合して、当該新たな変数についての干渉関係を生成し、生成した当該干渉関係により前記干渉情報を更新する更新部と、
当該複数の変数に代えて当該新たな変数を使用する前記プログラム中の各変数に、更新した前記干渉情報に基づく干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において、前記第1割付部と同一の前記手順に従って前記基準数のレジスタの中からレジスタを選択して割り付ける第2割付部と、
前記第2割付部が変数にレジスタを割り付けた前記プログラムを出力する出力部と
を備えるコンパイラ装置。 - 前記予め定められた基準数は、前記プログラムの実行に使用することのできるレジスタである物理レジスタの上限数として予め定められた数であり、
前記第1割付部は、前記基準数の物理レジスタに、前記プログラムの実行には使用することのできない仮想的なレジスタである仮想レジスタを少なくとも1つ加えたレジスタの集合の中から、前記予め定められた手順に従ってレジスタを選択して各変数に割り付け、
前記第2割付部は、当該新たな変数を使用する前記プログラム中の各変数に、前記基準数と同数の物理レジスタの中から前記予め定められた手順に従ってレジスタを選択して割り付ける、請求項1に記載のコンパイラ装置。 - 前記第1割付部は、レジスタ割付の候補となる第1の変数について、当該第1の変数を代入元とした代入先の第2の変数、または、当該第1の変数を代入先とした代入元の第2の変数を、前記代入情報に基づいて選択すると共に、更新前の前記干渉情報に基づく干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において当該第1の変数に割付可能なレジスタのうち、選択した当該第2の変数に既に割り付けたレジスタと同一のレジスタを、当該第1の変数に割り付け、
前記更新部は、干渉関係を併合する当該複数の変数については、さらに、前記代入情報を併合して前記記憶装置の代入情報を更新し、
前記第2割付部は、レジスタ割付の候補となる第1の変数について、当該第1の変数を代入元とした代入先の第2の変数、または、当該第1の変数を代入先とした代入元の第2の変数を、前記代入情報に基づいて選択すると共に、更新後の前記干渉情報に基づく干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において当該第1の変数に割付可能なレジスタのうち、選択した当該第2の変数に既に割り付けたレジスタと同一のレジスタを、当該第1の変数に割り付ける、
請求項2に記載のコンパイラ装置。 - 前記記憶装置は、さらに、それぞれの変数について当該変数にレジスタを割り付ける優先度を記憶しており、また、スタックを実現するための記憶領域を有し、
前記第1割付部は、
干渉関係にある変数の数が前記基準数未満の変数を前記干渉情報に基づいて検索し、検索されれば当該変数を選択し、検索されなければ前記優先度の最も低い変数を選択して、当該選択した変数を前記スタックにプッシュすると共に、当該選択した変数についての干渉関係を前記干渉情報から除外する処理、を、割り付けるべき全ての変数をプッシュするまで繰り返すシンプリファイ部と、
前記スタックから変数をポップし、ポップした当該変数を代入元とする代入先の変数、または、ポップした当該変数を代入先とする代入元の変数を前記代入情報に基づいて選択し、ポップした当該変数と干渉関係にある他の変数にはまだ割り付けられていない物理レジスタである未割当レジスタのうち、選択した当該変数に既に割り付けられたレジスタがあれば当該レジスタを選択し、選択した当該変数に既に割り付けられた当該レジスタが前記未割当レジスタの中に無ければ他の未割当レジスタを選択し、未割当レジスタが無ければポップした当該変数と干渉関係にある他の変数にはまだ割り付けられていない仮想的なレジスタである未割当仮想レジスタのうち、選択した当該変数に既に割り付けられた仮想レジスタがあれば当該レジスタを選択して、ポップした当該変数に選択した当該レジスタを割り付ける、処理を、前記スタックが空になるまで繰り返すセレクト部と
を有し、
前記更新部は、複数の前記変数に、前記仮想的なレジスタを含め同一のレジスタが割り付けられており、かつ、前記代入情報において互いに対応付けられていることを条件に、当該複数の変数の少なくとも何れか1つとの間で干渉関係にある他の変数を、前記記憶装置に記憶された前記干渉情報に基づき検索し、当該干渉関係を、当該複数の変数に代わる新たな変数と当該他の変数との間の干渉関係に変更し、
前記第2割付部は、
干渉関係の併合された前記干渉情報に基づいて、干渉関係にある変数の数が前記基準数未満の変数を検索し、検索されれば当該変数を選択し、検索されなければ前記優先度の最も低い変数を選択して、当該選択した変数を前記スタックにプッシュすると共に、当該選択した変数についての干渉関係を前記干渉情報から除外する処理、を、割り付けるべき全ての変数をプッシュするまで繰り返すシンプリファイ部と、
前記スタックから変数をポップし、ポップした当該変数を代入元とする代入先の変数、または、ポップした当該変数を代入先とする代入元の変数を前記代入情報に基づいて選択し、ポップした当該変数と干渉関係にある他の変数にはまだ割り付けられていない物理レジスタである未割当レジスタのうち、選択した当該変数に既に割り付けられたレジスタがあれば当該レジスタを選択し、選択した当該変数に既に割り付けられたレジスタが前記未割当レジスタの中に無ければ他の未割当レジスタを選択し、選択した当該未割当レジスタをポップした当該変数に割り付け、未割当レジスタを選択できなければポップした当該変数をスピルすると決定する、処理を、前記スタックが空になるまで繰り返すセレクト部と
を有し、
前記出力部は、コンパイルした前記プログラムに、スピルすると決定した変数の値については使用の毎にメモリからレジスタに読み出す命令、および、変数値の定義の毎にレジスタからメモリへ当該変数値を書込む命令を含めて出力する、請求項3に記載のコンパイラ装置。 - 前記第1割付部における前記セレクト部は、ポップした当該変数と干渉関係にある他の変数にはまだ割り付けられていない仮想レジスタである未割当仮想レジスタのうち、ポップした当該変数と前記代入情報において対応付けられている他の変数に既に割り付けられた仮想レジスタが存在しなくても、ポップした当該変数と干渉関係にある他の変数にはまだ割り付けられていない、既に他の変数に割り付けた前記仮想レジスタがあれば、ポップした当該変数に当該仮想レジスタを割り付け、ポップした当該変数と干渉関係にある他の変数にはまだ割り付けられていないレジスタが、当該仮想レジスタを含めて存在しなければ、新たに前記仮想レジスタを生成してポップした当該変数に割り付ける、請求項4に記載のコンパイラ装置。
- 前記記憶装置は、前記プログラムにより使用される各変数をノードとし、互いに干渉関係にある変数の組を示すノードの組を、エッジで連結したグラフである干渉グラフを、前記干渉情報として記憶しており、
前記第1割付部および前記第2割付部は、各レジスタを色彩とし、前記干渉グラフの各ノードを、互いにエッジで直接連結されたノードの組を同一の色彩で彩色しない範囲内で、各色彩で彩色することで、変数に割り付けるレジスタを決定し、
前記更新部は、前記第1割付部により同一のレジスタが割り付けられ、かつ、前記代入情報において互いに対応付けられた複数の変数について、前記干渉グラフにおける当該複数の変数を表す複数のノードを新たな1つのノードに置換すると共に、前記干渉グラフにおける当該複数のノードのそれぞれと他のそれぞれのノードとの間のエッジを、当該新たな1つのノードと当該他のそれぞれのノードとの間のエッジに置換する、請求項1に記載のコンパイラ装置。 - ある変数を、その変数の生存区間を分割して、分割した生存区間ごとにその変数の値を保持する複数の変数を生成することで、当該複数の変数に変換する変数変換部と、
変換した当該複数の変数のうちのある変数から他の変数への代入命令を前記プログラム中に生成する代入命令生成部と、
変換後の当該複数の変数を含む、前記プログラム中で使用される複数の変数についての干渉関係を示す情報を、前記干渉情報として生成して前記記憶装置に格納すると共に、生成した前記代入命令の代入元および代入先となる変数の組を示す代入情報を生成して前記記憶装置に格納する情報生成部と
を更に備え、
前記第1割付部は、前記記憶装置に格納された前記干渉情報及び前記代入情報に基づいて変数にレジスタを割り付け、
前記更新部は、前記記憶装置に格納された前記代入情報に基づいて、前記記憶装置に格納された前記干渉情報を更新する、請求項3に記載のコンパイラ装置。 - 前記第2割付部がある第1変数をスピルすると決定したことを条件に、当該第1変数に対する変数値の代入命令を、当該変数値を格納するレジスタの値をメモリ上の領域に格納する命令に変換すると共に、当該第1変数の変数値を参照する命令を、当該変数値をメモリ上の領域から読み出してレジスタに格納し、当該レジスタの値を参照する命令に変換する、スピル生成部と、
前記第1割付部は、さらに、前記スピル生成部および前記第2割付部が生成したレジスタを変数とみなして、それぞれの変数にレジスタを割り付ける
請求項3に記載のコンパイラ装置。 - 前記第1割付部は、前記更新部が前記干渉情報を更新する毎に、前記プログラムの中で使用されるそれぞれの変数に、前記更新部が更新した前記干渉情報に基づき前記干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において、前記基準数以上のレジスタの中から前記手順に従ってレジスタを選択して割り付ける処理、を行い、
前記更新部は、前記第1割付部がレジスタを割り付ける毎に、同一のレジスタを割り付け、かつ、前記代入情報において相互に対応付けられた複数の変数のそれぞれについての前記干渉関係を前記記憶装置から読み出して併合することで、当該複数の変数に代わる新たな変数についての干渉関係を生成し、生成した当該干渉関係により前記干渉情報を更新する処理、を行い、
前記第2割付部は、前記更新部が前記更新する処理を予め定められた回数行ったことを条件に、更新後の前記干渉情報に基づいて変数にレジスタを割り付ける
請求項1に記載のコンパイラ装置。 - 前記第1割付部は、レジスタ割付の候補となる第1の変数について、当該第1の変数を代入元とした代入先の第2の変数、または、当該第1の変数を代入先とした代入元の第2の変数を、前記代入情報に基づいて選択すると共に、更新前の前記干渉情報に基づく干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において当該第1の変数に割付可能なレジスタのうち、選択した当該第2の変数に既に割り付けたレジスタと同一のレジスタを、当該第1の変数に割り付け、
前記更新部は、干渉関係を併合する当該複数の変数については、さらに、前記代入情報を併合して前記記憶装置の代入情報を更新し、
前記第2割付部は、レジスタ割付の候補となる第1の変数について、当該第1の変数を代入元とした代入先の第2の変数、または、当該第1の変数を代入先とした代入元の第2の変数を、前記代入情報に基づいて選択すると共に、更新後の前記干渉情報に基づく干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において当該第1の変数に割付可能なレジスタのうち、選択した当該第2の変数に既に割り付けたレジスタと同一のレジスタを、当該第1の変数に割り付ける、
請求項1に記載のコンパイラ装置。 - コンパイルの対象となるプログラムの中で使用される変数に、コンピュータによってレジスタを割り付けるコンパイル方法であって、 前記コンピュータは、 前記プログラムの中で使用されるある変数と他の変数とが前記プログラムの実行中の何れかの時点において同時に有効な値を保持している関係である干渉関係にあるかどうかを示す干渉情報、および、前記プログラム中の代入命令の代入元の変数を代入先の変数に対応付けた代入情報を記憶している記憶装置を有し、 前記プログラムの中で使用されるそれぞれの変数に、前記干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において、予め定められた基準数以上のレジスタの中から予め定められた手順に従ってレジスタを選択して割り付けるステップと、 複数の前記変数に、前記割り付けるステップにおいて同一のレジスタが割り付けられ、かつ、当該複数の変数が前記代入情報において互いに対応付けられていることを条件に、当該複数の変数を新たな変数に置換すると共に、当該複数の変数のそれぞれについての前記干渉関係を前記記憶装置から読み出して併合して、当該新たな変数についての干渉関係を生成し、生成した当該干渉関係により前記干渉情報を更新するステップと、 当該複数の変数に代えて当該新たな変数を使用する前記プログラム中の各変数に、更新した前記干渉情報に基づく干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において、前記割り付けるステップと同一の前記手順に従って前記基準数のレジスタの中からレジスタを選択して割り付けるステップと、 後段の前記割り付けるステップにおいてレジスタに割り付けられた変数を含む前記プログラムを出力するステップと を実行する、コンパイル方法。
- コンパイルの対象となるプログラムの中で使用される変数にレジスタを割り付けるコンパイラ装置として、コンピュータを機能させるプログラムであって、
前記コンピュータは、
前記プログラムの中で使用されるある変数と他の変数とが前記プログラムの実行中の何れかの時点において同時に有効な値を保持している関係である干渉関係にあるかどうかを示す干渉情報、および、前記プログラム中の代入命令の代入元の変数を代入先の変数に対応付けた代入情報を記憶している記憶装置を有し、
前記コンピュータを、
前記プログラムの中で使用されるそれぞれの変数に、前記干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において、予め定められた基準数以上のレジスタの中から予め定められた手順に従ってレジスタを選択して割り付ける第1割付部と、
複数の前記変数に、前記第1割付部により同一のレジスタが割り付けられ、かつ、当該複数の変数が前記代入情報において互いに対応付けられていることを条件に、当該複数の変数を新たな変数に置換すると共に、当該複数の変数のそれぞれについての前記干渉関係を前記記憶装置から読み出して併合して、当該新たな変数についての干渉関係を生成し、生成した当該干渉関係により前記干渉情報を更新する更新部と、
当該複数の変数に代えて当該新たな変数を使用する前記プログラム中の各変数に、更新した前記干渉情報に基づく干渉関係にある変数の組に同一のレジスタを割り付けない範囲内において、前記第1割付部と同一の前記手順に従って前記基準数のレジスタの中からレジスタを選択して割り付ける第2割付部と、
前記第2割付部が変数にレジスタを割り付けた前記プログラムを出力する出力部
として機能させるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007223143A JP5165969B2 (ja) | 2007-08-29 | 2007-08-29 | プログラムのコンパイルのために変数にレジスタを割り付ける技術 |
US12/133,349 US8266603B2 (en) | 2007-08-29 | 2008-06-04 | Technique for allocating register to variable for compiling |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007223143A JP5165969B2 (ja) | 2007-08-29 | 2007-08-29 | プログラムのコンパイルのために変数にレジスタを割り付ける技術 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009059001A JP2009059001A (ja) | 2009-03-19 |
JP5165969B2 true JP5165969B2 (ja) | 2013-03-21 |
Family
ID=40409535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007223143A Expired - Fee Related JP5165969B2 (ja) | 2007-08-29 | 2007-08-29 | プログラムのコンパイルのために変数にレジスタを割り付ける技術 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8266603B2 (ja) |
JP (1) | JP5165969B2 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8225295B2 (en) * | 2007-09-21 | 2012-07-17 | Jens Palsberg | Register allocation by puzzle solving |
US8180805B2 (en) * | 2008-08-25 | 2012-05-15 | Sap Ag | Systems and methods for assigning hosts in response to a data query |
US8713543B2 (en) * | 2009-02-11 | 2014-04-29 | Johnathan C. Mun | Evaluation compiler method |
US8732680B2 (en) * | 2009-02-19 | 2014-05-20 | International Business Machines Corporation | Intermediate form for bitwidth sensitive applications and uses thereof |
CA2675680C (en) * | 2009-08-27 | 2013-05-14 | Ibm Canada Limited - Ibm Canada Limitee | Generating object code that uses calculated contents for a variable determined from a predicate |
US8516465B2 (en) * | 2009-12-04 | 2013-08-20 | Oracle America, Inc. | Register prespill phase in a compiler |
US9009692B2 (en) * | 2009-12-26 | 2015-04-14 | Oracle America, Inc. | Minimizing register spills by using register moves |
CA2691851A1 (en) * | 2010-02-04 | 2011-08-04 | Ibm Canada Limited - Ibm Canada Limitee | Control flow analysis using deductive reaching definitions |
US8555267B2 (en) * | 2010-03-03 | 2013-10-08 | Red Hat, Inc. | Performing register allocation of program variables based on priority spills and assignments |
US8832671B1 (en) * | 2010-07-07 | 2014-09-09 | Nvidia Corporation | Conflict-free register allocation |
US8555035B1 (en) | 2010-07-07 | 2013-10-08 | Nvidia Corporation | Conflict-free register allocation using a multi-bank register file with input operand alignment |
WO2012025792A1 (en) * | 2010-08-26 | 2012-03-01 | Freescale Semiconductor, Inc. | Optimization method for compiler, optimizer for a compiler and storage medium storing optimizing code |
US9696975B2 (en) * | 2010-09-03 | 2017-07-04 | International Business Machines Corporation | Allocating register halves independently |
US8893104B2 (en) * | 2012-01-26 | 2014-11-18 | Qualcomm Incorporated | Method and apparatus for register spill minimization |
US8806460B2 (en) | 2012-01-26 | 2014-08-12 | Qualcomm Incorporated | Method and apparatus for avoiding register interference |
KR101813140B1 (ko) | 2013-05-15 | 2018-01-30 | 삼성전자주식회사 | 코드 실행 장치 및 그 코드 실행 장치를 이용한 코드 실행 방법 |
US9710263B2 (en) * | 2013-09-26 | 2017-07-18 | International Business Machines Corporation | Understanding computer code with human language assistance |
EP3058456A4 (en) * | 2013-10-18 | 2018-01-24 | Marvell World Trade Ltd. | Systems and methods for register allocation |
US9329867B2 (en) | 2014-01-08 | 2016-05-03 | Qualcomm Incorporated | Register allocation for vectors |
US9582255B1 (en) | 2015-08-28 | 2017-02-28 | International Business Machines Corporation | Method of splitting register live ranges |
US9733911B2 (en) * | 2015-11-11 | 2017-08-15 | National Instruments Corporation | Value transfer between program variables using dynamic memory resource mapping |
US10951259B2 (en) * | 2017-10-30 | 2021-03-16 | Electronics And Telecommunications Research Institute | Method for simultaneously transmitting/receiving upstream and downstream signals using remote PHY architecture and apparatus for the same |
GB2582785A (en) * | 2019-04-02 | 2020-10-07 | Graphcore Ltd | Compiling a program from a graph |
CN111736899B (zh) * | 2020-05-29 | 2023-09-08 | 中国科学院计算技术研究所 | 一种网络处理器上寄存器的分配方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0769831B2 (ja) * | 1987-09-01 | 1995-07-31 | 株式会社日立製作所 | コンパイラにおけるレジスタ割当て方法 |
JPH04199428A (ja) * | 1990-11-29 | 1992-07-20 | Matsushita Electric Ind Co Ltd | レジスタ装置およびレジスタ割り付け方法 |
JP3299611B2 (ja) * | 1993-10-20 | 2002-07-08 | 松下電器産業株式会社 | 資源割付装置 |
JP2857600B2 (ja) * | 1995-05-11 | 1999-02-17 | 松下電器産業株式会社 | プロセッサ及びプログラム翻訳装置 |
JP3650649B2 (ja) * | 1995-06-16 | 2005-05-25 | 松下電器産業株式会社 | 最適化装置 |
US5881288A (en) * | 1995-09-29 | 1999-03-09 | Matsushita Electric Industrial Co., Ltd. | Debugging information generation system |
US5784066A (en) * | 1995-11-22 | 1998-07-21 | International Business Machines Corporation | Method and apparatus for using partner information to color nodes in an interference graph within a computer system |
JPH10293691A (ja) * | 1997-04-18 | 1998-11-04 | Hitachi Ltd | レジスタ割り付け方法 |
US6421824B1 (en) * | 1999-04-23 | 2002-07-16 | Sun Microsystems, Inc. | Method and apparatus for producing a sparse interference graph |
JP4041248B2 (ja) * | 1999-07-09 | 2008-01-30 | 松下電器産業株式会社 | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 |
JP3641997B2 (ja) * | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | プログラム変換装置及び方法並びに記録媒体 |
JP3651774B2 (ja) * | 2000-09-12 | 2005-05-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ及びそのレジスタ割付方法 |
US6925639B2 (en) * | 2001-02-23 | 2005-08-02 | Microsoft Corporation | Method and system for register allocation |
US6898787B2 (en) * | 2001-03-22 | 2005-05-24 | Hewlett-Packard Development Company, L.P. | Method and apparatus for ordered predicate phi in static single assignment form |
JP3956112B2 (ja) * | 2002-06-12 | 2007-08-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ、レジスタ割当装置、プログラム、記録媒体、コンパイル方法、及びレジスタ割当方法 |
JP3901182B2 (ja) * | 2004-06-30 | 2007-04-04 | 日本電気株式会社 | プログラム並列化装置及びその方法並びにプログラム |
US8010953B2 (en) * | 2006-04-04 | 2011-08-30 | International Business Machines Corporation | Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine |
-
2007
- 2007-08-29 JP JP2007223143A patent/JP5165969B2/ja not_active Expired - Fee Related
-
2008
- 2008-06-04 US US12/133,349 patent/US8266603B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8266603B2 (en) | 2012-09-11 |
US20090064112A1 (en) | 2009-03-05 |
JP2009059001A (ja) | 2009-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5165969B2 (ja) | プログラムのコンパイルのために変数にレジスタを割り付ける技術 | |
Hack et al. | Register allocation for programs in SSA-form | |
US8104026B2 (en) | Compiler register allocation and compilation | |
TWI498817B (zh) | 減少64位元電腦程式迴圈內符號擴展指令的需求導向運算法 | |
US8291398B2 (en) | Compiler for optimizing program | |
US20080005722A1 (en) | Compiling device, compiling method and recording medium | |
US5946491A (en) | Register allocation method and apparatus for gernerating spill code as a function of register pressure compared to dual thresholds | |
US5784066A (en) | Method and apparatus for using partner information to color nodes in an interference graph within a computer system | |
US6925639B2 (en) | Method and system for register allocation | |
JPH07121377A (ja) | 資源割付装置 | |
AU2892000A (en) | Method and apparatus for allocating stack slots | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
US8832671B1 (en) | Conflict-free register allocation | |
JP4178278B2 (ja) | コンパイラ装置、最適化方法、コンパイラプログラム、及び記録媒体 | |
US8266416B2 (en) | Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system | |
JPH0816871B2 (ja) | プログラム翻訳装置およびプログラム翻訳方法 | |
US7979853B2 (en) | Compiler device, method, program and recording medium | |
JP4042972B2 (ja) | 最適化コンパイラ、コンパイラプログラム、及び記録媒体 | |
US20050071827A1 (en) | Method and apparatus for bit field optimization | |
JP4039633B2 (ja) | 最適化コンパイラ、コンパイル方法、コンパイラプログラム、及び記録媒体 | |
JP3638171B2 (ja) | 資源割付装置 | |
US20040172624A1 (en) | Compiler apparatus and method for determining locations for data in memory area | |
US7774748B1 (en) | System and method for automatic conversion of a partially-explicit instruction set to an explicit instruction set | |
US20090119632A1 (en) | Method for supporting determination of design process order | |
JP3692884B2 (ja) | プログラム処理方法および記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100524 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120515 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120529 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120601 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121009 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20121015 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121109 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121204 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121220 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151228 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |