JPH0399330A - 手続きインライン展開方式 - Google Patents
手続きインライン展開方式Info
- Publication number
- JPH0399330A JPH0399330A JP23597989A JP23597989A JPH0399330A JP H0399330 A JPH0399330 A JP H0399330A JP 23597989 A JP23597989 A JP 23597989A JP 23597989 A JP23597989 A JP 23597989A JP H0399330 A JPH0399330 A JP H0399330A
- Authority
- JP
- Japan
- Prior art keywords
- procedure block
- procedure
- intermediate text
- internal
- information table
- 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
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000001514 detection method Methods 0.000 claims description 15
- 238000005457 optimization Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はコンパイラの最適化部における手続きインライ
ン展開方式に関するものである。
ン展開方式に関するものである。
従来、高級言語で記述されたソースプログラムからオブ
ジェクトプログラムを生成するコンパイラにおいては、
ソースプログラムを中間テキストに変形した後、対応す
るコードに変換しており、内部で定義された手続きブロ
ック(内部手続きブロック)の呼び出し部分は、サブル
ーチンリンケージ等を行うためのプロローグ処理および
エピローグ処理のオブジェクトコードとされていた。
ジェクトプログラムを生成するコンパイラにおいては、
ソースプログラムを中間テキストに変形した後、対応す
るコードに変換しており、内部で定義された手続きブロ
ック(内部手続きブロック)の呼び出し部分は、サブル
ーチンリンケージ等を行うためのプロローグ処理および
エピローグ処理のオブジェクトコードとされていた。
従来のコンパイラでは上述したように内部手続きブロッ
クの呼び出しが処理されていたため、サブルーチンリン
ケージ等のために実行効率が悪いという欠点があった。
クの呼び出しが処理されていたため、サブルーチンリン
ケージ等のために実行効率が悪いという欠点があった。
本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、オブジェクトプログラムの実行効率
を高めることのできる手続きインライン展開方式を提供
することにある。
的とするところは、オブジェクトプログラムの実行効率
を高めることのできる手続きインライン展開方式を提供
することにある。
本発明は上記の目的を達成するため、各内部手続きブロ
ックに対してエントリを有し、各エントリに手続きブロ
ック名、ファイル位置、および、参照回数の項目を有す
る手続きブロック情報テーブルと、 中間テキストから内部手続きブロックを検出し、前記手
続きブロック情報テーブルに手続きブロック名とファイ
ル位置とを登録する手続きブロック検出手段と、 中間テキストから内部手続きブロックの呼び出しを検出
し、前記手続きブロック情報テーブルに参照回数を登録
する手続きブロック参照回数検出手段と、 各内部手続きブロックの呼び出しに対して前記手続きブ
ロック情報テーブルの情報からインライン展開の可否を
判断し、可能な場合にインライン展開を行う手続きブロ
ックインライン展開手段とを備えるようにしている。
ックに対してエントリを有し、各エントリに手続きブロ
ック名、ファイル位置、および、参照回数の項目を有す
る手続きブロック情報テーブルと、 中間テキストから内部手続きブロックを検出し、前記手
続きブロック情報テーブルに手続きブロック名とファイ
ル位置とを登録する手続きブロック検出手段と、 中間テキストから内部手続きブロックの呼び出しを検出
し、前記手続きブロック情報テーブルに参照回数を登録
する手続きブロック参照回数検出手段と、 各内部手続きブロックの呼び出しに対して前記手続きブ
ロック情報テーブルの情報からインライン展開の可否を
判断し、可能な場合にインライン展開を行う手続きブロ
ックインライン展開手段とを備えるようにしている。
本発明の手続きインライン展開方式にあっては、手続き
ブロック検出手段が中間テキストから内部手続きブロッ
クを検出して手続きブロック情報テーブルに手続きブロ
ック名とファイル位置とを登録し、手続きブロック参照
回数検出手段が中間テキストから内部手続きブロックの
呼び出しを検出して手続きブロック情報テーブルに参照
回数を登録し、手続きブロックインライン展開手段が各
内部手続きブロックの呼び出しに対して手続きブロック
情報テーブルの情報からインライン展開の可否を判断し
、可能な場合にインライン展開を行う。
ブロック検出手段が中間テキストから内部手続きブロッ
クを検出して手続きブロック情報テーブルに手続きブロ
ック名とファイル位置とを登録し、手続きブロック参照
回数検出手段が中間テキストから内部手続きブロックの
呼び出しを検出して手続きブロック情報テーブルに参照
回数を登録し、手続きブロックインライン展開手段が各
内部手続きブロックの呼び出しに対して手続きブロック
情報テーブルの情報からインライン展開の可否を判断し
、可能な場合にインライン展開を行う。
以下、本発明の実施例につき図面を参照して説明する。
第1図は本発明の手続きインライン展開方式を適用した
コンパイラの一実施例を示す構成図である。第1図にお
いて、本実施例は、ソースプログラム1を入力して中間
テキストファイル3に中間テキスト31を出力するフロ
ントエンド部2と、中間テキストファイル3から中間テ
キスト31を入力して処理済中間テキストファイル5に
処理済中間テキス)51を出力する最適化部4と、処理
済中間テキストファイル5から処理済中間テキスト51
を入力してオブジェクトプログラム7を出力するバック
エンド部6と、各機能部を制御する制御部8とから構成
されている。
コンパイラの一実施例を示す構成図である。第1図にお
いて、本実施例は、ソースプログラム1を入力して中間
テキストファイル3に中間テキスト31を出力するフロ
ントエンド部2と、中間テキストファイル3から中間テ
キスト31を入力して処理済中間テキストファイル5に
処理済中間テキス)51を出力する最適化部4と、処理
済中間テキストファイル5から処理済中間テキスト51
を入力してオブジェクトプログラム7を出力するバック
エンド部6と、各機能部を制御する制御部8とから構成
されている。
また、最適化部4は、手続きブロック情報テーブル41
と手続きブロック検出手段42と手続きブロック参照回
数検出手段43と手続きブロックインライン展開手段4
4とから構成されている。
と手続きブロック検出手段42と手続きブロック参照回
数検出手段43と手続きブロックインライン展開手段4
4とから構成されている。
なお、各部の機能は次の通りである。
手続きブロック情報テーブル41;第2図に示すように
、中間テキスト31に含まれる各内部手続きブロックに
対してエントリ411を有し、各エントリに手続きブロ
ック名、ファイル位置、および、参照回数の項目を有す
る。
、中間テキスト31に含まれる各内部手続きブロックに
対してエントリ411を有し、各エントリに手続きブロ
ック名、ファイル位置、および、参照回数の項目を有す
る。
手続きプロンク検出手段42;中間テキスト31から内
部手続きブロックを検出し、手続きブロック情報テーブ
ル41に手続きブロック名と中間テキストファイル3上
の当該内部手続きブロックのファイル位置とを登録する
機能を有している。
部手続きブロックを検出し、手続きブロック情報テーブ
ル41に手続きブロック名と中間テキストファイル3上
の当該内部手続きブロックのファイル位置とを登録する
機能を有している。
手続きブロック参照回数検出手段43;中間テキスト3
1から内部手続きブロックの呼び出しを検出し、手続き
ブロック情報テーブル41に参照回数を登録する機能を
有している。
1から内部手続きブロックの呼び出しを検出し、手続き
ブロック情報テーブル41に参照回数を登録する機能を
有している。
手続きブロックインライン展開手段44;各内部手続き
ブロックの呼び出しに対して手続きブロック情報テーブ
ル41の情報からインライン展開の可否を判断し、可能
な場合にインライン展開を行う機能を有している。
ブロックの呼び出しに対して手続きブロック情報テーブ
ル41の情報からインライン展開の可否を判断し、可能
な場合にインライン展開を行う機能を有している。
以下、上記の実施例の動作を説明する。
コンパイラが起動されると、制御部8により、フロント
エンド部2→最適化部4→バックエンド部6の順で起動
が行われる。また、最適化部4内でも、同じ(制御部8
により、手続きブロック検出手段42→手続きブロック
参照回数検出手段43→手続きブロックインライン展開
手段44の順で起動が行われる。
エンド部2→最適化部4→バックエンド部6の順で起動
が行われる。また、最適化部4内でも、同じ(制御部8
により、手続きブロック検出手段42→手続きブロック
参照回数検出手段43→手続きブロックインライン展開
手段44の順で起動が行われる。
先ず、フロントエンド部2はソースプログラム1を入力
し、構文解析等の処理を行って中間テキスト31を中間
テキストファイル3に出力する。
し、構文解析等の処理を行って中間テキスト31を中間
テキストファイル3に出力する。
次いで、最適化部4の手続きブロック検出手段42は中
間テキストファイル3から中間テキスト31を入力し、
内部手続きブロックの開始を検出した場合、手続きブロ
ック情報テーブル41にその手続きブロック名と中間テ
キストファイル3上のファイル位置とを登録する。また
、参照回数を初期化する。
間テキストファイル3から中間テキスト31を入力し、
内部手続きブロックの開始を検出した場合、手続きブロ
ック情報テーブル41にその手続きブロック名と中間テ
キストファイル3上のファイル位置とを登録する。また
、参照回数を初期化する。
次いで、手続きブロック参照回数検出手段43は中間テ
キストファイル3から中間テキスト31を入力し、内部
手続きブロックの呼び出しを検出した場合、手続きブロ
ック情報テーブル41から対応する手続きブロック名を
検索し、参照回数の項目の値に1を加算する。
キストファイル3から中間テキスト31を入力し、内部
手続きブロックの呼び出しを検出した場合、手続きブロ
ック情報テーブル41から対応する手続きブロック名を
検索し、参照回数の項目の値に1を加算する。
以上の処理の後、手続きブロックインライン展開手段4
4が起動され、第3図に示す処理を行う。
4が起動され、第3図に示す処理を行う。
すなわち、手続きブロックインライン展開手段44は中
間テキストファイル3から中間テキスト31を1テキス
ト読み込み(ステップSL)、それが内部手続きブロッ
クの呼び出しであるか否かを判断しくステップS2)、
そうでない場合は読み込んだ中間テキスト31をそのま
ま処理済中間テキスト51として処理済中間テキストフ
ァイル5に出力する(ステップ33)。なお、ファイル
が終了の場合は処理を終了する。
間テキストファイル3から中間テキスト31を1テキス
ト読み込み(ステップSL)、それが内部手続きブロッ
クの呼び出しであるか否かを判断しくステップS2)、
そうでない場合は読み込んだ中間テキスト31をそのま
ま処理済中間テキスト51として処理済中間テキストフ
ァイル5に出力する(ステップ33)。なお、ファイル
が終了の場合は処理を終了する。
また、読み込んだテキストが内部手続きブロックの呼び
出しである場合には、手続きブロック情報テーブル41
から対応する手続きブロック名を検索しくステップS4
)、参照回数の項目の値が所定値n未満か否かを判断し
くステップS5)、nより大きい場合は読み込んだ中間
テキスト31、すなわち内部手続きブロックの呼び出し
命令に対応する中間テキストをそのまま処理済中間テキ
スト51として処理済中間テキストファイル5に出力す
る(ステップS3)。つまり、参照回数が多すぎる場合
はインライン展開によりオブジェクトプログラム7のサ
イズが膨大となってしまうため、インライン展開の対象
を参照回数がn未満のものに限定している。
出しである場合には、手続きブロック情報テーブル41
から対応する手続きブロック名を検索しくステップS4
)、参照回数の項目の値が所定値n未満か否かを判断し
くステップS5)、nより大きい場合は読み込んだ中間
テキスト31、すなわち内部手続きブロックの呼び出し
命令に対応する中間テキストをそのまま処理済中間テキ
スト51として処理済中間テキストファイル5に出力す
る(ステップS3)。つまり、参照回数が多すぎる場合
はインライン展開によりオブジェクトプログラム7のサ
イズが膨大となってしまうため、インライン展開の対象
を参照回数がn未満のものに限定している。
一方、参照回数がn未満である場合には、現在のファイ
ル位置をセーブし、手続きブロック情報テーブル41の
当該内部手続きブロックのファイル位置を用いて中間テ
キストファイル3をポイントシ(ステップS6)、その
ファイル位置から中間テキスト31を1テキスト読み込
む(ステップS7)。
ル位置をセーブし、手続きブロック情報テーブル41の
当該内部手続きブロックのファイル位置を用いて中間テ
キストファイル3をポイントシ(ステップS6)、その
ファイル位置から中間テキスト31を1テキスト読み込
む(ステップS7)。
次いで、内部手続きブロックの終了であるか否かを判断
しくステップS8)、終了でない場合はプロローグ処理
もしくはエピローグ処理のテキストであるか否かを判断
しくステップ5lO)、プロローグ処理もしくはエピロ
ーグ処理のテキストでない場合にはその中間テキスト3
1を処理済中間テキスト51として処理済中間テキスト
ファイル5に出力しくステップ5ll)、ステップS7
に戻る。また、プロローグ処理もしくはエピローグ処理
のテキストである場合には処理済中間テキストファイル
5には出力せずにステップS7に戻る。そして、内部手
続きブロックが終了すると、ファイル位置を元に戻しく
ステップS9)、ステップS1に戻る。
しくステップS8)、終了でない場合はプロローグ処理
もしくはエピローグ処理のテキストであるか否かを判断
しくステップ5lO)、プロローグ処理もしくはエピロ
ーグ処理のテキストでない場合にはその中間テキスト3
1を処理済中間テキスト51として処理済中間テキスト
ファイル5に出力しくステップ5ll)、ステップS7
に戻る。また、プロローグ処理もしくはエピローグ処理
のテキストである場合には処理済中間テキストファイル
5には出力せずにステップS7に戻る。そして、内部手
続きブロックが終了すると、ファイル位置を元に戻しく
ステップS9)、ステップS1に戻る。
上記の処理により、参照回数が所定値n未満の内部手続
きブロックについては、プロローグ処理。
きブロックについては、プロローグ処理。
エピローグ処理のためのテキストを除いた本体部分のテ
キストだけが処理済中間テキスト51として処理済中間
テキストファイル5に出力される。
キストだけが処理済中間テキスト51として処理済中間
テキストファイル5に出力される。
これがインライン展開である。
次いで、バックエンド部6は処理済中間テキストファイ
ル5から処理済中間テキスト51を入力してコード生成
等を行い、オブジェクトプログラム7を出力する。
ル5から処理済中間テキスト51を入力してコード生成
等を行い、オブジェクトプログラム7を出力する。
以上説明したように、本発明の手続きインライン展開方
式にあっては、内部手続きブロックの参照回数を考慮し
てインライン展開するか否かを決定し、可能な場合はプ
ロローグ処理およびエピローグ処理を含まない内部手続
きブロックの内容自体がコードとして展開されるため、
オブジェクトプログラムの実行時にサブルーチンリンケ
ージ等に要する処理が不要となって実行効率が大幅に向
上する効果がある。
式にあっては、内部手続きブロックの参照回数を考慮し
てインライン展開するか否かを決定し、可能な場合はプ
ロローグ処理およびエピローグ処理を含まない内部手続
きブロックの内容自体がコードとして展開されるため、
オブジェクトプログラムの実行時にサブルーチンリンケ
ージ等に要する処理が不要となって実行効率が大幅に向
上する効果がある。
第1図は本発明の手続きインライン展開方式を適用した
コンパイラの一実施例を示す構成図、第2図は第1図に
おける手続きブロック情報テーブルの詳細図および、 第3図は第1図における手続きブロックインライン展開
手段の処理のフローチャートである。 図において、 1・・・・・・ソースプログラム 2・・・・・・フロントエンド部 3・・・・・・中間テキストファイル 31・・・中間テキスト 4・・・・・・最適化部 41・・・手続きブロック情報テーブル42・・・手続
きブロック検出手段 43・・・手続きブロック参照回数検出手段4・・・手
続きブロックインライン展開手段・・・・・・処理済中
間テキストファイルト・・処理済中間テキスト ・・・・・・バックエンド部 ・・・・・・オブジェクトプログラム ・・・・・・制御部
コンパイラの一実施例を示す構成図、第2図は第1図に
おける手続きブロック情報テーブルの詳細図および、 第3図は第1図における手続きブロックインライン展開
手段の処理のフローチャートである。 図において、 1・・・・・・ソースプログラム 2・・・・・・フロントエンド部 3・・・・・・中間テキストファイル 31・・・中間テキスト 4・・・・・・最適化部 41・・・手続きブロック情報テーブル42・・・手続
きブロック検出手段 43・・・手続きブロック参照回数検出手段4・・・手
続きブロックインライン展開手段・・・・・・処理済中
間テキストファイルト・・処理済中間テキスト ・・・・・・バックエンド部 ・・・・・・オブジェクトプログラム ・・・・・・制御部
Claims (1)
- 【特許請求の範囲】 各内部手続きブロックに対してエントリを有し、各エン
トリに手続きブロック名、ファイル位置、および、参照
回数の項目を有する手続きブロック情報テーブルと、 中間テキストから内部手続きブロックを検出し、前記手
続きブロック情報テーブルに手続きブロック名とファイ
ル位置とを登録する手続きブロック検出手段と、 中間テキストから内部手続きブロックの呼び出しを検出
し、前記手続きブロック情報テーブルに参照回数を登録
する手続きブロック参照回数検出手段と、 各内部手続きブロックの呼び出しに対して前記手続きブ
ロック情報テーブルの情報からインライン展開の可否を
判断し、可能な場合にインライン展開を行う手続きブロ
ックインライン展開手段とを備えたことを特徴とする手
続きインライン展開方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23597989A JPH0399330A (ja) | 1989-09-12 | 1989-09-12 | 手続きインライン展開方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP23597989A JPH0399330A (ja) | 1989-09-12 | 1989-09-12 | 手続きインライン展開方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0399330A true JPH0399330A (ja) | 1991-04-24 |
Family
ID=16994027
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP23597989A Pending JPH0399330A (ja) | 1989-09-12 | 1989-09-12 | 手続きインライン展開方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0399330A (ja) |
-
1989
- 1989-09-12 JP JP23597989A patent/JPH0399330A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20020169942A1 (en) | VLIW processor | |
| US20030028860A1 (en) | Compiler and debugging device | |
| JP3130446B2 (ja) | プログラム変換装置及びプロセッサ | |
| JPH0399330A (ja) | 手続きインライン展開方式 | |
| JPS61245239A (ja) | 論理回路方式 | |
| JPH04268928A (ja) | エミュレーション装置及び半導体装置 | |
| JPH02278340A (ja) | コンパイル方式 | |
| JPH03144830A (ja) | 並列処理方式 | |
| JP3367438B2 (ja) | 条件実行処理装置 | |
| JP2606658B2 (ja) | 論理シミュレータおよび制御方法 | |
| JPH03116241A (ja) | コンパイラ | |
| Xin et al. | The architecture of the Java extension of 32-bit RISC for smart cards and other embedded systems | |
| KR950014161B1 (ko) | 어레이 프로세서(array processor)의 2단계(stage) 명령어 파이프라인 처리방법 | |
| WO1997007452A1 (en) | Programmable compiler | |
| JPH0573335A (ja) | プログラムの自動インライン展開方式 | |
| JP2864589B2 (ja) | 関数値差異出力システム | |
| JPH03235135A (ja) | プログラムの自動検査方式 | |
| JPH04165537A (ja) | プログラム自動インライン展開方式 | |
| JP2000132405A (ja) | インライン展開処理装置及び方法 | |
| JPH04308935A (ja) | コード生成装置 | |
| JPH08263300A (ja) | インライン展開方式 | |
| JPH07192034A (ja) | インタプリタ型シミュレーション方法 | |
| JPH01274241A (ja) | 命令列生成方式 | |
| JPH0659905A (ja) | コンパイラの並列化処理方式 | |
| JPS6182242A (ja) | フオ−トラン翻訳方式 |