JPH08194624A - Executing form program preparing method - Google Patents
Executing form program preparing methodInfo
- Publication number
- JPH08194624A JPH08194624A JP7007077A JP707795A JPH08194624A JP H08194624 A JPH08194624 A JP H08194624A JP 7007077 A JP7007077 A JP 7007077A JP 707795 A JP707795 A JP 707795A JP H08194624 A JPH08194624 A JP H08194624A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- array
- program
- range
- value
- 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
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
【0001】本発明は,ソースプログラムをコンパイル
して生成される実行形式プログラムの作成方法に関し,
特に,配列等の添字範囲の検査もしくは未定義配列,未
定義変数等の検査を高速に処理する実行形式プログラム
作成方法に関する。The present invention relates to a method for creating an executable program generated by compiling a source program,
In particular, the present invention relates to a method of creating an executable program that processes at high speed an inspection of a subscript range of an array or the like, or an inspection of an undefined array or an undefined variable.
【0002】FORTRAN等の高級プログラム言語
は,コンパイラにより生成された中間テキストに対し
て,処理で使用される配列要素が,定義された配列の大
きさの範囲内にあるかないかの検査をする添字範囲チェ
ック(FORTRANでは一般的にSUBCHKでサポ
ートされている),もしくは配列または変数が定義され
ないで代入文の右辺やWRITE文の出力並びに記述さ
れているかいないかをチェックする未定義変数チェック
(FORTRANでは一般的にUNDEFにおいてサポ
ートされている)ができるようになっている。A high-level programming language such as FORTRAN is a subscript for checking whether or not an array element used in a process is within a defined array size with respect to an intermediate text generated by a compiler. Range check (generally supported by SUBCHK in FORTRAN), or undefined variable check (in FORTRAN, which checks whether the right side of an assignment statement or the output of a WRITE statement without describing an array or variable and whether or not it is described) (Generally supported in UNDEF).
【0003】ソースプログラムにDOループのような繰
り返し処理で使用される配列要素,変数等に対して添字
チェック,未定義チェックを行う場合には,DOループ
の中にSUBCHK,UNDEF等が組み込まれるた
め,実行時のプログラム検査に長時間を必要とした。When subscript checking or undefined checking is performed on an array element, variable, etc. used in a repetitive process such as a DO loop in a source program, SUBCHK, UNDEF, etc. are incorporated in the DO loop. , It took a long time to check the program at the time of execution.
【0004】本発明は,添字範囲チェックもしくは未定
義変数チェック等を高速に処理できる実行形式プログラ
ムを提供する。The present invention provides an executable program capable of processing subscript range check or undefined variable check at high speed.
【0005】[0005]
【従来の技術】図9は従来技術の説明図1であって,F
ORTRAN77の場合を示す。図9において,200
はソースプログラムの例であって,DOループの記述で
ある。2. Description of the Related Art FIG. 9 is an explanatory diagram 1 of the prior art, in which F
The case of ORTRAN77 is shown. In FIG. 9, 200
Is an example of a source program and is a description of a DO loop.
【0006】201はコンパイルにより生成される命令
列であって,ソースプログラム200に対してSUBC
HK,UNDEFを指定して配列の添字範囲チェック,
未定義変数チェックをするようにコンパイルした場合に
生成される実行形式プログラムである。Reference numeral 201 denotes an instruction sequence generated by compiling, which is a SUBC for the source program 200.
Check subscript range of array by specifying HK and UNDEF,
It is an executable program generated when compiling to check undefined variables.
【0007】図10は従来の技術の説明図2である。図
10はDOループで使用される配列のパラメータリスト
を示す。220はパラメータリストであって,配列の名
前のポインタ,配列A(Aは配列名)の宣言部(配列の
最小値が1,最大値が100であることを示す)および
添字式の値(I)が格納される領域により構成される。
添字式の値Iは,1から100までの値である。それ以
外なら実行時にエラーとなる。FIG. 10 is an explanatory view 2 of the prior art. FIG. 10 shows an array parameter list used in the DO loop. Reference numeral 220 denotes a parameter list, which is a pointer of the array name, a declaration part of the array A (A is an array name) (indicating that the minimum value of the array is 1 and the maximum value is 100), and the value of the subscript expression (I ) Is stored in the area.
The value I of the subscript expression is a value from 1 to 100. Otherwise, an error will occur during execution.
【0008】221は,配列Aの名前の領域であり,パ
ラメータリスト220の配列の名前のポインタで指定さ
れる領域である。配列を割り付ける領域のポインタを持
つ。222は配列Aの割り付け領域であって,配列の名
前Aの領域221のポインタで指定される領域である。Reference numeral 221 denotes an area for the name of the array A, which is designated by the pointer for the array name in the parameter list 220. Has a pointer to the area to which the array is allocated. Reference numeral 222 denotes an allocation area of the array A, which is designated by the pointer of the area 221 of the array name A.
【0009】図9のプログラムの動作の説明をする。ソ
ースプログラム200のDOループの記述に対して,S
UBCHK,UNDEFを指定してコンパイルすると実
行形式プログラム201が作成される。The operation of the program shown in FIG. 9 will be described. For the description of the DO loop of the source program 200, S
When the UBCHK and UNDEF are designated and compiled, the executable program 201 is created.
【0010】CALL SUBCHK(A(I))等は
SUBCHKを呼び出す命令である。CALL UND
EF(B(I))等はUNDEFを呼び出す命令であ
る。t1はコンパイラにより生成されるテンポラリであ
る。CALL SUBCHK (A (I)) is an instruction to call SUBCHK. CALL UND
EF (B (I)) is an instruction to call UNDEF. t1 is a temporary generated by the compiler.
【0011】実行形式プログラム201を実行すると,
DOループの処理のI=1〜50において,Iの取る各
値毎にA(I),B(I),C(I)が定義されたAの
配列1〜100,Bの配列1〜100,Cの配列1〜1
00の範囲にあるかないかがSUBCHKで検査され
る。また,演算式A=B+Cの右辺のB,Cが定義され
た範囲のものであるかどうかがUNDEFにおいて検査
される。そして,SUBCHKでは添字が定義範囲外
(例えば,配列(101)等)の配列が生成されたり,
もしくはUNDEFでは未定義の配列要素名や変数名が
代入文の右辺に存在したり,未定義でWRITE文の出
力並びに使用されたりしているとエラーとして扱われ,
実行時にエラーメッセージが出力される。When the executable program 201 is executed,
When I = 1 to 50 in the processing of the DO loop, A (I), B (I), and C (I) are defined for each value taken by I, arrays 1 to 100 of A, and arrays 1 to 100 of B. , C sequences 1-1
00 is checked with SUBCHK. Also, it is checked in UNDEF whether or not B and C on the right side of the arithmetic expression A = B + C are within the defined range. Then, in SUBCHK, an array whose subscript is out of the defined range (for example, array (101)) is generated,
In UNDEF, if an undefined array element name or variable name exists on the right side of an assignment statement, or if it is undefined and is output and used in a WRITE statement, it is treated as an error.
An error message is output during execution.
【0012】[0012]
【発明が解決しようとする課題】従来の添字範囲チェッ
ク,未定義変数チェックは,例えばDOループ等の繰り
返し処理で使用される配列要素,変数を検査する場合,
DOループの中に検査手段が組み込まれる。そのため,
DOループで順次指定される配列要素毎に定義範囲と比
較していたので,実行処理に長時間を要した。The conventional subscript range check and undefined variable check are, for example, when inspecting array elements and variables used in a repetitive process such as a DO loop.
The inspection means is incorporated in the DO loop. for that reason,
Since the array elements sequentially specified in the DO loop were compared with the defined range, the execution process took a long time.
【0013】本発明は,DOループに含まれる配列要素
の添字範囲チェック(SUBCHK),未定義の配列要
素名(A(I),B(I),C(I)等)や変数名又は
配列要素の検査(UNDEF)を高速に処理できる実行
形式プログラムの作成方法を提供することを目的とす
る。According to the present invention, a subscript range check (SUBCHK) of array elements included in a DO loop, undefined array element names (A (I), B (I), C (I), etc.), variable names or arrays An object of the present invention is to provide a method of creating an executable program capable of processing an element inspection (UNDEF) at high speed.
【0014】[0014]
【課題を解決するための手段】本発明は,DOループに
含まれる配列要素の添字範囲チェック,未定義の配列要
素や変数のチェックをDOループの外に設けることによ
り,添字範囲チェック,未定義の配列要素や変数チェッ
クを高速に行うことができるようにした。The present invention provides a subscript range check and an undefined range check by providing a subscript range check for array elements included in a DO loop and a check for undefined array elements and variables outside the DO loop. Enabled to check array elements and variables of in high speed.
【0015】図1の本発明の基本構成を説明する前に,
図11(本発明の技術の説明図)により本発明の添字式
について説明する。図11において,230はパラメー
タリストである。図10のパラメータリストとの違い
は,DOループの開始値,終了値,増分値を添字式の値
部に持つ点である。Before explaining the basic configuration of the present invention shown in FIG.
The subscript formula of the present invention will be described with reference to FIG. 11 (an explanatory diagram of the technique of the present invention). In FIG. 11, 230 is a parameter list. The difference from the parameter list in FIG. 10 is that the start value, end value, and increment value of the DO loop are included in the value part of the subscript expression.
【0016】231は配列Aの名前の領域である。23
2は配列Aの割り付け領域でる。図1は本発明の基本構
成を示す。Reference numeral 231 is an area for the name of the array A. 23
2 is an allocation area of the array A. FIG. 1 shows the basic configuration of the present invention.
【0017】図1において,1はソースプログラムであ
って,DOループ等の繰り返し処理を含むものである。In FIG. 1, reference numeral 1 is a source program, which includes repetitive processing such as a DO loop.
【0018】2は処理の要素Aの定義(定義範囲)の記
述を表す。3は要素Aを含む繰り返し処理の記述を表す
(DOループ等の開始値,終了値等を含む)。Reference numeral 2 represents the description of the definition (definition range) of the processing element A. 3 represents the description of the iterative process including the element A (including the start value, the end value, etc. of the DO loop).
【0019】10は翻訳部であって,ソースプログラム
1を実行形式プログラムに翻訳(コンパイル)するもの
である。11は中間テキスト生成部であって,翻訳され
た中間テキストを作成するものである。A translation unit 10 translates (compiles) the source program 1 into an executable program. Reference numeral 11 denotes an intermediate text generation unit that creates a translated intermediate text.
【0020】12は繰り返し情報テーブル作成部であっ
て,繰り返し処理の開始値,終了値等を含む繰り返し情
報テーブルを作成するものである。13は繰り返し情報
テーブルである。Reference numeral 12 denotes a repetitive information table creating section for creating a repetitive information table including a start value and an end value of the repetitive processing. Reference numeral 13 is a repetition information table.
【0021】14は検査手段挿入命令作成部であって,
検査手段保持部15から検査手段を呼び込む命令を作成
するものである。15は検査手段保持部であって,添字
範囲チェック,未定義の配列要素や変数チェック等の検
査プログラムを保持するものである。Reference numeral 14 is an inspection means insertion command preparation section,
An instruction for calling the inspection means is created from the inspection means holding unit 15. Reference numeral 15 denotes an inspection means holding unit, which holds inspection programs such as subscript range checking, undefined array element and variable checking.
【0022】16は実行形式プログラム作成部であっ
て,複数の中間テキストを結合したり,検査手段を中間
テキストに組み込むものである。21は検査手段であっ
て,配列の定義範囲検査等の繰り返し処理の開始値,終
了値及び増分値で検査できるものである(例えば,SU
BCHK)。あるいは,初期値(デフォルト値)と比較
することにより検査できる未定義配列要素や変数チェッ
ク等(例えば,UNDEF)を行うものである。Reference numeral 16 denotes an execution format program creating section for connecting a plurality of intermediate texts and incorporating a checking means in the intermediate texts. Reference numeral 21 is an inspection means that can inspect the start value, end value, and increment value of repeated processing such as array definition range inspection (for example, SU
BCHK). Alternatively, an undefined array element that can be inspected by comparing with an initial value (default value), a variable check, or the like (for example, UNDEF) is performed.
【0023】22は繰り返し処理の実行形式プログラム
である。23は繰り返し情報保持部であって,繰り返し
情報テーブル13から取り込んだ繰り返し情報を保持す
るものである。Reference numeral 22 is an execution format program for repetitive processing. Reference numeral 23 is a repetitive information holding unit, which holds repetitive information fetched from the repetitive information table 13.
【0024】[0024]
【作用】図1の本発明の基本構成の動作を説明する。翻
訳部10はソースプログラム1を入力する。そして,中
間テキスト生成部11はソースプログラム1を翻訳し,
中間テキストを作成する。その際,繰り返し情報テーブ
ル作成部12は中間テキストに含まれるDOループ等の
繰り返し処理を求め,その記述から繰り返し処理の開始
値,終了値等を含む繰り返し情報テーブル13を作成す
る。さらに,検査手段挿入命令作成部14は検査手段を
中間テキストに挿入するための命令を作成する。その
時,繰り返し要素で使用される配列要素に加算,乗算等
の演算子が含まれていなければ,繰り返し処理の外に検
査手段を配置する。The operation of the basic configuration of the present invention shown in FIG. 1 will be described. The translation unit 10 inputs the source program 1. Then, the intermediate text generation unit 11 translates the source program 1,
Create intermediate text. At that time, the repetition information table creating unit 12 obtains the repetition processing such as the DO loop included in the intermediate text, and creates the repetition information table 13 including the start value and the end value of the repetition processing from the description. Further, the checking means insertion command creating unit 14 creates a command for inserting the checking means into the intermediate text. At that time, if the array element used in the repeating element does not include an operator such as addition or multiplication, the checking means is arranged outside the repeating process.
【0025】実行形式プログラム作成部16は,複数の
中間テキストを結合し,検査手段挿入命令に基づいて検
査手段保持部15から検査手段を取り出し,指定された
箇所に検査手段を挿入し,実行形式プログラムを作成す
る。The execution format program creation unit 16 combines a plurality of intermediate texts, extracts the inspection means from the inspection means holding unit 15 based on the inspection means insertion command, inserts the inspection means at the designated location, and executes the execution format. Create a program.
【0026】実行形式プログラム20を実行させると,
検査手段21は,繰り返し情報保持部23に含まれる繰
り返し処理の開始値と終了値を参照し,実行処理におい
て生成される配列の範囲が定義された範囲内にあるかな
いかを判定する,また,未定義変数の検査も変数定義の
初期値(変数のデフォルト値)の変更の有無に基づいて
判定する。さらに,繰り返し処理の実行形式プログラム
22等のプログラムが実行される。検査手段21の検査
の判定結果によりエラーが判定された場合には,エラー
を表示する。When the executable program 20 is executed,
The checking unit 21 refers to the start value and the end value of the iterative process included in the iterative information holding unit 23, and determines whether the range of the array generated in the execution process is within the defined range, or The inspection of undefined variables is also judged based on whether the initial value of variable definition (default value of variable) is changed. Further, a program such as the execution format program 22 of the repetitive processing is executed. If an error is judged by the judgment result of the inspection of the inspection means 21, the error is displayed.
【0027】本発明によれば,DOループ等の繰り返し
処理に含まれる配列要素,変数等の検査を高速に処理で
きるようになる。以下,本発明についてFORTRAN
のDO文(ループ)を例として説明するが,本発明はF
ORTRAN90のWHERE文によるループ,C言語
のFOR文等の他の言語もしくは繰り返し処理に対して
も適用できるものである。According to the present invention, the inspection of array elements, variables, etc. included in the repetitive processing such as DO loop can be processed at high speed. The present invention is described below in FORTRAN.
The DO statement (loop) will be described as an example.
The present invention can also be applied to other languages such as a loop by the WHERE statement of the ORTRAN 90, a FOR statement of C language, or repetitive processing.
【0028】[0028]
【実施例】図2は本発明の実行形式プログラム作成手段
の実施例構成を示す。図2において,1はソースプログ
ラムである。DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS FIG. 2 shows the configuration of an embodiment of execution format program creating means of the present invention. In FIG. 2, 1 is a source program.
【0029】5は実行形式プログラム作成手段である
(一般的にコンバイラと呼ばれているものである)。1
6は実行形式プログラム作成部である(一般的に結合編
集処理と呼ばれている処理を行うものである)。Reference numeral 5 is an executable program creating means (generally called a combiner). 1
Reference numeral 6 denotes an execution format program creation unit (which generally performs a combined edit process).
【0030】20は実行形式プログラム(ロードモジュ
ール)である。30は構文解析部であって,ソースプロ
グラムの字句解析,構文解析を行い,中間テキストを作
成するものである。また,DOループを含む中間テキス
トにフラグを付加する(フラグのかわりに入れ子(NE
ST)を指示するものでも良い)。そして,構文解析部
において,DOループ情報作成部(図1の繰り返し情報
テーブル作成部に相当する)はフラグもしくは入れ子の
識別子(NEST)によりDOループを識別し,DOル
ープ情報テーブルを作成する。Reference numeral 20 is an executable program (load module). Reference numeral 30 denotes a syntactic analysis unit, which performs lexical analysis and syntactic analysis of the source program to create an intermediate text. Also, a flag is added to the intermediate text including the DO loop (nested (NE
(ST) may be instructed). Then, in the syntax analysis unit, the DO loop information creation unit (corresponding to the repetition information table creation unit in FIG. 1) identifies the DO loop by the flag or the nested identifier (NEST), and creates the DO loop information table.
【0031】31は意味解析部であって,中間テキスト
の意味解析(演算子,代入文の識別等)を行い,範囲S
UBCHK(配列要素の範囲検査をDOループの外にお
いて配列要素の検査をする手段)か要素SUBCHK
(配列要素の範囲検査をDOループの中において検査す
る手段(従来のSUBCHK))を挿入する命令を作成
するものである。UNDEFについても同様であり,範
囲UNDEF(DOループの外において未定義かどうか
を一括してチェックする手段)をDOループ文の外に配
置するか要素UNDEF(従来のUNDEFに同じ)を
DOループ文の中に作成する。(以後,範囲SUBCH
Kと要素SUBCHKについて説明するが,範囲UND
EF,要素UNDEFについても同様であるので省略す
る)。Reference numeral 31 denotes a semantic analysis unit, which performs semantic analysis on the intermediate text (identification of operators, assignment statements, etc.), and a range S
UBCHK (means for checking array element range outside array loop) or element SUBCHK
An instruction to insert (means for checking the range check of array elements in a DO loop (conventional SUBCHK)) is created. The same applies to UNDEF. Either the range UNDEF (a means for collectively checking whether it is undefined outside the DO loop) is placed outside the DO loop statement, or the element UNDEF (same as the conventional UNDEF) is set to the DO loop statement. Create in. (Hereafter, the range SUBCH
K and the element SUBCHK are explained, but the range UND
The same applies to the EF and the element UNDEF, and therefore omitted.)
【0032】32は,番地割付け部であって,変数,定
数,配列等に領域(番地)を割りつけるものである。ま
た,DOループで使用される配列のパラメータリスト
(図1の繰り返し情報保持部に保持された情報に相当す
る)を作成し,番地を割り付けるものである。Reference numeral 32 denotes an address allocating unit, which allocates areas (addresses) to variables, constants, arrays and the like. Also, the parameter list of the array used in the DO loop (corresponding to the information held in the repeated information holding unit in FIG. 1) is created and the addresses are assigned.
【0033】(図1の中間テキスト生成部,繰り返し情
報テーブル作成部は構文解析部30,意味解析部31を
合わせた構成の中に含まれる)。33はコード生成部
(図1の検査手段挿入命令作成部に相当する)であっ
て,レジスタの割り付けと中間テキストをハード命令
(機械語の命令)に変換するものである。また,範囲S
UBCHKと要素SUBCHKの中間テキストからそれ
ぞれの検査手段を持つライブラリ呼出し命令を作成する
ものである。(The intermediate text generation unit and the repetition information table generation unit in FIG. 1 are included in the structure including the syntax analysis unit 30 and the semantic analysis unit 31). A code generation unit 33 (corresponding to the inspection means insertion instruction creation unit in FIG. 1) is for allocating registers and converting the intermediate text into hard instructions (machine language instructions). Also, the range S
A library call instruction having respective checking means is created from the intermediate text of UBCHK and element SUBCHK.
【0034】34はライブラリ(図1の検査手段保持部
に相当する)であり,範囲SUBCHK,要素SUBC
HKの機能を持ち,結合編集時に結合される。図3は構
文解析部の実施例を示す。Reference numeral 34 is a library (corresponding to the inspection means holding unit in FIG. 1), which has a range SUBCHK and an element SUBC.
It has the function of HK and is combined when combining and editing. FIG. 3 shows an embodiment of the syntactic analysis unit.
【0035】図3において,30は構文解析部である。
40は中間テキスト作成部である。In FIG. 3, reference numeral 30 is a syntax analysis unit.
40 is an intermediate text creation unit.
【0036】41,42,43は,それぞれ中間テキス
ト作成部40で作成された中間テキスト1,中間テキス
ト2,DOループ中間テキスト43である。44はDO
ループの中間テキストを表し,フラグを持つものであ
る。フラグの代わりNEST(入れ子の識別子)を持た
せるようにしても良い。Reference numerals 41, 42, and 43 are the intermediate text 1, the intermediate text 2, and the DO loop intermediate text 43 created by the intermediate text creating unit 40, respectively. 44 is DO
Represents the intermediate text of a loop and has a flag. NEST (nested identifier) may be provided instead of the flag.
【0037】50はDOループ情報テーブルであって,
次のDOループ情報テーブル51を示すNEXT,DO
ループの開始値,終了値,増分値を持つ定数テーブルを
指定するデータ,DOループ文の先頭シーケンス番号,
DOループ文の最終シーケンス番号を持つものである
(DOループ文の先頭シーケンス番号と最終シーケンス
番号については図1のソースプログラム1参照)。DO
ループ文の先頭シーケン番号と最終シーケンス番号によ
りDOループ文の範囲を検出する。Reference numeral 50 is a DO loop information table,
NEXT, DO indicating the next DO loop information table 51
Data that specifies the constant table with the loop start value, end value, and increment value, the start sequence number of the DO loop statement,
It has the final sequence number of the DO loop statement (see the source program 1 of FIG. 1 for the start sequence number and the final sequence number of the DO loop statement). DO
The range of the DO loop statement is detected by the start sequence number and the final sequence number of the loop statement.
【0038】51は次のDOループ情報テーブルであ
る。52は定数テーブルであって,DOループ情報テー
ブル50で指定された開始値,終了値,増分値(標準は
1)を持つものである。Reference numeral 51 is the next DO loop information table. A constant table 52 has a start value, an end value, and an increment value (standard is 1) specified in the DO loop information table 50.
【0039】図4は本発明の意味解析部の実施例であ
る。図4において,31は意味解析部である。FIG. 4 shows an embodiment of the semantic analysis unit of the present invention. In FIG. 4, 31 is a semantic analysis unit.
【0040】60はSUBCHK設定手段である。61
は範囲SUBCHK(配列要素の範囲検査をDOループ
文の外において配列要素の検査をする手段)か要素SU
BCHK(配列要素の範囲検査をDOループ部の中にお
いて検査する手段)を挿入する命令を作成するか判定す
るものである。Reference numeral 60 is a SUBCHK setting means. 61
Is a range SUBCHK (means for checking the range of array elements outside the DO loop statement) or element SU
It is determined whether an instruction to insert BCHK (a means for checking the array element range check in the DO loop portion) is created.
【0041】62はSUBCHK挿入命令作成部であっ
て,範囲SUBCHKを必要とする箇所に範囲SUBS
HKを呼び出す命令を作成し,要素SUBCHKを必要
とする箇所に要素SUBCHKを呼び出す命令を作成す
るものである。Reference numeral 62 denotes a SUBCHK insertion instruction preparation section, which is used for the area SUBSK at a position requiring the area SUBCHK.
An instruction to call HK is created, and an instruction to call the element SUBCHK is created at a place where the element SUBCHK is required.
【0042】63は中間テキストであって,意味解析部
で生成された中間テキストを表す。64は範囲SUBC
HKの挿入命令である。65はDOループ処理開始行の
記述を表す。Reference numeral 63 is an intermediate text, which represents the intermediate text generated by the semantic analysis unit. 64 is the range SUBC
This is an HK insertion instruction. Reference numeral 65 represents the description of the DO loop processing start line.
【0043】66は要素SUBCHK挿入命令である。
67はDOループ処理終了行の記述を表す。図4の構成
において,SUBCHK挿入命令作成部は,DOループ
の中間テキストの添字式が単純式(例えば,変数だけか
定数だけで構成された場合)であるかないかを判定し,
単純式であれば,範囲SUBCHKがDOループの外に
配置されるように範囲SUBCHKを取り出す命令を作
成する。また,SUBCHK挿入命令作成部は,DOル
ープの中間テキストの添字式が複雑であれば,要素SU
BCHKがDOループの中に配置されるように要素SU
BCHKを取り出す命令を作成する。Reference numeral 66 is an element SUBCHK insertion instruction.
67 represents the description of the DO loop processing end line. In the configuration of FIG. 4, the SUBCHK insertion instruction creation unit determines whether or not the subscript expression of the intermediate text of the DO loop is a simple expression (for example, when it is composed of only variables or constants),
If it is a simple expression, an instruction for extracting the range SUBCHK is created so that the range SUBCHK is arranged outside the DO loop. Also, if the subscript expression of the intermediate text of the DO loop is complicated, the SUBCHK insertion instruction creation unit will write the element SU.
The element SU so that BCHK is placed in the DO loop
Create an instruction to retrieve BCHK.
【0044】中間テキスト63はそのようにして配置さ
れた範囲SUBCHKと要素SUBCHKの配置を示
す。範囲SUBCHKはDOループの外に配置され,要
素SUBCHKはDOループの中に配置される。The intermediate text 63 shows the arrangement of the range SUBCHK and the element SUBCHK thus arranged. The range SUBCHK is placed outside the DO loop and the element SUBCHK is placed inside the DO loop.
【0045】図5は本発明のソースプログラムと中間テ
キストの例を示す。図5において,1はソースプログラ
ムの例であって,DOループの記述である。FIG. 5 shows an example of the source program and intermediate text of the present invention. In FIG. 5, 1 is an example of a source program, which is a description of a DO loop.
【0046】70は中間テキストであって,SUBCH
Kを指定されてソースプログラム1を翻訳したものであ
る。71は範囲SUBCHK(HSUBCHK)の呼び
出し命令の挿入である。Reference numeral 70 denotes an intermediate text, which is SUBCH
The source program 1 is translated by designating K. Reference numeral 71 is an insertion of a calling instruction in the range SUBCHK (HSUBCHK).
【0047】72は要素SUBCHK(YSUBCH
K)の呼び出し命令の挿入である。配列A(I),C
(I)の配列の添字範囲検査は要素に演算子が含まれて
いないので範囲SUBCHKの呼び出し命令「CALL
HSUBCHK(A,1,100,1,50,
1)」,「CALL HSUBCHK(C,1,10
0,1,50,1 )」により繰り返し処理の外に配置
されるように配置する(厳密には,命令は属性,次元数
も含むが,本説明では省略する)。72 is an element SUBCHK (YSUBCH
K) is a call instruction insertion. Sequence A (I), C
Since the subscript range check of the array of (I) does not include an operator in the element, the calling instruction "CALL of the range SUBCHK
HSUBCHK (A, 1,100,1,50,
1) ”,“ CALL HSUBCHK (C, 1, 10
0, 1, 50, 1) ”is arranged so as to be arranged outside the repetitive processing (strictly speaking, the instruction also includes the attribute and the number of dimensions, but this description is omitted).
【0048】配列B(I)のSUBCHKは配列Bの添
字式(I+1)が単純式でないので要素SUBCHKの
呼び出し命令「CALL YSUBCHK(B,1,1
00,t1)」により繰り返し処理の中に配置されるよ
うにする。Since the subscript expression (I + 1) of the array B (I) is not a simple expression in the SUBCHK of the array B (I), the calling instruction "CALL YSUBCHK (B, 1,1) of the element SUBCHK is performed.
00, t1) ", so that they are arranged in the repetitive processing.
【0049】図6は本発明の実行形式プログラム作成手
段の実施例のフローチャートである。 S1 ソースプログラムを入力する。FIG. 6 is a flow chart of an embodiment of the execution format program creating means of the present invention. Enter the S1 source program.
【0050】S2 構文解析部はソースプログラムの字
句解析,構文解析を行い,中間テキストを作成する。そ
して,DOループにフラグもしくは入れ子の識別子(N
EST)を付加する。The S2 syntactic analysis unit performs lexical analysis and syntactic analysis of the source program to create an intermediate text. Then, a flag or a nested identifier (N
EST) is added.
【0051】S3 構文解析部はDOループ情報テーブ
ルを作成する。 S4 意味解析部は構文解析部の作成した中間テキスト
を元に意味解析をする。The S3 syntax analysis section creates a DO loop information table. S4 The semantic analysis unit performs semantic analysis based on the intermediate text created by the syntax analysis unit.
【0052】S5,S6 意味解析部は,実行形式プロ
グラムにSUBCHK,UNDEFを組み込む指定がユ
ーザによりなされているか判定する。SUBCHK,U
NDEFの指定があればS7に進み,なければS10に
進む。S5, S6 The semantic analysis section determines whether or not the user has designated to include SUBCHK and UNDEF in the executable program. SUBCHK, U
If NDEF is specified, the process proceeds to S7, and if not, the process proceeds to S10.
【0053】S7 DOループの中間テキストの繰り返
し要素が単純式であるかないかを判定する。単純式であ
ればS8に進み,単純式でなければS9に進む。 S8 意味解析部はDOループの外に範囲SUBCH
K,(および/もしくは範囲UNDEF)の呼び出し命
令を挿入する。必要により,範囲UNDEFの呼び出し
命令も挿入する。あるいは,範囲SUBCHKでなく,
範囲UNDEFを呼び出す命令のみでも良い。S7: It is determined whether the repeating element of the intermediate text of the DO loop is a simple expression. If it is a simple expression, proceed to S8, and if not, proceed to S9. S8 The semantic analysis part is outside the DO loop and the range SUBCH
Insert K, (and / or range UNDEF) call instructions. If necessary, a calling instruction for the range UNDEF is also inserted. Or, instead of the range SUBCHK,
Only the instruction to call the range UNDEF may be used.
【0054】S9 意味解析部はDOループの中に要素
SUBCHK,(および/もしくは要素UNDEF)の
呼び出し命令を挿入する。必要により,要素UNDEF
の呼び出し命令も挿入する。あるいは,要素SUBCH
Kでなく,要素UNDEFを呼び出す命令のみでも良
い。S9 The semantic analysis unit inserts a calling instruction for the element SUBCHK, (and / or the element UNDEF) in the DO loop. Element UNDEF if necessary
Also insert the call command of. Or the element SUBCH
Instead of K, only the instruction to call the element UNDEF may be used.
【0055】S10 番地割り付け部は変数,定数,配
列に番地(領域)を割付ける。 S11 DOループで使用される配列のパラメータリス
トを作成し,番地を割り付ける。このとき,DOループ
情報テーブルより,DOループの開始値,終了値,増分
等のパラメータを取り込む。The address allocating section at S10 allocates addresses (areas) to variables, constants and arrays. The parameter list of the array used in the S11 DO loop is created and the addresses are assigned. At this time, parameters such as the DO loop start value, end value, and increment are fetched from the DO loop information table.
【0056】S12 未定義配列,未定義変数を検出す
るための初期値を要素に設定する。 S13 レジスタ割り付けを行い,中間テキストをハー
ド命令に変換する。 S14 範囲SUBCHKと要素SUBCHKの中間テ
キストからそれぞれの検査手段をもつライブラリ呼び出
し命令を作成する。S12: Initial values for detecting undefined arrays and undefined variables are set in the elements. S13 Register allocation is performed and the intermediate text is converted into a hard instruction. S14 A library call instruction having respective checking means is created from the intermediate text of the range SUBCHK and the element SUBCHK.
【0057】例は,その命令列の例を示す。「LA
1,パラメータリスト」はパラメータリストをレジスタ
1に設定する命令である。「L 15,=V(範囲SU
BCHK)」は範囲SUBCHK名の検査手段のあるア
ドレスをレジスタ15に設定する命令である。「BAL
R 14,15」はレジスタ15に設定されているアド
レスに分岐し,その処理を終了したらレジスタ14に設
定されているアドレスに戻ることを指示する命令であ
る。The example shows an example of the instruction sequence. "LA
“1, parameter list” is an instruction to set the parameter list in the register 1. "L 15, = V (range SU
"BCHK)" is an instruction to set an address in the register 15 having a checking means of the range SUBCHK name. "BAL
“R 14, 15” is an instruction to branch to the address set in the register 15 and return to the address set in the register 14 when the processing is completed.
【0058】DCは16進数(X)の長さ(L)が1バ
イトの「属性」と「次元数」をパラメータリストに設定
することを指示する命令である。 S15 実行形式プログラム作成部は各中間テキストを
結合編集する。このとき,範囲SUBCHK,要素SU
BCHKを中間テキストに組み込む。DC is an instruction to instruct setting of the "attribute" and the "number of dimensions" in which the length (L) of the hexadecimal number (X) is 1 byte in the parameter list. In step S15, the execution format program creating unit combines and edits the intermediate texts. At this time, range SUBCHK, element SU
Incorporate BCHK into the intermediate text.
【0059】S16 実行形式プログラムを出力する。 以後,範囲SUBCHK,要素SUBCHK,範囲UN
DEF,要素UNDEFの含まれている実行形式プログ
ラムを実行する。その時,範囲SUBCHKはDOルー
プの開始値と終了値をそれぞれ配列定義の最小数と最大
数と比較する。DOループの開始値が配列の最小値より
大きく,DOループの終了値が配列定義の最大値より小
さければ,DOループで生成される配列は正しいと判定
する。S16 The executable program is output. After that, range SUBCHK, element SUBCHK, range UN
Executes an executable program that includes DEF and element UNDEF. The range SUBCHK then compares the start and end values of the DO loop with the minimum and maximum numbers in the array definition, respectively. If the start value of the DO loop is larger than the minimum value of the array and the end value of the DO loop is smaller than the maximum value of the array definition, it is determined that the array generated by the DO loop is correct.
【0060】例えば,図5のソースプログラム1の場
合,DOループの開始値が1であり,終了値が50であ
るから配列の定義の最小値A(1)とA(100)の範
囲にあるから正しいとされる。しかし,DOループの初
期値がI=0とされているとすると配列の最小値はA
(1)であるからエラーとされる。また,DOループの
終了値が101とされているとすると,配列の最大値は
A(100)であるので配列定義の範囲外となりエラー
とされる。For example, in the case of the source program 1 in FIG. 5, since the start value of the DO loop is 1 and the end value is 50, it is in the range of the minimum value A (1) and A (100) of the array definition. Is said to be correct. However, if the initial value of the DO loop is I = 0, the minimum value of the array is A
It is an error because it is (1). If the end value of the DO loop is 101, the maximum value of the array is A (100), which is outside the array definition range and an error is generated.
【0061】また,範囲UNDEFチェックは配列もし
くは変数の初期値(デフォルト)は常識的には使用され
ないような数値としておくことにより,配列もしくは変
数が定義されれば,数値が変更されるので,その配列も
しくは変数の初期により未定期配列,変数の有無の検査
(UNDEF)を行うことができる。また,範囲UND
EFで配列の添字の範囲については範囲SUBCHKと
同様にDOループの初期値と終了値を配列定義の最小値
と最大値と比較することにより行う。In the range UNDEF check, the initial value (default) of the array or variable is set to a value that is not commonly used, and if the array or variable is defined, the value is changed. By the initial stage of the array or the variable, it is possible to perform an unscheduled array and the existence of the variable (UNDEF). Also, the range UND
The range of the subscript of the array in EF is performed by comparing the initial value and the end value of the DO loop with the minimum value and the maximum value of the array definition as in the range SUBCHK.
【0062】そのようにしてエラーのない実行形式プロ
グラムが作成されたら,検査無しを指定して再度コンパ
イルすることにより検査手段を含まない実行形式プログ
ラムを作成する。When an error-free execution format program is created in this way, the execution format program that does not include the inspection means is created by designating no inspection and recompiling.
【0063】[0063]
【発明の効果】本発明によれば,DOループ等の繰り返
し処理に含まれる配列要素,変数等の検査を高速に処理
できるようになる。そのため,コンパイルを能率的に行
うことができるようになる。According to the present invention, the inspection of array elements, variables, etc. included in the repetitive processing such as DO loop can be processed at high speed. Therefore, it becomes possible to compile efficiently.
【図1】本発明の基本構成を示す図である。FIG. 1 is a diagram showing a basic configuration of the present invention.
【図2】本発明の実行形式プログラム作成手段の実施例
構成を示す図である。FIG. 2 is a diagram showing an embodiment configuration of an execution format program creating means of the present invention.
【図3】本発明の構文解析部の実施例を示す図である。FIG. 3 is a diagram showing an embodiment of a syntax analysis unit of the present invention.
【図4】本発明の意味解析部の実施例を示す図である。FIG. 4 is a diagram showing an embodiment of a semantic analysis unit of the present invention.
【図5】本発明のソースプログラムと中間テキストの例
を示す図である。FIG. 5 is a diagram showing an example of a source program and intermediate text of the present invention.
【図6】本発明の実施例の実行形式プログラム作成手段
のフローチャートを示す図である。FIG. 6 is a diagram showing a flowchart of an execution format program creating means of an embodiment of the present invention.
【図7】本発明の実施例の実行形式プログラム作成手段
のフローチャートを示す図である。FIG. 7 is a diagram showing a flowchart of an execution format program creating means of an embodiment of the present invention.
【図8】本発明の実施例の実行形式プログラム作成手段
のフローチャートを示す図である。FIG. 8 is a diagram showing a flowchart of an execution format program creating means of an embodiment of the present invention.
【図9】従来の技術の説明図1である。FIG. 9 is an explanatory diagram 1 of a conventional technique.
【図10】従来の技術の説明図2である。FIG. 10 is an explanatory diagram 2 of a conventional technique.
【図11】本発明の技術の説明図である。FIG. 11 is an explanatory diagram of the technique of the present invention.
1:ソースプログラム 2:処理の要素Aの定義(定義範囲) 3:要素Aを含む繰り返し処理(開始値,終了値) 10:翻訳部 11:中間テキスト生成部 12:繰り返し情報テーブル作成部 13:繰り返し情報テーブル 14:検査手段挿入命令作成部 15:検査手段保持部 16:実行形式プログラム作成部 20:実行形式プログラム 22:繰り返し処理の実行形式プログラム 23:繰り返し情報保持部 1: Source program 2: Definition of processing element A (definition range) 3: Repeat processing including element A (start value, end value) 10: Translation part 11: Intermediate text generation part 12: Repeat information table creation part 13: Repetition information table 14: Checking means insertion command creating section 15: Checking means holding section 16: Execution format program creating section 20: Execution format program 22: Execution format program of repetition processing 23: Repeating information holding section
Claims (4)
プログラムを検査する検査手段を備える実行形式プログ
ラム作成手段により,プログラム検査可能な実行形式プ
ログラムを作成する方法において,翻訳部は,ソースプ
ログラムを解析して中間テキストを生成し,中間テキス
トにおいて繰り返し処理を求め,該繰り返し処理の開始
値もしくは終了値のみで検査可能な該要素の検査手段は
繰り返し処理の外に設けることを特徴とする実行形式プ
ログラム作成方法。1. A method for creating an executable format program capable of checking a program by an executable format program creating means comprising a translation section of a source program and an inspecting section for inspecting the translated program, wherein the translation section analyzes the source program. To generate an intermediate text, obtain an iterative process in the intermediate text, and inspect the element with only the start value or the end value of the iterative process, the means for inspecting the element is provided outside the iterative process. How to make.
いかを判定し,単純な式であれば該検査手段を繰り返し
処理の外に挿入し,単純式でなければ検査手段を繰り返
し処理の内部に挿入し,繰り返し処理の内部に挿入され
た検査手段は繰り返し処理毎に該要素に対して検査を行
うものであることを特徴とする実行形式プログラム作成
方法。2. The method according to claim 1, wherein it is determined whether or not the expression is a simple expression, and if the expression is a simple expression, the checking means is inserted outside the iterative processing. A method for creating an executable program, characterized in that the inspection means inserted inside and inserted into the repetitive processing inspects the element for each repetitive processing.
処理はDOループであり,DOループの開始値と終了値
を含む情報テーブルを作成し,該要素は配列要素であ
り,繰り返し処理の外に設けられた検査手段は該情報テ
ーブルの開始値および終了値をそれぞれ配列定義の最小
値および最大値と比較しDOループで処理される配列の
添字範囲が定義された配列の添字範囲の中に含まれるも
のであるかないかを検査するものであることを特徴とす
る実行形式プログラム作成方法。3. The repetitive process according to claim 1 or 2, wherein the repetitive process is a DO loop, an information table including a start value and an end value of the DO loop is created, and the element is an array element and is provided outside the repetitive process. The checking means compares the start value and the end value of the information table with the minimum value and the maximum value of the array definition, respectively, and the subscript range of the array processed by the DO loop is included in the subscript range of the defined array. A method of creating an executable program, characterized by inspecting whether or not it is a thing.
処理で使用される要素は代入文の右辺に代入する配列も
しくは変数,もしくはWRITE文の出力並びの記述で
あり,検査手段はその定義範囲もしくは定義の有無を検
査するものであることを特徴とする実行形式プログラム
作成方法。 【産業上の利用分野】4. The element used in the iterative process according to claim 1 or 2, is an array or variable to be assigned to the right side of an assignment statement, or a description of an output sequence of a WRITE statement, and the checking means is its definition range or definition. A method for creating an executable program, characterized by inspecting the presence or absence of [Industrial applications]
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7007077A JPH08194624A (en) | 1995-01-20 | 1995-01-20 | Executing form program preparing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7007077A JPH08194624A (en) | 1995-01-20 | 1995-01-20 | Executing form program preparing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08194624A true JPH08194624A (en) | 1996-07-30 |
Family
ID=11656029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7007077A Pending JPH08194624A (en) | 1995-01-20 | 1995-01-20 | Executing form program preparing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH08194624A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007249262A (en) * | 2006-03-13 | 2007-09-27 | Nec Corp | System and method for detecting access out of range of array |
JP2009187573A (en) * | 2002-04-15 | 2009-08-20 | Fisher Rosemount Syst Inc | Method for combining user definition-custom function block with process control system incorporated in process plant |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01205342A (en) * | 1988-02-12 | 1989-08-17 | Sofuto Uea Ashisuto:Kk | Development system for general purpose cross software |
JPH0421030A (en) * | 1990-05-14 | 1992-01-24 | Hitachi Ltd | Detection object generating system for reference of outside of declaration range of array |
JPH05204705A (en) * | 1992-01-30 | 1993-08-13 | Fujitsu Ltd | Processing method for detecting undefined parameter |
JPH06290206A (en) * | 1993-03-31 | 1994-10-18 | Nec Software Ltd | Vectorization systen |
-
1995
- 1995-01-20 JP JP7007077A patent/JPH08194624A/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01205342A (en) * | 1988-02-12 | 1989-08-17 | Sofuto Uea Ashisuto:Kk | Development system for general purpose cross software |
JPH0421030A (en) * | 1990-05-14 | 1992-01-24 | Hitachi Ltd | Detection object generating system for reference of outside of declaration range of array |
JPH05204705A (en) * | 1992-01-30 | 1993-08-13 | Fujitsu Ltd | Processing method for detecting undefined parameter |
JPH06290206A (en) * | 1993-03-31 | 1994-10-18 | Nec Software Ltd | Vectorization systen |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009187573A (en) * | 2002-04-15 | 2009-08-20 | Fisher Rosemount Syst Inc | Method for combining user definition-custom function block with process control system incorporated in process plant |
JP2007249262A (en) * | 2006-03-13 | 2007-09-27 | Nec Corp | System and method for detecting access out of range of array |
JP4561998B2 (en) * | 2006-03-13 | 2010-10-13 | 日本電気株式会社 | Out-of-sequence access detection method and method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5606697A (en) | Compiler system for language processing program | |
JPH05257709A (en) | Parallelism discriminating method and parallelism supporting method using the same | |
JPH08194624A (en) | Executing form program preparing method | |
JPH01177165A (en) | Definition-quotation relation checking system for array | |
JPH11272475A (en) | Automatic re-entrant method for non-re-entrant program and system therefor | |
JP2956591B2 (en) | Method and apparatus for parallelizing a loop having a conditional jump out of the loop | |
JPH0695890A (en) | Name replacement system in compiler | |
JPH06242958A (en) | Compilation system | |
JP3167386B2 (en) | Automatic program parallelization method | |
JP2000132405A (en) | In-line expansion processing device and method | |
JPH0561687A (en) | Processing system for compiler | |
JPS58169637A (en) | Compile processing system | |
JPH05204705A (en) | Processing method for detecting undefined parameter | |
Robinson | Towards a Programming System | |
JPH0417028A (en) | System for translating and editing program language | |
JPS63174130A (en) | System for detecting value unsettled variable name | |
JPH0535494A (en) | Interactive optimization compile system for high-level program language | |
JPH08249208A (en) | Program inspection method | |
JPH06236283A (en) | Language processing system | |
JPH0651993A (en) | Assembler | |
JP2004246924A (en) | Application generator development support device and application generator development support method | |
JPH02224136A (en) | Inspection system for compile unit | |
JP2001005655A (en) | Device and method for aiding development of application generator | |
JPH10240545A (en) | Optimizing compiler device for undefined variable detection | |
JPH01269133A (en) | Translating system for data base operation instruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20031224 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040223 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040223 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040406 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040607 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040817 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20041224 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060726 |