JPH0241525A - Address allocation processing system in translation processor - Google Patents

Address allocation processing system in translation processor

Info

Publication number
JPH0241525A
JPH0241525A JP19327388A JP19327388A JPH0241525A JP H0241525 A JPH0241525 A JP H0241525A JP 19327388 A JP19327388 A JP 19327388A JP 19327388 A JP19327388 A JP 19327388A JP H0241525 A JPH0241525 A JP H0241525A
Authority
JP
Japan
Prior art keywords
displacement
value
array
intermediate code
variable
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.)
Granted
Application number
JP19327388A
Other languages
Japanese (ja)
Other versions
JPH0833824B2 (en
Inventor
Koichiro Hotta
耕一郎 堀田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP63193273A priority Critical patent/JPH0833824B2/en
Publication of JPH0241525A publication Critical patent/JPH0241525A/en
Publication of JPH0833824B2 publication Critical patent/JPH0833824B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

PURPOSE:To constitute the title system so that a constant value of an address at the time of using an array is contained appropriately in a range of a displacement fixing part by generating a hardware instruction by allocating an intermediate code of a fixed value derived by a displacement updating means to the displacement fixing part and allocating an intermediate code of a variable value to a displacement variable part. CONSTITUTION:A base address allocating means 23 executes a determination so that a value of a displacement 'D0' extending from a base address to a head element satisfies a prescribed inequality, and a displacement updating means 24 processes an intermediate code of a constant value which has been generated by a displacement generating means 21, so as to shift it by a value portion of this 'D0'. By this processing, a constant value of each array goes into a range which a displacement fixing part has. On the other hand, when the value of 'D0' does not satisfy this inequality, the displacement updating means 24 generates an intermediate code in a form for absorbing the intermediate code of the constant value which does not go into the range which the displacement fixing part has, into a displacement variable part. In such a way, the constant value of the array comes to be contained appropriately and automatically in the range of the displacement fixing part.

Description

【発明の詳細な説明】 〔概要〕 変数値と定数値とに従って記述されたソースプログラム
中の配列要素に対して、基底番地と変位可変部と変位固
定部とによって表される主記憶装置上の番地を割り付け
るための翻訳処理装置における番地割付処理方式に関し
、 配列使用の際の番地の定数値が、変位固定部の値域に適
切に包含されるようにすることを目的とし、 基底番地が配列の先頭要素に割り付けられているものと
して、変数値及び定数値の中間コードを生成する変位生
成手段と、この変位生成手段の生成結果に従って、各配
列ごとに、定数値の中間コードの最大値と最小値を検出
する最大最小検出手段と、この最大最小検出手段の検出
結果に従って、基底番地と配列の先頭要素との間の変位
関係を割り付ける基底番地割付手段と、この基底番地割
付手段の割付結果に従って、各配列の定数値の中間コー
ドが変位固定部の有する値域に入るべく、変位生成手段
により生成された変数値及び定数値の中間コードを更新
する変位更新手段とを備え、この変位更新手段により求
まる定数値の中間コードを変位固定部に割り付けるとと
もに、変数値の中間コードを変位可変部に割り付けるこ
とでハードウェア命令を生成するよう構成する。
[Detailed Description of the Invention] [Summary] For array elements in a source program written according to variable values and constant values, an array element on the main memory represented by a base address, a variable displacement part, and a fixed displacement part is Regarding the address allocation processing method in the translation processing device for allocating addresses, the purpose is to ensure that the constant value of the address when using an array is appropriately included in the value range of the displacement fixed part, and the base address of the array is As assigned to the first element, there is a displacement generation means that generates intermediate codes of variable values and constant values, and according to the generation results of this displacement generation means, the maximum and minimum values of the intermediate codes of constant values are generated for each array. Maximum/minimum detection means for detecting values; base address allocation means for allocating a displacement relationship between the base address and the first element of the array according to the detection results of the maximum/minimum detection means; , displacement updating means for updating the intermediate code of the variable value and constant value generated by the displacement generating means so that the intermediate code of the constant value of each array falls within the value range of the displacement fixing section; The intermediate code of the determined constant value is assigned to the fixed displacement section, and the intermediate code of the variable value is assigned to the variable displacement section, thereby generating a hardware instruction.

〔産業上の利用分野〕[Industrial application field]

本発明は、ソースプログラム中に記述された配列要素に
、主記憶上の番地を割り付けるための翻訳処理装置にお
ける番地割付処理方式に関するものである。
The present invention relates to an address allocation processing method in a translation processing device for allocating addresses in main memory to array elements described in a source program.

コンパイル処理を実行する翻訳処理装置では、ソースプ
ログラム中に記述された配列要素に対して、主記憶上の
番地を割り付ける処理を行うことになる。この割付処理
は、命令形式の構成からくる制限を考慮しながら、プロ
グラムの実行性能を向上させる方式で構成させていく必
要がある。
The translation processing device that executes the compilation process performs a process of allocating addresses in main memory to array elements described in the source program. This allocation process needs to be configured in a manner that improves program execution performance while taking into account the limitations imposed by the structure of the instruction format.

〔従来の技術〕[Conventional technology]

一般に普及している汎用計算機では、主記憶上の番地を
、 (基底番地+変位可変部子変位固定部)の形式で表現す
る。第11図に、汎用計算機の命令形式の一例を示す。
In commonly used general-purpose computers, addresses in main memory are expressed in the format (base address + variable displacement part, fixed displacement part). FIG. 11 shows an example of an instruction format for a general-purpose computer.

この図の°゛主記憶オペランド”にも示すように、主記
憶上の基底番地と変位可変部は、ハードウェア命令の中
のレジスタオペランドとして指定されたレジスタの内容
で表され、変位固定部は、命令の中に直接に値が埋め込
まれることになる。
As shown in ``Main memory operand'' in this figure, the base address in main memory and the variable displacement part are represented by the contents of the register specified as the register operand in the hardware instruction, and the fixed displacement part is , the value will be embedded directly into the instruction.

一般的には、ソースプログラム中に出現する配列要素を
アクセスする際に、基底番地として各配列に固有の番地
を使用するとともに、配列添字の表現を、変位可変部と
変位固定部とによって行うことになる。ソースプログラ
ムの配列添字式は、(変数値+定数値)の形式で表現さ
れるので、加算命令を1つ減らして番地計算を高速化す
るために、変数値を変位可変部のレジスタが指定する領
域に格納し、定数値を変位固定部として命令の中に直接
に埋め込む構成を採ることになる。しかるに、変位固定
部に設定できる値には、ハードウェア面から所定の制限
が加わることになる。例えば、第11図に示す命令形式
でみるならば、変位固定部の取れる値域は、0°゛から
“4095’”である、これから、変位固定部に設定す
る定数値が下限値以下(この場合では、“0″)になる
ことを避けるために、基底番地を配列の先頭要素からす
らして、基底番地が、存在しない配列要素を指すように
設定することになる。
Generally, when accessing array elements that appear in a source program, an address unique to each array is used as the base address, and array subscripts are expressed using a variable displacement part and a fixed displacement part. become. The array index expression in the source program is expressed in the format (variable value + constant value), so in order to reduce the number of addition instructions by one and speed up address calculation, the variable value is specified by the register of the variable displacement part. A configuration is adopted in which the constant value is stored in an area and directly embedded in the instruction as a displacement fixing part. However, the values that can be set in the displacement fixing section are subject to certain restrictions from a hardware perspective. For example, if we look at the command format shown in Figure 11, the range of values that the displacement fixing section can take is from 0°'' to "4095'".From now on, the constant value set for the displacement fixing section is below the lower limit (in this case Then, in order to avoid becoming "0"), the base address is set even from the first element of the array, and the base address is set to point to an array element that does not exist.

従来技術では、この基底番地の設定を、配列の先頭要素
から常に一定の値でもって実現するよう構成していた。
In the prior art, the base address is always set at a constant value starting from the first element of the array.

すなわち、従来技術では、基底番地と配列の先頭要素と
の変位関係を、予め定められた同車の値に従って実現す
るよう構成していたのである。
That is, in the prior art, the displacement relationship between the base address and the first element of the array is realized in accordance with a predetermined value for the same vehicle.

〔発明が解決しようとする課題〕[Problem to be solved by the invention]

しかしながら、従来技術のように、基底番地の設定を、
配列の先頭要素から常に一定の値に従って設定するよう
構成すると、この一定値が小さいと、配列の定数値の変
動が大きい場合に、すべての配列要素の定数値を、変位
固定部の下限値以上に設定できなくなるという問題点が
あった。この問題点を避けるために、この一定値を余裕
をみて大きくとると、今度は、変位固定部の上限値以下
に入ることができなくなるものが増加してしまうことに
なるという問題点があった。このように、変位固定部の
値域に入らないものは、変位可変部若しくは基底番地を
示すレジスタに加算して表現しなくてはならず、加算命
令の分だけ実行時間が遅くなるという欠点があったので
ある。
However, as in the prior art, the setting of the base address is
If you configure the array so that it is always set according to a constant value from the first element, if this constant value is small and the constant value of the array fluctuates greatly, the constant value of all array elements will be set equal to or higher than the lower limit value of the fixed displacement section. There was a problem that it could not be set to . In order to avoid this problem, if this constant value is set to a large value with a margin, then there is a problem that the number of objects that cannot go below the upper limit of the displacement fixed part increases. . In this way, values that do not fall within the range of the fixed displacement part must be expressed by adding them to the variable displacement part or the register indicating the base address, which has the disadvantage of slowing down the execution time by the addition instruction. It was.

本発明はかかる事情に鑑みてなされたものであって、配
列の定数値が、変位固定部の値域に適切に包含されるよ
うになる翻訳処理装置における番地割付処理方式を提供
することで、このような問題点を解決することを目的と
するものである。
The present invention has been made in view of such circumstances, and provides an address allocation processing method in a translation processing device in which constant values of an array are appropriately included in the value range of a fixed displacement part. The purpose is to solve such problems.

〔課題を解決するための手段〕[Means to solve the problem]

第1図は本発明の原理構成図である。 FIG. 1 is a diagram showing the basic configuration of the present invention.

図中、10は変数値と定数値とに従って記述される配列
を存するソースプログラム、20はこのソースプログラ
ムIOの配列要素に対して、基底番地と変位可変部と変
位固定部とによって表される主記憶装置上の番地を割り
付けるための翻訳処理装置、30はこの翻訳処理装置2
0によって翻訳されたオブジェクトプログラムである0
本発明の翻訳処理装置20は、変位生成手段21、最大
最小検出手段22、基底番地割付手段23、変位更新手
段24及びハードウェア命令生成手段25を備えること
になる。どの変位生成手段21は、基底番地が配列の先
頭要素に割り付けられているものと仮定して、各配列要
素の変数値及び定数値の中間コードを生成し、最大最小
検出手段22は、変位生成手段21の生成結果に従って
、各配列ごとに、定数値の中間コードの最大値と最小値
を検出し、基底番地割付手段23は、′最大最小検出手
段22の検出結果に従って、基底番地と配列の先頭要素
との間の変位関係を割り付け、変位更新手段24は、基
底番地割付手段23の割付結果に従って、各配列の定数
値の中間コードが変位固定部の有する値域に入るべく、
変位生成手段21により生成された変数値及び定数値の
中間コードを更新し、ハードウェア命令生成手段25は
、変位更新手段24により求まる定数値の中間コードを
変位固定部に割り付けるとともに、変数値の中間コード
を変位可変部に割り付けることでハードウェア命令を生
成するよう処理する。
In the figure, 10 is a source program that has an array described according to variable values and constant values, and 20 is a source program that has an array element described in accordance with variable values and constant values. A translation processing device for allocating addresses on a storage device; 30 is this translation processing device 2;
0, which is an object program translated by 0
The translation processing device 20 of the present invention includes a displacement generation means 21, a maximum/minimum detection means 22, a base address allocation means 23, a displacement update means 24, and a hardware instruction generation means 25. Which displacement generating means 21 generates intermediate codes of variable values and constant values of each array element, assuming that the base address is assigned to the first element of the array, and the maximum/minimum detecting means 22 generates a displacement. According to the generation result of the means 21, the maximum value and minimum value of the intermediate code of the constant value are detected for each array, and the base address allocation means 23 allocates the base address and the array according to the detection result of the maximum/minimum detection means 22. The displacement update means 24 allocates the displacement relationship with the leading element, and according to the allocation result of the base address allocation means 23, the intermediate code of the constant value of each array falls within the value range of the displacement fixing part.
The hardware instruction generating means 25 updates the intermediate code of the variable value and the constant value generated by the displacement generating means 21, and assigns the intermediate code of the constant value determined by the displacement updating means 24 to the displacement fixing section, and also updates the intermediate code of the variable value and the constant value. Processing is performed to generate hardware instructions by assigning the intermediate code to the variable displacement section.

〔作用〕[Effect]

本発明では、基底番地割付手段23は、基底番地から先
頭要素までの変位“Do”の値が、D、1.fi≦Do
+D+≦DI+Dt≦D IIMXの不等式を満たすよ
う決定する。ここで、DI :各配列の定数値の中間コ
ードの最小値D2 :各配列の定数値の中間コードの最
大値Dllifi’変位固定部の値域の最小値DIII
IX:変位固定部の値域の最大値である。そして、変位
更新手段24は、変位生成手段21により生成された定
数値の中間コードを、この“D、”の値分ずらすよう処
理する。この処理により、各配列の定数値が変位固定部
の有する値域に適切に入ることになる。
In the present invention, the base address allocation means 23 determines that the value of the displacement "Do" from the base address to the leading element is D, 1 . fi≦Do
+D+≦DI+Dt≦D It is determined to satisfy the inequality IIMX. Here, DI: Minimum value of intermediate code of constant value of each array D2: Maximum value of intermediate code of constant value of each array Dllifi' Minimum value of value range of displacement fixed part DIII
IX: Maximum value of the value range of the displacement fixed part. Then, the displacement updating means 24 processes the intermediate code of the constant value generated by the displacement generating means 21 so as to shift it by the value of "D". This process allows the constant values of each array to fall appropriately within the range of the displacement fixing section.

一方、110.”の値が、この不等式を満たすことがな
いときには、変位更新手段24は、変位固定部の有する
値域に入らない定数値の中間コードについては、変位可
変部に吸収する形式で中間コードを生成するよう処理す
る。
On the other hand, 110. ” does not satisfy this inequality, the displacement updating means 24 generates an intermediate code in a format in which the intermediate code with a constant value that does not fall within the range of the fixed displacement section is absorbed into the variable displacement section. Process as follows.

このように、本発明によれば、配列の定数値が、自動的
に、変位固定部の値域に適切に包含されるようになるの
である。
In this way, according to the present invention, the constant value of the array is automatically and appropriately included in the value range of the displacement fixing part.

〔実施例] 以下、実施例に従って本発明の詳細な説明する。〔Example] Hereinafter, the present invention will be explained in detail according to examples.

第2図に本発明のシステム構成図を示す。この図に示す
ように、本発明の番地割付処理方式を実装するコンパイ
ラ20aは、ソースプログラム解析部の配列要素に対し
て、基底番地と変位可変部と変位固定部とによって表さ
れる主記憶装置上の番地を割り付けて、オブジェクトプ
ログラム30を生成するよう処理するものである。この
処理の実現のために、本発明のコンパイラ20aは、図
中に示すように、機能構成的に、ソースプログラム解析
部lと、第1の最適化部2と、領域v1付部3と、第2
の最適化部4と、コード生成部5とを備えるものである
FIG. 2 shows a system configuration diagram of the present invention. As shown in this figure, a compiler 20a that implements the address allocation processing method of the present invention uses a main memory unit represented by a base address, a variable displacement part, and a fixed displacement part for array elements of a source program analysis part. The above address is assigned and the object program 30 is generated. In order to realize this process, the compiler 20a of the present invention has, as shown in the figure, a source program analysis section 1, a first optimization section 2, an area v1 attaching section 3, Second
The optimization section 4 includes an optimization section 4 and a code generation section 5.

ソースプログラム解析部1の実行する処理内容は、第3
図(A)に示すように、ソースプログラムの読み込み処
理と、配列使用に対する中間コードの作成処理とからな
り、領域割付部3の実行する処理内容は、第3図(B)
に示すように、基底番地の決定処理と、定数値の更新処
理とからなり、コード生成部5の処理内容は、ハードウ
ェア命令の生成処理からなるものである。そして、第1
の最適化部2は、ソースプログラム解析部1の処理結果
を最適化して領域割付部3に渡し、第2の最適化部4は
、領域割付部3の処理結果を最適化してコード生成部5
に渡すよう処理する。
The processing content executed by the source program analysis unit 1 is
As shown in Figure (A), it consists of a source program reading process and an intermediate code creation process for array use, and the processing content executed by the area allocation unit 3 is as shown in Figure 3 (B).
As shown in FIG. 2, the processing consists of base address determination processing and constant value updating processing, and the processing content of the code generation unit 5 consists of hardware instruction generation processing. And the first
The optimization unit 2 optimizes the processing result of the source program analysis unit 1 and passes it to the area allocation unit 3, and the second optimization unit 4 optimizes the processing result of the area allocation unit 3 and passes it to the code generation unit 5.
Process it so that it is passed to.

次に、第4図に示すフローチャートに従って、ソースプ
ログラム解析部1とHMi allJ付部3の処理内容
の詳細について説明する。
Next, details of the processing contents of the source program analysis section 1 and the HMi allJ attachment section 3 will be explained according to the flowchart shown in FIG.

第4図のフローチャートの処理内容の理解を深めるため
に、コンパイルされるソースプログラム10として、第
5図に示すソースプログラム10を想定することにする
。このソースプログラム10は、2048個の配列要素
からなる実数型の“A″と“B”という配列のプログラ
ム例であり、rA(1)=・・・」は、A配列の変数値
■で示される要素に値を設定するというプログラムステ
ップを意味し、「・・・=A (1+1022)Jは、
A配列の変数値I、定数値1022の値で示される要素
を参照するというプログラムステップを意味している。
In order to better understand the processing contents of the flowchart in FIG. 4, let us assume that the source program 10 shown in FIG. 5 is the source program 10 to be compiled. This source program 10 is a program example of real number type arrays "A" and "B" consisting of 2048 array elements, and "rA(1)=..." is indicated by the variable value ■ of the A array. "...=A (1+1022)J" means a program step that sets a value to an element that is
This means a program step that refers to the element indicated by the variable value I and the constant value 1022 in the A array.

コンパイル処理の要求があると、コンパイラ20aは、
最初に、ステップ1で示すように、ソースプログラム1
0を読み込むよう処理する。この処理により、第5図の
ソースプログラムが読み込まれることになる0次に、ス
テップ2で、基底番地が配列の先頭要素に割り付けられ
ているものと仮定して、中間コードを作成する。このス
テップ2における中間コードの生成は、具体的には、変
数値=(ソースの変数値) X(l要素の領域長) 定数値−(ソースの定数値−添字の下限値)X(1要素
の領域長) の式に従って生成されることになる。A配列、B配列と
も、1要素の領域長を4バイトとし、“1”から始まる
ものとすると、このステップ2の処理により、第5図の
ソースプログラムから第6図に示す中間コードが生成さ
れることになる。
When there is a request for compilation processing, the compiler 20a
First, as shown in step 1, source program 1
Process to read 0. Through this process, the source program shown in FIG. 5 is read. In step 2, an intermediate code is created assuming that the base address is assigned to the first element of the array. Specifically, the generation of the intermediate code in step 2 is as follows: variable value = (source variable value) X (region length of l element) constant value - (source constant value - lower limit value of subscript) (area length). Assuming that the area length of one element in both array A and array B is 4 bytes, and it starts from "1", the intermediate code shown in Figure 6 is generated from the source program in Figure 5 through the processing in step 2. That will happen.

続いて、ステップ3で、生成された定数値の中間コード
を検索して、配列ごとに、定数値の中間コードの最小値
り、と最大値D2を検出する。第6図の中間コードの例
でみるならば、A配列に対しては、定数値の中間コード
として、 −4,4084,36″があるので、D、=
−4,Dg=4084、B配列に対しては、定数値の中
間コードとして、 −24,−4”があるので、D、=
−24、D、=−4が検出される0以上に説明したステ
ップ1ないしステップ3の処理は、ステップ4の判断で
、ソースプログラム10の終了が確認されるまで繰り返
されることになる。
Subsequently, in step 3, the generated intermediate code of the constant value is searched to detect the minimum value D2 and the maximum value D2 of the intermediate code of the constant value for each array. Looking at the intermediate code example in Figure 6, for the A array, there is -4,4084,36'' as the intermediate code for the constant value, so D, =
-4,Dg=4084,For the B array, there is -24,-4'' as the intermediate code of the constant value, so D,=
-24, D, = -4 is detected 0 or more The processing of steps 1 to 3 described above will be repeated until it is confirmed in step 4 that the source program 10 has ended.

このようにして、中間コードを生成し、定数値の中間コ
ードの最大最小値を求めると、次のステップ5で、1つ
の配列を取り出し、続くステップ6で、 DI−D−!−DI の式に従って、その取り出された配列に対して、基底番
地から先頭要素までの変位D0の値を算出する。ここで
、Dl、1は、主記憶上の番地を指定する変位固定部の
値域の最小値であり、前述したように、第11図の命令
形式では“O”である。
In this way, after generating the intermediate code and finding the maximum and minimum values of the intermediate code of constant values, in the next step 5, one array is extracted, and in the following step 6, DI-D-! -DI The value of the displacement D0 from the base address to the first element is calculated for the extracted array. Here, Dl,1 is the minimum value of the range of the displacement fixing section that specifies an address on the main memory, and as described above, is "O" in the instruction format shown in FIG. 11.

この式の意味するところは、変位固定部の値域の最大値
をD□8で表すならば、D、の値が、DmrnS DO
+ D +≦Do+Dt≦D ++i 11 Mの不等
式を満たせば、定数値は変位固定部の値域内に収まるこ
とができるので、その条件を充足する1つのDoを選択
したのである。このステップ6の処理で、D□7が“0
°゛であるならば、A配列に対しては、D、=4、B配
列に対しては、D。
What this formula means is that if the maximum value of the value range of the displacement fixed part is expressed as D□8, then the value of D is DmrnS DO
+ D +≦Do+Dt≦D ++i 11 If the inequality of M is satisfied, the constant value can fall within the range of the displacement fixed part, so one Do that satisfies this condition was selected. In the process of step 6, D□7 becomes “0”.
If ゛゛, then D,=4 for the A array and D for the B array.

−24が算出されることになる。このステップ5及びス
テップ6の処理は、ステップ7の判断で、すべての配列
の取り出しの終了が確認されるまで繰り返される。そし
て、このステップ7の処理が終了した時点で、配列ごと
に、Do、Dl及びD2の値が求められることになって
、第7図に示すような配列管理テーブルが作成されるこ
とになる。
-24 will be calculated. The processing in steps 5 and 6 is repeated until it is confirmed in step 7 that all arrays have been extracted. When the process of step 7 is completed, the values of Do, Dl, and D2 are determined for each array, and an array management table as shown in FIG. 7 is created.

続いて、ステップ8で、ステップ2で生成した中間コー
ドを取り出し、次のステップ9で、取り出された定数値
の中間コードにステップ6で求められたDoを加算して
、新たな定数値の中間コードとする演算処理を実行する
。このとき、Doは、その属する配列のものを使用する
。そして、続くステップ10で、この新たな定数値の中
間コードが、主記憶上の番地を指定する変位固定部の値
域の最大値り、1、より小さいか否かを判断する。この
ステップ10の判断で、D、1.より小さいと判断する
ときには、新たな定数値の中間コードは変位固定部の値
域内に収まるので、ステップ14に進み、すべての中間
コードを取り出したか否かを判断し、すべての中間コー
ドを取り出しているならば処理を終了する。すべての中
間コードを取り出していないならば、ステップ8に戻り
、すべての中間コードを取り出すまで処理を繰り返すこ
とになる。
Next, in step 8, the intermediate code generated in step 2 is extracted, and in the next step 9, Do obtained in step 6 is added to the intermediate code of the extracted constant value to create a new intermediate code of the constant value. Executes arithmetic processing as code. At this time, Do uses the array to which it belongs. Then, in the following step 10, it is determined whether the intermediate code of this new constant value is smaller than the maximum value of the value range of the displacement fixing section specifying the address on the main memory, which is 1. Based on the judgment in step 10, D, 1. When it is determined that the new constant value is smaller, the intermediate code of the new constant value falls within the value range of the displacement fixed part, so the process proceeds to step 14, where it is determined whether all intermediate codes have been extracted, and all intermediate codes are extracted. If there is, terminate the process. If all intermediate codes have not been extracted, the process returns to step 8 and the process is repeated until all intermediate codes are extracted.

一方、ステップ10の判断で、D 111111より大
きいと判断するときには、ステップ11に進み、定数値 ΔD 但し、ΔD=D、、。+Date+1 を算出して、この算出値の整数部分の整数値“t”を求
め、そして、続くステップ12で、この求められた整数
値“L”を使い、 Ix=txΔD十変数値 を求豹変数値して、次のステップ13で、ステップ9で
生成されたその定数値の中間コードから(tXΔD)を
減算して、新たな定数値の中間コードとする演算処理を
行う、更に、このステップエ3では、ステップ8で取り
出されたその定数値の中間コードに対応する変数値の中
間コードを、この!Xに置き換えることで新たな変数値
の中間コードとする演算処理を行う、このステップ11
ないしステップ13の処理は、ステップ10の判断によ
り、ステップ9で生成した定数値の中間コードが変位固
定部の値域内に収まらないことが判明′したので、定数
値の中間コードが変位固定部の値域に収まるよう・にす
るために、オーバーした分である(tXΔD)を変数値
の中間コードに負担させるよう処理することにある。こ
のようにして、定数値の中間コードが変位固定部の値域
に収まるよう処理されると、ステップ14に進み、ステ
ップ10からの処理と同様に、すべての中間コードを取
り出したか否かを判断し、すべての中間コードを取り出
しているならば処理を終了し、すべての中間コードを取
り出していないならば、ステップ8に戻り、すべての中
間コードを取り出すまで処理を繰り返すことになる。
On the other hand, when it is determined in step 10 that D is greater than 111111, the process proceeds to step 11, where the constant value ΔD, where ΔD=D, . +Date+1, and find the integer value "t" of the integer part of this calculated value. Then, in the following step 12, use this found integer value "L" to find the variable value of Ix=txΔD. Then, in the next step 13, (tXΔD) is subtracted from the intermediate code of the constant value generated in step 9, and arithmetic processing is performed to obtain the intermediate code of the new constant value.Furthermore, in this step E3, , the intermediate code of the variable value corresponding to the intermediate code of the constant value retrieved in step 8, this! This step 11 performs arithmetic processing to replace X with an intermediate code of a new variable value.
In step 13, the intermediate code of the constant value generated in step 9 was found not to fall within the range of the displacement fixed part, as determined in step 10. In order to keep it within the value range, processing is carried out so that the excess amount (tXΔD) is borne by the intermediate code of the variable value. In this way, when the intermediate code of the constant value is processed so that it falls within the value range of the displacement fixing part, the process proceeds to step 14, and in the same way as the processing from step 10, it is determined whether all the intermediate codes have been extracted. , if all the intermediate codes have been extracted, the process ends; if not all the intermediate codes have been extracted, the process returns to step 8 and the process is repeated until all the intermediate codes are extracted.

ステップ8ないしステップ14の処理により求まる第6
図の中間コードの変換例を、第8図に示す、第6図の中
間コードは、ステップ9のDoの加算処理によっても、
定数値の中間コードの値がすべてり、□(ここでは、”
4095”である)以下になるので、ステップ11ない
しステップ13の処理は実行されるこリタい、従って、
第8図に示すように、変数値は変わらず、定数値がり。
The sixth value determined by the processing of steps 8 to 14
An example of conversion of the intermediate code in the figure is shown in FIG. 8. The intermediate code in FIG.
All the intermediate code values of the constant values are □ (here, “
4095"), so the processing of steps 11 to 13 will not be executed, and therefore,
As shown in Figure 8, the variable value does not change and the constant value increases.

分大きくなるだけである。なお、第4図に示すフローチ
ャートでは、 D@=Da!+%−D。
It just gets bigger. In addition, in the flowchart shown in FIG. 4, D@=Da! +%-D.

の式に従ってDoを選択したが、D、の選択式は、D 
* r *≦Do+D、≦o、+1)、≦D、□の不等
式を満たせばよいので、例えば、Do−D−−X Dt に従って選択するものであってもよいのである。
Do was selected according to the formula, but the selection formula for D is
Since it is sufficient to satisfy the following inequalities: * r *≦Do+D, ≦o, +1), ≦D, □, the selection may be made according to, for example, Do−D−−X Dt.

そして、最終的に生成された中間コードは、最後に、コ
ード生成部5に従って、ハードウェア命令に変換処理さ
れることになる。
The finally generated intermediate code is finally converted into a hardware instruction by the code generation unit 5.

このように、本発明では、基底番地の設定を、配列の先
頭要素から常に一定の値でもって実現するのではなく、
変位固定部の値域を考慮しながらその都度決めていくの
で、定数値が、適切に変位固定部の値域に入ることにな
る0例えば、第9図(A)に示すソースプログラムの定
数値が変位固定部の値域に入るためには、 D a i * S D e + D +≦D、+D、
≦D、□の不等式を解くことで判るように、基底番地は
、4バイトないし11バイト分、配列の先頭要素から上
に設定される必要がある。この位置関係を第9図(C)
に示す、ここで、変位固定部の値域等の条件は、これま
での説明と同一としている。また、第9図(B)は、ス
テップ2で求められる中間コードを示している。この第
9図(C)から明らかなように、基底番地の設定を一律
に、配列の先頭要素から例えば16バイトずらすという
ような従来技術では、変位固定部の値域に入らないもの
もでてくるのである。
In this way, in the present invention, instead of setting the base address with a constant value starting from the first element of the array,
Since the value range of the displacement fixing part is determined each time, the constant value will fall within the value range of the displacement fixing part appropriately.For example, the constant value of the source program shown in Figure 9(A) is In order to enter the value range of the fixed part, D a i * S D e + D +≦D, +D,
As can be seen by solving the inequality ≦D, □, the base address needs to be set upward from the first element of the array by 4 to 11 bytes. This positional relationship is shown in Figure 9 (C).
Here, the conditions such as the value range of the displacement fixing part are the same as in the previous explanation. Further, FIG. 9(B) shows the intermediate code obtained in step 2. As is clear from FIG. 9(C), with the conventional technique of uniformly setting the base address and shifting it by, for example, 16 bytes from the first element of the array, some values do not fall within the value range of the fixed displacement part. It is.

また、第1O図(A)に示すソースプログラムの定数値
が変位固定部の値域に入るためには、第10図(C)に
示すように、基底番地が、1バイトないし4092バイ
ト分、配列の先頭要素から下に設定される必要がある。
In addition, in order for the constant value of the source program shown in Figure 10(A) to fall within the value range of the fixed displacement part, the base address must be 1 byte to 4092 bytes long in the array as shown in Figure 10(C). must be set from the first element down.

ここで、第10図(B)は、ステップ2で求められる中
間コードを示している。この第1O図(C)から明らか
なように、基底番地を配列の先頭要素の下にずらすとい
う、従来技術では採らなかった方法も、本発明では採る
ことになるのである。これにより、定数値が変位固定部
の値域に適切に入ることになる。
Here, FIG. 10(B) shows the intermediate code obtained in step 2. As is clear from FIG. 10(C), the present invention employs a method of shifting the base address below the first element of the array, which was not adopted in the prior art. This allows the constant value to fall appropriately within the range of the displacement fixing section.

以上、図示実施例について説明したが、本発明はこれに
限定されるものではない。例えば、変位固定部の値域を
0°“から“4095“°で説明したが、このような数
値は、説明の便宜のために例示したものに過ぎないので
ある。
Although the illustrated embodiments have been described above, the present invention is not limited thereto. For example, although the value range of the displacement fixing portion has been described as 0° to 4095°, such numerical values are merely examples for convenience of explanation.

〔発明の効果〕〔Effect of the invention〕

このように、本発明によれば、配列の定数値が、自動的
に、変位固定部の値域に適切に包含されるようになる。
As described above, according to the present invention, the constant value of the array is automatically and appropriately included in the value range of the displacement fixed part.

これから、定数値の変動が大きい場合でも、基底番地に
よって吸収されるので、添字計算部分の命令を削減して
、プログラムの実行性能を向上させることができるので
ある。
From now on, even if there is a large variation in the constant value, it will be absorbed by the base address, so the number of instructions in the subscript calculation part can be reduced and the execution performance of the program can be improved.

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

第1図は本発明の原理構成図、 第2図は本発明のシステム構成図、 第3図はソースプログラム解析部及び領域割付部の処理
内容の説明図、 第4図は本発明の実行するフローチャート、第5図はソ
ースプログラムの一例、 第6図はステップ2の処理で求まる中間コードの一例、 第7図はステップ6の処理で求まる配列管理テーブルの
一例、 第8図はステップ14の処理で求まる中間コードの一例
、 第9図及び第10図は本発明の詳細な説明図、第11図
は命令形式の説明図である。 図中、10はソースプログラム、20は翻訳処理装置、
21は変位生成手段、22は最大最小検出手段、23は
基底番地υ1付手段、24は変位更新手段、25はハー
ドウェア命令生成手段である。
Fig. 1 is a diagram of the principle configuration of the present invention, Fig. 2 is a system configuration diagram of the present invention, Fig. 3 is an explanatory diagram of the processing contents of the source program analysis section and area allocation section, and Fig. 4 is a diagram of the execution of the present invention. Flowchart, Figure 5 is an example of the source program, Figure 6 is an example of the intermediate code determined by the process in step 2, Figure 7 is an example of the array management table determined by the process in step 6, and Figure 8 is the process in step 14. 9 and 10 are detailed explanatory diagrams of the present invention, and FIG. 11 is an explanatory diagram of the instruction format. In the figure, 10 is a source program, 20 is a translation processing device,
21 is a displacement generating means, 22 is a maximum/minimum detecting means, 23 is a base address υ1 attaching means, 24 is a displacement updating means, and 25 is a hardware instruction generating means.

Claims (1)

【特許請求の範囲】 変数値と定数値とに従って記述されたソースプログラム
(10)中の配列要素に対して、基底番地と変位可変部
と変位固定部とによって表される主記憶装置上の番地を
割り付けるための翻訳処理装置における番地割付処理方
式において、 基底番地が配列の先頭要素に割り付けられているものと
仮定して、各配列要素の変数値及び定数値の中間コード
を生成する変位生成手段(21)と、この変位生成手段
(21)の生成結果に従って、各配列ごとに、定数値の
中間コードの最大値と最小値を検出する最大最小検出手
段(22)と、 この最大最小検出手段(22)の検出結果に従って、基
底番地と配列の先頭要素との間の変位関係を割り付ける
基底番地割付手段(23)と、 この基底番地割付手段(23)の割付結果に従って、各
配列の定数値の中間コードが変位固定部の有する値域に
入るべく、上記変位生成手段(21)により生成された
変数値及び定数値の中間コードを更新する変位更新手段
(24)とを備え、 この変位更新手段(24)により求まる定数値の中間コ
ードを変位固定部に割り付けるとともに、変数値の中間
コードを変位可変部に割り付けることでハードウェア命
令を生成するよう処理してなることを、 特徴とする翻訳処理装置における番地割付処理方式。
[Claims] For array elements in a source program (10) written according to variable values and constant values, an address on the main memory device represented by a base address, a variable displacement part, and a fixed displacement part. In an address allocation processing method in a translation processing device for allocating an array, displacement generating means generates intermediate codes of variable values and constant values of each array element, assuming that the base address is allocated to the first element of the array. (21), and maximum/minimum detection means (22) for detecting the maximum and minimum values of the intermediate code of constant values for each array according to the generation result of the displacement generation means (21); A base address allocation means (23) that allocates the displacement relationship between the base address and the first element of the array according to the detection result of (22); and a constant value of each array according to the allocation result of this base address allocation means (23). displacement updating means (24) for updating the intermediate codes of the variable values and constant values generated by the displacement generating means (21) so that the intermediate codes of the displacement fixing section fall within the value range of the displacement fixing section; A translation process characterized in that a hardware instruction is generated by assigning an intermediate code of a constant value determined by (24) to a fixed displacement part, and assigning an intermediate code of a variable value to a variable displacement part. Address allocation processing method in the device.
JP63193273A 1988-08-02 1988-08-02 Address assignment processing method in translation processor Expired - Fee Related JPH0833824B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63193273A JPH0833824B2 (en) 1988-08-02 1988-08-02 Address assignment processing method in translation processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63193273A JPH0833824B2 (en) 1988-08-02 1988-08-02 Address assignment processing method in translation processor

Publications (2)

Publication Number Publication Date
JPH0241525A true JPH0241525A (en) 1990-02-09
JPH0833824B2 JPH0833824B2 (en) 1996-03-29

Family

ID=16305196

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63193273A Expired - Fee Related JPH0833824B2 (en) 1988-08-02 1988-08-02 Address assignment processing method in translation processor

Country Status (1)

Country Link
JP (1) JPH0833824B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8339407B2 (en) 2008-11-27 2012-12-25 Sony Corporation Information processing device, display switching method and program

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6229818A (en) * 1985-07-26 1987-02-07 ケルンフオルシユングスアンラ−ゲ・ユ−リツヒ・ゲゼルシヤフト・ミト・ベシユレンクテル・ハフツング Evaporator for liquefied fuel for manufacturing fuel-air-mixture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6229818A (en) * 1985-07-26 1987-02-07 ケルンフオルシユングスアンラ−ゲ・ユ−リツヒ・ゲゼルシヤフト・ミト・ベシユレンクテル・ハフツング Evaporator for liquefied fuel for manufacturing fuel-air-mixture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8339407B2 (en) 2008-11-27 2012-12-25 Sony Corporation Information processing device, display switching method and program

Also Published As

Publication number Publication date
JPH0833824B2 (en) 1996-03-29

Similar Documents

Publication Publication Date Title
JP2810675B2 (en) Debug method
JP2893071B2 (en) Thread private memory for multi-threaded digital data processor
JP2003167737A (en) Stack use method
JPH11110236A (en) Method and device for large memory allocation
EP2321734B1 (en) Type descriptor management for frozen objects
JP6423809B2 (en) Operating system, programming system, and memory allocation method
KR100809293B1 (en) Apparatus and method for managing stacks in virtual machine
JPH0241525A (en) Address allocation processing system in translation processor
Bordawekar et al. Communication strategies for out-of-core programs on distributed memory machines
KR100315500B1 (en) Memory allocating method
JP6932755B2 (en) Operating system and memory allocation method
JPH02122343A (en) Digital signal processor
JPS62219130A (en) Optimizing system for program
JPS6234240A (en) Data allotting system
JPS62251851A (en) Overlay control system for electronic computer system
JPH0224726A (en) Optimum data allocating system
JP2019036343A (en) Operating system and memory allocation method
Lang Leon Alkalaj October 1986 Milos Ercegovac CSD-860026 Tomas Lang
JPH0371233A (en) Optimum data allocating system for compiler
JPS61204752A (en) Address converting system
JPH02217946A (en) Method of accessing file
JPH02171831A (en) Data access system for compiler
Lang A DYNAMIC MEMORY MANAGEMENT POLICY FOR FP
JPS603656B2 (en) Computer memory expansion method
JPH1011291A (en) Object data structure, and computer system using object data structure

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees