JPH086797A - 定数参照最適化処理装置 - Google Patents
定数参照最適化処理装置Info
- Publication number
- JPH086797A JPH086797A JP13547794A JP13547794A JPH086797A JP H086797 A JPH086797 A JP H086797A JP 13547794 A JP13547794 A JP 13547794A JP 13547794 A JP13547794 A JP 13547794A JP H086797 A JPH086797 A JP H086797A
- Authority
- JP
- Japan
- Prior art keywords
- constant
- program
- data
- immediate
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
し、定数データが最大即値長を越える場合にも、定数の
即値化を可能にした定数参照最適化処理装置を目的とす
る。 【構成】 計算機の原始プログラムを翻訳して、目的プ
ログラムを生成する場合に、該命令の即値オペランドに
定まる最大即値長を越えるデータ長の定数データを参照
するプログラムを最適化する定数参照最適化処理装置で
あって、定数分割部1は、該定数データの参照部分を、
該最大即値長を越えないデータ長の部分データに区分
し、プログラム生成部2は、該定数データを参照して行
う指定の処理を、各該部分データごとの処理に分割し、
各該分割した処理について、該部分データの参照を該部
分データを即値として有する即値参照命令によって行う
プログラムを生成するように構成する。
Description
ンパイラの処理において、定数参照を効率よく実行でき
るプログラムを生成する定数参照最適化処理装置に関す
る。
原始プログラムを翻訳して目的プログラムを生成するコ
ンパイラの処理において、目的プログラムの実行効率を
高めるために、定数参照を即値化することはよく知られ
ている。
として定義されたデータを、一般に独立のデータとして
主記憶領域に置かれるように目的プログラムを生成し、
その定数データを参照する必要のある目的プログラムの
個所に、主記憶領域からデータを読み出して処理装置の
レジスタへ設定等する命令(以下においてロード系命令
という)で定数データ取り出すように命令を生成してお
いて、定数の参照を実行するようにする。
明する図であり、A、B、C....は例えば各1バイトの
定数であって、アドレス「あ」から配置されていること
を示す。
の主記憶領域へ格納するプログラムを、前記のように生
成したプログラムの例であって、この例ではロード系命
令である「load」命令により、「address_of_あ+
0」等のオペランドアドレスで指定される主記憶領域の
データを、「Reg 」で示される4バイト幅のレジスタへ
読み込み、次の「store 」命令でレジスタから「別の領
域」へ書き込む。
あって、例えば主記憶上の定数データを読んで、レジス
タにあるデータとの論理和をとるような演算を含む参照
であれば、ロード系命令を例えば「or」命令にする。
とする主記憶領域上のデータを指示するオペランドアド
レスの情報を、何等かの形で命令語の中の持ち、命令の
実行中には当然そのオペランドアドレスによって主記憶
領域にアクセスする制御が行われる。
処理装置内の制御よりも長い時間を要するので、コンパ
イラは可能な場合には、定数データの参照のためのロー
ド系命令を、定数データを即値として持つ命令に変える
最適化を行う。
の中に直接保持されているオペランドであり、前記定数
データを参照するロード系命令に代えて、定数データを
即値として持ち、即値をレジスタへ設定等する命令(以
下において即値参照命令という)を使用すれば、実行の
ために命令語を読み出した時に定数データが処理装置へ
持って来られるので、実行時には主記憶領域へのアクセ
スを必要とせず、実行時間を短縮できる。
限され、即値の長さはその命令語長内の或る最大即値長
に制限されているので、前記のような即値参照命令を使
用する最適化は、参照対象の定数データとして、最大即
値長を越えない定数データが確定している場合のみ行わ
れる。
例えば4バイトのみの定数データ「ABCD」を他の主
記憶領域へ格納するプログラムは、図3(c) に示すよう
な即値化したプログラムにすることができる。
号で囲んで示されるオペランドの即値を、「Reg 」で示
されるレジスタに設定する。なお、前記と同様に、演算
を含む参照の場合には、他の即値参照命令を使用する。
らず、定数データが最大即値長を越える場合、又、定数
データの参照すべき部分が実行時まで確定しない場合に
も、定数参照の最適化を可能にした定数参照最適化処理
装置を目的とする。
示すブロック図である。図は定数参照最適化処理装置の
構成であり、計算機の原始プログラムを翻訳して、目的
プログラムを生成する場合に、該命令の即値オペランド
に定まる最大即値長を越えるデータ長の定数データを参
照するプログラムを最適化する定数参照最適化処理装置
であって、定数分割部1と、プログラム生成部2を有す
る。
は、該定数データの参照部分を区分して、該最大即値長
を越えないデータ長の部分データの並びとする。プログ
ラム生成部2は、該定数データを参照して行う指定の処
理を、各該部分データごとの処理に分割し、各該分割し
た処理について、該部分データの参照を該部分データを
即値として有する即値参照命令によって行うプログラム
を生成する。
記定数データの参照部分が実行時まで確定しない場合に
は、該参照部分の位置を指示する変数のとり得る変数値
に従って、各該変数値で定まる該参照部分を決定して、
各該参照部分ごとに前記の部分データに分割する。
ごとについて、第1の発明のとおりプログラムを生成
し、該変数値を分岐条件として該プログラムの一つに分
岐するプログラムを付加する。
発明の他に、判定部3が前記生成するプログラムの総命
令数を識別し、該総命令数が予め指定されている制限値
を越えない場合のみ、該プログラムを有効とする。
記定数分割部1は、前記参照部分の位置を指示する変数
のとり得る変数値について、該変数が各該変数値をとる
確率が与えられた場合に、該確率が予め指定されている
判定値より大きい該変数値についてのみ、第2の発明の
参照部分の分割を行う。
ごとについて、第1の発明のとおりプログラムを生成
し、該確率が該判定値より大きい該変数値について該変
数値を分岐条件として該プログラムの一つに分岐するプ
ログラムを付加する。
最大即値長より長い定数データを参照する処理は、最大
即値長を越えない長さの部分データにデータを分割し、
各部分データごとに即値化して個別に処理するように最
適化する。
する部分が実行時に定まるような場合には、可能な参照
部分ごとに前記の最適化を行ったプログラムを作り、そ
れらのプログラムを実行時に選択して実行するように分
岐制御のプログラムを付加する。但し第3の発明によ
り、そのようにしてプログラムが大きくなり過ぎる場合
には、それを検出し、例えば最適化を止めて、主記憶上
の定数データを参照するようにすることもできる。
定数データの参照部分に、参照の行われる可能性に違い
がある場合には、その確率を与えることにより、確率の
高い場合についてのみ前記の最適化を行い、その他の場
合は一括して主記憶上の定数データを参照するように
し、それらを実行時に選択して実行するように分岐制御
のプログラムを付加するようにすることもできる。
理の流れの一例を示す図であり、定数参照最適化処理装
置は、例えばコンパイラの原始プログラム解析結果の中
間情報を受け取り、主として定数参照を行うプログラム
と、参照対象の定数データの定義とに関する情報に基づ
いて処理を行うものとする。
先ず処理を開始し、図2の処理ステップ10で先ず定数の
参照部分が確定しているか識別する。参照部分が確定し
ていれば直ちに処理ステップ15に進むが、実行時まで参
照部分を確定できない場合には、処理ステップ11で可能
な参照部分を定める変数の各値を抽出し、処理ステップ
12で識別して、変数の各値に対応する確率が与えられて
いる場合には、処理ステップ13で、確率が予め与えられ
ている判定値より大きい変数値のみを選択する。
えば一旦仮に、即値化することなくコンパイルし、その
目的プログラムの実行を、各種の入力条件等で試行し
て、それらの場合の変数の値を採集するか、又はそのよ
うな試行に対応する思考実験を行うことによって求め、
コンパイルの一条件として指定するものとする。
ついて、処理ステップ14でそれらの各値と、それらに対
応して定まる各参照部分の、先頭位置とデータの長さと
を作業域に保持する。
処理は、前記第2及び第4の発明の実施においてのみ必
要であり、第2の発明を実施しない場合にはそれらはす
べて必要無く、又第4の発明を実施しない場合に処理ス
テップ12及び13の処理は不要である。
つの参照部分の先頭位置とデータ長を取り出し、先頭位
置を変数p、データ長から定まる末尾位置を変数qの値
とする。
ば、処理ステップ17でp−q+1>Lか、即ち参照部分の
未処理部分がLより大きいか識別する。ここでLは最大
即値長として予め定められている定数である。
ステップ18で定数データの位置pから、長さLだけのデ
ータを取り出し、又残りがL以下なら、処理ステップ19
で定数データの位置pからqまでを取り出す。
が、原始プログラムの解析結果に基づいて、以上で取り
出したデータを即値として参照して処理する即値化プロ
グラム(の中間言語)を生成する。
数データの次の先頭位置へ進めて、処理ステップ16へ戻
り、以上を繰り返して、処理ステップ16でp>qを検出
すると処理ステップ22へ進み、処理ステップ14で準備し
たすべての場合の参照部分の処理を終わったか識別し、
未処理があれば処理ステップ15に戻る。
わると、プログラム生成部2は処理ステップ23で、複数
の場合について参照部分を設けた場合に、参照部分を定
める変数の各値によって、必要なプログラムを選択的に
実行するための分岐制御のプログラムを生成して、前記
の即値化プログラム群と組み合わせる。
すべての値に対応して即値化プログラムを生成しなかっ
た場合には、主記憶領域上に置く定数データを参照して
処理するプログラムを生成し、分岐制御で何れの即値化
プログラムも選択しない場合の分岐先とする。
グラム生成部2で作成されたプログラムの命令数をカウ
ントし、予め定めてある命令数の制限値を越えるか識別
し、制限値を越えた場合には、処理ステップ25で即値化
したプログラムをキャンセルする。又、命令数が制限値
以内であれば、処理ステップ26でプログラム生成部2が
生成したプログラムで解析結果を置き換えてコンパイラ
に渡す。なお、処理ステップ24及び25の処理は、前記第
3の発明を実施する場合のみ必要である。
値化プログラムの一例であって、前記図3(b)のプログ
ラムに対応する。又、図3(a)の定数データを、変数
「え」の位置からデータ長4バイトだけ参照するプログ
ラムの場合に、ロード系命令は例えば図3(e)のように
なるが、前記の本発明の処理で、(f) のように即値化す
ることができる。その場合に確率が指定されていて、
「え=2」の場合のみが判定値を越えていた場合には、
(g)のように、え=2の場合のみが即値化される。
よれば、計算機プログラムのコンパイル処理において、
定数データが最大即値長を越える場合、又、定数データ
の参照すべき部分が実行時まで確定しない場合にも、定
数参照の最適化が可能となり、目的プログラムの実行効
率を改善できるという著しい工業的効果がある。
Claims (4)
- 【請求項1】 計算機の原始プログラムを翻訳して、目
的プログラムを生成する場合に、命令の即値オペランド
に定まる最大即値長を越えるデータ長の定数データを参
照するプログラムを最適化する定数参照最適化処理装置
であって、 定数分割部(1)とプログラム生成部(2)とを有し、 該定数分割部(1)は、該定数データの参照部分を区分し
て、該最大即値長を越えないデータ長の部分データの並
びとし、 該プログラム生成部(2)は、該定数データを参照して行
う指定の処理を、各該部分データごとの処理に分割し、
各該分割した処理について、該部分データの参照を該部
分データを即値として有する即値参照命令によって行う
プログラムを生成するように構成されていることを特徴
とする定数参照最適化処理装置。 - 【請求項2】 前記定数分割部(1)は、前記定数データ
の参照部分が実行時まで確定しない場合には、該参照部
分の位置を指示する変数のとり得る変数値に従って、各
該変数値で定まる該参照部分を決定して、各該参照部分
ごとに請求項1記載の部分データに分割し、 前記プログラム生成部(2)は、各該参照部分ごとについ
て、請求項1記載のプログラムを生成し、該変数値を分
岐条件として該プログラムの一つに分岐するプログラム
を付加するように構成されていることを特徴とする請求
項1記載の定数参照最適化処理装置。 - 【請求項3】 判定部(3)が前記生成するプログラムの
総命令数を識別し、該総命令数が予め指定されている制
限値を越えない場合のみ、該プログラムを有効とするよ
うに構成されていることを特徴とする請求項2記載の定
数参照最適化処理装置。 - 【請求項4】 前記定数分割部(1)は前記参照部分の位
置を指示する変数のとり得る変数値について、該変数が
各該変数値をとる確率が与えられた場合に、該確率が予
め指定されている判定値より大きい該変数値についての
み、請求項2記載の参照部分の分割を行い、 前記プログラム生成部(2)は各該参照部分ごとについ
て、請求項1記載のプログラムを生成し、該確率が該判
定値より大きい該変数値について該変数値を分岐条件と
して該プログラムの一つに分岐するプログラムを付加す
るように構成されていることを特徴とする請求項2又は
請求項3記載の定数参照最適化処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13547794A JP3430635B2 (ja) | 1994-06-17 | 1994-06-17 | 定数参照最適化処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13547794A JP3430635B2 (ja) | 1994-06-17 | 1994-06-17 | 定数参照最適化処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH086797A true JPH086797A (ja) | 1996-01-12 |
JP3430635B2 JP3430635B2 (ja) | 2003-07-28 |
Family
ID=15152635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13547794A Expired - Fee Related JP3430635B2 (ja) | 1994-06-17 | 1994-06-17 | 定数参照最適化処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3430635B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100496946B1 (ko) * | 1997-08-29 | 2005-09-09 | 마츠시타 덴끼 산교 가부시키가이샤 | 정수복원형장어명령프로세서용프로그램변환장치 |
JP2008269569A (ja) * | 2007-03-27 | 2008-11-06 | Matsushita Electric Ind Co Ltd | コード変換装置 |
DE102008052717A1 (de) | 2008-01-31 | 2009-08-06 | Honda Motor Co., Ltd. | Steuerverfahren für ein stufenlos verstellbares Hydraulikgetriebe |
DE102008052716A1 (de) | 2008-01-31 | 2009-08-06 | Honda Motor Co., Ltd. | Getriebesteuerungsverfahren für ein stufenlos verstellbares Getriebe |
-
1994
- 1994-06-17 JP JP13547794A patent/JP3430635B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100496946B1 (ko) * | 1997-08-29 | 2005-09-09 | 마츠시타 덴끼 산교 가부시키가이샤 | 정수복원형장어명령프로세서용프로그램변환장치 |
JP2008269569A (ja) * | 2007-03-27 | 2008-11-06 | Matsushita Electric Ind Co Ltd | コード変換装置 |
US8392905B2 (en) | 2007-03-27 | 2013-03-05 | Panasonic Corporation | Compiling apparatus |
DE102008052717A1 (de) | 2008-01-31 | 2009-08-06 | Honda Motor Co., Ltd. | Steuerverfahren für ein stufenlos verstellbares Hydraulikgetriebe |
DE102008052716A1 (de) | 2008-01-31 | 2009-08-06 | Honda Motor Co., Ltd. | Getriebesteuerungsverfahren für ein stufenlos verstellbares Getriebe |
Also Published As
Publication number | Publication date |
---|---|
JP3430635B2 (ja) | 2003-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6243864B1 (en) | Compiler for optimizing memory instruction sequences by marking instructions not having multiple memory address paths | |
EP0373361B1 (en) | Generating efficient code for a computer with dissimilar register spaces | |
JP2001147819A (ja) | 最適化装置および記録媒体 | |
JPH04172533A (ja) | 電子計算機 | |
US4843545A (en) | Compile method using copy propagation of a variable | |
JPH04330527A (ja) | プログラムの最適化方法及びコンパイラ・システム | |
EP0947922B1 (en) | Compiler | |
JP3430635B2 (ja) | 定数参照最適化処理装置 | |
US6233732B1 (en) | Compiling system using intermediate codes to store a plurality of values | |
US20070011440A1 (en) | Processor and processing method | |
JPH01118931A (ja) | プログラム変換方式 | |
JP2003216442A (ja) | プログラム変換方法、これを用いたコンピュータ装置及びプログラム | |
EP0633525B1 (en) | Method for compilation of programming languages | |
EP0180077B1 (en) | A data processing machine for compiling computer programs | |
JP3495230B2 (ja) | エミュレーション処理方式 | |
JP2921259B2 (ja) | 多分岐命令の処理方式 | |
JP3338466B2 (ja) | 主記憶アクセス最適化処理装置 | |
JPH1165622A (ja) | プログラマブルコントローラ | |
JPH11345127A (ja) | コンパイラ | |
US5854919A (en) | Processor and its operation processing method for processing operation having bit width exceeding data width of bit storage unit | |
JP2568657B2 (ja) | データ駆動型マイクロプロセッサにおけるハッシュ衝突回避方法 | |
JP2809073B2 (ja) | 配列のメモリ割り付け方式 | |
JP3156343B2 (ja) | データ依存関係情報処理方法 | |
JPS6297031A (ja) | 仮数部のビツト数整合方式 | |
JPS6126692B2 (ja) |
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: 20030422 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080523 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090523 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090523 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100523 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100523 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110523 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |