JPH0438528A - In-line developing system for source program - Google Patents
In-line developing system for source programInfo
- Publication number
- JPH0438528A JPH0438528A JP14431090A JP14431090A JPH0438528A JP H0438528 A JPH0438528 A JP H0438528A JP 14431090 A JP14431090 A JP 14431090A JP 14431090 A JP14431090 A JP 14431090A JP H0438528 A JPH0438528 A JP H0438528A
- Authority
- JP
- Japan
- Prior art keywords
- segment
- source program
- storage device
- area
- inline
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 79
- 230000008569 process Effects 0.000 abstract description 14
- 230000007246 mechanism Effects 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 4
- 101100247669 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB1 gene Proteins 0.000 description 2
- 101150025928 Segment-1 gene Proteins 0.000 description 2
- 101100242902 Thogoto virus (isolate SiAr 126) Segment 1 gene Proteins 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101100242901 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB2 gene Proteins 0.000 description 1
- 101150082826 Segment-2 gene Proteins 0.000 description 1
- 101100194052 Thogoto virus (isolate SiAr 126) Segment 2 gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- VJTAZCKMHINUKO-UHFFFAOYSA-M chloro(2-methoxyethyl)mercury Chemical compound [Cl-].COCC[Hg+] VJTAZCKMHINUKO-UHFFFAOYSA-M 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010915 one-step procedure Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
Description
【発明の詳細な説明】
【産業上の利用分野〕
本発明は計算機言語で記述されたプログラムのコンパイ
ル方式に係わり、第1図に示すように特にソースプログ
ラムをその呼出し元にインライン展開し、実行効率の良
い目的プログラムを生成する方式に関する。[Detailed Description of the Invention] [Industrial Application Field] The present invention relates to a method of compiling a program written in a computer language, and in particular expands a source program inline to its caller and executes it, as shown in Figure 1. Concerning a method for generating efficient target programs.
インライン展開方式の従来技術としては、プリプロセッ
サ方式が知られている。A preprocessor method is known as a conventional inline expansion method.
この方式については、「ソースプログラムプロダクトV
O52/VO53FORTRAN77ソース解析機能
FORT77/5AFJ 8080−3−272−10
第20頁に記述されている。そこで述べられている
方式は、インライン展開手続き呼出しの位置に呼出し手
続きをインライン展開して新しいソースプログラムを生
成するものである。Regarding this method, see “Source Program Product V
O52/VO53FORTRAN77 source analysis function
FORT77/5AFJ 8080-3-272-10
It is described on page 20. The method described therein generates a new source program by expanding the calling procedure inline at the location where the inline expansion procedure is called.
すなわち、第2図においてプリプロセッサ8はインライ
ン展開手続きソースプログラム5UB2とインライン展
開手続き呼出し31を含むソースプログラムMAIN3
を入力すると、ソースプログラムMAIN3のインライ
ン展開手続き呼出し31の位置にソースプログラム5U
B2をインライン展開して、新しいソースプログラムM
AIN7を出力する。翻訳機構9は、この新しいソース
プログラム7を入力して翻訳し、目的プログラム4を生
成する。That is, in FIG. 2, the preprocessor 8 executes a source program MAIN3 including an inline expansion procedure source program 5UB2 and an inline expansion procedure call 31.
When inputting, the source program 5U is placed at the inline expansion procedure call 31 of the source program MAIN3.
Expand B2 inline and create a new source program M
Outputs AIN7. The translation mechanism 9 inputs and translates this new source program 7 to generate the target program 4.
上記従来技術においては、インライン展開したソースプ
ログラムの作成と作成後のソースプログラムの翻訳とい
う2段階の手続きが必要であるため操作性が繁雑である
という問題があった。さらにインライン展開するソース
プログラムが呼出し元のソースプログラムに組み込まれ
て新しいソースプログラムができるため、保守しにくい
という問題があった。The above-mentioned conventional technology has a problem in that the operability is complicated because it requires a two-step procedure of creating an inline developed source program and translating the created source program. Furthermore, the source program developed inline is incorporated into the calling source program to create a new source program, making maintenance difficult.
本発明の目的は、1段階の手続きで、ソースプログラム
をインライン展開する手段を提供することであり、それ
によって操作が1段階で済むという効果があるとともに
、ソースプログラムはインライン展開する前のもの1本
でよいので、保守しやすくなるという効果も生じる。An object of the present invention is to provide a means for inline expansion of a source program in a one-step procedure, which has the effect that the operation can be completed in one step, and the source program is one before inline expansion. Since it can be a book, it also has the effect of being easier to maintain.
〔課題を解決するための手段〕
上記目的を達成するために、翻訳機構はインライン展開
するソースプログラムを入力し、翻訳機構の構文解析部
が字句解析と構文解析を行って生成した中間語を主記憶
装置上の領域に格納するセグメントメモリ割当て部を備
える。[Means for solving the problem] In order to achieve the above purpose, the translation mechanism inputs a source program to be expanded inline, and the translation mechanism's parsing unit performs lexical and syntactic analysis to generate intermediate words. A segment memory allocation unit is provided for storing data in an area on a storage device.
また、インライン展開手続きの呼出しを含む呼出し元ソ
ースプログラムを入力し、インライン展開手続き呼出し
位置に中間語を展開させるセグメントメモリ管理部を備
える。It also includes a segment memory management unit that inputs a calling source program including a call to an inline expansion procedure and expands an intermediate word at a position where the inline expansion procedure is called.
次に本発明の実施例について図面を参照して説明する。 Next, embodiments of the present invention will be described with reference to the drawings.
第3図は本発明が適用された翻訳機構の構成を示す。FIG. 3 shows the configuration of a translation mechanism to which the present invention is applied.
1は翻訳機構であり、セグメントメモリ割当て部101
を含む構文解析部100.セグメントメモリ管理部11
1を含むインライン展開部110、およびコード生成部
120で構成されている。1 is a translation mechanism, and a segment memory allocation unit 101
A syntax analysis unit 100. Segment memory management section 11
1, and a code generation section 120.
2はインライン展開手続きのソースプログラム、3はイ
ンライン展開手続き呼出しを含む呼出し元ソースプログ
ラム、
4は翻訳されて得られた目的プログラムが格納される目
的プログラムファイル、
5は主記憶装置、
6は外部記憶装置である。2 is the source program of the inline expansion procedure, 3 is the calling source program that includes the inline expansion procedure call, 4 is the target program file in which the translated target program is stored, 5 is the main storage device, and 6 is the external storage It is a device.
第3図においてインライン展開手続きソースプログラム
、2(以後ソースプログラムSUBという)とインライ
ン展開手続き呼出しを含む呼出し元ソースプログラム3
(以後ソースプログラムMAINという)を用意して翻
訳機構1を起動するとまず、構文解析部100はソース
プログラム5UB2を入力し構文解析を行い中間語に翻
訳する。In FIG. 3, an inline expansion procedure source program 2 (hereinafter referred to as source program SUB) and a calling source program 3 including an inline expansion procedure call
(hereinafter referred to as source program MAIN) is prepared and the translation mechanism 1 is started. First, the syntax analysis unit 100 inputs the source program 5UB2, parses the syntax, and translates it into intermediate language.
中間語は主記憶装M5に格納される。作成された中間語
の集まりをインライン展開手続きセグメント130と呼
ぶことにする。この時、該セグメントを主記憶装置5の
中のどの位置に格納するかはセグメントメモリ割当て部
101が決定する。その際に主記憶装置i5のセグメン
トを作成するための領域が不足すると一時的にセグメン
トを外部記憶装置If6に退避する。The intermediate word is stored in main memory M5. The created collection of intermediate words will be referred to as an inline expansion procedure segment 130. At this time, the segment memory allocation unit 101 determines where in the main memory 5 the segment is to be stored. At this time, if there is insufficient area for creating segments in the main storage device i5, the segments are temporarily saved to the external storage device If6.
ソースプログラム5UB2の入力が終了すると、次にソ
ースプログラムMAIN3を入力し、構文解析を行い中
間語140に翻訳し主記憶装置5上に格納する。When the input of the source program 5UB2 is completed, the source program MAIN3 is input next, parsed, translated into intermediate language 140, and stored in the main storage device 5.
ソースプログラムMAIN3の入力が終了すると構文解
析部100の処理も終了し次にインライン展開部110
が起動される。When the input of the source program MAIN3 is completed, the processing of the syntax analysis unit 100 is also completed, and then the inline expansion unit 110
is started.
インライン展開部110はソースプログラムMAINの
中間語140を入力し外部手続きSUBの呼出し位置1
41にソースプログラムSUBのセグメント130をイ
ンライン展開した中間語150を主記憶装置上に格納す
る。この時、ソースプログラムMAINの中間語140
で呼び出す外部手続き5UB141がインライン展開手
続きセグメント130として作成されているかはセグメ
ントメモリ管理部111が決定する。The inline expansion unit 110 inputs the intermediate language 140 of the source program MAIN and inputs the intermediate language 140 of the source program MAIN to call position 1 of the external procedure SUB.
41, an intermediate word 150 obtained by inline expansion of the segment 130 of the source program SUB is stored on the main storage device. At this time, the intermediate language 140 of the source program MAIN
The segment memory management unit 111 determines whether the external procedure 5UB 141 called in is created as an inline expansion procedure segment 130.
コード生成部120はインライン展開後の中間語150
を入力しコード生成し目的プログラム4を出力する。The code generation unit 120 generates an intermediate word 150 after inline expansion.
is input, code is generated, and target program 4 is output.
以上が第3図は本発明が適用された翻訳機構の概略であ
る。FIG. 3 is an outline of the translation mechanism to which the present invention is applied.
次に、セグメントメモリ割当て部101、セグメントメ
モリ管理部111の処理詳細を説明する。Next, details of processing by the segment memory allocation unit 101 and the segment memory management unit 111 will be explained.
まず、本発明において適用するテーブルについて第4図
を用いて説明する。First, a table applied in the present invention will be explained using FIG. 4.
モジュール管理テーブル(MCT)300:インライン
展開手続きに対して作成する。インライン展開手続きセ
グメントの所在位置を管理するMSCTへのポインタを
登録するMCTMSCTPフィールド301、外部手続
き名を登録するMCTNMフィールド302、次のイン
ライン展開手続きに対するMCTへのチエインを登録す
るMCTNEXTフィールド303、MCT番号を登録
するMCTN○フィールド304から構成されている。Module management table (MCT) 300: Created for inline expansion procedures. MCTMSCTP field 301 to register a pointer to the MSCT that manages the location of the inline expansion procedure segment, MCTNM field 302 to register the external procedure name, MCTNEXT field 303 to register the chain to the MCT for the next inline expansion procedure, MCT number It consists of an MCTN○ field 304 for registering.
モジュール領域管理テーブル(MSCT)310;イン
ライン展開手続きセグメントが作成された領域を管理す
るMEMCTに対応して作成する。Module area management table (MSCT) 310: Created corresponding to the MEMCT that manages the area in which the inline expansion procedure segment is created.
該セグメントが主記憶装置上に格納される領域を管理す
るMEMCTへのポインタを登録するMSCTMEMP
フィールド311、セグメント領域が不足した場合の外
部記憶装置の出刃先アドレスを登録するMSCTDAS
Dフィールド312、該セグメントが複数のMEMCT
の管理する領域にまたがる時次のMSCTへのチエイン
を登録するMSCTNEXTフィールド313から構成
されている。MSCTMEMP that registers a pointer to MEMCT that manages the area where the segment is stored on the main storage device
Field 311, MSCTDAS to register the destination address of the external storage device when the segment area is insufficient
D field 312, if the segment is multiple MEMCTs
The MSCTNEXT field 313 is used to register a chain to the next MSCT when spanning an area managed by the MSCTNEXT field.
メモリ管理テーブル(MEMCT)320 :セグメン
ト用に割当てられた主記憶装置の領域を管理する。主記
憶装置の領域を一定量づつ管理し、そのアドレスを登録
するMEMADDRフィールド321.自分の領域を現
在使用しているセグメントを管理するMSCTへのポイ
ンタを登録するMEMMSCTPフィールド322、セ
グメントのMCT番号を登録するMEMMCTNOフィ
ールド323から構成されている。Memory management table (MEMCT) 320: Manages the main storage area allocated for segments. MEMADDR field 321 that manages the area of the main storage device in fixed amounts and registers its address. It consists of a MEMMSCTP field 322 for registering a pointer to the MSCT that manages the segment currently using its own area, and a MEMMCTNO field 323 for registering the MCT number of the segment.
主記憶領域管理テーブル(SCT)330:主記憶装置
の領域をセグメント用とそれ以外に分はセグメント用領
域を管理する。セグメント用領域のアドレスを登録する
5CTADDRフイールド331、その容量を登録する
5CTS I ZEフィールド332から構成されてい
る。Main storage area management table (SCT) 330: Manages areas of the main storage device for segments and other areas for segments. It consists of a 5CTADDR field 331 for registering the address of the segment area and a 5CTSIZE field 332 for registering its capacity.
第5図、第6図、第7図を用いてセグメントメモリ割当
て部101の処理詳細を説明する。第5図はセグメント
メモリ割当て部の処理フロー、第6図はセグメント用領
域が十分にある場合のデータ構造図、第7図は第6図に
おいてセグメント領域が不足した場合のデータ構造図で
ある。The detailed processing of the segment memory allocation unit 101 will be explained using FIG. 5, FIG. 6, and FIG. 7. FIG. 5 is a processing flow of the segment memory allocation section, FIG. 6 is a data structure diagram when there is sufficient segment area, and FIG. 7 is a data structure diagram when there is a shortage of segment areas in FIG. 6.
セグメントメモリ割当て部101は構文解析部100か
ら起動される。すなわち構文解析部100は、まず主記
憶領域をセグメント用領域とそれ以外に分け5CT33
0の5CTADDRフイールド331にセグメント用領
域アドレスを、5CTS I ZEフィールド332に
容量を登録する。The segment memory allocation unit 101 is activated by the syntax analysis unit 100. That is, the syntax analysis unit 100 first divides the main storage area into a segment area and other areas 5CT33.
The segment area address is registered in the 5CTADDR field 331 of 0, and the capacity is registered in the 5CTSIZE field 332.
この後、インライン展開手続きソースプログラム5UB
2を入力し構文解析を行いインライン展開手続きセグメ
ント130を作成する。セグメント用領域はセグメント
メモリ割当て部101が管理するため、構文解析部10
0はインライン展開手続きの先頭ソースを入力したとき
とセグメント用領域が不足したときにセグメントメモリ
割当て部101を起動する。After this, inline expansion procedure source program 5UB
2 is input, the syntax is analyzed, and an inline expansion procedure segment 130 is created. Since the segment area is managed by the segment memory allocation unit 101, the syntax analysis unit 10
0 activates the segment memory allocation unit 101 when the first source of the inline expansion procedure is input and when the segment area is insufficient.
第5図においてセグメントメモリ割当て部101は起動
されると、インライン展開手続きの先頭のソース入力時
であるかを判定する。先頭ソースの入力時であればMC
T300−1のMCTNMフィールド302−1に外部
手続き名SUB、MCTNOフィールド304−1にこ
のセグメントのMCT番号である1を登録する(処理1
001゜1002)。In FIG. 5, when the segment memory allocation unit 101 is activated, it determines whether it is inputting a source at the beginning of an inline expansion procedure. MC when inputting the first source
Register the external procedure name SUB in the MCTNM field 302-1 of T300-1, and register 1, which is the MCT number of this segment, in the MCTNO field 304-1 (processing 1
001°1002).
次に、このインライン展開手続きに対するセグメント用
領域を法定するため5CT330に一定のセグメント用
領域が存在するか調べる。セグメント用領域が存在する
と、そのセグメント用領域に対してMEMCT320−
1を作成し、MEMADDRフィールド321−1にセ
グメント用領域アドレスをMEMMCTNOフィールド
323−1に該セグメントのMCT番号である1を登録
する。以後、この領域はSCTのセグメント用領域33
1からはずし、MEMCT320−1で管理する(処理
1003.1010)。Next, in order to determine the segment area for this inline expansion procedure, it is checked whether a certain segment area exists in the 5CT 330. If a segment area exists, MEMCT320-
1, and registers the segment area address in the MEMADDR field 321-1 and the MCT number of the segment, 1, in the MEMMCTNO field 323-1. From now on, this area will be used as the SCT segment area 33.
1 and managed by MEMCT 320-1 (processing 1003.1010).
MEMCT320−1を作成すると次にMSCT310
−11を作成する。MgCr210はインライン展開手
続きセグメントがどのMEMCT320の管理するセグ
メント用領域に存在するかを管理するものである。MS
CTMEMPフィールド311−11にMEMCTへの
ポインタをMEMMSCTPフィールド322−1登録
するとともにMEMCT320−1にも自分の領域を使
用しているMSCT310−11へのポインタを登録す
る。セグメントはその情報にポインタを含むため常に同
じセグメント用領域に格納される(処理1008)。After creating MEMCT320-1, next MSCT310
-11 is created. The MgCr 210 manages which MEMCT 320 manages the segment area in which the inline expansion procedure segment exists. M.S.
A pointer to the MEMCT is registered in the CTMEMP field 311-11 in the MEMMSCTP field 322-1, and a pointer to the MSCT 310-11 using its own area is also registered in the MEMCT 320-1. Since a segment includes a pointer in its information, it is always stored in the same segment area (process 1008).
第6図においては、SUBのインライン展開手続きセグ
メントは二つのMEMCT320−1.320 2が管
理するセグメント用領域が必要である。したがって、セ
グメントはセグメント−1130−1、セグメント−2
130−2に分割されそれぞれのセグメントの所在位置
を管理するMgCr210−11,310−12が作ら
れる。In FIG. 6, the SUB inline expansion procedure segment requires segment areas managed by two MEMCTs 320-1.3202. Therefore, the segments are segment-1130-1, segment-2
MgCr 210-11 and 310-12 are created which are divided into 130-2 and manage the location of each segment.
上記はセグメント用領域が存在する場合の処理の流れで
あるが、第5図、第7図を用いてセグメント用領域が不
足した場合を説明する。インライン展開手続き5UBI
の先頭ソースを入力すると構文解析部100はセグメン
トメモリ管理部101を起動する。まず、セグメントメ
モリ管理部101はMCT300−2を作成し該セグメ
ントのためのセグメント用領域を確保する。この場合空
きセグメント用領域が存在しないため他のインライン展
開手続きセグメントが使用しているMEMCT320を
検索する。The above is the flow of processing when there is a segment area, but the case where the segment area is insufficient will be explained using FIGS. 5 and 7. Inline deployment procedure 5UBI
When inputting the first source of , the syntax analysis unit 100 starts the segment memory management unit 101 . First, the segment memory management unit 101 creates an MCT 300-2 and reserves a segment area for the segment. In this case, since there is no free segment area, the MEMCT 320 used by other inline expansion procedure segments is searched.
インライン展開手続きセグメントは複数のインライン展
開手続きにまたがる情報のやりとりはないため、同じセ
グメント用領域を複数のインライン展開手続きセグメン
トで共用することができる。Since the inline expansion procedure segment does not exchange information across multiple inline expansion procedures, the same segment area can be shared by multiple inline expansion procedure segments.
したがって、MEMCT320−1のMEMMCTN○
フィールド323−1がSUBのMCT番号を示すとこ
ろの1であるのでこの領域を5UB1のセグメント13
0−1で使用することに決定する。Therefore, MEMMCTN○ of MEMCT320-1
Since field 323-1 is 1 indicating the MCT number of SUB, this area is assigned to segment 13 of 5UB1.
Decided to use it as 0-1.
まず、SUBのセグメント−1を外部記憶装置6に出力
しこの領域を空き状態にする必要がある。First, it is necessary to output SUB segment-1 to the external storage device 6 to make this area free.
したがって、セグメントメモリ管理部101はMEMC
T320−1のMEMMSCTPフィールド322−1
のMSCTポインタからこの領域を使用しているセグメ
ントのMSCT310−11を求メル。MgCr210
−11が決まルトMSCTADDRフィールド312−
11に外部記憶装置アドレスが登録されているかを調べ
る。セグメントは一旦作成されるとその情報は変更され
ない。したがって既に登録されていれば、SUBのセグ
メント−1130−1を外部記憶装置6に出力する必要
はない(処理1004.1005)。Therefore, the segment memory management unit 101
MEMMSCTP field 322-1 of T320-1
MSCT310-11 of the segment using this area is obtained from the MSCT pointer of . MgCr210
-11 is determined root MSCTADDR field 312-
Check whether the external storage device address is registered in 11. Once a segment is created, its information does not change. Therefore, if it has already been registered, there is no need to output SUB segment -1130-1 to the external storage device 6 (processes 1004 and 1005).
登録されていない場合SUBのセグメント−1を外部記
憶装置6に出力しその出刃先アドレスをMSCTDAS
Dフィールド312−11に登録する(処理1006)
。If it is not registered, output segment-1 of SUB to external storage device 6 and send the destination address to MSCTDAS.
Register in D field 312-11 (process 1006)
.
上記の処理でMEMCT320−1の管理する領域が空
き状態になり、以後この領域を5UBIのセグメントが
使用するためMEMMCTNOフィールド323−1に
5UBIのMCT番号である2を、MEMMSCTPフ
ィールド322−1に5UBIのセグメントに対して作
られるMgCr212−21へのポインタを登録する(
処理1007)。With the above processing, the area managed by MEMCT320-1 becomes free, and since this area will be used by the 5UBI segment from now on, 2, which is the MCT number of 5UBI, is set in the MEMMCTNO field 323-1, and 5UBI is set in the MEMMSCTP field 322-1. Register a pointer to MgCr212-21 created for the segment (
Processing 1007).
次に、セグメントメモリ管理部101はMSCT310
−21のMSCTMEMPフィールド311−21に該
セグメントが存在するセグメント用領域を管理するME
MCT320−1へのポインタを登録する(処理100
B)。Next, the segment memory management unit 101 uses the MSCT 310
ME that manages the segment area where the segment exists in the MSCTMEMP field 311-21 of -21
Register a pointer to MCT320-1 (process 100
B).
処理1004で他のインライン展開手続きのセグメント
で使用されているME M CT 320が存在しない
時は、インライン展開するソースプログラムに対するセ
グメント作成は中止する。したがって、セグメントメモ
リ割当て部101は構文解析部100に対しセグメント
作成の中止を指令し処理を終える。ただし、既に作成さ
れている他の外部手続きのセグメントはそのまま有効で
ありインライン展開の対象となる(処理1009)。In process 1004, if there is no MEMCT 320 used in a segment of another inline expansion procedure, segment creation for the source program to be inline expanded is stopped. Therefore, the segment memory allocation unit 101 instructs the syntax analysis unit 100 to stop creating segments, and ends the process. However, the segments of other external procedures that have already been created remain valid and are subject to inline expansion (process 1009).
上記の処理で処理中セグメントのMEMCT320が決
定し、構文解析部100はこのMEMCT320が管理
するセグメント用領域にインライン展開手続きセグメン
トを格納する。The MEMCT 320 of the segment being processed is determined by the above processing, and the syntax analysis unit 100 stores the inline expansion procedure segment in the segment area managed by this MEMCT 320.
第7図、第8図、第9図を用いてセグメントメモリ管理
部111の処理詳細を説明する。第8図はセグメントメ
モリ管理部の処理フロー、第9図は第7図において作成
されたインライン展開手続きセグメントのソースプログ
ラムSUBを、呼出し元ソースプログラムにインライン
展開する場合のテーブル状態遷移図である。The detailed processing of the segment memory management unit 111 will be explained using FIG. 7, FIG. 8, and FIG. 9. FIG. 8 is a processing flow of the segment memory management unit, and FIG. 9 is a table state transition diagram when the source program SUB of the inline expansion procedure segment created in FIG. 7 is inline expanded into the calling source program.
セグメントメモリ管理部111は、インライン展開部1
10が中間語140を処理中に外部手続き呼出し141
を認識した時起動される。The segment memory management unit 111 includes an inline expansion unit 1
10 makes an external procedure call 141 while processing the intermediate language 140
is activated when it is recognized.
まず、セグメントメモリ管理部111は外部手続き呼出
し文141の外部手続き名5tTBに対してインライン
展開手続きセグメントが作成されているかを調べるため
MCT300を走査する。First, the segment memory management unit 111 scans the MCT 300 to check whether an inline expansion procedure segment has been created for the external procedure name 5tTB of the external procedure call statement 141.
第7図ではMCT300−1のMCTNMフィールド3
02−1にSUBという名称が登録されているためSU
Bに対するインライン展開手続きセグメントが存在する
ことが判明する(処理1101−1103)。In Figure 7, MCTNM field 3 of MCT300-1
Since the name SUB is registered in 02-1, SU
It is found that an inline expansion procedure segment exists for B (processes 1101-1103).
インライン展開管理部111はインライン展開手続きS
UBのセグメントを主記憶装置中に格納するためそれぞ
れのMSCT310が管理するセグメントの現在の所在
位置を調べる。The inline expansion management unit 111 performs the inline expansion procedure S
In order to store the UB segment in the main memory, the current location of the segment managed by each MSCT 310 is checked.
MCT300−1に対するセグメントはMSCT310
−11とMSCT310−12の二つで管理されている
。The segment for MCT300-1 is MSCT310
-11 and MSCT310-12.
まず、MSCT310−11の該セグメントの主記憶領
域を管理するMEMCT320−1をMSCTMEMP
フィールド311−11からもとめ、MEMCT320
−1の領域を現在使用しているセグメントのMCT30
0をMEMMCTNOフィールド323−1のMCT番
号から決定する。First, MEMCT320-1 that manages the main storage area of the segment of MSCT310-11 is
Searched from field 311-11, MEMCT320
MCT30 of the segment currently using area -1
0 is determined from the MCT number in the MEMMCTNO field 323-1.
MEMCTNOフィールド323−1のMCT番号が2
であるのでインライン展開手続きセグメントSUBのM
CT300−1のMCT番号である1と一致しない。し
たがって、MSCT310−11の管理するセグメント
は主記憶装置中に存在しないことが判明する(処理11
04−1106)。MCT number of MEMCTNO field 323-1 is 2
Therefore, M of inline expansion procedure segment SUB
It does not match the MCT number 1 of CT300-1. Therefore, it turns out that the segment managed by MSCT 310-11 does not exist in the main storage (processing 11
04-1106).
MSCT310−11の管理するセグメントを主記憶装
置中に格納するにはまずこの領域を現在使用しているセ
グメントを外部記憶装置6に出力しこの領域を空き状態
にする必要がある。ただし。In order to store the segments managed by the MSCT 310-11 in the main storage device, it is first necessary to output the segment currently using this area to the external storage device 6 to make this area free. however.
セグメントの内容は一旦作成された後変更されないため
セグメントが既に外部記憶装[6に出力されていれば再
び出力する必要はない。Since the contents of a segment are not changed once they are created, if the segment has already been output to the external storage device [6], there is no need to output it again.
MEMMSCTPフィールド322−1のMSCTポイ
ンタから現在この領域を使用しているセグメントを管理
するMSCT310−21かもとまる。The MSCT 310-21 that manages the segment currently using this area is also determined from the MSCT pointer in the MEMMSCTP field 322-1.
このMSCT310−21のMSCTDASDフィール
ド322−1に外部記憶装置アドレスが登録されていな
いので、該セグメントを外部記憶装[6に出力する必要
がある(処理1107)。Since no external storage device address is registered in the MSCTDASD field 322-1 of this MSCT 310-21, it is necessary to output the segment to the external storage device [6 (process 1107).
セグメント管理部111はMEMCT3120−1の領
域を使用しているSUB 1のセグメント131−1を
外部記憶装置!6に出力しその出刃先アドレスをMSC
TDASDフィールド312−21に登録した後MSC
T310−11のMSCTDASDフィールド312−
11の外部記憶装置のアドレスから該セグメントを入力
する。The segment management unit 111 saves the segment 131-1 of SUB 1, which uses the area of MEMCT 3120-1, to an external storage device! 6 and output the cutting edge address to MSC.
MSC after registering in TDASD field 312-21
T310-11 MSCTDASD field 312-
The segment is input from the address of the external storage device No. 11.
MEMCT320−1のセグメント用領域は外部手続き
名SUBのインライン展開手続きセグメントが格納され
るので、MEMMCTNOフィールド323−1にSU
Bに対するMCT番号である1を、MEMMSCTPフ
ィールド322−1にはSUBのセグメント130−1
を管理するMSCT310−11へのポインタを登録す
る(処理1108.1109)。The segment area of MEMCT 320-1 stores the inline expansion procedure segment of external procedure name SUB, so SU is stored in the MEMMCTNO field 323-1.
1, which is the MCT number for B, and segment 130-1 of SUB in the MEMMSCTP field 322-1.
A pointer to the MSCT 310-11 that manages the is registered (processes 1108 and 1109).
上記の処理でMSCT310−11の該セグメントは主
記憶装置中に格納される。SUBに対するインライン展
開手続きセグメントはMSCT310−12も管理する
ので該セグメントが主記憶装置中に格納されているか調
べる。Through the above processing, the segment of MSCT 310-11 is stored in the main memory. Since the inline expansion procedure segment for SUB is also managed by the MSCT 310-12, it is checked whether the segment is stored in the main memory.
MSCT310−12の管理するセグメントはMEMC
T320−2が管理するセグメント用領域に格納される
。MEMCT320−2のMEMMCTNOフィールド
323−2のMCT番号はSUBのMCT番号である1
なので、既に格納されていることが判明する。これでS
UBに対するインライン展開手続きセグメントは全て主
記憶装置上に格納されたのでセグメントメモリ管理部1
11は処理を終了する。インライン展開部110は主記
憶装置上のSUBのインライン展開手続きセグメントを
中間語150の中に展開する。The segment managed by MSCT310-12 is MEMC
It is stored in the segment area managed by T320-2. The MCT number of the MEMMCTNO field 323-2 of the MEMCT 320-2 is 1, which is the MCT number of the SUB.
Therefore, it turns out that it is already stored. Now S
Since all inline expansion procedure segments for UB are stored on the main memory, the segment memory management unit 1
11 ends the process. The inline expansion unit 110 expands the inline expansion procedure segment of the SUB on the main storage device into the intermediate language 150.
このようにして、インライン展開手続きセグメントは呼
出し元ソースプログラムの中間語中に展開され、コード
生成部120によってコード生成し目的プログラムを出
力する。In this way, the inline expansion procedure segment is expanded into the intermediate language of the calling source program, and the code generation unit 120 generates a code and outputs the target program.
以上説明したように、本発明は利用者が用意したソース
プログラムを呼出し元のソースプログラム中にインライ
ン展開することにより次の効果がある。As described above, the present invention has the following effects by expanding a source program prepared by a user inline into a calling source program.
■インライン展開するソースプログラムをソースレベル
で管理することができる。■Source programs to be expanded inline can be managed at the source level.
■呼出し元ソースプログラムに何ら手を加えることなく
インライン展開が出来る。■Inline expansion is possible without making any changes to the calling source program.
■インライン展開するソースプログラムは翻訳中におい
て中間語として記憶しておくため、複数箇所の呼出しが
ある時、翻訳性能、ファイルアクセス性能が向上する。■Since source programs that are expanded inline are stored as intermediate words during translation, translation performance and file access performance are improved when multiple locations are called.
【図面の簡単な説明】
第1図は本発明の方式によるインライン展開を示す図、
第2図はプリプロセッサ方式によるインライン展開を示
す図、第3図は本発明が適用された翻訳機構の構成図、
第4図はインライン展開に適用するテーブルを示す図、
第5図はセグメントメモリ割当て部の処理フローチャー
ト、第6図はセグメント領域が十分な場合のセグメント
作成時のデータ構造を示す図、第7図はセグメント領域
が不足した場合のセグメント作成時のデータ構造を示す
図、第8図はセグメントメモリ管理部の処理フローチャ
ート、第9図はテーブルの状態遷移図である。
1・・・本発明の方式における翻訳機構、2・・・イン
ライン手続きのソースプログラム、3・・・インライン
展開手続き呼出しを含むソースプログラム、4・・・目
的プログラム、5・・・主記憶装置、6・・・外部記憶
装置、7・・・プリプロセッサ方式におけるインライン
展開後のソースプログラム、8・・・プリプロセッサ、
9・・・プリプロセッサ方式における翻訳機構、100
・・・構文解析部、111・・・セグメントメモリ割当
て部、110・・・インライン展開部、111・・・セ
グメントメモリ管理部、120・・・コード生成部、1
30・・・インライン展開手続きセグメント、140・
・・呼出し元ソースプログラム中間語、150・・・イ
ンライン展開後の中間語。
第 1 図
第
?
図
第
図
差
口
第
図[Brief Description of the Drawings] Figure 1 is a diagram showing inline expansion according to the method of the present invention;
FIG. 2 is a diagram showing inline expansion using a preprocessor method, and FIG. 3 is a configuration diagram of a translation mechanism to which the present invention is applied.
Figure 4 is a diagram showing a table applied to inline expansion.
Figure 5 is a processing flowchart of the segment memory allocation unit, Figure 6 is a diagram showing the data structure when creating a segment when there is sufficient segment area, and Figure 7 is the data structure when creating a segment when there is insufficient segment area. FIG. 8 is a processing flowchart of the segment memory management unit, and FIG. 9 is a table state transition diagram. DESCRIPTION OF SYMBOLS 1... Translation mechanism in the method of the present invention, 2... Source program of inline procedure, 3... Source program including inline expansion procedure call, 4... Target program, 5... Main storage device, 6... External storage device, 7... Source program after inline expansion in preprocessor method, 8... Preprocessor,
9... Translation mechanism in preprocessor system, 100
... Syntax analysis section, 111 ... Segment memory allocation section, 110 ... Inline expansion section, 111 ... Segment memory management section, 120 ... Code generation section, 1
30... Inline expansion procedure segment, 140...
... Caller source program intermediate language, 150... Intermediate language after inline expansion. Figure 1 No.? Diagram Diagram Diagram
Claims (1)
グラムを入力して、機械語に翻訳するコンパイラにおい
て、利用者が指定した第1のプログラムモジュールを、
他の第2のプログラムモジュールにおける引用場所にイ
ンライン展開するために、上記第1のプログラムモジュ
ールを中間語に翻訳して主記憶装置上に格納しておく手
段と、該主記憶装置上の領域が不足する場合に外部記憶
装置に退避し、それが必要となった時に回復する主記憶
管理手段、とを持つことを特徴とするソースプログラム
のインライン展開方式。1. In a compiler that inputs a program written in a computer language such as FORTRAN and translates it into machine language, the first program module specified by the user is
means for translating the first program module into an intermediate language and storing it in a main memory in order to expand it inline at a quotation location in another second program module; An inline development method for a source program characterized by having a main memory management means that saves it to an external storage device when the main memory is insufficient and restores it when it becomes necessary.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14431090A JPH0438528A (en) | 1990-06-04 | 1990-06-04 | In-line developing system for source program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14431090A JPH0438528A (en) | 1990-06-04 | 1990-06-04 | In-line developing system for source program |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0438528A true JPH0438528A (en) | 1992-02-07 |
Family
ID=15359115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP14431090A Pending JPH0438528A (en) | 1990-06-04 | 1990-06-04 | In-line developing system for source program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0438528A (en) |
-
1990
- 1990-06-04 JP JP14431090A patent/JPH0438528A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8156471B2 (en) | Multi-language execution method | |
JP2000035893A (en) | Method for statically initializing arrangement of data processing system, data processing method, data processing system and computer readable storage medium storing program making computer execute its control procedure | |
KR960035260A (en) | Method and apparatus for indicating the location of an error detected in a software macro call | |
US20040205697A1 (en) | Transferring data along with code for program overlays | |
US5404531A (en) | Method and apparatus for compiler processing on program related to data transfer and calculation, and method of managing memory | |
US5150474A (en) | Method for transferring arguments between object programs by switching address modes according to mode identifying flag | |
JPH0438528A (en) | In-line developing system for source program | |
JPH0869381A (en) | Compilation system | |
US6061519A (en) | Embedding multiple (non embedded) high level languages into an assembler code | |
EP1306757A2 (en) | Transferring data along with code for program overlays | |
JP2002157128A (en) | Method for allocating stack area to compiler and compiler | |
JP2501394B2 (en) | Procedure call translation device | |
JPH09237190A (en) | In-line developing method | |
JP2002132502A (en) | Automatic creating system and method of distributed object with interpretation of language function | |
Bushell et al. | Using C as a compiler target language for native code generation in persistent systems | |
EP0252229B1 (en) | Apl-to-fortran translator | |
JP3566602B2 (en) | Compilation method and recording medium recording compilation program | |
JPH056278A (en) | Fortran compile processing device | |
JPH0357023A (en) | Type information propagation processing method for compiler | |
JP2809073B2 (en) | Array memory allocation method | |
Ciortuz | Learning attribute values in typed-unification grammars: On generalised rule reduction | |
JP2585790B2 (en) | Compile processing method for multiple code systems | |
JPH08166884A (en) | Compiler system | |
Hopkins | HLLDA defies RISC: thoughts on RISCs, CISCs, and HLLDAs | |
CN116931947A (en) | Method for optimizing wasm byte code, execution method, computer equipment and storage medium |