JPS63104141A - Register fixing system - Google Patents

Register fixing system

Info

Publication number
JPS63104141A
JPS63104141A JP25056486A JP25056486A JPS63104141A JP S63104141 A JPS63104141 A JP S63104141A JP 25056486 A JP25056486 A JP 25056486A JP 25056486 A JP25056486 A JP 25056486A JP S63104141 A JPS63104141 A JP S63104141A
Authority
JP
Japan
Prior art keywords
saving
evacuation
code
temporary
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP25056486A
Other languages
Japanese (ja)
Inventor
Yoshimi Somazawa
杣澤 義美
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 JP25056486A priority Critical patent/JPS63104141A/en
Publication of JPS63104141A publication Critical patent/JPS63104141A/en
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

PURPOSE:To produce a proper object code at a high speed by using a saving subject common arithmetic result detecting means, a saving position deciding means, a tentative saving code generating means, a common arithmetic result storing register saving deciding means, and a tentative saving code processing means respectively. CONSTITUTION:A saving position deciding means 2 is started by a saving subject common arithmetic result detecting means 1 and then starts a tentative saving code generating means 3 to inform a saving subject TS and a decided saving position. A tentative saving code showing an object code for saving is produced at a saving position informed from the means 3 and inform to an optimizing means. At the same time, a common arithmetic result storing register saving deciding means 4 is started by a register allocating means and checks the tentative saving code and the using state of the corresponding register. Thus it is possible to produce a saving object code to be given to a main memory storing the common arithmetic result in the form of an optimum object code without deteriorating the processing speed.

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明はコンパイラのコード生成方式に関し、特に共通
演算の結果を特定レジスタに固定して参照するオブジェ
クトコード生成方式に関する。
DETAILED DESCRIPTION OF THE INVENTION (Field of Industrial Application) The present invention relates to a code generation method for a compiler, and more particularly to an object code generation method in which the results of a common operation are fixed in a specific register and referenced.

(従来の技術) 従来、コンパイラのオブジェクトコードの生成方式にお
いて、効率のよいオブジェクトコードを生成するために
、プログラム内の共通演算の結果を特定レジスタに格納
しておき、共通演算の結果の参照時には該当レジスタを
参照するようなオブジエクトコードを生成するものと仮
定する。
(Prior art) Conventionally, in the object code generation method of a compiler, in order to generate efficient object code, the results of common operations in a program are stored in a specific register, and when the results of common operations are referenced, Assume that an object code that refers to the relevant register is generated.

第4図は、斯かるオブジェクトコードの生成方式を示す
説明図である。第4図において、それぞれLはロード、
MULTは乗算、STはストア、SUBは減算、GRl
はレジスタ1を表わす。また、■によって示されている
厘紙プログラムイメージに対応スるオブジェクトイメー
ジでは、′ニーl+J’に対応する演算が省略されてい
て、■の’IXJ”の結果がレジスタGR1によって参
照されている。
FIG. 4 is an explanatory diagram showing such an object code generation method. In Figure 4, L is load,
MULT is multiplication, ST is store, SUB is subtraction, GRl
represents register 1. In addition, in the object image corresponding to the paper program image indicated by ■, the operation corresponding to 'N+J' is omitted, and the result of 'IXJ' in ■ is referred to by register GR1.

一方、別の演算を行うために、レジスタが必要となり、
有限のレジスタセットを有効に利用するために、共通演
算の結果を格納したレジスタを主記憶装置の内部に退避
するオブジェクトコードを生成することが必要な場合が
ある。
On the other hand, registers are required to perform other operations,
In order to effectively utilize a finite register set, it may be necessary to generate object code that saves registers storing the results of common operations into the main memory.

第5図は、このような場合に対する対処方式の実例を示
す説明図である。第5図において、“l−36J”は■
〜■の文において共通な演算である。し六がって、■〜
■の間で“工”と“J″の内容が変化しない限り、■の
’IXJ″の結果を格納したレジスタを■〜■の“I−
%J”の演算結果として参照することによって効率のよ
いオブジェクトコードを生成できる。
FIG. 5 is an explanatory diagram showing an example of a method for dealing with such a case. In Figure 5, “l-36J” is ■
This is a common operation in sentences ~■. After a while, ■~
As long as the contents of "J" and "J" do not change between ■, the register storing the result of 'IXJ' of ■
%J", efficient object code can be generated.

しかし、■と■との区間に対応するオブジェクトコード
の生成においては、多くのレジスタを使用することが要
求される。よって、”I+J”の結果を格納しであるレ
ジスタも使用しなければならない場合には、■の直後に
該当するレジスタを退避するオブジェクトコードを生成
するのが最良である。
However, in generating the object code corresponding to the interval between ■ and ■, it is required to use a large number of registers. Therefore, if a register that stores the result of "I+J" must also be used, it is best to generate an object code that saves the corresponding register immediately after ■.

第6図は、それぞれ第5図の■〜■に対応した命令中間
コード列を示し、スタック方式を示す説明図である。第
6図においては、共通演算の結果を参照している範囲に
対応する命令の中間コード列をスタックしておき、それ
をサーチして最適な退避用のオブジェクトコードを生成
する。第6図において、T1〜T4はそれぞれレジスタ
を示している。
FIG. 6 is an explanatory diagram showing instruction intermediate code strings corresponding to ① to ② in FIG. 5, respectively, and illustrating a stacking method. In FIG. 6, intermediate code strings of instructions corresponding to a range that refers to the result of a common operation are stacked and searched to generate an optimal object code for saving. In FIG. 6, T1 to T4 each indicate a register.

第7図は、退避優先方式を示す説明図である。FIG. 7 is an explanatory diagram showing the evacuation priority method.

共通演算の結果を格納したレジスタのうちで、退避の対
象となるレジスタTSは、すべて退避用のオブジェクト
コードを生成するのに使用される。
Among the registers storing the results of common operations, all registers TS to be saved are used to generate object codes for saving.

第7図においては、■の位置に“I+J”の結果を退避
するオブジェクトコードを無条件に生成する。
In FIG. 7, an object code that saves the result of "I+J" is unconditionally generated at the position (■).

(発明が解決しようとする問題点) 上述した従来のレジスタの固定方式において、スタック
方式では第1に中間語コード列のスタック可能範囲が有
限なために、最適なオブジェクトコードを生成できる範
囲が限定され、第2にスタックした中間語コード列の再
サーチが必要なため、処理速度が低くなるという欠点が
あシ、退避優先方式には必要なレジスタ数に比べてレジ
スタセットが十分であっても、退避用のオブジェクトコ
ードが生成されるために、冗長なオブジェクトコードが
生成されるという欠点がある。
(Problems to be Solved by the Invention) In the conventional register fixing method described above, in the stacking method, firstly, the range in which intermediate code strings can be stacked is limited, so the range in which optimal object code can be generated is limited. Second, it is necessary to re-search the stacked intermediate code string, which has the disadvantage of slowing down the processing speed. , since the object code for saving is generated, there is a drawback that redundant object code is generated.

本発明の目的は、共通演算の結果を格納したレジスタの
主記憶への退避用のオブジェクトコードを、最適な処理
構成で、最適なオブジェクトコードとして生成できるよ
うにすることによって上記欠点を除去し、高速に適切々
オブジェクトコードが生成されるように構成し念レジス
タの固定方式を提供することにある。
An object of the present invention is to eliminate the above-mentioned drawbacks by making it possible to generate an object code for saving a register storing the result of a common operation to main memory as an optimal object code with an optimal processing configuration. The object of the present invention is to provide a system for fixing registers so that object code can be generated quickly and appropriately.

(問題点を解決するための手段) 本発明によるレジスタの固定方式は退避対象共通演算結
果検出手段と、退避位置決定手段と、仮退避コード生成
手段と、共通演算結果格納レジスタ退避判定手段と、仮
退避コード処理手段とを具備し、コンパイラのオブジェ
クトコードを生成することができるように構成したもの
である。
(Means for Solving the Problems) The register fixing method according to the present invention includes a save target common operation result detection means, a save position determination means, a temporary save code generation means, a common operation result storage register save determination means, The system is equipped with temporary save code processing means and is configured to be able to generate object code for the compiler.

退避対象共通演算結果検出手段は、最適化手段によって
起動された共通演算の結果を一時的に格納するレジスタ
としての共通TSのうちで、プログラム内の実行分岐点
を越えて参照される共通の退避対象TSを検出するため
のものである。
The save target common operation result detection means detects a common save referenced beyond the execution branch point in the program among the common TSs as registers that temporarily store the results of the common operations started by the optimization means. This is for detecting a target TS.

退避位置決定手段は、退避対象共通演算結果検出手段に
より起動された退避対象TSを主記憶内へ退避するオブ
ジェクトコードを生成するプラグラムのうちで、最適な
位置を決定するためのものである。
The evacuation position determination means is for determining an optimal position in a program that generates an object code for evacuation of the evacuation target TS activated by the evacuation target common operation result detection means into the main memory.

仮退避コード生成手段は、退避位置決定手段により起動
された退避対象TSについての仮退避コードを退避位置
決定手段により決定された位置へ生成するためのもので
ある。
The temporary evacuation code generation means is for generating a temporary evacuation code for the evacuation target TS activated by the evacuation position determining means at the position determined by the evacuation position determining means.

共通演算結果格納レジスタ退避判定手段は、レジスタ割
当て手段により起動された退避対象TSを主記憶の内部
へ退避するか否かを判定し、判定結果を含む仮退避判定
情報を生成するためのものである。
The common operation result storage register save judgment means is for judging whether or not to save the save target TS activated by the register allocation means into the main memory, and to generate temporary save judgment information including the judgment result. be.

仮退避コード処理手段は、オブジェクトコード編集手段
により起動され、かつ、共通演算結果格納レジスタ退避
判定手段により生成された仮退避判定情報によって、退
避位置決定手段により生成された仮退避コードをオブジ
ェクトコードとして出力するか否かに関して処理を実行
するためのものである。
The temporary save code processing means is activated by the object code editing means and uses the temporary save judgment information generated by the common operation result storage register save judgment means to convert the temporary save code generated by the save position determining means into an object code. This is for executing processing regarding whether to output or not.

(実施例) 次に、本発明について図面を参照して説明する。(Example) Next, the present invention will be explained with reference to the drawings.

第1図は、本発明によるレジスタの固定方式を実現する
一実施例を示すブロック図である。
FIG. 1 is a block diagram showing an embodiment of the register fixing method according to the present invention.

第1図において本発明は退避対象共通演算結果検出手段
1と、退避位置決定手段2と、仮退避コード生成手段3
と、共通演算結果格納レジスタ退避判定手段4と、仮退
避コード処理手段5とによって構成される。
In FIG. 1, the present invention includes a save target common calculation result detection means 1, a save position determining means 2, and a temporary save code generating means 3.
, common operation result storage register save determination means 4, and temporary save code processing means 5.

通常、コンパイラのオブジェクトコードの生成処理は、
最適化手段によって最適なオブジェクトコードを生成す
る目的で、共通演算のまとめ等の中間語コード段階での
処理を行い、コード生成手段によって中間語コードから
オブジェクトコード列を生成し、レジスタ割当て手段に
よってレジスタの使用法を決定し、オブジェクトコード
編集手段によってオブジェクトコードユニットを編集す
る。
Normally, the compiler's object code generation process is
In order to generate an optimal object code by the optimization means, processing at the intermediate code stage such as summarizing common operations is performed, the code generation means generates an object code string from the intermediate code, and the register allocation means generates a register. The object code unit is edited by the object code editing means.

退避対象共通演算結果検出手段1は、共通TSが検出さ
れるたびに最適化手段から起動され、最適化手段から通
知される共通TSについて、広域にわたって参照されて
いるものであるか否かを調査する。読いて、退避対象共
通演算結果検出手段1は、プログラムの実行順序の流れ
が制御文を越えて参照されるものであるか否かを検出す
る。上記であれば、この共通TSを退避対象TSとして
退避位置決定手段2を起動して、上記起動を通知する。
The saving target common operation result detection means 1 is activated by the optimization means every time a common TS is detected, and investigates whether or not the common TS notified from the optimization means is referenced over a wide area. do. After reading, the saving target common operation result detecting means 1 detects whether or not the flow of the program execution order is referenced beyond the control statement. If the above is the case, the evacuation position determining means 2 is activated with this common TS as the evacuation target TS, and the activation is notified.

退避位置決定手段2は、退避対象共通演算結果検出手段
1から起動される。退避位置決定手段2から通知された
退避対象TSは主記憶の内部に退避されるが、退避のた
めのオブジェクトコードを生成する最も適切なプログラ
ム内での位置は、退避位置決定手段2によって決定され
る。
The evacuation position determination means 2 is activated by the evacuation target common calculation result detection means 1. The evacuation target TS notified by the evacuation position determining means 2 is saved inside the main memory, but the most appropriate position within the program for generating the object code for evacuation is determined by the evacuation position determining means 2. Ru.

そこで、退避位置決定手段2は仮退避コード生成手段3
を起動して、退避対象TSと、上記決定された退避位置
とを通知する。
Therefore, the evacuation position determining means 2 uses the temporary evacuation code generating means 3.
is activated to notify the evacuation target TS and the evacuation position determined above.

仮退避コード生成手段3は、退避位置決定手段2から起
動される。仮退避コード生成手段3から通知された退避
対象TSは主記憶内に退避されるが、退避のためのオブ
ジェクトコードを示す仮退避コードは、第2図に示すよ
うに仮退避コード生成手段3から通知された退避位置に
生成され、最適化手段に通知される。
The temporary evacuation code generation means 3 is activated by the evacuation position determination means 2. The evacuation target TS notified from the temporary evacuation code generation means 3 is saved in the main memory, but the temporary evacuation code indicating the object code for evacuation is sent from the temporary evacuation code generation means 3 as shown in FIG. It is generated at the notified evacuation position and is notified to the optimization means.

共通演算結果格納レジスタ退避判定手段4は、レジスタ
割当て手段から起動され、仮退避コード生成手段3によ
って生成された仮退避コードとレジスタの使用状態とが
通知され、仮退避コードと対応するレジスタの使用状態
とを調査する。当該レジスタが他の目的に使用されてい
るときには、該当仮退避フードに対して実際の退避用オ
ブジェクトコードを生成する旨を仮退避判定情報6上に
表示する。一方、当該レジスタが他の目的に使用されて
いないときには、該当仮退避コードを無効とする旨を仮
退避判定情報6に表示する。第3図は、上記動作を示す
説明図である。
The common operation result storage register save determination means 4 is activated by the register allocation means, is notified of the temporary save code generated by the temporary save code generation means 3 and the use status of the register, and determines the use of the register corresponding to the temporary save code. Investigate the condition. When the register is used for another purpose, the temporary evacuation determination information 6 indicates that an actual evacuation object code will be generated for the corresponding temporary evacuation hood. On the other hand, when the register is not used for other purposes, the temporary save determination information 6 indicates that the corresponding temporary save code is invalid. FIG. 3 is an explanatory diagram showing the above operation.

仮退避コード処理手段5は、オブジェクトコード編集手
段から起動される。仮退避コード処理手段5は仮退避コ
ード生成手段3によって生成された仮退避コードが通知
されると、仮退避コードと、対応する仮退避判定情報6
上の表示とにもとすいて、上記仮退避コードを無効とす
るか、あるいは仮退避コードと、対応するレジスタの主
記憶への退避用オブジェクトコードとを生成するかを処
理して、オブジェクトコード編集手段へその旨を通知す
る。
The temporary save code processing means 5 is activated by the object code editing means. When the temporary evacuation code processing means 5 is notified of the temporary evacuation code generated by the temporary evacuation code generating means 3, the temporary evacuation code processing means 5 stores the temporary evacuation code and the corresponding temporary evacuation determination information 6.
Based on the above display, the object code is generated by processing whether to invalidate the temporary save code or generate the temporary save code and object code for saving the corresponding register to the main memory. Notify the editing means to that effect.

以上の処理によって、共通演算の結果を格納するレジス
タの主記憶への退避用のオブジェクトコードを、処理速
度を損うことなく最適なオブジェクトコードとして生成
することができる。
Through the above processing, it is possible to generate an optimal object code for saving a register that stores the result of a common operation to the main memory without impairing the processing speed.

(発明の効果) 以上説明したように本発明は、共通演算の結果を格納し
たレジスタの主記憶への退避用のオブジェクトコードを
、最適な処理構成で、最適なオブジェクトコードとして
生成できるようにすることによって、効率のよいオブジ
ェクトコードを生成する目的で、共通演算の結果を特定
レジスタに格納し、そのレジスタを参照するオブジェク
トフードを生成する場合に効率のよい処理で、プログラ
ム全体にわたって有限なレジスタセットを効率よく使用
した、最適なオブジェクトコードを生成できるという効
果がある。
(Effects of the Invention) As explained above, the present invention makes it possible to generate an object code for saving a register storing the result of a common operation to main memory as an optimal object code using an optimal processing configuration. In order to generate efficient object code, the result of a common operation is stored in a specific register and an object food that references that register is generated. This has the effect of being able to generate optimal object code that uses the code efficiently.

【図面の簡単な説明】[Brief explanation of the drawing]

第1図は、本発明によるレジスタの固定方式の一実施例
を示すブロック図である。 第2図は、仮退避コード生成位置の一例を示す説明図で
ある。 第3図は、仮退避判定情報の内容を示す説明図である。 第4図は、共通演算の実例を示す説明図である。 第5図は、共通演算の結果を格納するレジスタの退避位
置の実例を示す説明図である。 第6図は、スタック方式の一例を示す説明図である。 第7図は、退避優先方式の一例を示す説明図である。 1・・・退避対象共通演算結果検出手段2・・・退避位
置決定手段 3・・・仮退避コード生成手段 4・・・共通演算結果格納レジスタ退避判定手段 5・・・仮退避コード処理手段 6・・・仮退避判定情報 特許出願人  日本電気株式会社 代理人 弁理士  井 ノ ロ   壽21図 27図 く諷春〉 く代入ン く褪X) く丁1の還σイ11〉  〈代°入〉 才6図
FIG. 1 is a block diagram showing an embodiment of a register fixing method according to the present invention. FIG. 2 is an explanatory diagram showing an example of a temporary save code generation position. FIG. 3 is an explanatory diagram showing the contents of temporary evacuation determination information. FIG. 4 is an explanatory diagram showing an example of common operations. FIG. 5 is an explanatory diagram showing an example of the save location of a register that stores the result of a common operation. FIG. 6 is an explanatory diagram showing an example of the stack method. FIG. 7 is an explanatory diagram showing an example of the evacuation priority method. 1...Evacuation target common operation result detection means 2...Evacuation position determination means 3...Temporary evacuation code generation means 4...Common operation result storage register Evacuation determination means 5...Temporary evacuation code processing means 6 ...Temporary evacuation determination information patent applicant NEC Co., Ltd. agent Patent attorney Hisashi Inoro 〉 Age 6

Claims (1)

【特許請求の範囲】[Claims] 最適化手段によつて起動され共通演算の結果を一時的に
格納するレジスタとしての共通TSのうちで、プログラ
ム内の実行分岐点を越えて参照される共通の退避対象T
Sを検出するための退避対象共通演算結果検出手段と、
前記退避対象共通演算結果検出手段により起動された前
記退避対象TSを主記憶内へ退避するオブジェクトコー
ドを生成するプログラムのうちで、最適な位置を決定す
るための退避位置決定手段と、前記退避位置決定手段に
より起動された前記退避対象TSについての仮退避コー
ドを前記退避位置決定手段により決定された位置へ生成
するための仮退避コード生成手段と、レジスタ割当て手
段により起動された前記退避対象TSを前記主記憶の内
部へ退避するか否かを判定し、判定結果を含む仮退避判
定情報を生成するための共通演算結果格納レジスタ退避
判定手段と、オブジェクトコード編集手段により起動さ
れ、かつ、前記共通演算結果格納レジスタ退避判定手段
により生成された前記仮退避判定情報によつて、前記退
避位置決定手段により生成された仮退避コードをオブジ
ェクトコードとして出力するか否かに関して処理を実行
するための仮退避コード処理手段とを具備し、コンパイ
ラのオブジェクトコードを生成することができるように
構成したレジスタの固定方式。
Among the common TSs that are activated by the optimization means and serve as registers that temporarily store the results of common operations, common save target Ts that are referenced beyond execution branch points in the program.
save target common operation result detection means for detecting S;
evacuation position determining means for determining an optimal position among a program for generating an object code for evacuation of the evacuation target TS into main memory, which is activated by the evacuation target common operation result detection means; and the evacuation position temporary evacuation code generation means for generating a temporary evacuation code for the evacuation target TS activated by the determination means to the position determined by the evacuation position determination means; and temporary evacuation code generation means for generating the temporary evacuation code for the evacuation target TS activated by the register allocation means a common operation result storage register save determination means for determining whether or not to save into the main memory and generating temporary save determination information including the determination result; Temporary saving for executing processing regarding whether or not to output the temporary saving code generated by the saving position determining means as an object code, based on the temporary saving judgment information generated by the saving judgment means. A register fixing method comprising a code processing means and configured to be able to generate object code for a compiler.
JP25056486A 1986-10-21 1986-10-21 Register fixing system Pending JPS63104141A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP25056486A JPS63104141A (en) 1986-10-21 1986-10-21 Register fixing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25056486A JPS63104141A (en) 1986-10-21 1986-10-21 Register fixing system

Publications (1)

Publication Number Publication Date
JPS63104141A true JPS63104141A (en) 1988-05-09

Family

ID=17209768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25056486A Pending JPS63104141A (en) 1986-10-21 1986-10-21 Register fixing system

Country Status (1)

Country Link
JP (1) JPS63104141A (en)

Similar Documents

Publication Publication Date Title
JP3248992B2 (en) Multiprocessor
JPH02195429A (en) Information processor
JPS63104141A (en) Register fixing system
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
JPS59163671A (en) Vector processor
JP2819733B2 (en) Information processing device
JPH01231126A (en) Information processor
KR100246465B1 (en) Apparatus and method for reducing cycle of microprocessor stack order
JPH0991139A (en) Information processor
JP4208149B2 (en) Method and apparatus for efficient control of a processor
JP2000305782A (en) Arithmetic unit
JPH02173826A (en) Data processor
JPS6244831A (en) Arithmetic processing unit
JPH0248733A (en) Information processor
JP3110072B2 (en) Pre-normalization circuit
JP3414579B2 (en) Programmable controller
JPS6072029A (en) Instruction processing system
JPS61100836A (en) System for processing comparison and instruction of moving instruction logic
JPH08314720A (en) Branch control system
JPS6282439A (en) False trouble generating system
JPH0546385A (en) Register interference control circuit
JPH03161834A (en) Information processor
JPS6074023A (en) Variable check system
JPH01189727A (en) Information processor
JPH04145524A (en) Fixed point processor