JP3024131B2 - コンパイラシステム - Google Patents

コンパイラシステム

Info

Publication number
JP3024131B2
JP3024131B2 JP63221146A JP22114688A JP3024131B2 JP 3024131 B2 JP3024131 B2 JP 3024131B2 JP 63221146 A JP63221146 A JP 63221146A JP 22114688 A JP22114688 A JP 22114688A JP 3024131 B2 JP3024131 B2 JP 3024131B2
Authority
JP
Japan
Prior art keywords
processing
initialization
program
subprogram
code
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.)
Expired - Fee Related
Application number
JP63221146A
Other languages
English (en)
Other versions
JPH0268631A (ja
Inventor
修二 出海
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP63221146A priority Critical patent/JP3024131B2/ja
Publication of JPH0268631A publication Critical patent/JPH0268631A/ja
Application granted granted Critical
Publication of JP3024131B2 publication Critical patent/JP3024131B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 〔概 要〕 本発明は、計算機のコンパイラシステムに関して、資
源獲得に関する冗長な初期化処理及び終了処理を省略す
ると共に、副プログラム間のデータの受け継ぎを可能に
して、副プログラムの実行効率を改善できるコンパイラ
システムの提供を目的とし、当該ソースプログラム内に
処理を従属して行なう旨の指定がある場合、当該ソース
プログラムの資源獲得についての初期化処理が行なわれ
ているか否かを判定させるコードを生成する判定コード
生成手段と、当該初期化処理が行なわれていると判定さ
れた場合当該初期化処理を行なわせず、当該初期化処理
が行なわれていないと判定された場合当該初期化処理を
行なわせるコードを生成する処理コード生成手段と、前
記指定がある場合、当該ソースプログラムの資源獲得に
ついての終了処理を行なわせるコードの生成を省略する
コード省略手段とから構成する。
〔産業上の利用分野〕
本発明は、計算機のコンパイラシステムに関する。
計算機の応用システムを、例えばシステム記述言語で
記述したサブシステムから各種機能の副プログラムを呼
び出して必要な処理を実行する構成とし、それらの副プ
ログラムをその処理を記述し易い他のプログラミング言
語、例えばPL/I言語等で記述する場合がしばしばある。
〔従来の技術と発明が解決しようとする課題〕
前記のように、副プログラムとそれを呼び出すサブシ
ステムとを異なるプログラミング言語で記述する場合に
おいて、例えば副プログラムが公知のPL/Iプログラミン
グ言語等で記述された原始プログラムの場合に、副プロ
グラムを翻訳するコンパイラは他の言語で記述されたサ
ブシステムとの関係を識別しないので、コンパイラはそ
の副プログラムを1つの独立した目的プログラムとして
生成し、所要の初期化処理を行うプログラムを前置部と
し、又終了処理を行うプログラムを後置部とした構成に
する。
こゝで前置部の行う初期化処理とは、本来の処理のた
めの作業記憶域を計算機の管理システムに要求して獲得
し、必要な初期設定を行い、プログラムからの必要な割
り出しやエラー検出時等の割込の受付先プログラムの入
口を管理システムに通知する等の、いわゆる実行環境を
設定する処理であり、又後置部の終了処理とは、使用し
た作業記憶領域をシステムに返却し、そのプログラム中
でオープンしてクローズしていないファイルをクローズ
する等の処理である。
従って、このように構成された副プログラムは、実行
時サブシステムから呼び出されるごとに、初期化処理及
び終了処理をその処理の前後に実行することになるが、
それらの処理は比較的長い処理時間を要する(例えば管
理システムへの処理要求、いわゆるスーパバイザコール
を、少なくとも数回行う必要がある)。
第3図は、以上のようなサブシステムと副プログラム
との関係を説明する図である。図はサブシステム1から
副プログラム2(プログラムa)、副プログラム3(プ
ログラムb)、副プログラム4(プログラムc)を順次
呼び出す場合の例であり、制御の移行を太線で示す。
又、各プログラム2〜4は本体部の前後に、前記のよ
うに前置部と後置部を持つ構成であり、図の各本体部に
はPL/I言語で記述された原始プログラムの基本構成を例
示するものであり、後置の仕様によりそれぞれはEXC1〜
EXC3という手続き部を主プログラムとして、INIT、EXEC
及びTERMなるサブルーチンの手続きを呼ぶように構成さ
れた原始プログラムを表す。こゝで第2行にある、「OP
TIONS(MAIN)」は、公知のようにこの手続きが独立の
実行単位を構成するものであることを指定するオプショ
ン文である。
以上のように構成されるので、例えばサブシステムの
処理を介在して同じ副プログラムが何回も呼ばれる場合
にも、前の実行環境は消滅し、呼び出しごとに初期化処
理及び終了処理が行われれ実行効率を低下し、又副プロ
グラム間で続いて同じファイルを使用する場合にも、各
副プログラムの呼び出しごとにファイルのオープン、ク
ローズ処理が必要になるという問題がある。
本発明は、冗長な初期化処理及び終了処理を省略する
と共に、副プログラム間のデータの受け継ぎを可能にし
て、副プログラムの実行効率を改善できる副プログラム
生成処理方法を目的とする。
〔課題を解決するための手段〕
第1図は、本発明の構成を示す処理の流れ図である。
図はコンパイラにおける、目的プログラムの初期化処
理及び終了処理部分の生成処理の流れを示し、10〜14は
処理ステップである。
〔作 用〕
コンパイラは所定のプログラミング言語で記述された
計算機の原始プログラムを翻訳し、通常は第1図の処理
ステップ10〜12により、所定の初期化処理を行う前置部
と、所定の終了処理を行う後置部を有する目的プログラ
ムを生成する。
しかし、原始プログラムに所定の指定があることを処
理ステップ10で識別した場合には、処理ステップ13、14
により前置部を、所定の制御情報が所定の状態の場合の
み初期化処理を実行するように構成し、又終了処理を実
行すること無く、該プログラムの呼出元に復帰するよう
に該目的プログラムを生成する。
この処理方法により、副プログラムとする原始プログ
ラムに前記の指定をしておけば、必要な場合のみ初期化
処理を実行するようにし、終了処理は必要な副プログラ
ムを実行した後に一括して実行するようにして、実行効
率を改善し、且つデータの受け継ぎを可能にするように
運用することができる。
〔実施例〕
本発明により、例えばPL/I言語の仕様において、前記
オプション文に例えば「SUB」の指定を追加する。
コンパイラは、第1図の処理ステップ10でオプション
文を識別し、「OPTIONS(MAIN)」であれば、処理ステ
ップ11で従来の初期化処理を前置部とし、処理ステップ
12で従来の終了処理を後置部として生成する。
オプション文が「OPTIONS(SUB)」であれば、処理ス
テップ13で初期化処理の要否を一定の制御情報で判定し
て、必要な場合のみ初期化処理を実行するようにした前
置部を生成する。
この制御情報としては、例えば初期化処理で獲得する
作業記憶域のアドレスを設定する一定の記憶域の値を利
用するものとし、その値が0であれば作業記憶域の獲得
が行われていないので、初期化処理が必要な場合と判定
し、0でなければ初期化処理が行われているので、その
値を作業記憶域の先頭アドレスとする等、改めて初期化
処理を行うことなく前の初期化結果を継承するように前
置部を構成する。又、初期化処理を必要とする場合に
は、サブルーチン化した初期化処理を呼び出すようにす
る。
次に処理ステップ14で、本体部の処理終了後終了処理
を行わないで呼出元に復帰するように目的プログラムを
構成して処理を終わる。なお、オプション文にその他の
指定がある場合にはそれぞれに対する従来と同様の処理
を行う。
コンパイラの以上の処理により、オプション文にSUB
指定をした原始プログラムからは、第2図に示すような
構成の目的プログラムが生成される。第2図は前記第3
図の各副プログラムにおける、INIT、EXEC及びTERMなる
サブルーチンの手続きをそれぞれ独立の副プログラムと
して、SUB指定のもとにコンパイルした結果を示し、第
3図と同様に太線で制御の移行を説明している。
この例でINIT手続きの副プログラム21はファイルのオ
ープン処理、EXEC手続きの副プログラム22はそのファイ
ルにアクセスする処理、TERM手続きの副プログラム23は
そのファイルのクローズ処理を行うものとし、サブシス
テム20が最初に副プログラム21を呼ぶと(図のパス
)、副プログラム21の前置部は初期化処理が必要と判
定して、初期化処理ルーチン24を呼んで(パス)初期
化処理を実行した後、オープン処理を実行し、サブシス
テム20に制御を返す。
そこで、サブシステム20は副プログラム22を呼ぶと
(パス)、副プログラム22の前置部は初期化処理済で
あることを検出するので、直ちに本体部のアクセス処理
の実行に入り、終了するとサブシステム20に制御を返
す。
従って、同様のアクセス処理が複数回必要な場合に、
副プログラム22又は同じファイルにアクセスして別の処
理を行うように生成した他の副プログラムを何回呼び出
しても、前記と同様、初期化処理を行うことなく本体部
の処理のみを実行してサブシステム20に復帰するように
できる。
このようにして、必要なアクセス処理を終わると、サ
ブシステム20は副プログラム23を呼び(パス)、副プ
ログラム23は副プログラム22の場合と同様にして、直ち
に本体部のクローズ処理を実行してサブシステム20に制
御を返すので、サブシステム20はその後で終了処理ルー
チン25を呼んで(パス)終了処理を実行させる。
以上の説明で明らかなように、例えばあるファイルに
ついてのアクセス処理が、サブシステムの処理を介在し
て複数回必要な場合にも、初期化処理、ファイルのオー
プン処理及びクローズ処理、及び終了処理は1回のみ実
行するようにサブシステムで制御することができる、副
プログラムの実行効率は改善される。
〔発明の効果〕
以上の説明から明らかなように本発明によれば、計算
機のコンパイラにおいて、副プログラムを生成する場合
に、冗長な初期化処理及び終了処理を省略すると共に、
副プログラム間のデータの受け継ぎを可能にして、実行
効率を改善できるように副プログラムを生成できるとい
う著しい工業的効果がある。
【図面の簡単な説明】
第1図は本発明の構成を示す処理の流れ図、 第2図は本発明の副プログラムの構成の説明図、 第3図は従来の副プログラムの構成の説明図 である。 図において、 1、20はサブシステム、 2〜4、21〜23は副プログラム、 10〜14は処理ステップ、 24は初期化処理ルーチン、 25は終了処理ルーチン を示す。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】ソースプログラムを目的プログラムに翻訳
    するコンパイラシステムにおいて、 当該ソースプログラム内に処理を従属して行なう旨の指
    定がある場合、当該ソースプログラムの資源獲得につい
    ての初期化処理が行なわれているか否かを判定させるコ
    ードを生成する判定コード生成手段と、 当該初期化処理が行なわれていると判定された場合当該
    初期化処理を行なわせず、当該初期化処理が行なわれて
    いないと判定された場合当該初期化処理を行なわせるコ
    ードを生成する処理コード生成手段と、 前記指定がある場合、当該ソースプログラムの資源獲得
    についての終了処理を行なわせるコードの生成を省略す
    るコード省略手段と を有することを特徴とするコンパイラシステム。
JP63221146A 1988-09-02 1988-09-02 コンパイラシステム Expired - Fee Related JP3024131B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63221146A JP3024131B2 (ja) 1988-09-02 1988-09-02 コンパイラシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63221146A JP3024131B2 (ja) 1988-09-02 1988-09-02 コンパイラシステム

Publications (2)

Publication Number Publication Date
JPH0268631A JPH0268631A (ja) 1990-03-08
JP3024131B2 true JP3024131B2 (ja) 2000-03-21

Family

ID=16762187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63221146A Expired - Fee Related JP3024131B2 (ja) 1988-09-02 1988-09-02 コンパイラシステム

Country Status (1)

Country Link
JP (1) JP3024131B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5845788B2 (ja) * 2011-09-30 2016-01-20 富士通株式会社 実行制御プログラム、実行制御装置および実行制御方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62205434A (ja) * 1986-03-05 1987-09-10 Fujitsu Ltd 再帰呼出し可能プログラムのコンパイル処理方式

Also Published As

Publication number Publication date
JPH0268631A (ja) 1990-03-08

Similar Documents

Publication Publication Date Title
US6219832B1 (en) System and method of using annotations to optimize dynamically translated code in the presence of signals
JP3508775B2 (ja) 一つのプログラムの中でまたは1つのプロセッサ環境に於て、夫々のオブジェクトコードタイプが異なる複数のプログラムセグメントを実行するための装置
US6078744A (en) Method and apparatus for improving compiler performance during subsequent compilations of a source program
US6922827B2 (en) Iterative software development environment with prioritized build rules
US5136709A (en) Method for generating an operating system by a static link-editor
JPH05224911A (ja) 動的命令修正制御装置
US6519765B1 (en) Method and apparatus for eliminating redundant array range checks in a compiler
JP2002525707A (ja) バーチャルコールのインライン化のための精確な方法
US8056061B2 (en) Data processing device and method using predesignated register
US20030121025A1 (en) Method and system for combining multiple software test generators
US8458671B1 (en) Method and system for stack back-tracing in computer programs
US7086044B2 (en) Method, article of manufacture and apparatus for performing automatic intermodule call linkage optimization
US5581769A (en) Multipurpose program object linkage protocol for upward compatibility among different compilers
US6735774B1 (en) Method and apparatus for system call management
JP3024131B2 (ja) コンパイラシステム
US5150474A (en) Method for transferring arguments between object programs by switching address modes according to mode identifying flag
JPS6312302B2 (ja)
JP3566602B2 (ja) コンパイル方法、および、コンパイル用プログラムを記録した記録媒体
JP3039450B2 (ja) スタック領域の切替方法、方式およびスタック領域切替プログラムを記録した記憶媒体
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置
KR100216533B1 (ko) 병행 chill 프로그램의 결정적 재실행을 위한 사건 이력 기록 방법
JP3903514B2 (ja) 未定義変数検出の最適化コンパイラ装置
JP2658982B2 (ja) 特定命令実行検出方式
JPH064298A (ja) プログラム開発環境構築システム
JP3018783B2 (ja) コンパイル方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees