JP3237591B2 - Compiling device, compiling method, and recording medium recording compiler - Google Patents

Compiling device, compiling method, and recording medium recording compiler

Info

Publication number
JP3237591B2
JP3237591B2 JP29436497A JP29436497A JP3237591B2 JP 3237591 B2 JP3237591 B2 JP 3237591B2 JP 29436497 A JP29436497 A JP 29436497A JP 29436497 A JP29436497 A JP 29436497A JP 3237591 B2 JP3237591 B2 JP 3237591B2
Authority
JP
Japan
Prior art keywords
register
operand
data
text
intermediate text
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
JP29436497A
Other languages
Japanese (ja)
Other versions
JPH10187459A (en
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP29436497A priority Critical patent/JP3237591B2/en
Publication of JPH10187459A publication Critical patent/JPH10187459A/en
Application granted granted Critical
Publication of JP3237591B2 publication Critical patent/JP3237591B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、入力された原始プ
ログラムを複数の中間テキストに変換し、各中間テキス
トに含まれる複数のオペランドのそれぞれが使用するデ
ータ(変数や定数)に対してレジスタの割り当て処理を
行い、レジスタの割り当て処理が完了した中間テキスト
の列を目的プログラムに変換するコンパイル装置、コン
パイル方法およびコンパイラを記録した記録媒体に関す
る。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention converts an input source program into a plurality of intermediate texts, and registers data (variables and constants) used by each of a plurality of operands included in each intermediate text in a register. The present invention relates to a compiling device, a compiling method, and a recording medium that records a compiler that performs an assignment process and converts a column of intermediate text, for which register assignment process has been completed, into a target program.

【0002】特に、中間テキスト内における複数の入力
オペランドのそれぞれが使用するデータに割り当てるレ
ジスタの種類が、該中間テキスト内における各入力オペ
ランドの位置に応じて限定される計算機において、ある
オペランドが使用するデータに割り当てたレジスタを後
続の中間テキスト内の同一位置のオペランドが使用する
データにそのまま割り当てることができる中間テキスト
の列を生成するコンパイル装置、コンパイル方法および
コンパイラを記録した記録媒体に関する。
In particular, a certain operand is used in a computer in which the type of a register allocated to data used by each of a plurality of input operands in an intermediate text is limited according to the position of each input operand in the intermediate text. The present invention relates to a compiling device, a compiling method, and a recording medium on which a compiler for generating a sequence of intermediate text that can directly assign a register allocated to data to data used by an operand at the same position in subsequent intermediate text.

【0003】[0003]

【従来の技術】特開平3−127229号公報には、目
的プログラム生成後に、該目的プログラムを入口と出口
が一つずつでかつ該入口と該出口との間に他の出口がな
い単位である複数のブロックに分け、各ブロック中で使
用されるレジスタの依存関係を調べ、レジスタ移送命令
を減らす方法が開示されている。
2. Description of the Related Art Japanese Patent Application Laid-Open No. 3-127229 discloses a unit in which, after a target program is generated, the target program has one inlet and one outlet, and there is no other outlet between the inlet and the outlet. There is disclosed a method of dividing into a plurality of blocks, examining dependencies of registers used in each block, and reducing register transfer instructions.

【0004】図6は、2つの入力オペランドのオペラン
ド1に対して偶数レジスタ(R0、R2、R4、…)
を、オペランド2に対して奇数レジスタ(R1、R3、
R5、…)を固定的に割り当て、すべての入力オペラン
ドにレジスタを割り当てた後に出力オペランドに対して
任意のレジスタを割り当てる計算機において、この従来
の技術を図4に示す中間テキストに適用してレジスタ割
り当て処理を行った場合の例を示している。
FIG. 6 shows an even register (R0, R2, R4,...) For operand 1 of two input operands.
To the odd register (R1, R3,
R5,...) Are fixedly assigned, registers are assigned to all input operands, and then arbitrary registers are assigned to output operands. In this computer, this conventional technique is applied to the intermediate text shown in FIG. The example in the case where processing was performed is shown.

【0005】まず、減算テキスト(1)において、オペ
ランド1のデータAにはレジスタR0が、オペランド2
のデータBにはレジスタR1が割り当てられている。
First, in the subtraction text (1), the register R0 stores the data A of the operand 1 and the operand 2
The register R1 is assigned to the data B of the above.

【0006】次に乗算テキスト(2)において、オペラ
ンド1のデータはBであるため、減算テキスト(1)で
オペランド1のデータAに割り当てたレジスタR0を割
り当てることはできない。そのため、該オペランド1の
データBにはレジスタR2を割り当てることになる。同
様に、該乗算テキスト(2)のオペランド2のデータA
にはレジスタR3を割り当てることになる。そして、減
算テキスト(1)の出力オペランドのデータT1にレジ
スタR4を、乗算テキスト(2)の出力オペランドのデ
ータT2にレジスタR5を割り当てる。
Next, in the multiplication text (2), since the data of the operand 1 is B, the register R0 assigned to the data A of the operand 1 cannot be allocated in the subtraction text (1). Therefore, the register R2 is allocated to the data B of the operand 1. Similarly, data A of operand 2 of the multiplication text (2)
Is assigned the register R3. Then, the register R4 is assigned to the output operand data T1 of the subtraction text (1), and the register R5 is assigned to the output operand data T2 of the multiplication text (2).

【0007】このようにして減算テキスト(1)と乗算
テキスト(2)にレジスタを割り当てた結果として、該
減算テキスト(1)と該乗算テキスト(2)との間に、
データAに対するレジスタ移送命令(2−1)と、デー
タBに対するレジスタ移送命令(2−2)を挿入しなけ
ればならない。
[0007] As a result of allocating registers to the subtraction text (1) and the multiplication text (2) in this manner, a value between the subtraction text (1) and the multiplication text (2) is obtained.
A register transfer instruction (2-1) for data A and a register transfer instruction (2-2) for data B must be inserted.

【0008】同様に、図9は、2つの入力オペランドの
オペランド1に対して偶数レジスタ(R0、R2、R
4、…)を、オペランド2に対して奇数レジスタ(R
1、R3、R5、…)を固定的に割り当て、すべての入
力オペランドにレジスタを割り当てた後に出力オペラン
ドに対して任意のレジスタを割り当てる計算機におい
て、この従来の技術を図7に示す中間テキストに適用し
てレジスタ割り当て処理を行った場合の例を示してい
る。
Similarly, FIG. 9 shows an even register (R0, R2, R2) for operand 1 of two input operands.
4,...) To the odd register (R
1, R3, R5,...) Are fixedly assigned, a register is assigned to all input operands, and then an arbitrary register is assigned to an output operand. This conventional technique is applied to the intermediate text shown in FIG. In this case, an example in which the register allocation process is performed as shown in FIG.

【0009】まず、減算テキスト(1)において、オペ
ランド1のデータAにはレジスタR0が、オペランド2
のデータBにはレジスタR1が割り当てられている。
First, in the subtraction text (1), the register R0 stores the data A of the operand 1 and the operand R
The register R1 is assigned to the data B of the above.

【0010】次に比較テキスト(3)において、オペラ
ンド1のデータはBであるため、減算テキスト(1)で
オペランド1のデータAに割り当てたレジスタR0を割
り当てることはできない。そのため、該オペランド1の
データBにはレジスタR2を割り当てることになる。同
様に、該比較テキスト(3)のオペランド2のデータT
1にはレジスタR3を割り当てることになる。そして、
減算テキスト(1)の出力オペランドのデータT1にレ
ジスタR3を、比較テキスト(3)の出力オペランドの
データT3にレジスタR4を割り当てる。
In the comparison text (3), since the data of the operand 1 is B, the register R0 allocated to the data A of the operand 1 cannot be allocated in the subtraction text (1). Therefore, the register R2 is allocated to the data B of the operand 1. Similarly, the data T of the operand 2 of the comparison text (3)
1 is assigned to the register R3. And
The register R3 is allocated to the output operand data T1 of the subtraction text (1), and the register R4 is allocated to the output operand data T3 of the comparison text (3).

【0011】このようにして減算テキスト(1)と比較
テキスト(3)にレジスタを割り当てた結果として、該
減算テキスト(1)と該比較テキスト(3)との間に、
データBに対するレジスタ移送命令(3−1)を挿入し
なければならない。
As a result of allocating the registers to the subtraction text (1) and the comparison text (3) in this manner, a difference between the subtraction text (1) and the comparison text (3) is obtained.
A register transfer instruction (3-1) for data B must be inserted.

【0012】[0012]

【発明が解決しようとする課題】このように、上述した
従来の技術は、複数の入力オペランドのそれぞれが使用
するデータに割り当てるレジスタの種類が、中間テキス
ト内における各オペランドの位置に応じて限定される計
算機においては、レジスタ移送命令を省略することがで
きないという問題点がある。
As described above, in the above-described conventional technique, the types of registers allocated to data used by each of a plurality of input operands are limited according to the position of each operand in the intermediate text. In some computers, the register transfer instruction cannot be omitted.

【0013】本発明の目的は、中間テキスト内における
複数の入力オペランドのそれぞれが使用するデータに割
り当てるレジスタの種類が、該中間テキスト内における
各入力オペランドの位置に応じて限定される計算機にお
いて、レジスタを効率良く利用し、レジスタ移送命令を
可能な限り使用しない中間テキストを生成し、その結果
として実行効率の良い目的プログラムを生成するコンパ
イル装置、コンパイル方法およびコンパイラを記録した
記録媒体を提供することにある。
An object of the present invention is to provide a computer in which the type of a register assigned to data used by each of a plurality of input operands in an intermediate text is limited according to the position of each input operand in the intermediate text. The present invention provides a compiling device, a compiling method, and a recording medium on which a compiling method generates an intermediate text that uses a register transfer instruction as little as possible and generates a target program with high execution efficiency as a result. is there.

【0014】[0014]

【課題を解決するための手段】本発明の第1のコンパイ
ル装置は、原始プログラムを変換して生成された複数の
中間テキストのそれぞれに含まれる、複数の入力オペラ
ンドのそれぞれにおいて使用されるデータを格納するた
めのレジスタの種類が、各中間テキスト内における各入
力オペランドの位置に応じて限定される計算機におい
て、前記原始プログラムを変換して前記複数の中間テキ
ストを生成する中間テキスト生成処理部と、各中間テキ
スト内の各入力オペランドにおいて使用されるデータと
該データに割り当てるレジスタとの対応関係の情報を格
納するレジスタ管理テーブルと、各中間テキストに含ま
れる演算の種類を変更すべきか判断し、変更すべきと判
断した場合には該演算を変更するオペランド位置交換部
と、前記オペランド位置交換部の処理完了後、各中間テ
キスト内の各入力オペランドにおいて使用されるデータ
に対してレジスタを割り当て、該レジスタの情報を該中
間テキストに付加するとともに、該データと該レジスタ
との対応関係の情報を前記レジスタ管理テーブルに格納
するレジスタ選択部と、前記レジスタ選択部によりレジ
スタの情報を付加された複数の中間テキストを基にして
目的プログラムを生成する目的プログラム生成処理部と
を備えたことを特徴とする。
SUMMARY OF THE INVENTION A first compilation of the present invention
Device converts multiple source programs and generates
Multiple input operas in each of the intermediate texts
To store the data used in each of the
Register type for each entry in each intermediate text.
Calculator limited by position of force operand
Converting the source program into the plurality of intermediate texts.
An intermediate text generation processing unit that generates a list
Data used in each input operand in the list
Stores the information of the correspondence with the register assigned to the data.
Register management table to be stored and included in each intermediate text
The type of operation to be changed, and
Operand position exchange unit that changes the operation if interrupted
After completion of the processing of the operand position exchange unit,
Data used in each input operand in the text
Allocate a register to the
Between the data and the register
Stores information on the correspondence relationship with the register management table
Register selection section, and the register selection section
Based on multiple intermediate texts with added star information
A target program generation processing unit for generating a target program;
It is characterized by having.

【0015】本発明の第2のコンパイル装置は、第1の
コンパイル装置にいて、前記オペランド位置交換部は、
前記複数の中間テキストを実行順に読み込み、順次読み
込んだ中間テキスト内の複数の入力オペランドのいずれ
かにおいて使用されるデータに対して既に割り当てられ
ているレジスタが存在するか否かを前記レジスタ管理テ
ーブルを参照して判断し、該データに対して既に割り当
てられているレジスタが存在すると判断した場合には、
該中間テキスト内の該入力オペランドの位置において該
レジスタを利用できるか判断し、該入力オペランドの位
置では該レジスタを利用できないと判断した場合には、
該中間テキストに含まれる演算の種類を変更して、かつ
該中間テキストに含まれる複数の入力オペランドの位置
を交換することにより該レジスタを利用できるようにな
るか否かを判断し、該中間テキストに含まれる演算の種
類を変更して、かつ該中間テキストに含まれる該複数の
入力オペランドの位置を交換することにより該レジスタ
を利用できるようになると判断した場合には、該中間テ
キストに含まれる演算の種類を変更し、かつ該中間テキ
ストに含まれる該複数の入力オペランドの位置を交換す
ることを特徴とする。
A second compiling device according to the present invention comprises :
In the compiling apparatus, the operand position exchange unit includes:
Reading the plurality of intermediate texts in the order of execution, sequentially reading
Any of several input operands in the embedded intermediate text
Already allocated for the data used in
The register management data is used to determine whether a register is present.
Table and make a judgment, and
If it is determined that there is a registered register,
At the position of the input operand in the intermediate text
Determines whether a register is available and determines the order of the input operand.
If it is determined that the register cannot be used,
Change the type of operation included in the intermediate text, and
Positions of multiple input operands included in the intermediate text
Can be used by exchanging
Whether or not the type of operation included in the intermediate text
Class, and the plurality of intermediate texts are included in the intermediate text.
By exchanging the position of the input operand,
If it is determined that the
Change the type of operation included in the text, and
Exchange the positions of the plurality of input operands included in the list.
It is characterized by that.

【0016】本発明の第3のコンパイル装置は、第2の
コンパイル装置にいて、前記レジスタ選択部は、前記オ
ペランド位置交換部が、順次読み込んだ中間テキストに
含まれる演算の種類を変更し、かつ該中間テキスト内の
複数の入力オペランドの位置を交換した場合、該複数の
入力オペランドのいずれかにおいて使用されるデータに
対して既に割り当てられているレジスタをそのまま該デ
ータに対して割り当て、該レジスタの情報を該中間テキ
ストに付加するとともに、該データと該レジスタとの対
応関係の情報を前記レジスタ管理テーブルに格納するこ
とを特徴とする。
The third compiling device of the present invention is a second compiling device.
In the compiling apparatus, the register selecting unit is configured to
The Perland Position Exchange Department reads the intermediate text
Change the type of operation involved, and
When the positions of a plurality of input operands are exchanged,
For data used in any of the input operands
Registers that have already been allocated to the
Data in the register and the information in the register
And a pair between the data and the register.
Response information in the register management table.
And features.

【0017】本発明の第1のコンパイル方法は、原始プ
ログラムを変換して生成された複数の中間テキストのそ
れぞれに含まれる、複数の入力オペランドのそれぞれに
おいて使用されるデータを格納するためのレジスタの種
類が、各中間テキスト内における各入力オペランドの位
置に応じて限定される計算機において、前記原始プログ
ラムを変換して前記複数の中間テキストを生成する中間
テキスト生成処理ステップと、各中間テキストに含まれ
る演算の種類を変更すべきか判断し、変更すべきと判断
した場合には該演算を変更するオペランド位置交換ステ
ップと、前記オペランド位置交換ステップにおける処理
完了後、各中間テキスト内の各入力オペランドにおいて
使用されるデータに対してレジスタを割り当て、該レジ
スタの情報を該中間テキストに付加するとともに、該デ
ータと該レジスタとの対応関係の情報をレジスタ管理テ
ーブルに格納するレジスタ選択ステップと、前記レジス
タ選択ステップにおいてレジスタの情報を付加された複
数の中間テキストを基にして目的プログラムを生成する
目的プログラム生成処理ステップとを含むことを特徴と
する。
The first compiling method of the present invention is a
Of multiple intermediate texts generated by converting
Each of the multiple input operands contained in each
Types of registers for storing data used in
Class is the position of each input operand in each intermediate text
In a computer limited according to the location,
Intermediate for converting a ram to generate the plurality of intermediate texts
Text generation processing steps, included in each intermediate text
To determine whether the type of operation to be changed should be changed
The operand position exchange step that changes the operation.
And the processing in the operand position exchange step
After completion, for each input operand in each intermediate text
Allocate registers for the data to be used,
Information on the data is added to the intermediate text.
Data on the correspondence between the data and the registers
Selecting a register to be stored in the
Data with register information added in the data selection step.
Generate a target program based on a number of intermediate texts
And a target program generation processing step.
I do.

【0018】本発明の第2のコンパイル方法は、第1の
コンパイル方法において、前記オペランド位置交換ステ
ップは、前記複数の中間テキストを実行順に読み込み、
順次読み込んだ中間テキスト内の複数の入力オペランド
のいずれかにおいて使用されるデータに対して既に割り
当てられているレジスタが存在するか否かを前記レジス
タ管理テーブルを参照して判断し、該データに対して既
に割り当てられているレジスタが存在すると判断した場
合には、該中間テキスト内の該入力オペランドの位置に
おいて該レジスタを利用できるか判断し、該入力オペラ
ンドの位置では該レジスタを利用できないと判断した場
合には、該中間テキストに含まれる演算の種類を変更し
て、かつ該中間テキストに含まれる複数の入力オペラン
ドの位置を交換することにより該レジスタを利用できる
ようになるか否かを判断し、該中間テキストに含まれる
演算の種類を変更して、かつ該中間テキストに含まれる
該複数の入力オペランドの位置を交換することにより該
レジスタを利用できるようになると判断した場合には、
該中間テキストに含まれる演算の種類を変更し、かつ該
中間テキストに含まれる該複数の入力オペランドの位置
を交換することを特徴とする。
The second compiling method according to the present invention comprises the following steps:
In the compiling method, the operand position exchange step
Reading the plurality of intermediate texts in the order of execution,
Multiple input operands in the intermediate text read sequentially
Already assigned to data used in any of
The register determines whether the assigned register exists.
Judgment with reference to the data management table, and
If it is determined that there is a register assigned to
The position of the input operand in the intermediate text
In the input opera
If it is determined that the register cannot be used at the
Change the type of operation included in the intermediate text.
Input operands included in the intermediate text
The register can be used by swapping the location of the
Judge whether or not to be included in the intermediate text
Change the type of operation and include it in the intermediate text
By exchanging the positions of the plurality of input operands,
If you decide that the registers will be available,
Change the type of operation included in the intermediate text, and
Positions of the input operands in the intermediate text
It is characterized by replacing.

【0019】本発明の第3のコンパイル方法は、第2の
コンパイル方法において、前記レジスタ選択ステップ
は、前記オペランド位置交換ステップにおいて、順次読
み込んだ中間テキストに含まれる演算の種類を変更し、
かつ該中間テキスト内の複数の入力オペランドの位置を
交換した場合、該複数の入力オペランドのいずれかにお
いて使用されるデータに対して既に割り当てられている
レジスタをそのまま該データに対して割り当て、該レジ
スタの情報を該中間テキストに付加するとともに、該デ
ータと該レジスタとの対応関係の情報を前記レジスタ管
理テーブルに格納することを特徴とする。
A third compiling method according to the present invention comprises a second compiling method.
In the compiling method, the register selecting step
Are sequentially read in the operand position exchange step.
Change the type of operation included in the embedded intermediate text,
And the position of a plurality of input operands in the intermediate text
If exchanged, any of the input operands
Already allocated for data used
Allocate the register to the data as it is
Information on the data is added to the intermediate text.
Information on the correspondence between the data and the register
Stored in a management table.

【0020】本発明の第1の記録媒体は、原始プログラ
ムを変換して生成された複数の中間テキストのそれぞれ
に含まれる、複数の入力オペランドのそれぞれにおいて
使用されるデータを格納するためのレジスタの種類が、
各中間テキスト内における各入力オペランドの位置に応
じて限定される計算機において、前記原始プログラムを
変換して前記複数の中間テキストを生成する中間テキス
ト生成処理と、各中間テキストに含まれる演算の種類を
変更すべきか判断し、変更すべきと判断した場合には該
演算を変更するオペランド位置交換処理と、前記オペラ
ンド位置交換処理完了後、各中間テキスト内の各入力オ
ペランドにおいて使用されるデータに対してレジスタを
割り当て、該レジスタの情報を該中間テキストに付加す
るとともに、該データと該レジスタとの対応関係の情報
をレジスタ管理テーブルに格納するレジスタ選択処理
と、前記レジスタ選択処理においてレジスタの情報を付
加された複数の中間テキストを基にして目的プログラム
を生成する目的プログラム生成処理処理とを前記計算機
に行わせるプログラムを記録したことを特徴とする。
The first recording medium of the present invention is a primitive program.
Each of the multiple intermediate texts generated by converting the
In each of the multiple input operands
The type of register for storing the data used is
Corresponding to the position of each input operand within each intermediate text
Computer, the source program is
Intermediate text that is converted to generate the plurality of intermediate texts
And the types of operations included in each intermediate text.
Judge whether it should be changed or not,
An operand position exchange process for changing an operation,
After the completion of the command position exchange process, each input
Register for data used in perland
Allocating and adding the information of the register to the intermediate text
And information on the correspondence between the data and the register.
Register selection processing to store data in the register management table
Register information in the register selection process.
Target program based on the added intermediate texts
Computer program for generating a target program
Characterized in that a program to be executed by the user is recorded.

【0021】本発明の第2の記録媒体は、第1の記録媒
体において、前記オペランド位置交換処理は、前記複数
の中間テキストを実行順に読み込み、順次読み込んだ中
間テキスト内の複数の入力オペランドのいずれかにおい
て使用されるデータに対して既に割り当てられているレ
ジスタが存在するか否かを前記レジスタ管理テーブルを
参照して判断し、該データに対して既に割り当てられて
いるレジスタが存在すると判断した場合には、該中間テ
キスト内の該入力オペランドの位置において該レジスタ
を利用できるか判断し、該入力オペランドの位置では該
レジスタを利用できないと判断した場合には、該中間テ
キストに含まれる演算の種類を変更して、かつ該中間テ
キストに含まれる複数の入力オペランドの位置を交換す
ることにより該レジスタを利用できるようになるか否か
を判断し、該中間テキストに含まれる演算の種類を変更
して、かつ該中間テキストに含まれる該複数の入力オペ
ランドの位置を交換することにより該レジスタを利用で
きるようになると判断した場合には、該中間テキストに
含まれる演算の種類を変更し、かつ該中間テキストに含
まれる該複数の入力オペランドの位置を交換することを
特徴とする。
[0021] The second recording medium of the present invention is the first recording medium.
Wherein the operand position exchange processing comprises
Read the intermediate text of
Any of multiple input operands in the text between
Already assigned to data used
The register management table is used to determine whether or not a register exists.
Refer to and judge, already assigned to the data
If it is determined that a register exists,
Register at the position of the input operand in the text
Is available, and at the position of the input operand,
If it is determined that the register cannot be used,
Change the type of operation included in the text and
Swap the positions of multiple input operands in a text
Whether this register can be used
And change the type of operation included in the intermediate text
And the plurality of input operations included in the intermediate text
The register can be used by exchanging the land position.
If it is determined that you will be able to
Change the type of operation included and include it in the intermediate text.
Exchanging the positions of the input operands
Features.

【0022】本発明の第3の記録媒体は、第2記録媒体
において、前記レジスタ選択処理は、前記オペランド位
置交換処理において、順次読み込んだ中間テキストに含
まれる演算の種類を変更し、かつ該中間テキスト内の複
数の入力オペランドの位置を交換した場合、該複数の入
力オペランドのいずれかにおいて使用されるデータに対
して既に割り当てられているレジスタをそのまま該デー
タに対して割り当て、該レジスタの情報を該中間テキス
トに付加するとともに、該データと該レジスタとの対応
関係の情報を前記レジスタ管理テーブルに格納すること
を特徴とする。
A third recording medium according to the present invention is a second recording medium.
In the register selection processing, the operand
In the exchange process,
Change the type of operation to be performed, and
If the positions of a number of input operands are exchanged,
Data used in any of the
Register that has already been allocated
And the information of the register is assigned to the intermediate text.
And the correspondence between the data and the register.
Storing relationship information in the register management table
It is characterized by.

【0023】[0023]

【0024】[0024]

【0025】[0025]

【0026】[0026]

【0027】[0027]

【0028】[0028]

【0029】[0029]

【0030】[0030]

【0031】[0031]

【0032】[0032]

【0033】[0033]

【0034】[0034]

【0035】[0035]

【0036】[0036]

【0037】[0037]

【0038】[0038]

【0039】[0039]

【0040】[0040]

【0041】[0041]

【0042】[0042]

【0043】[0043]

【0044】[0044]

【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照して詳細に説明する。
Embodiments of the present invention will be described below in detail with reference to the drawings.

【0045】図1を参照すると、本発明の第1の実施の
形態は、プログラム制御により動作する計算機100
と、この計算機100に接続された記憶装置40、5
0、および60とから構成されている。
Referring to FIG. 1, a first embodiment of the present invention is a computer 100 operating under program control.
And the storage devices 40, 5 connected to the computer 100
0 and 60.

【0046】計算機100は、記憶装置40に格納され
ている原始プログラム41を入力してコンパイラの内部
表現である複数の中間テキスト51を生成し、記憶装置
50に格納する中間テキスト生成処理部10と、この記
憶装置50に格納された複数の中間テキスト51のそれ
ぞれが使用するレジスタの情報を生成するレジスタ割り
当て部20と、複数の中間テキスト51とレジスタ割り
当て部20によって生成されたレジスタ情報とを入力し
て目的プログラム61を生成し、記憶装置60に格納す
る目的プログラム生成処理部30とを備える。なお、該
計算機100は、中間テキスト51内における複数の入
力オペランドのそれぞれが使用するデータに割り当てる
レジスタの種類が、該中間テキスト51内における各オ
ペランドの位置に応じて制限される。
The computer 100 receives the source program 41 stored in the storage device 40, generates a plurality of intermediate texts 51 as internal expressions of the compiler, and stores the intermediate texts in the storage device 50. The register allocating unit 20 that generates information of a register used by each of the plurality of intermediate texts 51 stored in the storage device 50, and the plurality of intermediate texts 51 and the register information generated by the register allocating unit 20 are input. And a target program generation processing unit 30 that generates the target program 61 and stores the target program 61 in the storage device 60. In the computer 100, the types of registers allocated to data used by each of the plurality of input operands in the intermediate text 51 are restricted according to the position of each operand in the intermediate text 51.

【0047】レジスタ割り当て部20は、データと該デ
ータを格納するレジスタとの割り当て関係を保持するレ
ジスタ管理テーブル21と、記憶装置50に格納された
複数の中間テキスト51のそれぞれに対してオペランド
位置の入れ替え処理や演算の変更処理を行うオペランド
位置入れ替え処理手段22と、各中間テキスト51のオ
ペランドで使用するレジスタを決定するレジスタ選択手
段23と、レジスタ移送命令を生成するレジスタ移送テ
キスト生成処理手段24とを備える。
The register allocating unit 20 stores a register management table 21 for storing an allocation relationship between data and registers storing the data, and an operand position of each of a plurality of intermediate texts 51 stored in the storage device 50. An operand position replacement processing means 22 for performing a replacement processing or an operation change processing, a register selection means 23 for determining a register to be used in an operand of each intermediate text 51, and a register transfer text generation processing means 24 for generating a register transfer instruction. Is provided.

【0048】オペランド位置入れ替え処理手段22は、
記憶装置50から中間テキスト51を1つ読み出し、該
中間テキスト51内の複数の入力オペランドのそれぞれ
に対して以下の処理を行う。
The operand position interchange processing means 22
One intermediate text 51 is read from the storage device 50, and the following processing is performed on each of a plurality of input operands in the intermediate text 51.

【0049】まず、レジスタ管理テーブル21を参照
し、中間テキスト51内の少なくとも一つの入力オペラ
ンドが使用するデータに既にレジスタが割り当てられて
いる場合に、該入力オペランドの中間テキスト51内に
おける位置を考慮して、該入力オペランドが使用するデ
ータに該レジスタをそのまま割り当てることができるか
どうか調べる。
First, referring to the register management table 21, if a register is already assigned to data used by at least one input operand in the intermediate text 51, the position of the input operand in the intermediate text 51 is considered. Then, it is checked whether or not the register can be directly allocated to the data used by the input operand.

【0050】もし、中間テキスト51内のすべての入力
オペランドが使用するデータに対してそれらのデータに
既に割り当てられているレジスタを割り当てることがで
きず、かつ該中間テキストの演算が可換演算である場合
は、各入力オペランドの位置を入れ替えることにより、
該中間テキスト51内の少なくとも一つの入力オペラン
ドが使用するデータに既に割り当てられているレジスタ
をそのまま割り当てることができないか調べ、割り当て
ることができる場合には、各入力オペランドの位置を入
れ替える。可換演算としては加算や乗算などがある。例
えば、2つの入力オペランドを持つ乗算テキストX=A
×Bは、X=B×Aというようにオペランドの位置を入
れ替えることができる。
If data used by all input operands in the intermediate text 51 cannot be assigned to registers already allocated to the data, and the operation of the intermediate text is a commutative operation. In this case, by swapping the position of each input operand,
It is checked whether a register already allocated to data used by at least one input operand in the intermediate text 51 cannot be allocated as it is, and if it can be allocated, the position of each input operand is replaced. Commutation operations include addition and multiplication. For example, a multiplication text X = A with two input operands
For × B, the positions of the operands can be switched such that X = B × A.

【0051】また、中間テキスト51内のすべての入力
オペランドが使用するデータに対してそれらのデータに
既に割り当てられているレジスタを割り当てることがで
きず、かつ該中間テキストの演算が可換演算でない場合
は、演算の種類を変更することで各入力オペランドの位
置を入れ替えることができるか調べる。各入力オペラン
ドの位置を入れ替えることができるならば、演算の種類
を変更して各入力オペランドの位置を入れ替える。例え
ば、2つの入力オペランドのデータを比較するテキスト
X=A>Bは、X=B<Aというように演算を変更する
ことによって該2つの入力オペランドの位置を入れ替え
ることができる。
When the registers already allocated to the data used by all the input operands in the intermediate text 51 cannot be allocated and the operation of the intermediate text is not a commutative operation Checks whether the position of each input operand can be switched by changing the type of operation. If the position of each input operand can be replaced, the type of operation is changed and the position of each input operand is replaced. For example, in the text X = A> B that compares data of two input operands, the positions of the two input operands can be switched by changing the operation such that X = B <A.

【0052】レジスタ選択部23は、オペランド位置入
れ替え処理部22により中間テキスト51の変換が行わ
れた後、該中間テキスト51内の各入力オペランドに対
して使用するレジスタを決定し、その情報を該中間テキ
スト51に付加する。また、該中間テキスト51内の少
なくとも一つの入力オペランドが使用するデータがレジ
スタ管理テーブル21に登録されていて、該データに割
り当てられているレジスタをそのまま該データに割り当
てることができる場合には該レジスタをそのまま割り当
て、その情報を該中間テキスト51に付加する。中間テ
キスト51内のすべての入力オペランドが使用するデー
タに未だレジスタが割り当てられていない場合、および
オペランド位置入れ替え処理部22による中間テキスト
51の変換処理においては、レジスタ管理テーブル21
に登録されているレジスタをそのまま割り当てることが
できなかった場合には、中間テキスト51内の各入力オ
ペランドが使用するデータに対して、データが割り当て
られていない空きレジスタや、最も利用回数の少ないレ
ジスタ等を選択して割り当て、レジスタ管理テーブル2
1を更新する。
After the conversion of the intermediate text 51 by the operand replacement unit 22, the register selection unit 23 determines a register to be used for each input operand in the intermediate text 51, and stores the information in the register. It is added to the intermediate text 51. If data used by at least one input operand in the intermediate text 51 is registered in the register management table 21 and the register assigned to the data can be assigned to the data as it is, Is assigned as it is, and the information is added to the intermediate text 51. In the case where no register has been assigned to the data used by all the input operands in the intermediate text 51 and the conversion processing of the intermediate text 51 by the operand position replacement processing unit 22, the register management table 21 is used.
If the register registered in the intermediate text 51 cannot be allocated as it is, the data used by each input operand in the intermediate text 51 is a free register to which no data is allocated, or a register which is used least frequently. Etc. and assigning them, register management table 2
Update 1

【0053】レジスタ移送テキスト生成処理部24は、
必要に応じてデータを所定のレジスタから他のレジスタ
またはメモリに移送したり、メモリからレジスタに移送
したりするためのテキストを生成し、必要な位置に挿入
する。例えば、レジスタ選択部23が中間テキスト51
内の各入力オペランドが使用するデータに対してレジス
タ管理テーブル21に登録されているレジスタをそのま
ま割り当てることができなかった場合には、該レジスタ
管理テーブル21に登録されているレジスタに格納され
ているデータを、該中間テキスト51内の各入力オペラ
ンドに割り当てる新しいレジスタへ移送するテキストを
生成し、該中間テキスト51の前の位置に挿入する。
The register transfer text generation processing unit 24
Generates text for transferring data from a given register to another register or memory as needed, or from memory to register, and inserts it in the required location. For example, the register selection unit 23 determines that the intermediate text 51
When the register registered in the register management table 21 cannot be directly assigned to the data used by each input operand in the register operand, the data stored in the register registered in the register management table 21 is stored. Generate text to be transferred to a new register that assigns data to each input operand in the intermediate text 51 and insert it at a position before the intermediate text 51.

【0054】また、レジスタ移送テキスト生成処理部2
4は、中間テキスト51の出力オペランドが使用するデ
ータに対してレジスタを割り当てる処理において、該中
間テキスト51の出力オペランドが使用するデータが該
中間テキスト51よりも後方の中間テキスト内において
入力オペランドとして使用されている場合で、かつ該出
力オペランドが使用するデータと該入力オペランドが使
用するデータとに異なるレジスタが割り当てられている
場合には、該出力オペランドに割り当てられたレジスタ
に格納されているデータを該入力オペランドに割り当て
られたレジスタに移送するテキストを生成し、該入力オ
ペランドを含む中間テキストの前の位置に挿入する。
The register transfer text generation processing unit 2
4 is a process for allocating a register to data used by an output operand of the intermediate text 51, wherein data used by an output operand of the intermediate text 51 is used as an input operand in an intermediate text behind the intermediate text 51. If different registers are assigned to the data used by the output operand and the data used by the input operand, the data stored in the register assigned to the output operand is Generate text to be transferred to the register assigned to the input operand and insert it at a location before the intermediate text containing the input operand.

【0055】次に、図1〜図9を参照して本実施の形態
の全体の動作について詳細に説明する。
Next, the overall operation of the present embodiment will be described in detail with reference to FIGS.

【0056】本実施の形態により生成される目的プログ
ラムが対象としている計算機は、その機械語の形式とし
て、入力オペランドの位置に応じて使用可能なレジスタ
が、計算機の有している全レジスタのうちの一部に制限
されているものである。例えば、2つのデータA、Bを
加算しその結果を別の変数データCに代入する加算テキ
スト C=A+B すなわち、2つの入力オペランド(オペランド1および
オペランド2)がそれぞれデータAおよびデータBを使
用し、出力オペランド(オペランド3)が変数Cを使用
する中間テキストがある場合に、入力データであるA、
Bが、オペランド1として使用されているかオペランド
2として使用されるかによって、割り当てられるレジス
タが偶数番号のレジスタになるか奇数番号のレジスタに
なるかが制限される計算機である。
The computer targeted by the target program generated by the present embodiment has, as a machine language form, a register that can be used in accordance with the position of an input operand among all the registers of the computer. Are limited to a part of For example, an addition text C = A + B that adds two data A and B and substitutes the result into another variable data C. That is, two input operands (operand 1 and operand 2) use data A and data B, respectively. , When there is an intermediate text whose output operand (operand 3) uses the variable C, the input data A,
This is a computer in which whether the allocated register is an even-numbered register or an odd-numbered register is restricted depending on whether B is used as operand 1 or operand 2.

【0057】レジスタ割り当ては2つのフェーズ、すな
わち、図2に示す入力オペランドへのレジスタ割当てと
図3に示す出力オペランドへのレジスタ割り当てとに分
けて行われる。
Register allocation is performed in two phases, namely, register allocation to input operands shown in FIG. 2 and register allocation to output operands shown in FIG.

【0058】まず、入力オペランドへのレジスタ割り当
てにおいては、中間テキスト生成処理部10により生成
された各中間テキスト51を実行順に読み出し、該中間
テキスト51の入力オペランドとして使用されているデ
ータ(変数や定数など)にレジスタを割り当てる(図
2、ステップ201)。レジスタが割り当てられたデー
タはレジスタ管理テーブル21に登録される(ステップ
202)。例えば、図1のレジスタ管理テーブル21
は、次に示すような中間テキスト51のレジスタ割り当
て状況を示している。
First, in allocating registers to input operands, each intermediate text 51 generated by the intermediate text generation processing unit 10 is read out in the order of execution, and data (variables and constants) used as input operands of the intermediate text 51 is read. , Etc.) (FIG. 2, step 201). The data to which the register is assigned is registered in the register management table 21 (Step 202). For example, the register management table 21 shown in FIG.
Indicates a register allocation status of the intermediate text 51 as follows.

【0059】X=A(R0)+B(R1) ここで、A、Bは入力オペランドとして使用されるデー
タであり、Xは出力オペランドの変数であり、括弧内の
R0、R1は各入力オペランドに割り当てられたレジス
タを示している。レジスタ管理テーブル21には、各デ
ータにレジスタが割り当てられるたびに情報が追加更新
される。また、この時点で、出力オペランドが使用する
データ(変数)がレジスタ管理テーブル21に登録され
ている場合には、該出力オペランドに割り当てられてい
るレジスタは無効(空きレジスタ)とする。
X = A (R0) + B (R1) Here, A and B are data used as input operands, X is a variable of an output operand, and R0 and R1 in parentheses are for each input operand. It shows the allocated registers. The information is additionally updated in the register management table 21 each time a register is assigned to each data. At this point, if the data (variable) used by the output operand is registered in the register management table 21, the register assigned to the output operand is invalid (empty register).

【0060】次に、オペランド位置入れ替え処理部22
は、中間テキスト51内の入力オペランドが使用するデ
ータに対してレジスタ管理テーブル21に登録されてい
るレジスタをそのまま割り当てることができるか調べる
(ステップ203、204)。中間テキスト51内の入
力オペランドが使用するデータに対してレジスタ管理テ
ーブル21に登録されているレジスタをそのまま割り当
てることができない場合には、該中間テキスト51の演
算が可換演算であれば、入力オペランドの位置を交換す
ることにより割り当てることができるレジスタがないか
調べる(ステップ205、206)。割り当てることが
できるレジスタがあれば、該中間テキスト51内の入力
オペランドの位置を交換する(ステップ207)。該中
間テキスト51の演算が可換演算でない場合、該演算の
種類を変更することで入力オペランドの位置を交換で
き、かつレジスタ管理テーブル21に登録されているレ
ジスタを割り当てることができる場合には(ステップ2
08)、該演算の種類を変更して入力オペランドの位置
を交換する(ステップ209)。
Next, the operand position interchange processing unit 22
Checks whether the register registered in the register management table 21 can be directly assigned to the data used by the input operand in the intermediate text 51 (steps 203 and 204). When the register registered in the register management table 21 cannot be directly assigned to the data used by the input operand in the intermediate text 51, if the operation of the intermediate text 51 is a commutative operation, the input operand It is checked whether there is a register that can be assigned by exchanging the position of (steps 205 and 206). If there is a register that can be assigned, the position of the input operand in the intermediate text 51 is exchanged (step 207). If the operation of the intermediate text 51 is not a commutative operation, the position of the input operand can be exchanged by changing the type of the operation, and if the register registered in the register management table 21 can be assigned ( Step 2
08), the type of the operation is changed and the position of the input operand is exchanged (step 209).

【0061】次に、レジスタ選択部23が、中間テキス
ト51に割り当てることができたレジスタを該中間テキ
スト51に付加する(ステップ210)。また、レジス
タを割り当てることができなかった中間テキスト51に
対しては、適当なレジスタを選択して該中間テキスト5
1に割り当て、レジスタ管理テーブル21を更新する
(ステップ211)。
Next, the register selection unit 23 adds the register that has been assigned to the intermediate text 51 to the intermediate text 51 (step 210). Further, for the intermediate text 51 to which no register can be assigned, an appropriate register is selected and the intermediate text 5 is selected.
1 and updates the register management table 21 (step 211).

【0062】最後に、レジスタ移送テキスト生成処理部
24が、レジスタを割り当てることができなかった中間
テキスト51に対し、データをレジスタ間で移送するた
めのテキストを生成し、該中間テキスト51の前の位置
に挿入する(ステップ212)。
Finally, the register transfer text generation processing section 24 generates a text for transferring data between the registers for the intermediate text 51 to which the register could not be allocated. Insert at the position (step 212).

【0063】次に、出力オペランドが使用するデータに
対するレジスタの割り当てにおいては、各中間テキスト
を実行順序とは逆方向に取り出し、テキストの出力オペ
ランドとして使用されているデータにレジスタを順に割
り当てる(図3、ステップ301)。このとき、入力オ
ペランドが使用するデータに対するレジスタの割り当て
状況が登録されているレジスタ管理テーブル21を参照
して、出力オペランドが使用するデータに対してレジス
タを割り当てる。また、出力オペランドが使用している
データがレジスタ管理テーブル21に登録されていた場
合は、該データをレジスタ管理テーブル21から削除し
無効とする。
Next, in allocating registers to the data used by the output operands, each intermediate text is extracted in a direction opposite to the execution order, and the registers are sequentially allocated to the data used as the output operands of the text (FIG. 3). , Step 301). At this time, a register is allocated to data used by the output operand with reference to the register management table 21 in which the register allocation status for data used by the input operand is registered. If the data used by the output operand is registered in the register management table 21, the data is deleted from the register management table 21 and invalidated.

【0064】出力オペランドが使用するデータがレジス
タ管理テーブル21に登録されている場合には、該デー
タに割り当てられているレジスタをそのまま選択する
(ステップ302、303)。該データがレジスタ管理
テーブル21に登録されていない場合には、他の適当な
レジスタ(空きレジスタや参照回数の少ないレジスタな
ど)を選択する(ステップ302、304)。出力オペ
ランドに対して適当なレジスタを選択した場合、中間テ
キストを実行順序とは逆方向に取り出した過程で、後方
のテキストにおいて該データが入力オペランドとして使
用されることが分かっていれば、該入力オペランドにお
いて該データを使用するため、レジスタ移送テキスト生
成処理部24により、該出力オペランドに割り当てたレ
ジスタから当該入力オペランドに割り当てられているレ
ジスタあるいはメモリへの移送テキストを生成し、該入
力オペランドを含む中間テキストの前の位置に挿入する
(ステップ305)。
If the data used by the output operand is registered in the register management table 21, the register assigned to the data is directly selected (steps 302 and 303). If the data is not registered in the register management table 21, another appropriate register (such as an empty register or a register with a small number of references) is selected (steps 302 and 304). When an appropriate register is selected for the output operand, if it is known that the data is used as the input operand in the subsequent text in the process of extracting the intermediate text in the direction opposite to the execution order, In order to use the data in the operand, the register transfer text generation processing unit 24 generates a transfer text from the register assigned to the output operand to the register or memory assigned to the input operand and includes the input operand. It is inserted at the position before the intermediate text (step 305).

【0065】次に、具体的なテキストを用いて本実施例
の動作例について説明する。
Next, an operation example of this embodiment will be described using specific text.

【0066】入力オペランドのオペランド1が使用する
データに対して偶数レジスタ(R0、R2、R4、…)
が固定的に割り当てられ、オペランド2が使用するデー
タに対して奇数レジスタ(R1、R3、R5、…)が固
定的に割り当てられ、出力オペランドが使用するデータ
には任意のレジスタが割り当てられる計算機を仮定す
る。
An even-numbered register (R0, R2, R4,...) For the data used by operand 1 of the input operand
Are fixedly assigned, odd registers (R1, R3, R5,...) Are fixedly assigned to data used by operand 2, and arbitrary registers are assigned to data used by output operands. Assume.

【0067】図4は、中間テキスト生成処理部10によ
り生成されたレジスタ割り当て対象の中間テキスト列の
例であり、各命令テキストは2つの入力オペランドと1
つの出力オペランドを有する減算、および乗算テキスト
である。括弧内の符号は、選択されたレジスタを示す。
FIG. 4 shows an example of an intermediate text string to be assigned to a register generated by the intermediate text generation processing unit 10. Each instruction text has two input operands and one input operand.
Subtraction and multiplication text with two output operands. The sign in parentheses indicates the selected register.

【0068】すなわち、減算テキスト(1)の入力オペ
ランドであるオペランド1、2が使用するデータには、
それぞれレジスタR0、R1が割り当てられていること
を示している。可換演算である乗算テキスト(2)の入
力オペランドであるオペランド1、2が使用するデータ
A、Bは、減算テキスト(1)でデータA、Bに割当ら
れたレジスタR0、R1をそのまま利用するために、オ
ペランド位置入れ替え処理部22により位置を入れ替え
られる。
That is, data used by operands 1 and 2 which are input operands of the subtraction text (1) include:
This indicates that the registers R0 and R1 are allocated, respectively. The data A and B used by the operands 1 and 2 as the input operands of the multiplication text (2), which is a commutative operation, use the registers R0 and R1 assigned to the data A and B in the subtraction text (1) as they are. Therefore, the positions are interchanged by the operand position interchange processing unit 22.

【0069】図5は、図4の中間テキストに対して、オ
ペランド位置入れ替え処理部22の処理を行い、レジス
タを割り当てた後の中間テキスト列である。図6に示す
従来の技術によって生成された中間テキスト列と比較す
ると、使用するレジスタ数および中間テキスト数が少な
く、効率の良い目的プログラムが生成されている。
FIG. 5 shows an intermediate text string after the processing of the operand position interchange processing unit 22 has been performed on the intermediate text of FIG. 4 and registers have been allocated. Compared with the intermediate text string generated by the conventional technique shown in FIG. 6, the number of registers and the number of intermediate texts used are small, and an efficient target program is generated.

【0070】また、図7は、中間テキスト生成処理部1
0により生成されたレジスタ割り当て対象の中間テキス
ト列の例であり、各命令テキストは2つの入力オペラン
ドと1つの出力オペランドを有する減算、および比較テ
キストである。括弧内の符号は、選択されたレジスタを
示す。
FIG. 7 shows an intermediate text generation processing unit 1
Fig. 9 is an example of an intermediate text string to be assigned to a register generated by 0, where each instruction text is a subtraction and comparison text having two input operands and one output operand. The sign in parentheses indicates the selected register.

【0071】すなわち、減算テキスト(1)の入力オペ
ランドであるオペランド1、2が使用するデータには、
それぞれレジスタR0、R1が割り当てられていること
を示している。可換演算である比較テキスト(3)の入
力オペランドであるオペランド1が使用するデータB
は、減算テキスト(1)でデータA、Bに割当られたレ
ジスタR0、R1をそのまま利用するために、オペラン
ド位置入れ替え処理部22により演算を変更され、さら
にオペランド1と2との位置が入れ替えられる。
That is, data used by operands 1 and 2 which are input operands of the subtraction text (1) include:
This indicates that the registers R0 and R1 are allocated, respectively. Data B used by operand 1 which is an input operand of comparison text (3) which is a commutative operation
In order to use the registers R0 and R1 assigned to the data A and B in the subtraction text (1) as they are, the operation is changed by the operand position change processing unit 22, and the positions of the operands 1 and 2 are further changed. .

【0072】出力オペランドのレジスタは、入力オペラ
ンドへのレジスタ割り当て後に決定される。例えば、減
算テキスト(1)の出力オペランドが使用するデータT
1のレジスタは、レジスタ管理テーブル21を参照する
と、後続のテキスト(比較テキスト(3))でR2が割
り当てられていることがわかる。したがって、減算テキ
スト(1)で算出したデータT1を再利用できるよう
に、該データT1にはレジスタR2が割り当てられる。
The register of the output operand is determined after the register is assigned to the input operand. For example, the data T used by the output operand of the subtraction text (1)
Referring to the register management table 21, it can be seen that the register 1 is assigned R2 in the following text (comparison text (3)). Therefore, a register R2 is allocated to the data T1 so that the data T1 calculated by the subtraction text (1) can be reused.

【0073】図8は、図7の中間テキストに対して、オ
ペランド位置入れ替え処理部22の処理を行い、レジス
タを割り当てた後の中間テキスト列である。図9に示す
従来の技術によって生成された中間テキスト列と比較す
ると、使用するレジスタ数および中間テキスト数が少な
く、効率の良い目的プログラムが生成されている。
FIG. 8 shows an intermediate text string after the processing of the operand position replacement processing unit 22 has been performed on the intermediate text of FIG. 7 and registers have been allocated. Compared with the intermediate text string generated by the conventional technique shown in FIG. 9, the number of registers and the number of intermediate texts used are small, and an efficient target program is generated.

【0074】次に、本発明の第2の実施の形態について
図面を参照して詳細に説明する。
Next, a second embodiment of the present invention will be described in detail with reference to the drawings.

【0075】図1を参照すると、本発明の第2の実施の
形態は、第1の実施の形態に加えて、計算機100に第
1の実施の形態に係る処理を実行させるためのプログラ
ムを記録する磁気ディスク、半導体メモリ等の記録媒体
101を備える。
Referring to FIG. 1, in the second embodiment of the present invention, in addition to the first embodiment, a program for causing computer 100 to execute the processing according to the first embodiment is recorded. A recording medium 101 such as a magnetic disk and a semiconductor memory.

【0076】該プログラムは、記録媒体101から計算
機100に読み込まれ、計算機100の動作を制御す
る。計算機100は、該プログラムの制御により、第1
の実施の形態における中間テキスト生成処理部10と、
レジスタ割り当て部20と、オペランド位置交換処理部
22と、レジスタ選択部23と、移送テキスト生成処理
部24と、目的プログラム生成処理部30と同一の処理
を実行する。
The program is read from the recording medium 101 into the computer 100 and controls the operation of the computer 100. The computer 100 controls the first program under the control of the program.
An intermediate text generation processing unit 10 according to the embodiment;
The same processes as those of the register allocating unit 20, the operand position exchanging unit 22, the register selecting unit 23, the transfer text generating unit 24, and the target program generating unit 30 are executed.

【0077】以上により、第2の実施の形態の処理が完
了する。
Thus, the processing of the second embodiment is completed.

【0078】[0078]

【発明の効果】以上説明したように、本発明は、中間テ
キスト内における複数の入力オペランドのそれぞれが使
用するデータに割り当てるレジスタの種類が、該中間テ
キスト内における各オペランドの位置に応じて制限され
る計算機において、レジスタを効率良く利用し、レジス
タ移送命令を可能な限り使用しない中間テキストを生成
し、その結果として実行効率の良い目的プログラムを生
成することができる効果を有している。
As described above, according to the present invention, the types of registers assigned to data used by each of a plurality of input operands in an intermediate text are limited according to the position of each operand in the intermediate text. In such a computer, it is possible to efficiently use registers and generate an intermediate text that does not use register transfer instructions as much as possible. As a result, it is possible to generate a target program with high execution efficiency.

【図面の簡単な説明】[Brief description of the drawings]

【図1】図1は、本発明の実施の形態を示すブロック図
である。
FIG. 1 is a block diagram showing an embodiment of the present invention.

【図2】図2は、本発明の実施の形態における入力オペ
ランドに対するレジスタ割り当て処理の動作を示すフロ
ーチャートである。
FIG. 2 is a flowchart illustrating an operation of register allocation processing for an input operand according to the embodiment of the present invention.

【図3】図3は、本発明の実施の形態における出力オペ
ランドに対するレジスタ割り当て処理の動作を示すフロ
ーチャートである。
FIG. 3 is a flowchart showing an operation of register allocation processing for an output operand according to the embodiment of the present invention.

【図4】図4は、本発明の実施の形態におけるレジスタ
割り当て処理の対象である中間テキスト列の例を示す図
である。
FIG. 4 is a diagram illustrating an example of an intermediate text string to be subjected to register allocation processing according to the embodiment of the present invention.

【図5】図5は、図4に示す中間テキスト列に対して本
発明によりレジスタ割り当て処理を行った場合の中間テ
キスト列の例を示す図である。
FIG. 5 is a diagram illustrating an example of an intermediate text string when register allocation processing is performed on the intermediate text string illustrated in FIG. 4 according to the present invention;

【図6】図6は、図4に示す中間テキスト列に対して従
来の技術によりレジスタ割り当て処理を行った場合の中
間テキスト列の例を示す図である。
FIG. 6 is a diagram illustrating an example of an intermediate text string when register allocation processing is performed on the intermediate text string illustrated in FIG. 4 by a conventional technique.

【図7】図7は、本発明の実施の形態におけるレジスタ
割り当て処理の対象である中間テキスト列の例を示す図
である。
FIG. 7 is a diagram illustrating an example of an intermediate text string to be subjected to register allocation processing according to the embodiment of the present invention.

【図8】図8は、図7に示す中間テキスト列に対して本
発明によりレジスタ割り当て処理を行った場合の中間テ
キスト列の例を示す図である。
FIG. 8 is a diagram showing an example of an intermediate text string when register allocation processing is performed on the intermediate text string shown in FIG. 7 according to the present invention;

【図9】図9は、図7に示す中間テキスト列に対して従
来の技術によりレジスタ割り当て処理を行った場合の中
間テキスト列の例を示す図である。
FIG. 9 is a diagram illustrating an example of an intermediate text string when register allocation processing is performed on the intermediate text string illustrated in FIG. 7 by a conventional technique;

【符号の説明】[Explanation of symbols]

10 中間テキスト生成処理部 20 レジスタ割り当て部 21 レジスタ管理テーブル 22 オペランド位置交換処理部 23 レジスタ選択部 24 移送テキスト生成処理部 30 目的プログラム生成処理部 40 記憶装置 41 原始プログラム 50 記憶装置 51 中間テキスト 60 記憶装置 61 目的プログラム 100 計算機 101 記録媒体 REFERENCE SIGNS LIST 10 intermediate text generation processing unit 20 register allocation unit 21 register management table 22 operand position exchange processing unit 23 register selection unit 24 transfer text generation processing unit 30 target program generation processing unit 40 storage device 41 source program 50 storage device 51 intermediate text 60 storage Apparatus 61 Objective program 100 Computer 101 Recording medium

───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 ──────────────────────────────────────────────────続 き Continued on front page (58) Field surveyed (Int.Cl. 7 , DB name) G06F 9/45

Claims (9)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】 原始プログラムを変換して生成された複1. A program generated by converting a source program.
数の中間テキストのそれぞれに含まれる、複数の入力オMultiple input texts in each of the intermediate texts
ペランドのそれぞれにおいて使用されるデータを格納すStores data used in each of the perands
るためのレジスタの種類が、各中間テキスト内におけるRegister type for each intermediate text
各入力オペランドの位置に応じて限定される計算機におComputers that are limited according to the position of each input operand
いて、And 前記原始プログラムを変換して前記複数の中間テキストConverting the source program into the plurality of intermediate texts;
を生成する中間テキスト生成処理部と、An intermediate text generation processing unit that generates 各中間テキスト内の各入力オペランドにおいて使用されUsed for each input operand in each intermediate text
るデータと該データに割り当てるレジスタとの対応関係Between the data to be assigned and the registers assigned to the data
の情報を格納するレジスタ管理テーブルと、Register management table for storing information of 各中間テキストに含まれる演算の種類を変更すべきか判Determine whether the type of operation included in each intermediate text should be changed
断し、変更すべきと判断した場合には該演算を変更するReject, and if it is determined that it should be changed, change the operation
オペランド位置交換部と、An operand position exchange unit; 前記オペランド位置交換部の処理完了後、各中間テキスAfter completion of the processing of the operand position exchange unit, each intermediate text
ト内の各入力オペランドにおいて使用されるデータに対Data used in each input operand in the
してレジスタを割り当て、該レジスタの情報を該中間テAnd allocate the register, and store the information of the register in the intermediate text.
キストに付加するとともに、該データと該レジスタとのTo the data and the register.
対応関係の情報を前記レジスタ管理テーブルに格納するStoring correspondence information in the register management table
レジスタ選択部と、A register selection unit; 前記レジスタ選択部によりレジスタの情報を付加されたRegister information is added by the register selector
複数の中間テキストを基にして目的プログラムを生成すGenerate target program based on multiple intermediate texts
る目的プログラム生成処理部とを備えたことを特徴とすAnd a target program generation processing unit.
るコンパイル装置。Compilation device.
【請求項2】 前記オペランド位置交換部は、2. The operand position exchanging section, 前記複数の中間テキストを実行順に読み込み、Reading the plurality of intermediate texts in the order of execution, 順次読み込んだ中間テキスト内の複数の入力オペランドMultiple input operands in the intermediate text read sequentially
のいずれかにおいて使用されるデータに対して既に割りAlready assigned to data used in any of
当てられているレジスタが存在するか否かを前記レジスThe register determines whether the assigned register exists.
タ管理テーブルを参照して判断し、Judgment with reference to the data management table, 該データに対して既に割り当てられているレジスタが存There is a register already assigned to the data.
在すると判断した場合には、該中間テキスト内の該入力If it is determined that the input exists in the intermediate text,
オペランドの位置において該レジスタを利用できるか判Determine if the register is available at the operand location
断し、Refuse, 該入力オペランドの位置では該レジスタを利用できないThe register cannot be used at the position of the input operand
と判断した場合には、該中間テキストに含まれる演算のIf it is determined that the
種類を変更して、かつ該中間テキストに含まれる複数のChange the type and include multiple
入力オペランドの位置を交換することにより該レジスタBy exchanging the position of the input operand,
を利用できるよYou can use うになるか否かを判断し、Judge whether or not to grow, 該中間テキストに含まれる演算の種類を変更して、かつChange the type of operation included in the intermediate text, and
該中間テキストに含まれる該複数の入力オペランドの位Positions of the plurality of input operands included in the intermediate text
置を交換することにより該レジスタを利用できるようにThe register can be used by replacing the
なると判断した場合には、該中間テキストに含まれる演If it is determined that the performance will be
算の種類を変更し、かつ該中間テキストに含まれる該複Change the type of arithmetic and the complex text contained in the intermediate text.
数の入力オペランドの位置を交換することを特徴とするCharacterized by exchanging the positions of numeric input operands
請求項1記載のコンパイル装置。The compiling device according to claim 1.
【請求項3】 前記レジスタ選択部は、3. The register selector according to claim 1, wherein: 前記オペランド位置交換部が、順次読み込んだ中間テキThe intermediate text sequentially read by the operand position exchange unit.
ストに含まれる演算の種類を変更し、かつ該中間テキスChange the type of operation included in the list, and
ト内の複数の入力オペランドの位置を交換した場合、該If the positions of multiple input operands in a
複数の入力オペランドのいずれかにおいて使用されるデData used in any of the multiple input operands
ータに対して既に割り当てられているレジスタをそのまRegisters already assigned to the data
ま該データに対して割り当て、該レジスタの情報を該中The data is allocated to the data, and the information of the register is
間テキストに付加するとともに、該データと該レジスタBetween the data and the register
との対応関係の情報を前記レジスタ管理テーブルに格納Stores information on the correspondence relationship with the register management table
することを特徴とする請求項2記載のコンパイル装置。3. The compiling device according to claim 2, wherein
【請求項4】 原始プログラムを変換して生成された複4. A program generated by converting a source program.
数の中間テキストのそれぞれに含まれる、複数の入力オMultiple input texts in each of the intermediate texts
ペランドのそれぞれにおいて使用されるデータを格納すStores data used in each of the perands
るためのレジスタの種類が、各中間テキスト内におけるRegister type for each intermediate text
各入力オペランドの位置に応じて限定される計算機におComputers that are limited according to the position of each input operand
いて、And 前記原始プログラムを変換して前記複数の中間テキストConverting the source program into the plurality of intermediate texts;
を生成する中間テキスト生成処理ステップと、An intermediate text generation processing step for generating 各中間テキストに含まれる演算の種類を変更すべきか判Determine whether the type of operation included in each intermediate text should be changed
断し、変更すべきと判断した場合には該演算を変更するReject, and if it is determined that it should be changed, change the operation
オペランド位置交換ステップと、An operand position exchange step; 前記オペランド位置交換ステップにおける処理完了後、After completion of the processing in the operand position exchange step,
各中間テキスト内の各入力オペランドにおいて使用されUsed for each input operand in each intermediate text
るデータに対してレジスタを割り当て、該レジスタの情Registers are assigned to the data
報を該中間テキストに付加するとともに、該データと該Information to the intermediate text and the data and the
レジスタとの対応関係の情報をレジスタ管理テーブルにRegister correspondence information in register management table
格納するレジスタ選択ステップと、Selecting a register to be stored; 前記レジスタ選択ステップにおいてレジスタの情報を付In the register selection step, register information is added.
加された複数の中間テキストを基にして目的プログラムTarget program based on the added intermediate texts
を生成する目的プログラム生成処理ステップとを含むこAnd a target program generation processing step for generating
とを特徴とするコンパイル方法。And a compiling method characterized by the following.
【請求項5】 前記オペランド位置交換ステップは、5. The operand position exchanging step, 前記複数の中間テキストを実行順に読み込み、順次読みReading the plurality of intermediate texts in the order of execution, sequentially reading
込んだ中間テキスト内の複数の入力オペランドのいずれAny of several input operands in the embedded intermediate text
かにおいて使用されるデータに対して既に割り当てられAlready allocated for the data used in
ているレジスタが存在するか否かを前記レジスタ管理テThe register management data is used to determine whether a register is present.
ーブルを参照して判断し、Table, 該データに対して既に割り当てられているレジスタが存There is a register already assigned to the data.
在すると判断した場合には、該中間テキスト内の該入力If it is determined that the input exists in the intermediate text,
オペランドの位置において該レジスタを利用できるか判Determine if the register is available at the operand location
断し、Refuse, 該入力オペランドの位置では該レジスタを利用できないThe register cannot be used at the position of the input operand
と判断した場合には、該中間テキストに含まれる演算のIf it is determined that the calculation contained in the intermediate text
種類を変更して、かつ該中間テキストに含まれる複数のChange the type and include multiple
入力オペランドの位置を交換することにより該レジスタBy exchanging the position of the input operand,
を利用できるようになるか否かを判断し、Determine whether or not will be available, 該中間テキストに含まれる演算の種類を変更して、かつChange the type of operation included in the intermediate text, and
該中間テキストに含まれる該複数の入力オペランドの位Positions of the plurality of input operands included in the intermediate text
置を交換することにより該レジスタを利用できるようにThe register can be used by replacing the
なると判断した場合には、該中間テキストに含まれる演If it is determined that the performance will be
算の種類を変更し、かつ該中間テキストに含まれる該複Change the type of arithmetic and the complex text contained in the intermediate text.
数の入力オペランドの位置を交換することを特徴とするCharacterized by exchanging the positions of numeric input operands
請求項4記載のコンパイル方法。The compile method according to claim 4.
【請求項6】 前記レジスタ選択ステップは、6. The register selecting step, 前記オペランド位置交換ステップにおいて、順次読み込In the operand position exchange step, sequentially read
んだ中間テキストに含まれる演算の種類を変更し、かつChange the type of operation contained in the intermediate text, and
該中間テキスト内の複数の入力オペランドの位置を交換Swap the positions of multiple input operands in the intermediate text
した場合、該複数の入力オペランドのいずれかにおいて, If any of the plurality of input operands
使用されるデータに対して既に割り当てられているレジRegisters already allocated for the data used
スタをそのまま該データに対して割り当て、該レジスタRegister is assigned to the data as it is,
の情報を該中間テキストに付加するとともに、該データInformation to the intermediate text and the data
と該レジスタとの対応関係の情報を前記レジスタ管理テAnd information on the correspondence between the register and the register.
ーブルに格納することを特徴とする請求項5記載のコン6. The component according to claim 5, wherein the
パイル方法。Pile method.
【請求項7】 原始プログラムを変換して生成された複7. A program generated by converting a source program.
数の中間テキストのそれぞれに含まれる、複数の入力オMultiple input texts in each of the intermediate texts
ペランドのそれぞれにおいて使用されるデータを格納すStores data used in each of the perands
るためのレジスタの種類が、各中間テキスト内におけるRegister type for each intermediate text
各入力オペランドの位置に応じて限定される計算機におComputers that are limited according to the position of each input operand
いて、And 前記原始プログラムを変換して前記複数の中間テキストConverting the source program into the plurality of intermediate texts;
を生成する中間テキスト生成処理と、Intermediate text generation processing for generating 各中間テキストに含まれる演算の種類を変更すべきか判Determine whether the type of operation included in each intermediate text should be changed
断し、変更すべきと判断した場合には該演算を変更するReject, and if it is determined that it should be changed, change the operation
オペランド位置交換処理と、Operand position exchange processing; 前記オペランド位置交換処理完了後、各中間テキスト内After completion of the operand position exchange processing,
の各入力オペランドにおいて使用されるデータに対してFor the data used in each input operand of
レジスタを割り当て、該レジスタの情報を該中間テキスAllocates a register, and stores information of the register in the intermediate text.
トに付加するとともに、該データと該レジスタとの対応And the correspondence between the data and the register.
関係の情報をレジスタ管理テーブルに格納するレジスタRegister that stores relation information in the register management table
選択処理と、Selection process, 前記レジスタ選択処理においてレジスタの情報を付加さRegister information is added in the register selection process.
れた複数の中間テキストを基にして目的プログラムを生Target programs based on multiple intermediate texts
成する目的プログラム生成処理処理とを前記計算機に行The target program generation processing to be executed is sent to the computer.
わせるプログラムを記録したことを特徴とする記録媒Recording medium characterized by recording a program
体。body.
【請求項8】 前記オペランド位置交換処理は、8. The operand position exchange process according to claim 1, 前記複数の中間テキストを実行順に読み込み、Reading the plurality of intermediate texts in the order of execution, 順次読み込んだ中間テキスト内の複数の入力オペランドMultiple input operands in the intermediate text read sequentially
のいずれかにおいて使用されるデータに対して既に割りAlready assigned to data used in any of
当てられているレジスタが存在するか否かを前記レジスThe register determines whether the assigned register exists.
タ管理テーブルを参照して判断し、Judgment with reference to the data management table, 該データに対して既に割り当てられているレジスタが存There is a register already assigned to the data.
在すると判断した場合には、該中間テキスト内の該入力If it is determined that the input exists in the intermediate text,
オペランドの位置において該レジスタを利用できるか判Determine if the register is available at the operand location
断し、Refuse, 該入力オペランドの位置では該レジスタを利用できないThe register cannot be used at the position of the input operand
と判断した場合には、該中間テキストに含まれる演算のIf it is determined that the calculation contained in the intermediate text
種類を変更して、かつ該中間テキストに含まれる複数のChange the type and include multiple
入力オペランドの位置を交換することにより該レジスタBy exchanging the position of the input operand,
を利用できるようになるか否かを判断し、Determine whether or not will be available, 該中間テキストに含まれる演算の種類を変更して、かつChange the type of operation included in the intermediate text, and
該中間テキストに含まれる該複数の入力オペランドの位Positions of the plurality of input operands included in the intermediate text
置を交換することにより該レジスタを利用できるようにThe register can be used by replacing the
なると判断した場合には、該中間テキストに含まれる演If it is determined that the performance will be
算の種類を変更し、かつ該中間テキストに含まれる該複Change the type of arithmetic and the complex text contained in the intermediate text.
数の入力オペランドの位置を交換することを特徴とするCharacterized by exchanging the positions of numeric input operands
請求項7記載の記録媒体。The recording medium according to claim 7.
【請求項9】 前記レジスタ選択処理は、9. The register selecting process according to claim 9, 前記オペランド位置交換処理において、順次読み込んだIn the operand position exchange process,
中間テキストに含まれる演算の種類を変更し、かつ該中Change the type of operation included in the intermediate text, and
間テキスト内の複数の入力オペランドの位置を交換したSwapped the position of multiple input operands in text between
場合、該複数の入力オペランドのいずれかにおいて使用If used in any of the input operands
されるデータに対して既に割り当てられているレジスタRegisters already allocated for the data to be
をそのまま該データに対して割り当て、該レジスタの情Is directly assigned to the data, and the information in the register is
報を該中間テキストに付加するとともに、該データと該Information to the intermediate text and the data and the
レジスタとの対応関係の情報を前記レジスタ管理テーブThe information on the correspondence with the register is stored in the register management table.
ルに格納することを特徴とする請求項8記載の記録媒9. The recording medium according to claim 8, wherein the recording medium is stored in a storage medium.
体。body.
JP29436497A 1996-10-31 1997-10-27 Compiling device, compiling method, and recording medium recording compiler Expired - Fee Related JP3237591B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29436497A JP3237591B2 (en) 1996-10-31 1997-10-27 Compiling device, compiling method, and recording medium recording compiler

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP8-305918 1996-10-31
JP30591896 1996-10-31
JP29436497A JP3237591B2 (en) 1996-10-31 1997-10-27 Compiling device, compiling method, and recording medium recording compiler

Publications (2)

Publication Number Publication Date
JPH10187459A JPH10187459A (en) 1998-07-21
JP3237591B2 true JP3237591B2 (en) 2001-12-10

Family

ID=26559796

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29436497A Expired - Fee Related JP3237591B2 (en) 1996-10-31 1997-10-27 Compiling device, compiling method, and recording medium recording compiler

Country Status (1)

Country Link
JP (1) JP3237591B2 (en)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
沖電気研究開発,1990年1月,第145号,第57巻第1号,p.83−86,特に,p.85

Also Published As

Publication number Publication date
JPH10187459A (en) 1998-07-21

Similar Documents

Publication Publication Date Title
JP2006509306A (en) Cell engine for cross-referencing data processing systems to related applications
US6148439A (en) Nested loop data prefetching using inner loop splitting and next outer loop referencing
JP3606561B2 (en) Method, system, program, and data structure for converting first bit architecture instructions to second bit architecture instructions
JP4026940B2 (en) Program converter
US20090164773A1 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
Smith et al. SYMBOL: A large experimental system exploring major hardware replacement of software
JPH09212369A (en) Storage area allocation device
JP3237591B2 (en) Compiling device, compiling method, and recording medium recording compiler
JP6953768B2 (en) Assistance device, program
JPH01118931A (en) Program conversion system
US6086632A (en) Register optimizing compiler using commutative operations
US7383544B2 (en) Compiler device, method, program and recording medium
Pratt The competence/performance dichotomy in programming preliminary report
JP2006506727A (en) VLIW with copy register file
JPH06214803A (en) Virtual space block arranging system
KR100912114B1 (en) A Memory Assignment Method for X-Y Data Transfer
WO2021161531A1 (en) Loop unrolling processor, method, and program
JPH05197565A (en) Constant area allocation processing method
JPH03135630A (en) Instruction scheduling system
JP3223530B2 (en) Data transfer instruction generation processing method
JPH0689187A (en) Inline expansion optimizing method
JPH06324882A (en) Compiler device
JP2004094581A (en) Compiler program equipped with parallel extended capability, its recording medium, compile method, and compile device
JP2809073B2 (en) Array memory allocation method
JPH01120624A (en) Address allocation system for program module

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20010904

LAPS Cancellation because of no payment of annual fees