JPH0241525A - 翻訳処理装置における番地割付処理方式 - Google Patents
翻訳処理装置における番地割付処理方式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
- array
- value
- variable
- values
- 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
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概要〕
変数値と定数値とに従って記述されたソースプログラム
中の配列要素に対して、基底番地と変位可変部と変位固
定部とによって表される主記憶装置上の番地を割り付け
るための翻訳処理装置における番地割付処理方式に関し
、 配列使用の際の番地の定数値が、変位固定部の値域に適
切に包含されるようにすることを目的とし、 基底番地が配列の先頭要素に割り付けられているものと
して、変数値及び定数値の中間コードを生成する変位生
成手段と、この変位生成手段の生成結果に従って、各配
列ごとに、定数値の中間コードの最大値と最小値を検出
する最大最小検出手段と、この最大最小検出手段の検出
結果に従って、基底番地と配列の先頭要素との間の変位
関係を割り付ける基底番地割付手段と、この基底番地割
付手段の割付結果に従って、各配列の定数値の中間コー
ドが変位固定部の有する値域に入るべく、変位生成手段
により生成された変数値及び定数値の中間コードを更新
する変位更新手段とを備え、この変位更新手段により求
まる定数値の中間コードを変位固定部に割り付けるとと
もに、変数値の中間コードを変位可変部に割り付けるこ
とでハードウェア命令を生成するよう構成する。
中の配列要素に対して、基底番地と変位可変部と変位固
定部とによって表される主記憶装置上の番地を割り付け
るための翻訳処理装置における番地割付処理方式に関し
、 配列使用の際の番地の定数値が、変位固定部の値域に適
切に包含されるようにすることを目的とし、 基底番地が配列の先頭要素に割り付けられているものと
して、変数値及び定数値の中間コードを生成する変位生
成手段と、この変位生成手段の生成結果に従って、各配
列ごとに、定数値の中間コードの最大値と最小値を検出
する最大最小検出手段と、この最大最小検出手段の検出
結果に従って、基底番地と配列の先頭要素との間の変位
関係を割り付ける基底番地割付手段と、この基底番地割
付手段の割付結果に従って、各配列の定数値の中間コー
ドが変位固定部の有する値域に入るべく、変位生成手段
により生成された変数値及び定数値の中間コードを更新
する変位更新手段とを備え、この変位更新手段により求
まる定数値の中間コードを変位固定部に割り付けるとと
もに、変数値の中間コードを変位可変部に割り付けるこ
とでハードウェア命令を生成するよう構成する。
本発明は、ソースプログラム中に記述された配列要素に
、主記憶上の番地を割り付けるための翻訳処理装置にお
ける番地割付処理方式に関するものである。
、主記憶上の番地を割り付けるための翻訳処理装置にお
ける番地割付処理方式に関するものである。
コンパイル処理を実行する翻訳処理装置では、ソースプ
ログラム中に記述された配列要素に対して、主記憶上の
番地を割り付ける処理を行うことになる。この割付処理
は、命令形式の構成からくる制限を考慮しながら、プロ
グラムの実行性能を向上させる方式で構成させていく必
要がある。
ログラム中に記述された配列要素に対して、主記憶上の
番地を割り付ける処理を行うことになる。この割付処理
は、命令形式の構成からくる制限を考慮しながら、プロ
グラムの実行性能を向上させる方式で構成させていく必
要がある。
一般に普及している汎用計算機では、主記憶上の番地を
、 (基底番地+変位可変部子変位固定部)の形式で表現す
る。第11図に、汎用計算機の命令形式の一例を示す。
、 (基底番地+変位可変部子変位固定部)の形式で表現す
る。第11図に、汎用計算機の命令形式の一例を示す。
この図の°゛主記憶オペランド”にも示すように、主記
憶上の基底番地と変位可変部は、ハードウェア命令の中
のレジスタオペランドとして指定されたレジスタの内容
で表され、変位固定部は、命令の中に直接に値が埋め込
まれることになる。
憶上の基底番地と変位可変部は、ハードウェア命令の中
のレジスタオペランドとして指定されたレジスタの内容
で表され、変位固定部は、命令の中に直接に値が埋め込
まれることになる。
一般的には、ソースプログラム中に出現する配列要素を
アクセスする際に、基底番地として各配列に固有の番地
を使用するとともに、配列添字の表現を、変位可変部と
変位固定部とによって行うことになる。ソースプログラ
ムの配列添字式は、(変数値+定数値)の形式で表現さ
れるので、加算命令を1つ減らして番地計算を高速化す
るために、変数値を変位可変部のレジスタが指定する領
域に格納し、定数値を変位固定部として命令の中に直接
に埋め込む構成を採ることになる。しかるに、変位固定
部に設定できる値には、ハードウェア面から所定の制限
が加わることになる。例えば、第11図に示す命令形式
でみるならば、変位固定部の取れる値域は、0°゛から
“4095’”である、これから、変位固定部に設定す
る定数値が下限値以下(この場合では、“0″)になる
ことを避けるために、基底番地を配列の先頭要素からす
らして、基底番地が、存在しない配列要素を指すように
設定することになる。
アクセスする際に、基底番地として各配列に固有の番地
を使用するとともに、配列添字の表現を、変位可変部と
変位固定部とによって行うことになる。ソースプログラ
ムの配列添字式は、(変数値+定数値)の形式で表現さ
れるので、加算命令を1つ減らして番地計算を高速化す
るために、変数値を変位可変部のレジスタが指定する領
域に格納し、定数値を変位固定部として命令の中に直接
に埋め込む構成を採ることになる。しかるに、変位固定
部に設定できる値には、ハードウェア面から所定の制限
が加わることになる。例えば、第11図に示す命令形式
でみるならば、変位固定部の取れる値域は、0°゛から
“4095’”である、これから、変位固定部に設定す
る定数値が下限値以下(この場合では、“0″)になる
ことを避けるために、基底番地を配列の先頭要素からす
らして、基底番地が、存在しない配列要素を指すように
設定することになる。
従来技術では、この基底番地の設定を、配列の先頭要素
から常に一定の値でもって実現するよう構成していた。
から常に一定の値でもって実現するよう構成していた。
すなわち、従来技術では、基底番地と配列の先頭要素と
の変位関係を、予め定められた同車の値に従って実現す
るよう構成していたのである。
の変位関係を、予め定められた同車の値に従って実現す
るよう構成していたのである。
しかしながら、従来技術のように、基底番地の設定を、
配列の先頭要素から常に一定の値に従って設定するよう
構成すると、この一定値が小さいと、配列の定数値の変
動が大きい場合に、すべての配列要素の定数値を、変位
固定部の下限値以上に設定できなくなるという問題点が
あった。この問題点を避けるために、この一定値を余裕
をみて大きくとると、今度は、変位固定部の上限値以下
に入ることができなくなるものが増加してしまうことに
なるという問題点があった。このように、変位固定部の
値域に入らないものは、変位可変部若しくは基底番地を
示すレジスタに加算して表現しなくてはならず、加算命
令の分だけ実行時間が遅くなるという欠点があったので
ある。
配列の先頭要素から常に一定の値に従って設定するよう
構成すると、この一定値が小さいと、配列の定数値の変
動が大きい場合に、すべての配列要素の定数値を、変位
固定部の下限値以上に設定できなくなるという問題点が
あった。この問題点を避けるために、この一定値を余裕
をみて大きくとると、今度は、変位固定部の上限値以下
に入ることができなくなるものが増加してしまうことに
なるという問題点があった。このように、変位固定部の
値域に入らないものは、変位可変部若しくは基底番地を
示すレジスタに加算して表現しなくてはならず、加算命
令の分だけ実行時間が遅くなるという欠点があったので
ある。
本発明はかかる事情に鑑みてなされたものであって、配
列の定数値が、変位固定部の値域に適切に包含されるよ
うになる翻訳処理装置における番地割付処理方式を提供
することで、このような問題点を解決することを目的と
するものである。
列の定数値が、変位固定部の値域に適切に包含されるよ
うになる翻訳処理装置における番地割付処理方式を提供
することで、このような問題点を解決することを目的と
するものである。
第1図は本発明の原理構成図である。
図中、10は変数値と定数値とに従って記述される配列
を存するソースプログラム、20はこのソースプログラ
ムIOの配列要素に対して、基底番地と変位可変部と変
位固定部とによって表される主記憶装置上の番地を割り
付けるための翻訳処理装置、30はこの翻訳処理装置2
0によって翻訳されたオブジェクトプログラムである0
本発明の翻訳処理装置20は、変位生成手段21、最大
最小検出手段22、基底番地割付手段23、変位更新手
段24及びハードウェア命令生成手段25を備えること
になる。どの変位生成手段21は、基底番地が配列の先
頭要素に割り付けられているものと仮定して、各配列要
素の変数値及び定数値の中間コードを生成し、最大最小
検出手段22は、変位生成手段21の生成結果に従って
、各配列ごとに、定数値の中間コードの最大値と最小値
を検出し、基底番地割付手段23は、′最大最小検出手
段22の検出結果に従って、基底番地と配列の先頭要素
との間の変位関係を割り付け、変位更新手段24は、基
底番地割付手段23の割付結果に従って、各配列の定数
値の中間コードが変位固定部の有する値域に入るべく、
変位生成手段21により生成された変数値及び定数値の
中間コードを更新し、ハードウェア命令生成手段25は
、変位更新手段24により求まる定数値の中間コードを
変位固定部に割り付けるとともに、変数値の中間コード
を変位可変部に割り付けることでハードウェア命令を生
成するよう処理する。
を存するソースプログラム、20はこのソースプログラ
ムIOの配列要素に対して、基底番地と変位可変部と変
位固定部とによって表される主記憶装置上の番地を割り
付けるための翻訳処理装置、30はこの翻訳処理装置2
0によって翻訳されたオブジェクトプログラムである0
本発明の翻訳処理装置20は、変位生成手段21、最大
最小検出手段22、基底番地割付手段23、変位更新手
段24及びハードウェア命令生成手段25を備えること
になる。どの変位生成手段21は、基底番地が配列の先
頭要素に割り付けられているものと仮定して、各配列要
素の変数値及び定数値の中間コードを生成し、最大最小
検出手段22は、変位生成手段21の生成結果に従って
、各配列ごとに、定数値の中間コードの最大値と最小値
を検出し、基底番地割付手段23は、′最大最小検出手
段22の検出結果に従って、基底番地と配列の先頭要素
との間の変位関係を割り付け、変位更新手段24は、基
底番地割付手段23の割付結果に従って、各配列の定数
値の中間コードが変位固定部の有する値域に入るべく、
変位生成手段21により生成された変数値及び定数値の
中間コードを更新し、ハードウェア命令生成手段25は
、変位更新手段24により求まる定数値の中間コードを
変位固定部に割り付けるとともに、変数値の中間コード
を変位可変部に割り付けることでハードウェア命令を生
成するよう処理する。
本発明では、基底番地割付手段23は、基底番地から先
頭要素までの変位“Do”の値が、D、1.fi≦Do
+D+≦DI+Dt≦D IIMXの不等式を満たすよ
う決定する。ここで、DI :各配列の定数値の中間コ
ードの最小値D2 :各配列の定数値の中間コードの最
大値Dllifi’変位固定部の値域の最小値DIII
IX:変位固定部の値域の最大値である。そして、変位
更新手段24は、変位生成手段21により生成された定
数値の中間コードを、この“D、”の値分ずらすよう処
理する。この処理により、各配列の定数値が変位固定部
の有する値域に適切に入ることになる。
頭要素までの変位“Do”の値が、D、1.fi≦Do
+D+≦DI+Dt≦D IIMXの不等式を満たすよ
う決定する。ここで、DI :各配列の定数値の中間コ
ードの最小値D2 :各配列の定数値の中間コードの最
大値Dllifi’変位固定部の値域の最小値DIII
IX:変位固定部の値域の最大値である。そして、変位
更新手段24は、変位生成手段21により生成された定
数値の中間コードを、この“D、”の値分ずらすよう処
理する。この処理により、各配列の定数値が変位固定部
の有する値域に適切に入ることになる。
一方、110.”の値が、この不等式を満たすことがな
いときには、変位更新手段24は、変位固定部の有する
値域に入らない定数値の中間コードについては、変位可
変部に吸収する形式で中間コードを生成するよう処理す
る。
いときには、変位更新手段24は、変位固定部の有する
値域に入らない定数値の中間コードについては、変位可
変部に吸収する形式で中間コードを生成するよう処理す
る。
このように、本発明によれば、配列の定数値が、自動的
に、変位固定部の値域に適切に包含されるようになるの
である。
に、変位固定部の値域に適切に包含されるようになるの
である。
〔実施例]
以下、実施例に従って本発明の詳細な説明する。
第2図に本発明のシステム構成図を示す。この図に示す
ように、本発明の番地割付処理方式を実装するコンパイ
ラ20aは、ソースプログラム解析部の配列要素に対し
て、基底番地と変位可変部と変位固定部とによって表さ
れる主記憶装置上の番地を割り付けて、オブジェクトプ
ログラム30を生成するよう処理するものである。この
処理の実現のために、本発明のコンパイラ20aは、図
中に示すように、機能構成的に、ソースプログラム解析
部lと、第1の最適化部2と、領域v1付部3と、第2
の最適化部4と、コード生成部5とを備えるものである
。
ように、本発明の番地割付処理方式を実装するコンパイ
ラ20aは、ソースプログラム解析部の配列要素に対し
て、基底番地と変位可変部と変位固定部とによって表さ
れる主記憶装置上の番地を割り付けて、オブジェクトプ
ログラム30を生成するよう処理するものである。この
処理の実現のために、本発明のコンパイラ20aは、図
中に示すように、機能構成的に、ソースプログラム解析
部lと、第1の最適化部2と、領域v1付部3と、第2
の最適化部4と、コード生成部5とを備えるものである
。
ソースプログラム解析部1の実行する処理内容は、第3
図(A)に示すように、ソースプログラムの読み込み処
理と、配列使用に対する中間コードの作成処理とからな
り、領域割付部3の実行する処理内容は、第3図(B)
に示すように、基底番地の決定処理と、定数値の更新処
理とからなり、コード生成部5の処理内容は、ハードウ
ェア命令の生成処理からなるものである。そして、第1
の最適化部2は、ソースプログラム解析部1の処理結果
を最適化して領域割付部3に渡し、第2の最適化部4は
、領域割付部3の処理結果を最適化してコード生成部5
に渡すよう処理する。
図(A)に示すように、ソースプログラムの読み込み処
理と、配列使用に対する中間コードの作成処理とからな
り、領域割付部3の実行する処理内容は、第3図(B)
に示すように、基底番地の決定処理と、定数値の更新処
理とからなり、コード生成部5の処理内容は、ハードウ
ェア命令の生成処理からなるものである。そして、第1
の最適化部2は、ソースプログラム解析部1の処理結果
を最適化して領域割付部3に渡し、第2の最適化部4は
、領域割付部3の処理結果を最適化してコード生成部5
に渡すよう処理する。
次に、第4図に示すフローチャートに従って、ソースプ
ログラム解析部1とHMi allJ付部3の処理内容
の詳細について説明する。
ログラム解析部1とHMi allJ付部3の処理内容
の詳細について説明する。
第4図のフローチャートの処理内容の理解を深めるため
に、コンパイルされるソースプログラム10として、第
5図に示すソースプログラム10を想定することにする
。このソースプログラム10は、2048個の配列要素
からなる実数型の“A″と“B”という配列のプログラ
ム例であり、rA(1)=・・・」は、A配列の変数値
■で示される要素に値を設定するというプログラムステ
ップを意味し、「・・・=A (1+1022)Jは、
A配列の変数値I、定数値1022の値で示される要素
を参照するというプログラムステップを意味している。
に、コンパイルされるソースプログラム10として、第
5図に示すソースプログラム10を想定することにする
。このソースプログラム10は、2048個の配列要素
からなる実数型の“A″と“B”という配列のプログラ
ム例であり、rA(1)=・・・」は、A配列の変数値
■で示される要素に値を設定するというプログラムステ
ップを意味し、「・・・=A (1+1022)Jは、
A配列の変数値I、定数値1022の値で示される要素
を参照するというプログラムステップを意味している。
コンパイル処理の要求があると、コンパイラ20aは、
最初に、ステップ1で示すように、ソースプログラム1
0を読み込むよう処理する。この処理により、第5図の
ソースプログラムが読み込まれることになる0次に、ス
テップ2で、基底番地が配列の先頭要素に割り付けられ
ているものと仮定して、中間コードを作成する。このス
テップ2における中間コードの生成は、具体的には、変
数値=(ソースの変数値) X(l要素の領域長) 定数値−(ソースの定数値−添字の下限値)X(1要素
の領域長) の式に従って生成されることになる。A配列、B配列と
も、1要素の領域長を4バイトとし、“1”から始まる
ものとすると、このステップ2の処理により、第5図の
ソースプログラムから第6図に示す中間コードが生成さ
れることになる。
最初に、ステップ1で示すように、ソースプログラム1
0を読み込むよう処理する。この処理により、第5図の
ソースプログラムが読み込まれることになる0次に、ス
テップ2で、基底番地が配列の先頭要素に割り付けられ
ているものと仮定して、中間コードを作成する。このス
テップ2における中間コードの生成は、具体的には、変
数値=(ソースの変数値) X(l要素の領域長) 定数値−(ソースの定数値−添字の下限値)X(1要素
の領域長) の式に従って生成されることになる。A配列、B配列と
も、1要素の領域長を4バイトとし、“1”から始まる
ものとすると、このステップ2の処理により、第5図の
ソースプログラムから第6図に示す中間コードが生成さ
れることになる。
続いて、ステップ3で、生成された定数値の中間コード
を検索して、配列ごとに、定数値の中間コードの最小値
り、と最大値D2を検出する。第6図の中間コードの例
でみるならば、A配列に対しては、定数値の中間コード
として、 −4,4084,36″があるので、D、=
−4,Dg=4084、B配列に対しては、定数値の中
間コードとして、 −24,−4”があるので、D、=
−24、D、=−4が検出される0以上に説明したステ
ップ1ないしステップ3の処理は、ステップ4の判断で
、ソースプログラム10の終了が確認されるまで繰り返
されることになる。
を検索して、配列ごとに、定数値の中間コードの最小値
り、と最大値D2を検出する。第6図の中間コードの例
でみるならば、A配列に対しては、定数値の中間コード
として、 −4,4084,36″があるので、D、=
−4,Dg=4084、B配列に対しては、定数値の中
間コードとして、 −24,−4”があるので、D、=
−24、D、=−4が検出される0以上に説明したステ
ップ1ないしステップ3の処理は、ステップ4の判断で
、ソースプログラム10の終了が確認されるまで繰り返
されることになる。
このようにして、中間コードを生成し、定数値の中間コ
ードの最大最小値を求めると、次のステップ5で、1つ
の配列を取り出し、続くステップ6で、 DI−D−!−DI の式に従って、その取り出された配列に対して、基底番
地から先頭要素までの変位D0の値を算出する。ここで
、Dl、1は、主記憶上の番地を指定する変位固定部の
値域の最小値であり、前述したように、第11図の命令
形式では“O”である。
ードの最大最小値を求めると、次のステップ5で、1つ
の配列を取り出し、続くステップ6で、 DI−D−!−DI の式に従って、その取り出された配列に対して、基底番
地から先頭要素までの変位D0の値を算出する。ここで
、Dl、1は、主記憶上の番地を指定する変位固定部の
値域の最小値であり、前述したように、第11図の命令
形式では“O”である。
この式の意味するところは、変位固定部の値域の最大値
をD□8で表すならば、D、の値が、DmrnS DO
+ D +≦Do+Dt≦D ++i 11 Mの不等
式を満たせば、定数値は変位固定部の値域内に収まるこ
とができるので、その条件を充足する1つのDoを選択
したのである。このステップ6の処理で、D□7が“0
°゛であるならば、A配列に対しては、D、=4、B配
列に対しては、D。
をD□8で表すならば、D、の値が、DmrnS DO
+ D +≦Do+Dt≦D ++i 11 Mの不等
式を満たせば、定数値は変位固定部の値域内に収まるこ
とができるので、その条件を充足する1つのDoを選択
したのである。このステップ6の処理で、D□7が“0
°゛であるならば、A配列に対しては、D、=4、B配
列に対しては、D。
−24が算出されることになる。このステップ5及びス
テップ6の処理は、ステップ7の判断で、すべての配列
の取り出しの終了が確認されるまで繰り返される。そし
て、このステップ7の処理が終了した時点で、配列ごと
に、Do、Dl及びD2の値が求められることになって
、第7図に示すような配列管理テーブルが作成されるこ
とになる。
テップ6の処理は、ステップ7の判断で、すべての配列
の取り出しの終了が確認されるまで繰り返される。そし
て、このステップ7の処理が終了した時点で、配列ごと
に、Do、Dl及びD2の値が求められることになって
、第7図に示すような配列管理テーブルが作成されるこ
とになる。
続いて、ステップ8で、ステップ2で生成した中間コー
ドを取り出し、次のステップ9で、取り出された定数値
の中間コードにステップ6で求められたDoを加算して
、新たな定数値の中間コードとする演算処理を実行する
。このとき、Doは、その属する配列のものを使用する
。そして、続くステップ10で、この新たな定数値の中
間コードが、主記憶上の番地を指定する変位固定部の値
域の最大値り、1、より小さいか否かを判断する。この
ステップ10の判断で、D、1.より小さいと判断する
ときには、新たな定数値の中間コードは変位固定部の値
域内に収まるので、ステップ14に進み、すべての中間
コードを取り出したか否かを判断し、すべての中間コー
ドを取り出しているならば処理を終了する。すべての中
間コードを取り出していないならば、ステップ8に戻り
、すべての中間コードを取り出すまで処理を繰り返すこ
とになる。
ドを取り出し、次のステップ9で、取り出された定数値
の中間コードにステップ6で求められたDoを加算して
、新たな定数値の中間コードとする演算処理を実行する
。このとき、Doは、その属する配列のものを使用する
。そして、続くステップ10で、この新たな定数値の中
間コードが、主記憶上の番地を指定する変位固定部の値
域の最大値り、1、より小さいか否かを判断する。この
ステップ10の判断で、D、1.より小さいと判断する
ときには、新たな定数値の中間コードは変位固定部の値
域内に収まるので、ステップ14に進み、すべての中間
コードを取り出したか否かを判断し、すべての中間コー
ドを取り出しているならば処理を終了する。すべての中
間コードを取り出していないならば、ステップ8に戻り
、すべての中間コードを取り出すまで処理を繰り返すこ
とになる。
一方、ステップ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に戻り、すべての中
間コードを取り出すまで処理を繰り返すことになる。
きいと判断するときには、ステップ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に戻り、すべての中
間コードを取り出すまで処理を繰り返すことになる。
ステップ8ないしステップ14の処理により求まる第6
図の中間コードの変換例を、第8図に示す、第6図の中
間コードは、ステップ9のDoの加算処理によっても、
定数値の中間コードの値がすべてり、□(ここでは、”
4095”である)以下になるので、ステップ11ない
しステップ13の処理は実行されるこリタい、従って、
第8図に示すように、変数値は変わらず、定数値がり。
図の中間コードの変換例を、第8図に示す、第6図の中
間コードは、ステップ9のDoの加算処理によっても、
定数値の中間コードの値がすべてり、□(ここでは、”
4095”である)以下になるので、ステップ11ない
しステップ13の処理は実行されるこリタい、従って、
第8図に示すように、変数値は変わらず、定数値がり。
分大きくなるだけである。なお、第4図に示すフローチ
ャートでは、 D@=Da!+%−D。
ャートでは、 D@=Da!+%−D。
の式に従ってDoを選択したが、D、の選択式は、D
* r *≦Do+D、≦o、+1)、≦D、□の不等
式を満たせばよいので、例えば、Do−D−−X Dt に従って選択するものであってもよいのである。
* r *≦Do+D、≦o、+1)、≦D、□の不等
式を満たせばよいので、例えば、Do−D−−X Dt に従って選択するものであってもよいのである。
そして、最終的に生成された中間コードは、最後に、コ
ード生成部5に従って、ハードウェア命令に変換処理さ
れることになる。
ード生成部5に従って、ハードウェア命令に変換処理さ
れることになる。
このように、本発明では、基底番地の設定を、配列の先
頭要素から常に一定の値でもって実現するのではなく、
変位固定部の値域を考慮しながらその都度決めていくの
で、定数値が、適切に変位固定部の値域に入ることにな
る0例えば、第9図(A)に示すソースプログラムの定
数値が変位固定部の値域に入るためには、 D a i * S D e + D +≦D、+D、
≦D、□の不等式を解くことで判るように、基底番地は
、4バイトないし11バイト分、配列の先頭要素から上
に設定される必要がある。この位置関係を第9図(C)
に示す、ここで、変位固定部の値域等の条件は、これま
での説明と同一としている。また、第9図(B)は、ス
テップ2で求められる中間コードを示している。この第
9図(C)から明らかなように、基底番地の設定を一律
に、配列の先頭要素から例えば16バイトずらすという
ような従来技術では、変位固定部の値域に入らないもの
もでてくるのである。
頭要素から常に一定の値でもって実現するのではなく、
変位固定部の値域を考慮しながらその都度決めていくの
で、定数値が、適切に変位固定部の値域に入ることにな
る0例えば、第9図(A)に示すソースプログラムの定
数値が変位固定部の値域に入るためには、 D a i * S D e + D +≦D、+D、
≦D、□の不等式を解くことで判るように、基底番地は
、4バイトないし11バイト分、配列の先頭要素から上
に設定される必要がある。この位置関係を第9図(C)
に示す、ここで、変位固定部の値域等の条件は、これま
での説明と同一としている。また、第9図(B)は、ス
テップ2で求められる中間コードを示している。この第
9図(C)から明らかなように、基底番地の設定を一律
に、配列の先頭要素から例えば16バイトずらすという
ような従来技術では、変位固定部の値域に入らないもの
もでてくるのである。
また、第1O図(A)に示すソースプログラムの定数値
が変位固定部の値域に入るためには、第10図(C)に
示すように、基底番地が、1バイトないし4092バイ
ト分、配列の先頭要素から下に設定される必要がある。
が変位固定部の値域に入るためには、第10図(C)に
示すように、基底番地が、1バイトないし4092バイ
ト分、配列の先頭要素から下に設定される必要がある。
ここで、第10図(B)は、ステップ2で求められる中
間コードを示している。この第1O図(C)から明らか
なように、基底番地を配列の先頭要素の下にずらすとい
う、従来技術では採らなかった方法も、本発明では採る
ことになるのである。これにより、定数値が変位固定部
の値域に適切に入ることになる。
間コードを示している。この第1O図(C)から明らか
なように、基底番地を配列の先頭要素の下にずらすとい
う、従来技術では採らなかった方法も、本発明では採る
ことになるのである。これにより、定数値が変位固定部
の値域に適切に入ることになる。
以上、図示実施例について説明したが、本発明はこれに
限定されるものではない。例えば、変位固定部の値域を
0°“から“4095“°で説明したが、このような数
値は、説明の便宜のために例示したものに過ぎないので
ある。
限定されるものではない。例えば、変位固定部の値域を
0°“から“4095“°で説明したが、このような数
値は、説明の便宜のために例示したものに過ぎないので
ある。
このように、本発明によれば、配列の定数値が、自動的
に、変位固定部の値域に適切に包含されるようになる。
に、変位固定部の値域に適切に包含されるようになる。
これから、定数値の変動が大きい場合でも、基底番地に
よって吸収されるので、添字計算部分の命令を削減して
、プログラムの実行性能を向上させることができるので
ある。
よって吸収されるので、添字計算部分の命令を削減して
、プログラムの実行性能を向上させることができるので
ある。
第1図は本発明の原理構成図、
第2図は本発明のシステム構成図、
第3図はソースプログラム解析部及び領域割付部の処理
内容の説明図、 第4図は本発明の実行するフローチャート、第5図はソ
ースプログラムの一例、 第6図はステップ2の処理で求まる中間コードの一例、 第7図はステップ6の処理で求まる配列管理テーブルの
一例、 第8図はステップ14の処理で求まる中間コードの一例
、 第9図及び第10図は本発明の詳細な説明図、第11図
は命令形式の説明図である。 図中、10はソースプログラム、20は翻訳処理装置、
21は変位生成手段、22は最大最小検出手段、23は
基底番地υ1付手段、24は変位更新手段、25はハー
ドウェア命令生成手段である。
内容の説明図、 第4図は本発明の実行するフローチャート、第5図はソ
ースプログラムの一例、 第6図はステップ2の処理で求まる中間コードの一例、 第7図はステップ6の処理で求まる配列管理テーブルの
一例、 第8図はステップ14の処理で求まる中間コードの一例
、 第9図及び第10図は本発明の詳細な説明図、第11図
は命令形式の説明図である。 図中、10はソースプログラム、20は翻訳処理装置、
21は変位生成手段、22は最大最小検出手段、23は
基底番地υ1付手段、24は変位更新手段、25はハー
ドウェア命令生成手段である。
Claims (1)
- 【特許請求の範囲】 変数値と定数値とに従って記述されたソースプログラム
(10)中の配列要素に対して、基底番地と変位可変部
と変位固定部とによって表される主記憶装置上の番地を
割り付けるための翻訳処理装置における番地割付処理方
式において、 基底番地が配列の先頭要素に割り付けられているものと
仮定して、各配列要素の変数値及び定数値の中間コード
を生成する変位生成手段(21)と、この変位生成手段
(21)の生成結果に従って、各配列ごとに、定数値の
中間コードの最大値と最小値を検出する最大最小検出手
段(22)と、 この最大最小検出手段(22)の検出結果に従って、基
底番地と配列の先頭要素との間の変位関係を割り付ける
基底番地割付手段(23)と、 この基底番地割付手段(23)の割付結果に従って、各
配列の定数値の中間コードが変位固定部の有する値域に
入るべく、上記変位生成手段(21)により生成された
変数値及び定数値の中間コードを更新する変位更新手段
(24)とを備え、 この変位更新手段(24)により求まる定数値の中間コ
ードを変位固定部に割り付けるとともに、変数値の中間
コードを変位可変部に割り付けることでハードウェア命
令を生成するよう処理してなることを、 特徴とする翻訳処理装置における番地割付処理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63193273A JPH0833824B2 (ja) | 1988-08-02 | 1988-08-02 | 翻訳処理装置における番地割付処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63193273A JPH0833824B2 (ja) | 1988-08-02 | 1988-08-02 | 翻訳処理装置における番地割付処理方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0241525A true JPH0241525A (ja) | 1990-02-09 |
| JPH0833824B2 JPH0833824B2 (ja) | 1996-03-29 |
Family
ID=16305196
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63193273A Expired - Fee Related JPH0833824B2 (ja) | 1988-08-02 | 1988-08-02 | 翻訳処理装置における番地割付処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0833824B2 (ja) |
Cited By (1)
| 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)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6229818A (ja) * | 1985-07-26 | 1987-02-07 | ケルンフオルシユングスアンラ−ゲ・ユ−リツヒ・ゲゼルシヤフト・ミト・ベシユレンクテル・ハフツング | 燃料−空気−混合物を造るための液状燃料用蒸発器 |
-
1988
- 1988-08-02 JP JP63193273A patent/JPH0833824B2/ja not_active Expired - Fee Related
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6229818A (ja) * | 1985-07-26 | 1987-02-07 | ケルンフオルシユングスアンラ−ゲ・ユ−リツヒ・ゲゼルシヤフト・ミト・ベシユレンクテル・ハフツング | 燃料−空気−混合物を造るための液状燃料用蒸発器 |
Cited By (1)
| 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 (ja) | 1996-03-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4215400A (en) | Disk address controller | |
| JP2893071B2 (ja) | マルチ・スレッド対応ディジタル・データ・プロセッサ用スレッド・プライベート・メモリ | |
| KR100518584B1 (ko) | 공유 라이브러리 시스템 및 상기 시스템 구축 방법 | |
| US6275830B1 (en) | Compile time variable size paging of constant pools | |
| JPH02201653A (ja) | アプリケーシヨン・プログラム・インターフエース方法 | |
| JP2000347876A (ja) | スタック・スロット割当て方法および装置 | |
| CN113569508B (zh) | 基于id进行数据索引与访问的数据库模型构建方法及设备 | |
| JP2020087470A (ja) | データアクセス方法、データアクセス装置、機器及び記憶媒体 | |
| JPH11110236A (ja) | 大きなメモリの割り当て方法及び装置 | |
| JPH0241525A (ja) | 翻訳処理装置における番地割付処理方式 | |
| KR100809293B1 (ko) | 가상 머신에서 스택을 관리하는 장치 및 그 방법 | |
| JPH05507572A (ja) | 多重プロセッサシステムにおいてページゼロメモリアクセスを管理するための方法及び装置 | |
| KR100315500B1 (ko) | 메모리할당방법 | |
| JP4260895B2 (ja) | マイクロコントローラにおける複数フォーマットアドレス指定 | |
| JP6932755B2 (ja) | オペレーティングシステム及びメモリ割り当て方法 | |
| JP3338466B2 (ja) | 主記憶アクセス最適化処理装置 | |
| JPS6234240A (ja) | デ−タ割付け方式 | |
| JPS62251851A (ja) | 電子計算機システムのオ−バレイ制御方式 | |
| JPH0224726A (ja) | 最適データ割付け方式 | |
| CN121523760A (zh) | 一种基于多核amp架构dsp操作系统的动态加卸载方法 | |
| CN113688063A (zh) | 一种在存储器中为数据分配存储地址的方法和设备 | |
| Lang | Leon Alkalaj October 1986 Milos Ercegovac CSD-860026 Tomas Lang | |
| JPS61204752A (ja) | アドレス変換方式 | |
| JPH07129408A (ja) | 言語処理プログラムの実行方式 | |
| JPH02217946A (ja) | フアイルアクセス方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |