JPH03235128A - 作業簿を引継ぐインライン展開処理方法 - Google Patents

作業簿を引継ぐインライン展開処理方法

Info

Publication number
JPH03235128A
JPH03235128A JP3124190A JP3124190A JPH03235128A JP H03235128 A JPH03235128 A JP H03235128A JP 3124190 A JP3124190 A JP 3124190A JP 3124190 A JP3124190 A JP 3124190A JP H03235128 A JPH03235128 A JP H03235128A
Authority
JP
Japan
Prior art keywords
processing
program
program unit
inline
intermediate data
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
JP3124190A
Other languages
English (en)
Inventor
Tomomasa Arase
荒瀬 倫昌
Yasuhiko Kinoshita
康彦 木下
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 JP3124190A priority Critical patent/JPH03235128A/ja
Publication of JPH03235128A publication Critical patent/JPH03235128A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概 要〕 ソース・プログラムをオブジェクトに展開するコンパイ
ルに際しての作業簿を引継ぐインライン展開処理方法に
関し。
ソース・プログラムの形でインライン展開する場合に必
要以外の個所についても、構文解析などが行われること
となり、処理量が大となるおそれがあるなどを解決する
と共に、その際の作業簿を正しく引継いで上記解決処理
を円滑に行わせ得るようにすることを目的とし。
構文解析区による処理と意味解析図による処理とを少な
くとも行った結果の中間データを翻訳作業ファイルに格
納しておき、当該翻訳作業ファイルの内容を利用して、
上記インライン展開を行うようにして、中間データの形
でインライン展開を可能にし、かつ作業簿の内容を上記
翻訳作業ファイルを介して引継ぐよう構成する。
〔産業上の利用分野〕
本発明は、ソース・プログラムをオブジェクトにH関す
るコンパイルに際しての作業簿を引継ぐインライン展開
処理方法に関する。
実際の処理に当たってオブジェクトを実行する際にサブ
・プログラムを呼んで実行する如き処理が行われるが、
このような処理速度向上の面からは、いわば必ずしも好
ましくない処理形態となることを排除すべく、オブジェ
クト展開する際に上記サブ・プログラムを取り込んで展
開しておくインライン展開が行われることがある。
〔従来の技術〕
従来の場合、上記インライン展開を行うに当たっては、
ソース・レベルでの取り込みを行っている。即ち1例え
ばプログラム単位■、■、■、■が存在し、かつプログ
ラム単位■がプログラム単位■と■とを呼んでいる如き
状況を考えるとき。
ソース・レベルでプログラム単位■内にプログラム単位
■と■とを取り込んだ上で、第6図図示の如き処理を行
う。
第6図は従来の例を示している0図中の符号1はソース
・プログラム、1−1はプログラム単位。
(i)FBIは構文解析区による処理。
(ii)FE2は意味解析図による処理。
(in)FE3は低レベル中間言語(LrNDA)への
変換を行う処理。
(iv) MP 1. MP 2は最適化を行う処理。
(v)BEは領域・レジスタ割り付けやコード生成を行
う処理。
を表している。
従来の場合には、ソース・プログラム1におけるプログ
ラム単位■内に、プログラム単位■と■とを取り込んだ
ものを単位■とし、以下夫々プログラム単位■、プログ
ラム単位■、プログラム単位■とし、第6図図示矢印に
示す如く、各単位■。
■、■、■について、上記処理FEI、FE2゜FE3
.MPI、MP2.BEを順に実行してゆくようにして
いる。
その間、各プログラム単位毎に処理が実行されてゆくに
当たっての作業状況などを、インライン作業簿10に記
述しておき、処理相互間の連絡に役立たせている。
〔発明が解決しようとする課題〕
上記従来の場合においては1本発明の場合の如く、中間
データの形でインライン展開していたならば行う必要の
なかった範囲についても構文解析や意味解析を行うよう
なことが生じ易い、またブログラム単位にまたがる最適
化が中間データ・レベルで実現し難い。更にまた。ソー
ス・レベルでインライン処理を行う際には、−上記従来
の場合の例で、上記の如くプログラム単位■がプログラ
ム単位■と■とを呼び、更にプログラム単位■がプログ
ラム単位■を呼んでいた如き場合には、プログラム単位
■内にプログラム単位■を取り込むことが難しい。
上記の点を考慮して、出願人は、別出願の形で第7図に
示した如き処理を行うことを提案した。
図中の符号■、■、・・・は処理ステップを表しており
3図示処理ステンブ■は上記樽文解析区による処理(F
E1)に対応し、処理ステップ■は上記、會味解析区に
よる処理(FE2)に対応し、処理ステップ■とは上記
低レベル中間言語への変換を行う処理(F E 3 )
に対応し、処理ステップ■は上記最適化を行う処理(M
PIとMP2)に対応し、処理ステップ[相]と■とは
上記領域・レジスタ割り付けなどの処理(BE)に対応
している。
そして、処理ステップ■、■、■、■は、上記別出願の
形で提案した発明の骨子に相当する個所であり1次の如
き処理を行わせることによって従来のソース・レベルで
のインライン処理に代えて、中間データ・レベルでのイ
ンライン処理を行わせるようにしているものである。即
ち、従来例として示す第6図図示の場合には、ソース・
レベルでのプログラム単位■内にプログラム単位■と■
とを取り込んだプログラム単位■を用い、第6図図示の
如く (1)処理F巳1ないし処理BEをプログラム単位■に
ほどこした後に (11)処理FBIないし処理BEをプログラム単位■
にほどこし く iii )次いで、処理F I’、 lないし処理
BEをプログラム栄位■にほどこし くiv)次いで、処理FBIないし処理BEをプログラ
ム単位■にほどこし ている。これに対して、上記別出願の形での提案におい
ては ソース レー\ルにおいてプログラム単位■内に
プログラム単位■と■とを取り込むことをせずに (vl理FEIと処理FE2とをプログラム単位■にほ
どこした上で、その中間データを翻訳作業ファイル上に
書き込み(第7図図示の処理ステップ■) (vi)次いで処理FEIと処理FE2とをプログラム
単位■にほどこした上で、その中間データを翻訳作業フ
ァイル上に書き込み。
(vi)以下同様に、プログラム単位■、■に対して処
理を行って、それらの中間データを翻訳作業ファーイル
上に書き込む。
(■)そして、すべてのプログラム単位■、■■、■に
ついての中間データが翻訳作業ファイル上に格納された
段階で、それらの中間データを必要に応して読出して(
第7図図示の処理ステップ■)、中間データ・レベルで
インライン処理を1テう(第7図図示の処理ステップ■
)ようにしている。
上記第7図を参照して説明した如く、中間データ・レベ
ルでインライン処理を行うことを提案したが、第6図に
示すインライン作業7s10が唯1個のみしか存在して
いない。このために、上記第7図図示の処理ステップ■
において中間データを翻訳作業ファイル上に書き込んだ
後に、他のプログラム単位例えば■についての処理が開
始されると、先のプログラム単位■に関しての翻訳作業
ファイル上の内容が抹消されてし7まうこととなりかね
ない。したがって、第6図図示の処理ステップ■、■・
・・において再びプログラム単位■に関する処理を続行
することが困難となることが生じる。
本発明は、ソース・プログラムの形でインライン展開す
る場合に必要以外の個所についても、構文解析などが行
われることとなり、処理量が大となるおそれがあるなど
を解決すると共に、その際の作業簿を正しく引継いで上
記解決処理を円滑に行わせ得るようにすることを目的と
している。
(課題を解決するための手段] 第1図は本発明の原理構成図を示す。図中の符号1はソ
ース・プログラム、1−1はプログラム単位、2は翻訳
作業ファイル、2−1はプログラム単位の中間データ、
10はインライン作業簿を表している。また (i)FBIは構文解析区による処理 (ii)FE2は意味解析区による処理(iii) F
E3は低いレベル中間言語(LINDA)への変換を行
う処理 (iv) MP l、 MP 2は最適化を行う処理。
(v)BEは領域・レジスタ割り付けやコード生成を行
う処理。
を表している。
なお第1図図示の処理においては、各プログラム単位■
、■、■、■相互間において3次の如き関係で呼び出し
が行われるものとしている。即ち(1)プログラム単位
■が、プログラム単位■とプログラム単位■とを呼び。
(11)プログラム単位■が、プログラム単位■とプロ
グラム単位■とを呼び。
(iii)プログラム単位■が、プログラム単位■を呼
ぷ 如き関係にあるものとしている。
処理は第1図図示矢印の順に行われてゆく。
〔作 用〕
最初の段階において、ソース・プログラムlのすべての
プログラム単位■、■、■、■に対して構文解析処理(
FE1)と意味解析処理(FE2)とが行われる。この
段階を第1の段階と呼ぶことにする。
そして、解析した結果の各中間データとその時に得られ
ているインライン作業*10の内容とは翻訳作業ファイ
ル2に書き出される。この処理を格納処理と呼んでいる
翻訳作業ファイル2上に中間データ2−iと作業簿10
の内容(各プログラム単位■ないし■に対応して4個分
存在する)が格納され終わった後に、解析したプログラ
ム単位に対応する各作業簿10の内容と中間データとが
プログラム単位の順(■、■、■、■の順)に翻訳作業
ファイルから。
図示しない主記憶内に読み込まれ、意味解析区(図示の
場合には2度目であることからF E 2’としている
)が再び呼び出される。
意味解析区F E 2’では、そのプログラム単位から
直接的に及び間接的に呼び出されている他のプログラム
単位があるか否かを調べ、ある場合にはそれらも翻訳作
業ファイル2から主記憶内に読み込む。そして、インラ
イン展開に当たっての条件を満足しているか否かを調べ
る。満足している場合には、呼び出し元プログラム単位
と呼び出し先プログラム単位とを関係づける。上記の例
で言えば、プログラム単位■はプログラム単位■と■と
を呼んでいることから1図示の処理(FE2’)。
(FE3)、  (MPI)についてプログラム単位■
が実行されている間に1図示点線で囲う如くプログラム
単位■、■の中間データが参照される。
図示処理(FE3)は、LINDA変換区による処理と
呼んでもよく、呼び出し元のプログラム単位と呼び出し
先のプログラム単位との両者を入力し、LINDAに変
換する。
図示処理(MPI)は、インライン展開処理区と呼んで
もよく、呼び出し元と呼び出し先とのプログラム単位の
間でインライン展開の条件を満足しているか否かを調べ
る。満足していれば、呼び出し先のプログラム単位のL
INDAを呼び出し元のプログラム単位のLINDAの
上に取り込む。
図示処理(MP2)は、汎用最適化区と呼んでもよく、
インライン展開が行われていることを全く意識せずに最
適化を行う。
図示処理(BE)は、領域・レジスタ割り付けやコード
生成などを行う。
図示処理(FE2’)以降の処理を第2の段階と呼んで
いる。
〔実施例〕
第2図は本発明に用いられるインライン作業簿の構成例
を示す。
図示の「メンへ名」と「プログラム単位名」とが組にな
って、現在翻訳中のプログラム単位が特定される。即ち
1例えばプログラム単位■について第1図図示の処理F
BI、FE2の処理が終了した時点では、プログラム単
位■が上記「メンバ名」と「プログラム単位名」とで特
定されている。
また図示の「エラーの数」には処理FBI、  FE2
か終了した時点でのエラーの数が格納される。
更に第1図図示のソース・プログラム1上での上記プロ
グラム単位例えば■の存在位置を指示するために1図示
の「単純ソース情報簿基点指栗」と「単純ソース情報最
終指票」とが用意される。また上記翻訳作業ファイル2
上のどの位置に、当該プログラム単位■の中間データが
格納されるかを指示するために9図示の「メノセーノ情
報基点指票」と「メソセージ情報最終指票」とが用意さ
れる。更にまた2図示の「ソース行数」と「ソースの文
数」には2夫々現在翻訳中のプログラム単位に対応する
「ソースの行数」と「ソースの文数」と力ぐ格納される
言うまでもなく1例えばプログラム単位■についての中
間データが翻訳作業ファイルに格納される際に、当該プ
ログラム単位■に対応した形でインライン作業′;!i
10の内容(第2図図示の情報)が翻訳作業ファイル2
に格納される。
第3閑は本発明の一実施例処理フローを示す。
図中の記号■、■、・・・は処理ステツプを表しており
2図示処理ステンブ■は」二記構文解析区による処理(
FEI)に対応し、処理ステップ■は」二記意味解析区
による処理(FE2)に対応し、処理ステップ■と■は
上記意味解析図による処理(FP、2′・・・この場合
には2度目であることがら、FE2と区別してF E 
2’としている)に対応し、処理ステップ@@tS・は
上記LINDA変換区による処理に対応し、処理ステツ
プ■は上記インライン展開処理区(MPI)と上記汎用
最適化区(MP2)とに対応し、処理ステップ@と■と
は上記9■域・レジスタ割り付けなどの処理(BE)に
対応している。
本発明の場合には、処理ステップ■と■との存在によっ
て、上述した別出願の提案について、更に考慮を加えて
いる。
第4図はLINDA変換区による処理(FE3)が終了
した時の解析結果の一例を示す。図中の符号3−iは各
プログラム単位に対応するプログラム単位溝であって夫
々対応するプログラム単位の中間データをポイントする
ものである。また41は処理単位溝、5−1は言票列、
6.7.8は夫々外部参照溝である。各プログラム単位
は外部参照溝を介して関連付けられる。第4図は第1図
図示のプログラム単位■に関して処理(FE3)が終了
した時点の解析結果の概要を表している。
上記の設定例の場合には、プログラム単位■がプログラ
ム単位■と■とを呼んでいることから2図示の如く、外
部参照溝6を介してプログラム単位■か関連付けられて
いる。また外部参照溝7を介してプログラム単位■が関
連付けられている。またプログラム単位■はプログラム
単位■と関連をもっており、外部参照18が存在してい
る。
第5図はインライン展開処理区による処理(MPi)の
−例を示す。図示の符号2は翻訳作業ファイル、3−1
はプログラム単位溝を表している。
図示の場合には、プログラム単位の1つであるMAIN
(メイン・プログラム)に他のプログラム単位であるS
UB (サブ・プログラム)とFUN(ファンクション
)とインライン展開を行うものとして例示している。
MAIHにおいて“”CA+、L  SUB”が見出さ
れたとき、外部参照溝を介してプログラム単位溝3−i
と関連づけられ、翻訳作業ファイル2上のSUBやFU
Nに対応する中間データが取り出されてインライン展開
される。
インライン展開を行うに当たっての制約条件を検査する
に当たっては、−例として次の如き検査を行い、該当す
る場合にはインライン展開を行わない。
■ 呼出し先の副プログラムに関するエラー検査実行文
の数が多い ENTRY文がある EQ[IIVALENCE文がある ASSIGN文がある 一割当て形GOTO文がある 入出力文がある 5AVE文がある スカラ整数式のあるRETURN文がある■ 呼出し元
と呼出し先との関係に関するエラー検査 一オプション指定が異なる 実引数と仮引数の個数が異なる 実引数と仮引数の型が異なる 一使用者関数において1手続きの型が異なる呼出し方法
が誤っている ■ 呼出し元に関するエラー検査 入力ツースファイル内に、同じ名前のプログラム単位が
ある。
なお上記説明においては1主として第1図を参照する形
で、翻訳作業ファイル2を利用する場合の処理について
説明した。しかし、インライン展開を行うに当たっては
、インライン展開の最適化を行うか否かによって制御態
様を異ならしめている。即ち、インライン展開の最適化
を行う場合には、上記第1図ないし第5図を参照して説
明した処理方法を採用するが、インライン展開の最適化
を行わない場合には、第6図を参照した従来の例として
示した処理方法が採用される。したがって。
言うまでもなく、第6図図示の処理方法をも行い得るこ
とをもって9本発明の範囲外となるものではない。
〔発明の効果〕
以上説明した如く1本発明によれば、中間データの形で
のインライン展開が可能であり2最適化処−理などの処
理を効率よく行うことが可能となる。
また翻訳作業ファイルに対して中間データを格納したこ
とによって、一連の処理が中断された形となるが、イン
ライン作業簿の内容を翻訳作業ファイルに格納すること
によって、上記中断による影響をなくすることができる
【図面の簡単な説明】
第1図は本発明の原理構成口、第2図は本発明に用いら
れるインライン作業簿の構成例、第3図は本発明の一実
施例処理フロー、第4図はLINDA変換区による処理
(FE3)が終了した時の解析結果の一例、第5図はイ
ンライン展開処理区による処理(MPI)の−例、第6
図は従来例。 第7図は別提案処理フローを示す。 図中、1はソース・プログラム、■−1はプログラム単
位、2は翻訳作業ファイル、2−1はプログラム単位の
中間データ、3−1はプログラム単位溝、6,7.8は
夫々外部参照簿、10はインライン作業簿を表す。

Claims (1)

  1. 【特許請求の範囲】 複数のプログラム単位(1−i)からなるソース・プロ
    グラム(1)を読込み、上記各プログラム単位(1−i
    )の個々について、少なくとも、構文解析区による処理
    (FE1)と、 意味解析区による処理(FE2)と、 低レベル中間言語への変換を行う処理(FE3)と、 最適化を行う処理(MP)と、 領域・レジスタ割り付けを含む処理(BE)と、を実行
    するコンパイラにおいて、 上記プログラム単位(1−i)の1つが処理を実行する
    に当たって他のプログラム単位(1−j)を呼んだ上で
    当該処理を実行する処理態様をもつ場合に、当該プログ
    ラム単位(1−i)をオブジェクトに展開するに当たっ
    て上記他のプログラム単位(1−j)を上記オブジェク
    ト上で取り込んで展開するようにしたインライン展開に
    際して、当該インライン展開が行われつつあるプログラ
    ム単位(1−i)に関しての作業情報を保持するインラ
    イン作業簿(10)をもうけておくと共に、当該インラ
    イン展開が行われる可能性のある複数のプログラム単位
    (1−i)の夫々について、上記最適化を行う処理(M
    P)を実行するに先立って、上記構文解析区による処理
    (FE1)と上記意味解析区による処理(FE2)とを
    実行する第1の段階と、 当該第1の段階によって生成されている所の、上記可能
    性のある複数のプログラム単位の夫々に対応する中間デ
    ータ(2−i)について、当該中間データを翻訳作業フ
    ァイル(2)に格納すると共に、上記各中間データ(2
    −i)に対応して、当該中間データ(2−i)の生成の
    間に得られた上記インライン作業簿(10)の内容を上
    記翻訳作業ファイル(2)に格納する格納処理と、当該
    格納処理によって格納された上記中間データ(2−i)
    と上記インライン作業簿の内容とを、上記翻訳作業ファ
    イル(2)から読出した上で、当該読出された中間デー
    タについて上記最適化を行う処理(MP)を実行し、次
    いで上記領域・レジスタ割り付けを含む処理(BE)を
    実行する第2の段階をそなえ、 上記第1の段階と上記格納処理と上記第2の段階とを順
    に実行するようにした ことを特徴とする作業簿を引継ぐインライン展開処理方
    法。
JP3124190A 1990-02-09 1990-02-09 作業簿を引継ぐインライン展開処理方法 Pending JPH03235128A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3124190A JPH03235128A (ja) 1990-02-09 1990-02-09 作業簿を引継ぐインライン展開処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3124190A JPH03235128A (ja) 1990-02-09 1990-02-09 作業簿を引継ぐインライン展開処理方法

Publications (1)

Publication Number Publication Date
JPH03235128A true JPH03235128A (ja) 1991-10-21

Family

ID=12325890

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3124190A Pending JPH03235128A (ja) 1990-02-09 1990-02-09 作業簿を引継ぐインライン展開処理方法

Country Status (1)

Country Link
JP (1) JPH03235128A (ja)

Similar Documents

Publication Publication Date Title
US20080127303A1 (en) Generating security validation code automatically
JPH01306923A (ja) 異種言語間連絡方式
JPS63201834A (ja) オブジエクト・モジユール生成方法
JP2007531946A (ja) データ処理装置におけるデータ整合性
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
JPH03235128A (ja) 作業簿を引継ぐインライン展開処理方法
TWI414995B (zh) 開發及執行平台
JP2000029678A (ja) プログラム言語変換方法、変換装置および記録媒体
JPH03235127A (ja) インライン展開処理方法
CN116775127B (zh) 一种基于RetroWrite框架的静态符号执行插桩方法
JP2004086545A (ja) データ項目の状態を管理することでプログラムを自動生成するプログラム開発支援システム
CN112685049B (zh) 一种java字节码编译方法
JP2009515243A (ja) ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法
JP3368795B2 (ja) コンパイル制御方法、コンパイル装置及び記録媒体
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
TWI632474B (zh) 存取資料庫的方法
EP1033651B1 (en) Instruction translation method
JP2003076547A (ja) 制御ソフトウェア自動生成システムおよび方法
JPS58169637A (ja) コンパイル処理方式
JPS63269229A (ja) 文字列操作系命令コンパイル処理方式
JPH11282693A (ja) Mcuシミュレーション装置、そのシミュレーション方法及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体
JPS61235949A (ja) 翻訳方式
JPH03156641A (ja) コンパイル処理方式
JPH05143356A (ja) コンパイラ装置
JPH03260733A (ja) インライン展開処理方式