JPH05313909A - 中間コードインライン展開機能を有するコンパイラシステム - Google Patents

中間コードインライン展開機能を有するコンパイラシステム

Info

Publication number
JPH05313909A
JPH05313909A JP11943492A JP11943492A JPH05313909A JP H05313909 A JPH05313909 A JP H05313909A JP 11943492 A JP11943492 A JP 11943492A JP 11943492 A JP11943492 A JP 11943492A JP H05313909 A JPH05313909 A JP H05313909A
Authority
JP
Japan
Prior art keywords
intermediate code
source program
statement
runtime
routine
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.)
Withdrawn
Application number
JP11943492A
Other languages
English (en)
Inventor
Keimei Konno
啓明 今野
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.)
HOKKAIDO NIPPON DENKI SOFTWARE KK
NEC Solution Innovators Ltd
Original Assignee
HOKKAIDO NIPPON DENKI SOFTWARE KK
NEC Software Hokkaido Ltd
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 HOKKAIDO NIPPON DENKI SOFTWARE KK, NEC Software Hokkaido Ltd filed Critical HOKKAIDO NIPPON DENKI SOFTWARE KK
Priority to JP11943492A priority Critical patent/JPH05313909A/ja
Publication of JPH05313909A publication Critical patent/JPH05313909A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 コンパイルの高速化とディスクスペースの節
減とを図る。 【構成】 構文解析手段7で解析した文が実行時ルーチ
ン呼び出し文であるとき、インライン展開手段9によっ
て、実行時ライブラリ12に格納された実行時ルーチン
の中間コードを読み出し、その文と置換して展開し、中
間コード出力手段10でその中間コードを中間コードフ
ァイル13に格納する。これによって、フロントエンド
部3で、中間コード変換と実行時ルーチンのインライン
展開とを併せ行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はコンパイラシステムに
関し、特に中間コードインライン展開機能を有するコン
パイラシステムに関する。
【0002】
【従来の技術】従来、コンパイルシステムにおける実行
時ルーチンの中間コードをインライン展開することは、
原始プログラムを中間コードに変換するフロントエンド
部でなく、最適化処理を行うバックエンド部で行われて
いた。バックエンド部の最適化処理で実行時ルーチンの
中間コードをインライン展開する場合、フロントエンド
部が生成した中間コードファイルの先頭から実行時ルー
チン呼び出し文に対応する中間コードを検索し、その中
間コードを実行時ライブラリから入力した中間コードで
置換していた(参考文献: 「コンパイラ」 著 者
中 田 育 男発行所 産業図書株式会社 昭和56
年9月発行)。
【0003】
【発明が解決しようとする課題】上述した従来の中間コ
ードインライン展開では、フロントエンド部の処理終了
後、中間コードファイルの先頭から実行時ルーチン呼び
出し文に対応する中間コードを検索し、その中間コード
を実行時ライブラリから入力した中間コードで置換して
いるため、実行時ルーチンのインライン展開の処理に長
時間を必要とする。また、インライン展開時に、フロン
トエンド部が出力した中間コードファイルと、最適化処
理によってインライン展開される結果の中間コードファ
イルがディスク上に同時に存在するため、ディスクスペ
ースを多量に必要とする。この発明の目的は、実行時ル
ーチンのインライン展開が高速に行え、ディスクスペー
スを節減するコンパイラシステムを提供することにあ
る。
【0004】
【課題を解決するための手段】本発明の中間コードイン
ライン展開機能を有するコンパイラシステムは、原始プ
ログラムを機械語に変換するための中間コードを生成す
るフロントエンド部と、前記中間コードを前記機械語に
変換してオブジェクトファイルを作成するバックエンド
部とを備えるコンパイラシステムにおいて、前記原始プ
ログラムを格納する原始プログラムファイルから前記原
始プログラムを入手する原始プログラム入手手段と、前
記原始プログラムの文の構成を解析する構文解析手段
と、前記文が実行時ルーチンの呼び出しを必要とすると
き、前記文の処理内容に対応する前記実行時ルーチンの
前記中間コードを前記原始プログラムから呼び出される
前記実行時ルーチンの群を予め前記中間コードに変換さ
れたファイルで構成される実行時ライブラリから入手す
るインライン展開手段と、前記文が前記実行時ルーチン
の呼び出しを必要としないとき、前記文に対応する前記
中間コードを生成する中間コード変換手段と、前記イン
ライン展開手段および前記中間コード変換手段によって
生成された前記中間コードを中間コードファイルに出力
する中間コード出力手段とを前記フロントエンド部に備
える。
【0005】
【実施例】次に、この発明の実施例について図面を参照
して説明する。
【0006】一実施例の構成を示す図1を参照すると、
情報処理装置の主記憶装置1上のコンパイラシステム2
は、原始プログラムを中間コードに変換するフロントエ
ンド部3と、中間コードによってコンパイルの最適化を
行うバックエンド部4とで構成される。フロントエンド
部3には、フロントエンド部3の動作を制御する実行制
御手段5と、原始プログラムファイル11から原始プロ
グラムを読み出す原始プログラム入手手段6と、原始プ
ログラムの文の構文を解析する構文解析手段7と、構文
解析の結果、原始プログラムにおける数学関数などに対
応する実行時ルーチンを必要とする文であるとき、実行
時ライブラリ12の実行時ルーチンをその文と置換する
インライン展開手段9と、実行時ルーチンを必要としな
い文であるとき、その文を中間コードに変換する中間コ
ード変換手段8と、中間コード変換結果および実行時ル
ーチン展開結果を中間コードファイル13に格納する中
間コード出力手段10とで構成される。
【0007】この構成において、フロントエンド部3の
制御を行う実行制御手段5が起動されると、実行制御手
段5は原始プログラム入手手段6および構文解析手段7
を制御し、原始プログラムフアイル11を一文づつ順次
読み込んで、構文解析し、中間コードに変換し、中間コ
ードファイルを生成する。この動作は原始プログラム入
手手段6で原始プログラムファイル11の終了を検出す
るまで繰り返えされる。詳述すると、原始プログラム入
手手段6は、利用者が作成した原始プログラムファイル
11を開放し、原始プログラムファイル11から原始プ
ログラムを一文づつ読み込み、構文解析手段7に送付す
る。また、原始プログラムファイル11の終了を検出し
た時、原始プログラムファイル11を閉鎖し、実行制御
手段5に原始プログラムファイル11の終了を通知す
る。構文解析手段7は原始プログラムの一文を解析し、
その文が実行時ルーチンの呼び出しを必要とする文のと
き、対応する実行時ルーチン名とともにインライン展開
手段9に制御を渡す。また、実行時ルーチンの呼び出し
を必要としない文のとき、その文に関する解析結果の情
報とともに中間コード変換手段8に制御を渡す。中間コ
ード変換手段8は構文解析手段7から渡された解析結果
の情報をもとに中間コードを生成し、その中間コードと
ともに中間コード出力手段10に制御を渡す。インライ
ン展開手段9は構文解析手段7から渡された実行時ルー
チン名に基づいて対応する中間コードを実行時ライブラ
リ12から読み込み、その中間コードとともに中間コー
ド出力手段10に制御を渡す。中間コード出力手段10
は受け取った中間コードを中間コードファイル13に格
納する。次に、バックエンド部4はフロントエンド部3
の処理結果である中間コードを中間コードファイル13
から読み取り、その中間コードに対して効率化を図る最
適化処理たとえば、無駄なコードを省いたり、順序を入
れ換えるなどを行った後、機械語に変換し、機械語をオ
ブジェクトファイル14に出力する。
【0008】実行時ライブラリ12の形式を示す図2を
参照すると、実行時ライブラリ12は実行時ルーチンを
中間コードに変換し、一レコードに一つの中間コードが
記録された実行時ルーチン中間コードサブファイル24
の群で構成され、実行時ルーチン中間コードサブファイ
ル24は対応する実行時ルーチンの処理機能毎に1つの
サブファイルを構成する。実行時ルーチン名で指定され
る実行時ルーチン中間コードサブファイル24を開放す
ると、その実行時ルーチンの処理に対応する中間コード
の記録されたレコードにアクセスする。構文解析手段7
の動作の詳細を図1および図3を併せ参照して説明す
る。
【0009】構文解析手段7は原始プログラム入手手段
6から渡された原始プログラムの一文を解析する(ステ
ップ15)。解析の結果、その文が実行時ルーチン呼び
出し文であるときはステップ18に、実行時ルーチン呼
び出し文でないときはステップ17にそれぞれ制御を移
す(ステップ16)。実行時ルーチン呼び出し文の場
合、その実行時ルーチン呼び出し文に対応する実行時ル
ーチン名とともにインライン展開手段9に制御を渡す
(ステップ18)。実行時ルーチン呼び出し文でない場
合、その文に関する解析結果の情報とともに中間コード
変換手段8に制御を渡す(ステップ17)。
【0010】インライン展開手段9の動作の詳細を図1
および図4に従って説明する。構文解析手段7から渡さ
れた実行時ルーチン名6の実行時ルーチン中間コードサ
ブファイル24を開放し、インライン展開の対象となる
実行時ルーチンの中間コードが記録されたレコードの入
手が可能な状態にする(ステップ19)。中間コードが
記録されたレコードを入手する(ステップ20)。入手
したレコードが実行時ルーチン中間コードサブファイル
24の終了レコードであればステップ23へ、終了レコ
ードでなければステップ22へ制御を移す(ステップ2
1)。入手したレコードが終了レコードでないとき、入
手したレコードの内容とともに中間コード出力手段10
に制御を渡し、ステップ20に制御を戻す(ステップ2
2)。ステップ20で入手したレコードが実行時ルーチ
ン中間コードサブファイル24の終了レコードであると
き、実行時ルーチン中間コードサブファイル24を閉鎖
し、レコードの読み込みを終了する(ステップ23)。
【0011】以上のように、フロントエンド部3で、実
行時ルーチン呼び出し文を検出した段階で実行時ルーチ
ンの中間コードをインライン展開することで、高速な中
間コードのインライン展開が行える。
【0012】
【発明の効果】以上説明したように、この発明によれ
ば、実行時ルーチン呼び出し文のインライン展開をフロ
ントエンド部で行うことによって、バックエンド部の最
適化処理で、中間コードファイルの先頭から実行時ルー
チン呼び出し文に相当する中間コードを検索し、その中
間コードをインライン展開を行う必要がなくなる。これ
によって、最適化処理にかかる時間が短縮し、コンパイ
ルを高速化できる。また、フロントエンド部がインライ
ン展開を行った結果の中間コードファイルを出力するた
め、最適化処理を行うために必要とするディスクスペー
スが節約できる。
【図面の簡単な説明】
【図1】この発明の一実施例の構成を示す図である。
【図2】図1の実行時ライブラリの内部形式の構成例を
示す図である。
【図3】図1の構文解析手段の動作を説明する流れ図で
ある。
【図4】図1のインライン展開手段の動作を説明する流
れ図である。
【符号の説明】
1 主記憶装置 2 コンパイラシステム 3 フロントエンド部 4 バックエンド部 5 実行制御手段 6 原始プログラム入手手段 7 構文解析手段 8 中間コード変換手段 9 インライン展開手段 10 中間コード出力手段 11 原始プログラムファイル 12 実行時ライブラリ 13 中間コードファイル 14 オブジェクトファイル 24 実行時ルーチン中間コードサブファイル

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムを機械語に変換するため
    の中間コードを生成するフロントエンド部と、前記中間
    コードを前記機械語に変換してオブジェクトファイルを
    作成するバックエンド部とを備えるコンパイラシステム
    において、 前記原始プログラムを格納する原始プログラムファイル
    から前記原始プログラムを入手する原始プログラム入手
    手段と、 前記原始プログラムの文の構成を解析する構文解析手段
    と、 前記文が実行時ルーチンの呼び出しを必要とするとき、
    前記文の処理内容に対応する前記実行時ルーチンの前記
    中間コードを前記原始プログラムから呼び出される前記
    実行時ルーチンの群を予め前記中間コードに変換された
    ファイルで構成される実行時ライブラリから入手するイ
    ンライン展開手段と、 前記文が前記実行時ルーチンの呼び出しを必要としない
    とき、前記文に対応する前記中間コードを生成する中間
    コード変換手段と、 前記インライン展開手段および前記中間コード変換手段
    によって生成された前記中間コードを中間コードファイ
    ルに出力する中間コード出力手段とを前記フロントエン
    ド部に備えることを特徴とする中間コードインライン展
    開機能を有するコンパイラシステム。
JP11943492A 1992-05-13 1992-05-13 中間コードインライン展開機能を有するコンパイラシステム Withdrawn JPH05313909A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11943492A JPH05313909A (ja) 1992-05-13 1992-05-13 中間コードインライン展開機能を有するコンパイラシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11943492A JPH05313909A (ja) 1992-05-13 1992-05-13 中間コードインライン展開機能を有するコンパイラシステム

Publications (1)

Publication Number Publication Date
JPH05313909A true JPH05313909A (ja) 1993-11-26

Family

ID=14761334

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11943492A Withdrawn JPH05313909A (ja) 1992-05-13 1992-05-13 中間コードインライン展開機能を有するコンパイラシステム

Country Status (1)

Country Link
JP (1) JPH05313909A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704067A (zh) * 2019-10-16 2020-01-17 福建师范大学 一种嵌入式软件编译时能耗演化优化方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704067A (zh) * 2019-10-16 2020-01-17 福建师范大学 一种嵌入式软件编译时能耗演化优化方法
CN110704067B (zh) * 2019-10-16 2022-09-20 福建师范大学 一种嵌入式软件编译时能耗演化优化方法

Similar Documents

Publication Publication Date Title
US5606697A (en) Compiler system for language processing program
US5481711A (en) Program editing system
US20040010780A1 (en) Method and apparatus for approximate generation of source code cross-reference information
US7080370B1 (en) Method and apparatus for compiling source programs using one or more libraries
JPH05313909A (ja) 中間コードインライン展開機能を有するコンパイラシステム
JPH0736680A (ja) 並列化プログラム開発支援装置
KR20080045545A (ko) 조건부 영역을 전처리하는 방법
JPH10187461A (ja) 言語処理方式
JPH07121379A (ja) 複数言語混在コンパイラ
JP3003459B2 (ja) プログラム作成支援装置
JP3018783B2 (ja) コンパイル方式
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
JP3226172B2 (ja) インライン展開システム
JP2977642B2 (ja) Fortranコンパイル処理装置
JP2000242504A (ja) コンパイラ装置
JP2001034482A (ja) コンパイル装置、プログラム最適化装置、コンパイル処理方法及び記録媒体
JPH0561687A (ja) コンパイラの処理方式
JPH0795275B2 (ja) コンパイル処理装置
JPH11195011A (ja) 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
CN117270863A (zh) 一种基于增量编译的Verilog语法分析方法
JPH03144830A (ja) 並列処理方式
JPH0659904A (ja) プログラムの字句解析方法
JPH11327887A (ja) 自動部品化機能付コンパイラシステムおよび記録媒体
JP2827979B2 (ja) アセンブラ処理装置及びアセンブラ処理方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990803