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
Application number
JP23597989A
Other languages
English (en)
Inventor
Tomoyuki Yui
朋之 湯井
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP23597989A priority Critical patent/JPH0399330A/ja
Publication of JPH0399330A publication Critical patent/JPH0399330A/ja
Pending legal-status Critical Current

Links

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とから構成
されている。
また、最適化部4は、手続きブロック情報テーブル41
と手続きブロック検出手段42と手続きブロック参照回
数検出手段43と手続きブロックインライン展開手段4
4とから構成されている。
なお、各部の機能は次の通りである。
手続きブロック情報テーブル41;第2図に示すように
、中間テキスト31に含まれる各内部手続きブロックに
対してエントリ411を有し、各エントリに手続きブロ
ック名、ファイル位置、および、参照回数の項目を有す
る。
手続きプロンク検出手段42;中間テキスト31から内
部手続きブロックを検出し、手続きブロック情報テーブ
ル41に手続きブロック名と中間テキストファイル3上
の当該内部手続きブロックのファイル位置とを登録する
機能を有している。
手続きブロック参照回数検出手段43;中間テキスト3
1から内部手続きブロックの呼び出しを検出し、手続き
ブロック情報テーブル41に参照回数を登録する機能を
有している。
手続きブロックインライン展開手段44;各内部手続き
ブロックの呼び出しに対して手続きブロック情報テーブ
ル41の情報からインライン展開の可否を判断し、可能
な場合にインライン展開を行う機能を有している。
以下、上記の実施例の動作を説明する。
コンパイラが起動されると、制御部8により、フロント
エンド部2→最適化部4→バックエンド部6の順で起動
が行われる。また、最適化部4内でも、同じ(制御部8
により、手続きブロック検出手段42→手続きブロック
参照回数検出手段43→手続きブロックインライン展開
手段44の順で起動が行われる。
先ず、フロントエンド部2はソースプログラム1を入力
し、構文解析等の処理を行って中間テキスト31を中間
テキストファイル3に出力する。
次いで、最適化部4の手続きブロック検出手段42は中
間テキストファイル3から中間テキスト31を入力し、
内部手続きブロックの開始を検出した場合、手続きブロ
ック情報テーブル41にその手続きブロック名と中間テ
キストファイル3上のファイル位置とを登録する。また
、参照回数を初期化する。
次いで、手続きブロック参照回数検出手段43は中間テ
キストファイル3から中間テキスト31を入力し、内部
手続きブロックの呼び出しを検出した場合、手続きブロ
ック情報テーブル41から対応する手続きブロック名を
検索し、参照回数の項目の値に1を加算する。
以上の処理の後、手続きブロックインライン展開手段4
4が起動され、第3図に示す処理を行う。
すなわち、手続きブロックインライン展開手段44は中
間テキストファイル3から中間テキスト31を1テキス
ト読み込み(ステップSL)、それが内部手続きブロッ
クの呼び出しであるか否かを判断しくステップS2)、
そうでない場合は読み込んだ中間テキスト31をそのま
ま処理済中間テキスト51として処理済中間テキストフ
ァイル5に出力する(ステップ33)。なお、ファイル
が終了の場合は処理を終了する。
また、読み込んだテキストが内部手続きブロックの呼び
出しである場合には、手続きブロック情報テーブル41
から対応する手続きブロック名を検索しくステップS4
)、参照回数の項目の値が所定値n未満か否かを判断し
くステップS5)、nより大きい場合は読み込んだ中間
テキスト31、すなわち内部手続きブロックの呼び出し
命令に対応する中間テキストをそのまま処理済中間テキ
スト51として処理済中間テキストファイル5に出力す
る(ステップS3)。つまり、参照回数が多すぎる場合
はインライン展開によりオブジェクトプログラム7のサ
イズが膨大となってしまうため、インライン展開の対象
を参照回数がn未満のものに限定している。
一方、参照回数がn未満である場合には、現在のファイ
ル位置をセーブし、手続きブロック情報テーブル41の
当該内部手続きブロックのファイル位置を用いて中間テ
キストファイル3をポイントシ(ステップS6)、その
ファイル位置から中間テキスト31を1テキスト読み込
む(ステップS7)。
次いで、内部手続きブロックの終了であるか否かを判断
しくステップS8)、終了でない場合はプロローグ処理
もしくはエピローグ処理のテキストであるか否かを判断
しくステップ5lO)、プロローグ処理もしくはエピロ
ーグ処理のテキストでない場合にはその中間テキスト3
1を処理済中間テキスト51として処理済中間テキスト
ファイル5に出力しくステップ5ll)、ステップS7
に戻る。また、プロローグ処理もしくはエピローグ処理
のテキストである場合には処理済中間テキストファイル
5には出力せずにステップS7に戻る。そして、内部手
続きブロックが終了すると、ファイル位置を元に戻しく
ステップS9)、ステップS1に戻る。
上記の処理により、参照回数が所定値n未満の内部手続
きブロックについては、プロローグ処理。
エピローグ処理のためのテキストを除いた本体部分のテ
キストだけが処理済中間テキスト51として処理済中間
テキストファイル5に出力される。
これがインライン展開である。
次いで、バックエンド部6は処理済中間テキストファイ
ル5から処理済中間テキスト51を入力してコード生成
等を行い、オブジェクトプログラム7を出力する。
〔発明の効果〕
以上説明したように、本発明の手続きインライン展開方
式にあっては、内部手続きブロックの参照回数を考慮し
てインライン展開するか否かを決定し、可能な場合はプ
ロローグ処理およびエピローグ処理を含まない内部手続
きブロックの内容自体がコードとして展開されるため、
オブジェクトプログラムの実行時にサブルーチンリンケ
ージ等に要する処理が不要となって実行効率が大幅に向
上する効果がある。
【図面の簡単な説明】
第1図は本発明の手続きインライン展開方式を適用した
コンパイラの一実施例を示す構成図、第2図は第1図に
おける手続きブロック情報テーブルの詳細図および、 第3図は第1図における手続きブロックインライン展開
手段の処理のフローチャートである。 図において、 1・・・・・・ソースプログラム 2・・・・・・フロントエンド部 3・・・・・・中間テキストファイル 31・・・中間テキスト 4・・・・・・最適化部 41・・・手続きブロック情報テーブル42・・・手続
きブロック検出手段 43・・・手続きブロック参照回数検出手段4・・・手
続きブロックインライン展開手段・・・・・・処理済中
間テキストファイルト・・処理済中間テキスト ・・・・・・バックエンド部 ・・・・・・オブジェクトプログラム ・・・・・・制御部

Claims (1)

  1. 【特許請求の範囲】 各内部手続きブロックに対してエントリを有し、各エン
    トリに手続きブロック名、ファイル位置、および、参照
    回数の項目を有する手続きブロック情報テーブルと、 中間テキストから内部手続きブロックを検出し、前記手
    続きブロック情報テーブルに手続きブロック名とファイ
    ル位置とを登録する手続きブロック検出手段と、 中間テキストから内部手続きブロックの呼び出しを検出
    し、前記手続きブロック情報テーブルに参照回数を登録
    する手続きブロック参照回数検出手段と、 各内部手続きブロックの呼び出しに対して前記手続きブ
    ロック情報テーブルの情報からインライン展開の可否を
    判断し、可能な場合にインライン展開を行う手続きブロ
    ックインライン展開手段とを備えたことを特徴とする手
    続きインライン展開方式。
JP23597989A 1989-09-12 1989-09-12 手続きインライン展開方式 Pending JPH0399330A (ja)

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)

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) フオ−トラン翻訳方式