JPH01305434A - コンパイラのレジスタ使用方式 - Google Patents
コンパイラのレジスタ使用方式Info
- Publication number
- JPH01305434A JPH01305434A JP63136925A JP13692588A JPH01305434A JP H01305434 A JPH01305434 A JP H01305434A JP 63136925 A JP63136925 A JP 63136925A JP 13692588 A JP13692588 A JP 13692588A JP H01305434 A JPH01305434 A JP H01305434A
- Authority
- JP
- Japan
- Prior art keywords
- data
- program
- register
- compiler
- intermediate language
- 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
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はコンパイラのレジスタ使用方式に関し、特にレ
ジスタを有する計算機システムの目的プログラムを生成
するコンパイラのレジス゛り使用方式に関する。
ジスタを有する計算機システムの目的プログラムを生成
するコンパイラのレジス゛り使用方式に関する。
レジスタを有する計算機システムの目的プログラムを生
成する従来のコンパイラのレジスタ使用方式は、関数呼
出しの実パラメータに指定されているすべてのデータに
対してレジスタを割当てずに、それらのデータをメモリ
上に割付けている。
成する従来のコンパイラのレジスタ使用方式は、関数呼
出しの実パラメータに指定されているすべてのデータに
対してレジスタを割当てずに、それらのデータをメモリ
上に割付けている。
L述した従来のコンパイラのレジスタ使用方式は、関数
呼出しの実パラメータに指定されているすべてのデータ
をメモリ上に割付けているので、これらのデータを使用
するごとに、そのとき空いているレジスタ(そのとき空
いているレジスタがなければ一部のレジスタをメモリに
退避して空けたレジスタ)に使用するデータを移動して
使用し、使用後に再びメモリに(メモリに退避して空け
たレジスタも元の内容に)戻す目的プログラムを生成し
なければならない。
呼出しの実パラメータに指定されているすべてのデータ
をメモリ上に割付けているので、これらのデータを使用
するごとに、そのとき空いているレジスタ(そのとき空
いているレジスタがなければ一部のレジスタをメモリに
退避して空けたレジスタ)に使用するデータを移動して
使用し、使用後に再びメモリに(メモリに退避して空け
たレジスタも元の内容に)戻す目的プログラムを生成し
なければならない。
このため、目的プログラムが大きくなり、その目的プロ
グラムを使用するときに、大きなメモリ容量を必要とす
るとともに、その目的プログラムの実行速度が低下する
という問題点がある。
グラムを使用するときに、大きなメモリ容量を必要とす
るとともに、その目的プログラムの実行速度が低下する
という問題点がある。
本発明の目的は、関数呼出しの実パラメータに指定され
ているデータについても、合理的に算定された重みによ
り、レジスタを割当てる優先順位が定められるコンパイ
ラのレジスタ使用方式を提供することにある。
ているデータについても、合理的に算定された重みによ
り、レジスタを割当てる優先順位が定められるコンパイ
ラのレジスタ使用方式を提供することにある。
本発明のコンパイラのレジスタ使用方式は、(A)ソー
スプログラム(またはソースプログラムを変換した中間
言語プログラム)上に、それぞれのデータを指定するオ
ペランドが、それぞれのデータごとに幾つあるかを示す
データ指定数を数えるデータ指定数計数手段、(B)ソ
ースプログラム(またはソースプログラムを変換した中
間言語プログラム)上に、それぞれのデータを関数呼出
しの実パラメータとして指定するオペランドが、それぞ
れのデータごとに幾つあるかを示す実パラメータ指定数
を数える実パラメータ指定数計数手段、 (C)それぞれのデータごとに、前記データ指定数と前
記実パラメータ指定数とを使用して、レジスタの割当て
順序を定める合理的な重みを算定する重み算定手段、 (D)前記重み算定手段で算定された重みの大きいデー
タに、優先してレジスタを割当てるレジスタ割当て手段
、 (E)前記レジスタ割当て手段で割当てられたデータの
ために、レジスタを使用する目的プログラムを生成する
目的プログラム生成手段、 を備えて構成されている。
スプログラム(またはソースプログラムを変換した中間
言語プログラム)上に、それぞれのデータを指定するオ
ペランドが、それぞれのデータごとに幾つあるかを示す
データ指定数を数えるデータ指定数計数手段、(B)ソ
ースプログラム(またはソースプログラムを変換した中
間言語プログラム)上に、それぞれのデータを関数呼出
しの実パラメータとして指定するオペランドが、それぞ
れのデータごとに幾つあるかを示す実パラメータ指定数
を数える実パラメータ指定数計数手段、 (C)それぞれのデータごとに、前記データ指定数と前
記実パラメータ指定数とを使用して、レジスタの割当て
順序を定める合理的な重みを算定する重み算定手段、 (D)前記重み算定手段で算定された重みの大きいデー
タに、優先してレジスタを割当てるレジスタ割当て手段
、 (E)前記レジスタ割当て手段で割当てられたデータの
ために、レジスタを使用する目的プログラムを生成する
目的プログラム生成手段、 を備えて構成されている。
次に本発明の実施例について図面を参照して説明する。
第1図は本発明のコンパイラのレジスタ使用方式の一実
施例を示すブロック図である。
施例を示すブロック図である。
第1図に示すように、まず、コンパイラ1のフロントエ
ンド部2は、ソースプログラムSを変換して、中間言語
プログラムIを生成している。
ンド部2は、ソースプログラムSを変換して、中間言語
プログラムIを生成している。
次に、コンパイラ1にあるバックエンド部3のデータ指
定数計数手段Aは、中間言語プログラム■の全データX
I + x2.・・・・・・XI+・・・・・・XN
を指定するオペランドが、中間言語プログラム■上に、
それぞれのデータx1ごとに幾つあるかを示すデータ指
定数yIを数えている。
定数計数手段Aは、中間言語プログラム■の全データX
I + x2.・・・・・・XI+・・・・・・XN
を指定するオペランドが、中間言語プログラム■上に、
それぞれのデータx1ごとに幾つあるかを示すデータ指
定数yIを数えている。
一方、バックエンド部3の実パラメータ指定数計数手段
Bは、データXl 、 X2 、・旧・・XI+・・・
・・・xNを関数呼出しの実パラメータとして指定する
オペランドが、中間言語プログラムI上に、それぞれの
データXlごとに幾つあるかを示す実パラメータ指定数
Zl を数えている。
Bは、データXl 、 X2 、・旧・・XI+・・・
・・・xNを関数呼出しの実パラメータとして指定する
オペランドが、中間言語プログラムI上に、それぞれの
データXlごとに幾つあるかを示す実パラメータ指定数
Zl を数えている。
次に、バックエンド部3の重み算定手段Cは、それぞれ
のデータXlごとにそのデータ指定数ylと実パラメー
タ指定数Z1とを使用して、レジスタの割当て順序を定
める合理的な重みg+ とじて、g+ =yI 2z
l を算定している。
のデータXlごとにそのデータ指定数ylと実パラメー
タ指定数Z1とを使用して、レジスタの割当て順序を定
める合理的な重みg+ とじて、g+ =yI 2z
l を算定している。
次に、バックエンド部3のレジスタ割当て手段りは、使
用できるr個のレジスタのそれぞれに対して、重み算定
手段Cで算定された重みg+。
用できるr個のレジスタのそれぞれに対して、重み算定
手段Cで算定された重みg+。
gz、・・・・・・・・・gNの中の大きいものがら順
にr個のgL+、・・・・・・gLrに対応するデータ
xLI+・・・・・・XLrに優先してレジスタを割当
てている。
にr個のgL+、・・・・・・gLrに対応するデータ
xLI+・・・・・・XLrに優先してレジスタを割当
てている。
PL後に、バックエンド部3の目的プログラム生成手段
Eは、レジスタ割当て手段りで割当てられたデータXL
l+・・・・・・XLrのためにr個のレジスタを使用
する目的プログラムOを生成している。
Eは、レジスタ割当て手段りで割当てられたデータXL
l+・・・・・・XLrのためにr個のレジスタを使用
する目的プログラムOを生成している。
以上述べたように、本実施例のコンパイラのレジスタ使
用方式は、関数呼出しの実パラメータに指定されている
データについても、合理的に算定された重みにより、レ
ジスタを割当てる優先順位が定められている。
用方式は、関数呼出しの実パラメータに指定されている
データについても、合理的に算定された重みにより、レ
ジスタを割当てる優先順位が定められている。
この結果、関数呼出しの実パラメータに指定されている
すべてのデータをメモリ上に割付けている従来のコンパ
イラのレジスタ使用方式に比べて、目的プログラムが大
幅に小さくなり、その目的プログラムの実行速度が大き
く向上している。
すべてのデータをメモリ上に割付けている従来のコンパ
イラのレジスタ使用方式に比べて、目的プログラムが大
幅に小さくなり、その目的プログラムの実行速度が大き
く向上している。
以上説明したように、本発明のコンパイラのレジスタ使
用方式は、関数呼出しの実パラメータに指定されている
データについても、合理的に算定された重みにより、レ
ジスタを割当てる優先順位が定められるという効果を有
している。
用方式は、関数呼出しの実パラメータに指定されている
データについても、合理的に算定された重みにより、レ
ジスタを割当てる優先順位が定められるという効果を有
している。
この結果、関数呼出しの実パラメータに指定されている
すべてのデータをメモリ上に割付けている従来のコンパ
イラのレジスタ使用方式に比べて、目的プログラムが小
さくなり、その目的プログラムの実行速度が向上すると
いう効果を有している。
すべてのデータをメモリ上に割付けている従来のコンパ
イラのレジスタ使用方式に比べて、目的プログラムが小
さくなり、その目的プログラムの実行速度が向上すると
いう効果を有している。
第1図は本発明のコンパイラのレジスタ使用方式の一実
施例を示すブロック図である。 1・・・・・・コンパイラ、2・・・・・・フロントエ
ンド部、3・・・・・・バックエンド部、A・・・・・
・データ指定数計数手段、B・・・・・・実パラメータ
指定数計数手段、C・・・・・・重み算定手段、D・・
・・・・レジスタ割当て手段、E・・・・・・目的プロ
グラム生成手段、■・・・・・・中間言語プログラム、
0・・・・・・目的プログラム、S・・・・・・ソース
プログラム。
施例を示すブロック図である。 1・・・・・・コンパイラ、2・・・・・・フロントエ
ンド部、3・・・・・・バックエンド部、A・・・・・
・データ指定数計数手段、B・・・・・・実パラメータ
指定数計数手段、C・・・・・・重み算定手段、D・・
・・・・レジスタ割当て手段、E・・・・・・目的プロ
グラム生成手段、■・・・・・・中間言語プログラム、
0・・・・・・目的プログラム、S・・・・・・ソース
プログラム。
Claims (1)
- 【特許請求の範囲】 (A)ソースプログラム(またはソースプログラムを変
換した中間言語プログラム)上に、それぞれのデータを
指定するオペランドが、それぞれのデータごとに幾つあ
るかを示すデータ指定数を数えるデータ指定数計数手段
、 (B)ソースプログラム(またはソースプログラムを変
換した中間言語プログラム)上に、それぞれのデータを
関数呼出しの実パラメータとして指定するオペランドが
、それぞれの データごとに幾つあるかを示す実パラメータ指定数を数
える実パラメータ指定数計数手 段、 (C)それぞれのデータごとに、前記データ指定数と前
記実パラメータ指定数とを使用して、レジスタの割当て
順序を定める合理的な重みを算定する重み算定手段、 (D)前記重み算定手段で算定された重みの大きいデー
タに、優先してレジスタを割当てるレジスタ割当て手段
、 (E)前記レジスタ割当て手段で割当てられたデータの
ために、レジスタを使用する目的プログラムを生成する
目的プログラム生成手 段、 を備えることを特徴とするコンパイラのレジスタ使用方
式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63136925A JPH01305434A (ja) | 1988-06-02 | 1988-06-02 | コンパイラのレジスタ使用方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63136925A JPH01305434A (ja) | 1988-06-02 | 1988-06-02 | コンパイラのレジスタ使用方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH01305434A true JPH01305434A (ja) | 1989-12-08 |
Family
ID=15186778
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63136925A Pending JPH01305434A (ja) | 1988-06-02 | 1988-06-02 | コンパイラのレジスタ使用方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH01305434A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6256782B1 (en) | 1996-02-19 | 2001-07-03 | Nec Corporation | Compile apparatus, compile method and computer-readable medium storing compiler |
-
1988
- 1988-06-02 JP JP63136925A patent/JPH01305434A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6256782B1 (en) | 1996-02-19 | 2001-07-03 | Nec Corporation | Compile apparatus, compile method and computer-readable medium storing compiler |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CA1305799C (en) | Logical resource partitioning of a data processing system | |
| Saavedra-Barrera et al. | Machine characterization based on an abstract high-level language machine | |
| KR101759266B1 (ko) | 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법 | |
| KR100686418B1 (ko) | 멀티-스레드 가상머신에서 메모리 할당방법 및 그 장치 | |
| CN100557570C (zh) | 多处理器系统 | |
| US4638427A (en) | Performance evaluation for an asymmetric multiprocessor system | |
| US10572301B2 (en) | Extract CPU time facility | |
| JP2008507034A (ja) | 下位ポートカウントメモリーを用いたマルチポートメモリーのシミュレート | |
| JP2000040022A (ja) | 実行マルチスレッドのタイムプロファイリング方法、被選択スレッドの実行状態決定方法、タイムプロファイリングシステム、コンピュ―タ読取可能な記録媒体 | |
| JPH10116268A (ja) | ベクトルレジスタの複数バンクを用いた単一命令複数データ処理 | |
| JPS62286128A (ja) | データプロセッサ | |
| US6401182B1 (en) | Method and apparatus for memory management | |
| JPH01305434A (ja) | コンパイラのレジスタ使用方式 | |
| JPH07105013A (ja) | レジスタ割り付け方式 | |
| Yue et al. | Loop-level process control: an effective processor allocation policy for multiprogrammed shared-memory multiprocessors | |
| WO2001061471A2 (en) | An implementation for nonblocking memory allocation | |
| JPS58151664A (ja) | ジヨブ選択方式 | |
| JPS6391754A (ja) | メモリサイズ制御方式 | |
| CN120029557B (zh) | 一种校验资源分配方法、装置、设备、介质及产品 | |
| JP3342009B2 (ja) | コンパイル装置 | |
| JP3625878B2 (ja) | コンパイラによるスタック領域割り付け方法 | |
| EP0395281A3 (en) | Method and apparatus for relating diagnostic information to specific computer instructions | |
| JPS56152027A (en) | Processing system for job execution result | |
| JPS63225829A (ja) | グロ−バルレジスタ割り付け方式 | |
| JPS63316235A (ja) | ル−プ構造における演算レジスタ割付け方式 |