JPH0373026A - コンパイル方式 - Google Patents
コンパイル方式Info
- Publication number
- JPH0373026A JPH0373026A JP20997089A JP20997089A JPH0373026A JP H0373026 A JPH0373026 A JP H0373026A JP 20997089 A JP20997089 A JP 20997089A JP 20997089 A JP20997089 A JP 20997089A JP H0373026 A JPH0373026 A JP H0373026A
- Authority
- JP
- Japan
- Prior art keywords
- syntax tree
- syntax
- virtual
- virtual register
- generated
- 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
- 238000004458 analytical method Methods 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 8
- 238000005094 computer simulation Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はコンパイル方式に関し、特にディジタル計算機
(以下、単に計算機という)システムにおけるコンパイ
ル方式に関する。
(以下、単に計算機という)システムにおけるコンパイ
ル方式に関する。
従来のコンパイル方式は、例えば第2図のブロフク図に
示すように構成されていた。
示すように構成されていた。
第2図に示すコンパイル方式におけるコンパイラ21は
、高級プログラミング言語で記述されたソースプログラ
ム24を解析しその解析に基づき構文木26を生成する
構文木解析手段22と、構文木26を入力しその構文木
26に基づき目的とする計算機(目的プログラム25が
実行される計算機)の実レジスタをオペランドに持つ目
的コードを目的プログラムに生成するコード生成手段2
3とを有している。
、高級プログラミング言語で記述されたソースプログラ
ム24を解析しその解析に基づき構文木26を生成する
構文木解析手段22と、構文木26を入力しその構文木
26に基づき目的とする計算機(目的プログラム25が
実行される計算機)の実レジスタをオペランドに持つ目
的コードを目的プログラムに生成するコード生成手段2
3とを有している。
このコンパイル方式では、コンパイラ21内の構文解析
手段22が高級プログラミング言語で記述されたソース
プログラム24を解析して構文木26を生成した後に、
コード生成手段23が構文木26を入力し目的とする計
算機の実レジスタの個数や種類等を考慮しながらオペラ
ンドに実レジスタを持つ目的コードを目的プログラム2
5に出力していた。
手段22が高級プログラミング言語で記述されたソース
プログラム24を解析して構文木26を生成した後に、
コード生成手段23が構文木26を入力し目的とする計
算機の実レジスタの個数や種類等を考慮しながらオペラ
ンドに実レジスタを持つ目的コードを目的プログラム2
5に出力していた。
なお、実レジスタ資源の個数は有限であり、計算機の機
種により実レジスタの個数や種類は異なっている。
種により実レジスタの個数や種類は異なっている。
上述した従来のコンパイル方式では、実レジスタ資源の
個数は有限でありかつ計算機の機種によりその個数や種
類が異なっているにもかかわらず、オペランドに実レジ
スタを持つ目的コードが生成されているので、実レジス
タの割当てに関する処理によってコンパイラの処理に重
負担がかかり、当該処理によってコンパイラの構成が複
雑になり、当該処理のためにコンパイラが多大の処理時
間を要するという欠点がある。
個数は有限でありかつ計算機の機種によりその個数や種
類が異なっているにもかかわらず、オペランドに実レジ
スタを持つ目的コードが生成されているので、実レジス
タの割当てに関する処理によってコンパイラの処理に重
負担がかかり、当該処理によってコンパイラの構成が複
雑になり、当該処理のためにコンパイラが多大の処理時
間を要するという欠点がある。
本発明の目的は、上述の点に鑑み、目的とする計算機の
実レジスタの種類や個数等に依存しない仮想レジスタを
目的コードのオペランドとして出力することができるコ
ンパイル方式を提供することにある。
実レジスタの種類や個数等に依存しない仮想レジスタを
目的コードのオペランドとして出力することができるコ
ンパイル方式を提供することにある。
本発明のコンパイル方式は、高級プログラミング言語で
記述されたソースプログラムを解析しその解析に基づき
構文木を生成する構文解析手段と、この構文解析手段に
より生成された構文木を入力しその構文木内のデータと
データのアドレスとに仮想レジスタを割り当てる仮想レ
ジスタ割当て手段と、前記構文木解析手段により生成さ
れた構文木を入力しその構文木に基づく目的コードを生
成して目的プログラムに出力する際に前記仮想レジスタ
割当て手段により割り当てられた仮想レジスタをオペラ
ンドに持つ目的コードを生成するコード生成手段とを有
する。
記述されたソースプログラムを解析しその解析に基づき
構文木を生成する構文解析手段と、この構文解析手段に
より生成された構文木を入力しその構文木内のデータと
データのアドレスとに仮想レジスタを割り当てる仮想レ
ジスタ割当て手段と、前記構文木解析手段により生成さ
れた構文木を入力しその構文木に基づく目的コードを生
成して目的プログラムに出力する際に前記仮想レジスタ
割当て手段により割り当てられた仮想レジスタをオペラ
ンドに持つ目的コードを生成するコード生成手段とを有
する。
本発明のコンパイル方式では、構文解析手段が高級プロ
グラミング言語で記述されたソースプログラムを解析し
その解析に基づき構文木を生成し、仮想レジスタ割当て
手段が構文解析手段により生成された構文木を入力しそ
の構文木内のデータとデータのアドレスとに仮想レジス
タを割り当て、コード生成手段が構文木解析手段により
生成された構文木を入力しその構文木に基づく目的コー
ドを生成して目的プログラムに出力する際に仮想レジス
タ割当て手段により割り当てられた仮想レジスタをオペ
ランドに持つ目的コードを生成する。
グラミング言語で記述されたソースプログラムを解析し
その解析に基づき構文木を生成し、仮想レジスタ割当て
手段が構文解析手段により生成された構文木を入力しそ
の構文木内のデータとデータのアドレスとに仮想レジス
タを割り当て、コード生成手段が構文木解析手段により
生成された構文木を入力しその構文木に基づく目的コー
ドを生成して目的プログラムに出力する際に仮想レジス
タ割当て手段により割り当てられた仮想レジスタをオペ
ランドに持つ目的コードを生成する。
次に、本発明について図面を参照して説明する。
第1図は、本発明のコンパイル方式の一実施例の構成を
示すブロック図である0本実施例のコンパイル方式は、
コンパイラ11と、ソースプログラム15と、目的プロ
グラム16とを含んで構成されている。
示すブロック図である0本実施例のコンパイル方式は、
コンパイラ11と、ソースプログラム15と、目的プロ
グラム16とを含んで構成されている。
コンパイラ11は、構文解析手段12と、仮想レジスタ
割当て手段13と、コード生成手段14と、構文木17
とを含んで構成されている。
割当て手段13と、コード生成手段14と、構文木17
とを含んで構成されている。
次に、このように構成された本実施例のコンパイル方式
の動作について説明する。
の動作について説明する。
コンパイラ11内の構文解析手段12は、ソースプログ
ラム15を入力して解析し、その解析に基づいて構文木
17を生成する。
ラム15を入力して解析し、その解析に基づいて構文木
17を生成する。
仮想レジスタ割当て手段13は、構文木17を入力し、
構文木17内のデータとデータのアドレスとに仮想レジ
スタを割り当てる。
構文木17内のデータとデータのアドレスとに仮想レジ
スタを割り当てる。
コード生成手段14は、構文木17を入力して構文木1
7に基づき目的コードを生成する。コード生成手段14
は、その際にオペランドに仮想レジスタ割当て手段13
により割り当てられた仮想レジスタを持つ目的コードを
生成して目的プログラム16に出力する。
7に基づき目的コードを生成する。コード生成手段14
は、その際にオペランドに仮想レジスタ割当て手段13
により割り当てられた仮想レジスタを持つ目的コードを
生成して目的プログラム16に出力する。
このようにして生成された目的プログラム16 (オペ
ランドに仮想レジスタを持つ目的コードを含む目的プロ
グラム)は、仮想レジスタ管理による実行時レジスタ割
当て実行システムの上で実行される。
ランドに仮想レジスタを持つ目的コードを含む目的プロ
グラム)は、仮想レジスタ管理による実行時レジスタ割
当て実行システムの上で実行される。
仮想レジスタ管理による実行時レジスタ割当て実行シス
テムは、実レジスタ資源の管理(目的プログラム16の
実行中の任意の時点における実レジスタ資源の使用状態
の把握等)を行い、その管理に基づいて仮想レジスタに
実レジスタを割り当てて目的プログラム16を実行する
(実レジスタ資源の使用状態の把握に基づき利用可能な
実レジスタ資源を仮想レジスタに割り当てながら目的プ
ログラム16を実行する)。
テムは、実レジスタ資源の管理(目的プログラム16の
実行中の任意の時点における実レジスタ資源の使用状態
の把握等)を行い、その管理に基づいて仮想レジスタに
実レジスタを割り当てて目的プログラム16を実行する
(実レジスタ資源の使用状態の把握に基づき利用可能な
実レジスタ資源を仮想レジスタに割り当てながら目的プ
ログラム16を実行する)。
次に、本実施例のコンパイル方式の具体的な動作を従来
のコンパイル方式(第2図参照)と比較して説明する。
のコンパイル方式(第2図参照)と比較して説明する。
なお、ここでは、第3図に示すようなソースコード(ソ
ースプログラム15(第2図に示す従来のコンパイル方
式においてはソースプログラム24)の一部の演算例)
のコンパイルが行われる場合の動作について説明する。
ースプログラム15(第2図に示す従来のコンパイル方
式においてはソースプログラム24)の一部の演算例)
のコンパイルが行われる場合の動作について説明する。
また、目的とする計算機は、実レジスタ資源が汎用レジ
スタ(実レジスタ)GOlGlおよびG2の3個であり
、3アドレス方式の機種であるものとする。
スタ(実レジスタ)GOlGlおよびG2の3個であり
、3アドレス方式の機種であるものとする。
まず、第2図に示すような従来のコンパイル方式による
動作を説明する。
動作を説明する。
この場合には、コンパイラ21は、オペランドに実レジ
スタGO,GlおよびG2を持つ第5図に示すような目
的コードを目的プログラム25に出力する。
スタGO,GlおよびG2を持つ第5図に示すような目
的コードを目的プログラム25に出力する。
第5図に示す目的コードの生成に際しては、実レジスタ
資源が3個であることがコンパイラ21(コード生成手
段23等)により考慮され、メモリ資源とレジスタ資源
との間のデータ移送命令である■、■および■の5TO
RE命令およびLOAD命令が生成されている。
資源が3個であることがコンパイラ21(コード生成手
段23等)により考慮され、メモリ資源とレジスタ資源
との間のデータ移送命令である■、■および■の5TO
RE命令およびLOAD命令が生成されている。
次に、本実施例のコンパイル方式による動作を説明する
。
。
この場合には、コンパイラ11は、第3図に示すソース
コードに対して、オペランドに仮想レジスタRO,R1
,R2,R3およびR4を持つ第4図に示すような目的
コードを目的プログラム16に出力する。
コードに対して、オペランドに仮想レジスタRO,R1
,R2,R3およびR4を持つ第4図に示すような目的
コードを目的プログラム16に出力する。
第4図に示す目的コードの生成に際しては、仮想レジス
タの個数が無限側であることがコンパイラ11(仮想レ
ジスタ割当て手段13およびコード生成手段14等)に
より考慮され、目的とする計算機の実レジスタ資源の個
数等に依存しない命令(仮想レジスタ間の演算で表現さ
れる命令)が生成されている。したがって、メモリ資源
とレジスタ資源との間のデータ移送命令は生成されてい
ない。
タの個数が無限側であることがコンパイラ11(仮想レ
ジスタ割当て手段13およびコード生成手段14等)に
より考慮され、目的とする計算機の実レジスタ資源の個
数等に依存しない命令(仮想レジスタ間の演算で表現さ
れる命令)が生成されている。したがって、メモリ資源
とレジスタ資源との間のデータ移送命令は生成されてい
ない。
以上説明したように本発明は、目的とする計算機の実レ
ジスタの種類や個数等に依存しない仮想レジスタをオペ
ランドに持つ目的コードを目的プログラムに出力するこ
とにより、コンノくイラの処理負担を軽減することがで
き、コンパイラの構成を単純化することができ、コンパ
イラのレジスタ割当てに要する処理時間を減少すること
ができるという効果がある。
ジスタの種類や個数等に依存しない仮想レジスタをオペ
ランドに持つ目的コードを目的プログラムに出力するこ
とにより、コンノくイラの処理負担を軽減することがで
き、コンパイラの構成を単純化することができ、コンパ
イラのレジスタ割当てに要する処理時間を減少すること
ができるという効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例の構成を示すブロック図、
第2図は従来のコンパイル方式の一例の構成を示すブロ
ック図、 第3図は第1図および第2図中のソースプログラムの一
部の演算例(ソースコード)を示す図、第4図は第3図
に示すソースコードに基づき第1図に示すコンパイラに
より生成される目的コードを示す図、 第5図は第3図に示すソースコードに基づき第2図に示
すコンパイラにより生成される目的コードを示す図であ
る。 図において、 11・・・コンパイラ、 12・・・構文解析手段、 13・・・仮想レジスタ割当て手段、 14・・・コード生成手段、 15・・・ソースプログラム、 16・・・目的プログラム、 17・・・構文木である。
ック図、 第3図は第1図および第2図中のソースプログラムの一
部の演算例(ソースコード)を示す図、第4図は第3図
に示すソースコードに基づき第1図に示すコンパイラに
より生成される目的コードを示す図、 第5図は第3図に示すソースコードに基づき第2図に示
すコンパイラにより生成される目的コードを示す図であ
る。 図において、 11・・・コンパイラ、 12・・・構文解析手段、 13・・・仮想レジスタ割当て手段、 14・・・コード生成手段、 15・・・ソースプログラム、 16・・・目的プログラム、 17・・・構文木である。
Claims (1)
- 【特許請求の範囲】 高級プログラミング言語で記述されたソースプログラム
を解析しその解析に基づき構文木を生成する構文解析手
段と、 この構文解析手段により生成された構文木を入力しその
構文木内のデータとデータのアドレスとに仮想レジスタ
を割り当てる仮想レジスタ割当て手段と、 前記構文木解析手段により生成された構文木を入力しそ
の構文木に基づく目的コードを生成して目的プログラム
に出力する際に、前記仮想レジスタ割当て手段により割
り当てられた仮想レジスタをオペランドに持つ目的コー
ドを生成するコード生成手段と を有することを特徴とするコンパイル方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20997089A JPH0373026A (ja) | 1989-08-14 | 1989-08-14 | コンパイル方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20997089A JPH0373026A (ja) | 1989-08-14 | 1989-08-14 | コンパイル方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0373026A true JPH0373026A (ja) | 1991-03-28 |
Family
ID=16581699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP20997089A Pending JPH0373026A (ja) | 1989-08-14 | 1989-08-14 | コンパイル方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0373026A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007276561A (ja) * | 2006-04-04 | 2007-10-25 | Denso Corp | 車両用盗難防止装置 |
-
1989
- 1989-08-14 JP JP20997089A patent/JPH0373026A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007276561A (ja) * | 2006-04-04 | 2007-10-25 | Denso Corp | 車両用盗難防止装置 |
JP4697013B2 (ja) * | 2006-04-04 | 2011-06-08 | 株式会社デンソー | 車両用盗難防止装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050160415A1 (en) | Method and system for improving performance of Java virtual machine | |
US8997066B2 (en) | Emulating pointers | |
Jones et al. | Implicit and explicit parallel programming in Haskell | |
JP4026940B2 (ja) | プログラム変換装置 | |
CN112416313B (zh) | 支持大整数数据类型和运算符的编译方法 | |
US11915056B2 (en) | Combination of multiple data processing and machine learning frameworks for a target hardware | |
US6571387B1 (en) | Method and computer program product for global minimization of sign-extension and zero-extension operations | |
JP3318051B2 (ja) | 翻訳処理方法 | |
JPH01277934A (ja) | パラメータリスト参照方法の切換え方式 | |
JPH0373026A (ja) | コンパイル方式 | |
JP3264901B2 (ja) | コンパイル装置及びコンパイル方法 | |
Berthold et al. | High-level process control in eden | |
JP2556148B2 (ja) | ベクトルレジスタ割付け方式 | |
Karjoth | XFSM: A formal model of communicating state machines for implementation specifications | |
Drieseberg et al. | C to Cellular Automata and Execution on CPU, GPU and FPGA. | |
JPH03135630A (ja) | 命令スケジューリング方式 | |
Yu et al. | Runtime Profiling of OpenCL Workloads Using LLVM-based Code Instrumentation | |
JPH07105013A (ja) | レジスタ割り付け方式 | |
Leroy | Compiling functional languages | |
JPH06324882A (ja) | コンパイラ装置 | |
JPS6378237A (ja) | 情報処理装置 | |
JPS6373434A (ja) | デ−タフロ−型計算機デバツグ用プログラム作成方式 | |
JPH02105224A (ja) | コンパイラにおけるデータ割付け方式 | |
JPH04149738A (ja) | プログラム最適化装置 | |
von Ronne et al. | A virtual machine for interpreting programs in static single assignment form |