JPH02135529A - コンパイル方式 - Google Patents

コンパイル方式

Info

Publication number
JPH02135529A
JPH02135529A JP28867588A JP28867588A JPH02135529A JP H02135529 A JPH02135529 A JP H02135529A JP 28867588 A JP28867588 A JP 28867588A JP 28867588 A JP28867588 A JP 28867588A JP H02135529 A JPH02135529 A JP H02135529A
Authority
JP
Japan
Prior art keywords
procedure
intermediate text
source program
option
generation means
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
JP28867588A
Other languages
English (en)
Inventor
Keiko Suzuki
景子 鈴木
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 JP28867588A priority Critical patent/JPH02135529A/ja
Publication of JPH02135529A publication Critical patent/JPH02135529A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は高級言語で記述されたソースプログラムからオ
ブジェクトプログラムを生成するコンパイル方式に関し
、特に、ソースプログラム中で組込み手続きの引用があ
る場合にソースプログラム中での範囲を指定して組込み
手続きを実行する命令列を内部展開したオブジェクトプ
ログラムを生成可能としたコンパイル方式に関するもの
である。
〔従来の技術〕
組込み手続きとは、既にシステムで定義されたサブプロ
グラムであり、ソースプログラム中でその引用を行うだ
けで、その機能を利用することができるものである。
ところで、組込み手続きを引用したソースプログラムの
実行時性能を向上させる方式として、ソースプログラム
内で引用している組込み手続きの命令列をオブジェクト
プログラム中に内部展開する方式が存在する。すなわち
、この方式によれば、実行時に外部参照がなくなるため
、処理速度が大幅に向上するものである。しかし、実行
時性能が向上する反面、命令列が実コーディングとして
オブジェクトプログラム中に含まれるため、オブジェク
トプログラムのサイズが大型化するという問題点がある
。なお、内部展開しない場合には組込み手続きを外部呼
出しとするための命令列がオブジェクトプログラム中に
置かれることになる。
しかして、従来は、この相反する問題点を解決するため
に、 ■実行頻度の高い組込み手続きに対してのみ、その組込
み手続きを実行する命令列を内部展開する方式 ■コンパイラが認識したループ内で引用される組込み手
続きに対してのみ、その組込み手続きを実行する命令列
を内部展開する方式等を採用していた。
〔発明が解決しようとする課題] 従来は上述したような基準で組込み手続きの内部展開を
行っていたが、特に■の方式では、実行頻度がソースプ
ログラム中の特定の範囲に対してのみ高い場合に不都合
があった。すなわち、■の方式では実行頻度の高い組込
み手続きに対してのみ、その組込み手続きを実行する命
令列が内部展開されるが、同一の組込み手続きに関して
はソースプログラム中の出現位置にかかわりなく内部展
開されるため、オブジェクトプログラムが必要以上に大
型化してしまうという欠点があった。なお、オプション
により内部展開する組込み手続きを指定できるものにあ
っては、実行頻度の高い範囲内で引用される組込み手続
きの全てでなく、一部の組込み手続きに対してのみ内部
展開するようにオプションを指定した場合には、オブジ
ェクトプログラムのサイズの大型化は避けられるものの
、充分な性能向上が図れないという欠点があった。
一方、従来の■の方式では、コンパイラの認識したルー
プ中で引用される組込み手続きに対しては、ループの繰
り返し数にかかわらず全てのループ中で組込み手続きを
実行する命令列が内部展開されるため、内部展開が不要
な組込み手続きまでもが内部展開されることとなり、オ
ブジェクトプログラムのサイズが増加するという欠点が
あった。
本発明は上記の点に鑑み提案されたものであり、その目
的とするところは、実行頻度がソースプログラム中の特
定の範囲に対してのみ高い場合等において、その範囲を
予め指定することにより、組込み手続きがその指定した
範囲内で引用される場合にのみ、その組込み手続きを実
行する命令列を内部展開することができるコンパイル方
式を提供することにある。
〔課題を解決するための手段〕
本発明は上記の目的を達成するため、高級言語で記述さ
れたソースプログラムからオブジェクトプログラムを生
成するコンパイル方式において、前記ソースプログラム
に組込み手続きの引用があり、かつ前記ソースプログラ
ムと同時に与えられるオプションの指定範囲に属する時
に、内部展開を行う旨の情報を付加した中間テキストを
生成する内部展開実行情報付加中間テキスト生成手段と
、 前記ソースプログラムに組込み手続きの引用があり、か
つ前記オプションの指定範囲に属しない時に、内部展開
を行わない旨の情報を付加した中間テキストを生成する
内部展開非実行情報付加中間テキスト生成手段と、 内部展開を行う旨の情報の付加された中間テキストを入
力した場合に組込み手続きを内部展開した命令列を生成
する内部展開命令列生成手段と、内部展開を行わない旨
の情報の付加された中間テキストを入力した場合に組込
み手続きを外部手続き呼出しとした命令列を生成する外
部手続き呼出し命令列生成手段とを備えるようにしてい
る。
〔作用〕
本発明のコンパイル方式にあっては、ソースプログラム
に組込み手続きの引用があり、かつソースプログラムと
同時に与えられるオプションの指定範囲に属する時に、
内部展開実行情報付加中間テキスト生成手段が内部展開
を行う旨の情報を付加した中間テキストを生成し、一方
、ソースプログラムに組込み手続きの引用があり、かつ
オプションの指定範囲に属しない時に、内部展開非実行
情報付加中間テキスト生成手段が内部展開を行わない旨
の情報を付加した中間テキストを生成し、内部展開命令
列生成手段が内部展開を行う旨の情報の付加された中間
テキストを入力した場合に組込み手続きを内部展開した
命令列を生成し、外部手続き呼出し命令列生成手段が内
部展開を行わない旨の情報の付加された中間テキストを
入力した場合に組込み手続きを外部手続き呼出しとした
命令列を生成する。
〔実施例〕
以下、本発明の実施例につき図面を参照して説明する。
第1図は本発明のコンパイル方式を適用したコンパイラ
の一実施例の構成図である。第1図において、コンパイ
ラ2はオプション解析手段21と中間テキスト生成手段
23と命令列生成手段25とから構成され、中間テキス
ト生成手段23はソースプログラム解析手段231と組
込み手続き非引用中間テキスト生成手段232と組込み
手続き引用中間テキスト生成手段233とから構成され
、更に組込み手続き引用中間テキスト生成手段233は
引用範囲判定手段2331と内部展開非実行情報付加中
間テキスト生成手段2332と内部展開実行情報付加中
間テキスト生成手段2333とから構成されている。ま
た、命令列生成手段25は中間テキスト解析手段251
と組込み手続き非引用命令列生成手段252と組込み手
続き引用命令列生成手段253とから構成され、更に組
込み手続き引用命令列生成手段253は付加情報判定手
段2531と外部手続き呼出し命令列生成手段2532
と内部展開命令列生成手段2533とから構成されてい
る。
以下、上記の実施例の各部の機能および動作について説
明する。
コンパイラ2はソースプログラム11および利用者が指
定したオプション12を含む入力情報1を入力すると、
オプション解析手段21においてオプション12を解析
し、オプション情報22を生成する。なお、オプション
12は、ソースプログラム11の行番号により範囲を指
定して、その範囲内に存在する組込み手続きの引用を命
令列に内部展開することを指示するものである。
次いで、中間テキスト生成手段23では、ソースプログ
ラム解析手段231においてソースプログラム11を解
析し、組込み手続きを引用したソースプログラムでない
場合は組込み手続き非引用中間テキスト生成手段232
に制御を移し、組込み手続きを引用したソースプログラ
ムである場合は組込み手続き引用中間テキスト生成手段
233に制御を移す。
ここで、組込み手続き非引用中間テキスト生成手段23
2では従来と同様に中間テキスト24を生成する。
一方、組込み手続き引用中間テキスト生成手段233で
は、引用範囲判定手段2331において現在解析してい
るソースプログラムの行番号が組込み手続きを内部展開
する範囲であるか否かをオプション情報22を参照して
判定し、内部展開を行わない範囲であれば内部展開非実
行情報付加中間テキスト生成手段2332に制御を移し
、内部展開を行う範囲であれば内部展開実行情報付加中
間テキスト生成手段2333に制御を移す。
ここで、内部展開非実行情報付加中間テキスト生成手段
2332ではソースプログラムに対応した中間テキスト
を生成すると共に、内部展開を行わない旨の情報を付加
し、中間テキスト24を生成する。
一方、内部展開実行情報付加中間テキスト生成手段23
33ではソースプログラムに対応した中間テキストを生
成すると共に、内部展開を行う旨の情報を付加し、中間
テキスト24を生成する。
次いで、命令列生成手段25では、中間テキスト解析手
段251において中間テキスト24を解析し、組込み手
続きを引用しない中間テキストであれば組込み手続き非
引用命令列生成手段252に制御を移し、組込み手続き
を引用した中間テキストであれば組込み手続き引用命令
列生成手段253に制御を移す。
ここで、組込み手続き非引用命令列生成手段252では
従来と同様に命令列を生成し、最終的にオブジェクトプ
ログラム3を生成する。
一方、組込み手続き引用命令列生成手段253では、付
加情報判定手段2531において中間テキスト24に付
加されている組込み手続きを実行する命令列を内部展開
するか否かの情報を判定し、内部展開を行わない場合に
は外部手続き呼出し命令列生成手段2532に制御を移
し、内部展開を行う場合には内部展開命令列生成手段2
533に制御を移す。
ここで、外部手続き呼出し命令列生成手段2532では
組込み手続きに対応した外部手続きを呼び出す命令列を
生成し、最終的にオブジェクトプログラム3を生成する
一方、内部展開命令列生成手段2533では組込み手続
きを実行する命令列を生成し、最終的にオブジェクトプ
ログラム3を生成する。
以上のようにコンパイル時に与えるオプション12によ
り、組込み手続きがソースプログラム11中の特定の範
囲内で引用される場合にのみ、その組込み手続きをオブ
ジェクトプログラム3中に内部展開することが可能とな
る。
〔発明の効果〕 以上説明したように本発明のコンパイル方式にあっては
、組込み手続きがソースプログラム中の特定の範囲内で
引用された場合にのみ、その組込み手続きを実行する命
令列をオブジェクトプログラム中に内部展開することが
可能となるため、オブジェクトプログラムのサイズを考
慮して内部展開する範囲を予め指定することにより、最
大限の性能向上を図ることができる。すなわち、実行頻
度がソースプログラム中の特定の範囲に対してのみ高い
とき、利用者は組込み手続きがその範囲内で引用された
場合にのみ組込み手続きを実行する命令列を内部展開す
るようにオプションを指定することにより、オブジェク
トプログラムの大きさを必要最小限に抑え、かつ、充分
な性能向上を図ることができる。
【図面の簡単な説明】
第1図は本発明のコンパイル方式の一実施例を示す構成
図である。 図において、 1・・・・・・・・・・・・入力情報 11・・・・・・・・・ソースプログラム12・・・・
・・・・・オプション 2・・・・・・・・・・・・コンパイラ21・・・・・
・・・・オプション解析手段22・・・・・・・・・オ
プション情報23・・・・・・・・・中間テキスト生成
手段231・・・・・・ソースプログラム解析手段23
2・・・・・・組込み手続き非引用中間テキスト生成手
段 233・・・・・・組込み手続き引用中間テキスト生成
手段 2331・・・引用範囲判定手段 2332・・・内部展開非実行情報付加中間テキスト生
成手段 2333・・・内部展開実行情報付加中間テキスト生成
手段 24・・・・・・・・・中間テキスト 25・・・・・・・・・命令列生成手段251・・・・
・・中間テキスト解析手段252・・・・・・組込み手
続き非引用命令列生成手段253・・・・・・組込み手
続き引用命令列生成手段2531・・・付加情報判定手

Claims (1)

  1. 【特許請求の範囲】  高級言語で記述されたソースプログラムからオブジェ
    クトプログラムを生成するコンパイル方式において、 前記ソースプログラムに組込み手続きの引用があり、か
    つ前記ソースプログラムと同時に与えられるオプション
    の指定範囲に属する時に、内部展開を行う旨の情報を付
    加した中間テキストを生成する内部展開実行情報付加中
    間テキスト生成手段と、 前記ソースプログラムに組込み手続きの引用があり、か
    つ前記オプションの指定範囲に属しない時に、内部展開
    を行わない旨の情報を付加した中間テキストを生成する
    内部展開非実行情報付加中間テキスト生成手段と、 内部展開を行う旨の情報の付加された中間テキストを入
    力した場合に組込み手続きを内部展開した命令列を生成
    する内部展開命令列生成手段と、内部展開を行わない旨
    の情報の付加された中間テキストを入力した場合に組込
    み手続きを外部手続き呼出しとした命令列を生成する外
    部手続き呼出し命令列生成手段とを備えたことを特徴と
    するコンパイル方式。
JP28867588A 1988-11-15 1988-11-15 コンパイル方式 Pending JPH02135529A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28867588A JPH02135529A (ja) 1988-11-15 1988-11-15 コンパイル方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28867588A JPH02135529A (ja) 1988-11-15 1988-11-15 コンパイル方式

Publications (1)

Publication Number Publication Date
JPH02135529A true JPH02135529A (ja) 1990-05-24

Family

ID=17733231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28867588A Pending JPH02135529A (ja) 1988-11-15 1988-11-15 コンパイル方式

Country Status (1)

Country Link
JP (1) JPH02135529A (ja)

Similar Documents

Publication Publication Date Title
JP2001184218A (ja) Mpiプログラムのコンパイルにおける最適化方法
US5815716A (en) Method for supporting multiple call interface conventions for computer programs using directives
JPH02135529A (ja) コンパイル方式
JPH0683597A (ja) オブジェクト指向プログラム開発装置およびオブジェクト指向プログラム開発方法
JPH04343140A (ja) コンパイラの最適化処理方法
JPH03144830A (ja) 並列処理方式
JP2585793B2 (ja) コンパイラシステム
JP3305767B2 (ja) ソート処理方法及びコンパイル方法
JP2682206B2 (ja) 目的プログラムの最適化方式
JPH03116241A (ja) コンパイラ
JPH01128136A (ja) コンパイル処理装置
JPH01274241A (ja) 命令列生成方式
JPH05120323A (ja) If文下ベクトル演算最適化方式
JP3226172B2 (ja) インライン展開システム
JPH0488438A (ja) 高級言語による原始プログラムに対するデバッガの一命令実行方式
JPH10326193A (ja) インライン展開関数の最適化のためのコンパイル方法
JPH04165537A (ja) プログラム自動インライン展開方式
JPH04107737A (ja) 最適化方式
JPH06110750A (ja) 関係データベースをアクセス可能なアプリケーションプログラムのメイクファイルの自動生成方法
JPS62271024A (ja) 最適化処理方式
JPH02231638A (ja) オブジエクト指向データベース管理システムにおけるメツセージ処理方法
JPH0573335A (ja) プログラムの自動インライン展開方式
JPH0373025A (ja) 原始プログラム整形コンパイル方式
JPS63259736A (ja) デバツグ用セグメント分割方式
JPH03233725A (ja) 自動コメント生成方式