JP3430635B2 - 定数参照最適化処理装置 - Google Patents

定数参照最適化処理装置

Info

Publication number
JP3430635B2
JP3430635B2 JP13547794A JP13547794A JP3430635B2 JP 3430635 B2 JP3430635 B2 JP 3430635B2 JP 13547794 A JP13547794 A JP 13547794A JP 13547794 A JP13547794 A JP 13547794A JP 3430635 B2 JP3430635 B2 JP 3430635B2
Authority
JP
Japan
Prior art keywords
program
constant
data
value
immediate
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
JP13547794A
Other languages
English (en)
Other versions
JPH086797A (ja
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.)
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 JP13547794A priority Critical patent/JP3430635B2/ja
Publication of JPH086797A publication Critical patent/JPH086797A/ja
Application granted granted Critical
Publication of JP3430635B2 publication Critical patent/JP3430635B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、計算機プログラムのコ
ンパイラの処理において、定数参照を効率よく実行でき
るプログラムを生成する定数参照最適化処理装置に関す
る。
【0002】
【従来の技術と発明が解決しようとする課題】計算機の
原始プログラムを翻訳して目的プログラムを生成するコ
ンパイラの処理において、目的プログラムの実行効率を
高めるために、定数参照を即値化することはよく知られ
ている。
【0003】即ち、コンパイラは原始プログラムで定数
として定義されたデータを、一般に独立のデータとして
主記憶領域に置かれるように目的プログラムを生成し、
その定数データを参照する必要のある目的プログラムの
個所に、主記憶領域からデータを読み出して処理装置の
レジスタへ設定等する命令(以下においてロード系命令
という)で定数データ取り出すように命令を生成してお
いて、定数の参照を実行するようにする。
【0004】図3(a) は主記憶領域上の定数データを説
明する図であり、A、B、C....は例えば各1バイトの
定数であって、アドレス「あ」から配置されていること
を示す。
【0005】又、図3(b)は、図3(a)の定数データを他
の主記憶領域へ格納するプログラムを、前記のように生
成したプログラムの例であって、この例ではロード系命
令である「load」命令により、「address_of_あ+
0」等のオペランドアドレスで指定される主記憶領域の
データを、「Reg 」で示される4バイト幅のレジスタへ
読み込み、次の「store 」命令でレジスタから「別の領
域」へ書き込む。
【0006】「load」命令は、定数データ参照の一例で
あって、例えば主記憶上の定数データを読んで、レジス
タにあるデータとの論理和をとるような演算を含む参照
であれば、ロード系命令を例えば「or」命令にする。
【0007】このように、ロード系命令は、オペランド
とする主記憶領域上のデータを指示するオペランドアド
レスの情報を、何等かの形で命令語の中の持ち、命令の
実行中には当然そのオペランドアドレスによって主記憶
領域にアクセスする制御が行われる。
【0008】しかし、主記憶領域へのアクセスは一般に
処理装置内の制御よりも長い時間を要するので、コンパ
イラは可能な場合には、定数データの参照のためのロー
ド系命令を、定数データを即値として持つ命令に変える
最適化を行う。
【0009】よく知られているように即値とは、命令語
の中に直接保持されているオペランドであり、前記定数
データを参照するロード系命令に代えて、定数データを
即値として持ち、即値をレジスタへ設定等する命令(以
下において即値参照命令という)を使用すれば、実行の
ために命令語を読み出した時に定数データが処理装置へ
持って来られるので、実行時には主記憶領域へのアクセ
スを必要とせず、実行時間を短縮できる。
【0010】しかし一般に命令語は長さは比較的短く制
限され、即値の長さはその命令語長内の或る最大即値長
に制限されているので、前記のような即値参照命令を使
用する最適化は、参照対象の定数データとして、最大即
値長を越えない定数データが確定している場合のみ行わ
れる。
【0011】例えば、最大即値長が4バイトの場合に、
例えば4バイトのみの定数データ「ABCD」を他の主
記憶領域へ格納するプログラムは、図3(c) に示すよう
な即値化したプログラムにすることができる。
【0012】図3(c) の場合の「load」命令は、引用記
号で囲んで示されるオペランドの即値を、「Reg 」で示
されるレジスタに設定する。なお、前記と同様に、演算
を含む参照の場合には、他の即値参照命令を使用する。
【0013】本発明は、以上のような最大即値長に関わ
らず、定数データが最大即値長を越える場合、又、定数
データの参照すべき部分が実行時まで確定しない場合に
も、定数参照の最適化を可能にした定数参照最適化処理
装置を目的とする。
【0014】
【課題を解決するための手段】図1は、本発明の構成を
示すブロック図である。図は定数参照最適化処理装置の
構成であり、計算機の原始プログラムを翻訳して、目的
プログラムを生成する場合に、該命令の即値オペランド
に定まる最大即値長を越えるデータ長の定数データを参
照するプログラムを最適化する定数参照最適化処理装置
であって、定数分割部1と、プログラム生成部2を有す
る。
【0015】第1の発明では、図1(a)の定数分割部1
は、該定数データの参照部分を区分して、該最大即値長
を越えないデータ長の部分データの並びとする。プログ
ラム生成部2は、該定数データを参照して行う指定の処
理を、各該部分データごとの処理に分割し、各該分割し
た処理について、該部分データの参照を該部分データを
即値として有する即値参照命令によって行うプログラム
を生成する。
【0016】第2の発明では、前記定数分割部1は、前
記定数データの参照部分が実行時まで確定しない場合に
は、該参照部分の位置を指示する変数のとり得る変数値
に従って、各該変数値で定まる該参照部分を決定して、
各該参照部分ごとに前記の部分データに分割する。
【0017】前記プログラム生成部2は、各該参照部分
ごとについて、第1の発明のとおりプログラムを生成
し、該変数値を分岐条件として該プログラムの一つに分
岐するプログラムを付加する。
【0018】第3の発明では図1(b)のとおり、第2の
発明の他に、判定部3が前記生成するプログラムの総命
令数を識別し、該総命令数が予め指定されている制限値
を越えない場合のみ、該プログラムを有効とする。
【0019】第4の発明では、第2又は第3の発明の前
記定数分割部1は、前記参照部分の位置を指示する変数
のとり得る変数値について、該変数が各該変数値をとる
確率が与えられた場合に、該確率が予め指定されている
判定値より大きい該変数値についてのみ、第2の発明の
参照部分の分割を行う。
【0020】前記プログラム生成部2は、各該参照部分
ごとについて、第1の発明のとおりプログラムを生成
し、該確率が該判定値より大きい該変数値について該変
数値を分岐条件として該プログラムの一つに分岐するプ
ログラムを付加する。
【0021】
【作用】第1の発明の定数参照最適化処理装置により、
最大即値長より長い定数データを参照する処理は、最大
即値長を越えない長さの部分データにデータを分割し、
各部分データごとに即値化して個別に処理するように最
適化する。
【0022】又、第2の発明により、定数データの参照
する部分が実行時に定まるような場合には、可能な参照
部分ごとに前記の最適化を行ったプログラムを作り、そ
れらのプログラムを実行時に選択して実行するように分
岐制御のプログラムを付加する。但し第3の発明によ
り、そのようにしてプログラムが大きくなり過ぎる場合
には、それを検出し、例えば最適化を止めて、主記憶上
の定数データを参照するようにすることもできる。
【0023】更に、第4の発明により、実行時に定まる
定数データの参照部分に、参照の行われる可能性に違い
がある場合には、その確率を与えることにより、確率の
高い場合についてのみ前記の最適化を行い、その他の場
合は一括して主記憶上の定数データを参照するように
し、それらを実行時に選択して実行するように分岐制御
のプログラムを付加するようにすることもできる。
【0024】
【実施例】図2は本発明の定数参照最適化処理装置の処
理の流れの一例を示す図であり、定数参照最適化処理装
置は、例えばコンパイラの原始プログラム解析結果の中
間情報を受け取り、主として定数参照を行うプログラム
と、参照対象の定数データの定義とに関する情報に基づ
いて処理を行うものとする。
【0025】定数参照最適化処理装置の定数分割部1が
先ず処理を開始し、図2の処理ステップ10で先ず定数の
参照部分が確定しているか識別する。参照部分が確定し
ていれば直ちに処理ステップ15に進むが、実行時まで参
照部分を確定できない場合には、処理ステップ11で可能
な参照部分を定める変数の各値を抽出し、処理ステップ
12で識別して、変数の各値に対応する確率が与えられて
いる場合には、処理ステップ13で、確率が予め与えられ
ている判定値より大きい変数値のみを選択する。
【0026】それらの確率は、同じ原始プログラムを例
えば一旦仮に、即値化することなくコンパイルし、その
目的プログラムの実行を、各種の入力条件等で試行し
て、それらの場合の変数の値を採集するか、又はそのよ
うな試行に対応する思考実験を行うことによって求め、
コンパイルの一条件として指定するものとする。
【0027】以上で抽出し、要すれば選択した変数値に
ついて、処理ステップ14でそれらの各値と、それらに対
応して定まる各参照部分の、先頭位置とデータの長さと
を作業域に保持する。
【0028】以上の処理ステップ10〜処理ステップ14の
処理は、前記第2及び第4の発明の実施においてのみ必
要であり、第2の発明を実施しない場合にはそれらはす
べて必要無く、又第4の発明を実施しない場合に処理ス
テップ12及び13の処理は不要である。
【0029】次に定数分割部一は、処理ステップ15で1
つの参照部分の先頭位置とデータ長を取り出し、先頭位
置を変数p、データ長から定まる末尾位置を変数qの値
とする。
【0030】処理ステップ16で識別して、p≦qであれ
ば、処理ステップ17でp−q+1>Lか、即ち参照部分の
未処理部分がLより大きいか識別する。ここでLは最大
即値長として予め定められている定数である。
【0031】その結果、残りがLより大きければ、処理
ステップ18で定数データの位置pから、長さLだけのデ
ータを取り出し、又残りがL以下なら、処理ステップ19
で定数データの位置pからqまでを取り出す。
【0032】処理ステップ20で、プログラム生成部2
が、原始プログラムの解析結果に基づいて、以上で取り
出したデータを即値として参照して処理する即値化プロ
グラム(の中間言語)を生成する。
【0033】定数分割部1は、処理ステップ21でpを定
数データの次の先頭位置へ進めて、処理ステップ16へ戻
り、以上を繰り返して、処理ステップ16でp>qを検出
すると処理ステップ22へ進み、処理ステップ14で準備し
たすべての場合の参照部分の処理を終わったか識別し、
未処理があれば処理ステップ15に戻る。
【0034】以上ですべての場合の参照部分の処理を終
わると、プログラム生成部2は処理ステップ23で、複数
の場合について参照部分を設けた場合に、参照部分を定
める変数の各値によって、必要なプログラムを選択的に
実行するための分岐制御のプログラムを生成して、前記
の即値化プログラム群と組み合わせる。
【0035】更に、参照部分を定める変数のとり得る、
すべての値に対応して即値化プログラムを生成しなかっ
た場合には、主記憶領域上に置く定数データを参照して
処理するプログラムを生成し、分岐制御で何れの即値化
プログラムも選択しない場合の分岐先とする。
【0036】次に、判定部3が処理ステップ24で、プロ
グラム生成部2で作成されたプログラムの命令数をカウ
ントし、予め定めてある命令数の制限値を越えるか識別
し、制限値を越えた場合には、処理ステップ25で即値化
したプログラムをキャンセルする。又、命令数が制限値
以内であれば、処理ステップ26でプログラム生成部2が
生成したプログラムで解析結果を置き換えてコンパイラ
に渡す。なお、処理ステップ24及び25の処理は、前記第
3の発明を実施する場合のみ必要である。
【0037】図3(d)は以上の処理により生成される即
値化プログラムの一例であって、前記図3(b)のプログ
ラムに対応する。又、図3(a)の定数データを、変数
「え」の位置からデータ長4バイトだけ参照するプログ
ラムの場合に、ロード系命令は例えば図3(e)のように
なるが、前記の本発明の処理で、(f) のように即値化す
ることができる。その場合に確率が指定されていて、
「え=2」の場合のみが判定値を越えていた場合には、
(g)のように、え=2の場合のみが即値化される。
【0038】
【発明の効果】以上の説明から明らかなように本発明に
よれば、計算機プログラムのコンパイル処理において、
定数データが最大即値長を越える場合、又、定数データ
の参照すべき部分が実行時まで確定しない場合にも、定
数参照の最適化が可能となり、目的プログラムの実行効
率を改善できるという著しい工業的効果がある。
【図面の簡単な説明】
【図1】 本発明の構成を示すブロック図
【図2】 本発明の処理の流れ図
【図3】 定数参照のプログラムを説明する図
【符号の説明】
1 定数分割部 2 プログラム生成部 3 判定部 10〜26 処理ステップ
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 JICSTファイル(JOIS)

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 計算機の原始プログラムを翻訳して、目
    的プログラムを生成する場合に、命令の即値オペランド
    に定まる最大即値長を越えるデータ長の定数データを参
    照するプログラムを最適化する定数参照最適化処理装置
    であって、 定数分割部(1)とプログラム生成部(2)とを有し、 該定数分割部(1)は、該定数データの参照部分を区分し
    て、該最大即値長を越えないデータ長の部分データの並
    びとし、 該プログラム生成部(2)は、該定数データを参照して行
    う指定の処理を、各該部分データごとの処理に分割し、
    各該分割した処理について、該部分データの参照を該部
    分データを即値として有する即値参照命令によって行う
    プログラムを生成するように構成されていることを特徴
    とする定数参照最適化処理装置。
  2. 【請求項2】 前記定数分割部(1)は、前記定数データ
    の参照部分が実行時まで確定しない場合には、該参照部
    分の位置を指示する変数のとり得る変数値に従って、各
    該変数値で定まる該参照部分を決定して、各該参照部分
    ごとに請求項1記載の部分データに分割し、 前記プログラム生成部(2)は、各該参照部分ごとについ
    て、請求項1記載のプログラムを生成し、該変数値を分
    岐条件として該プログラムの一つに分岐するプログラム
    を付加するように構成されていることを特徴とする請求
    項1記載の定数参照最適化処理装置。
  3. 【請求項3】 判定部(3)が前記生成するプログラムの
    総命令数を識別し、該総命令数が予め指定されている制
    限値を越えない場合のみ、該プログラムを有効とするよ
    うに構成されていることを特徴とする請求項2記載の定
    数参照最適化処理装置。
  4. 【請求項4】 前記定数分割部(1)は前記参照部分の位
    置を指示する変数のとり得る変数値について、該変数が
    各該変数値をとる確率が与えられた場合に、該確率が予
    め指定されている判定値より大きい該変数値についての
    み、請求項2記載の参照部分の分割を行い、 前記プログラム生成部(2)は各該参照部分ごとについ
    て、請求項1記載のプログラムを生成し、該確率が該判
    定値より大きい該変数値について該変数値を分岐条件と
    して該プログラムの一つに分岐するプログラムを付加す
    るように構成されていることを特徴とする請求項2又は
    請求項3記載の定数参照最適化処理装置。
JP13547794A 1994-06-17 1994-06-17 定数参照最適化処理装置 Expired - Fee Related JP3430635B2 (ja)

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 JPH086797A (ja) 1996-01-12
JP3430635B2 true 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)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3327818B2 (ja) * 1997-08-29 2002-09-24 松下電器産業株式会社 プログラム変換装置及び記録媒体
JP5226328B2 (ja) 2007-03-27 2013-07-03 パナソニック株式会社 コード変換装置
JP5122994B2 (ja) 2008-01-31 2013-01-16 本田技研工業株式会社 油圧式無段変速機の制御方法
JP5173459B2 (ja) 2008-01-31 2013-04-03 本田技研工業株式会社 無段変速機の変速制御方法

Also Published As

Publication number Publication date
JPH086797A (ja) 1996-01-12

Similar Documents

Publication Publication Date Title
US6243864B1 (en) Compiler for optimizing memory instruction sequences by marking instructions not having multiple memory address paths
EP0806725B1 (en) Method and apparatus for early insertion of assembler code for optimization
JPH0695311B2 (ja) コード最適化方法
JPH02217926A (ja) コード生成方法
US6983458B1 (en) System for optimizing data type definition in program language processing, method and computer readable recording medium therefor
JPH04330527A (ja) プログラムの最適化方法及びコンパイラ・システム
US4843545A (en) Compile method using copy propagation of a variable
JP3179536B2 (ja) ディジタルコンピュータの操作方法
US6665864B1 (en) Method and apparatus for generating code for array range check and method and apparatus for versioning
JP3430635B2 (ja) 定数参照最適化処理装置
US11068463B2 (en) System and method for managing log data
US6233732B1 (en) Compiling system using intermediate codes to store a plurality of values
JPH01118931A (ja) プログラム変換方式
EP0633525B1 (en) Method for compilation of programming languages
JP2003216442A (ja) プログラム変換方法、これを用いたコンピュータ装置及びプログラム
EP0180077B1 (en) A data processing machine for compiling computer programs
JP3763516B2 (ja) 変換プログラム、コンパイラ、コンピュータ装置およびプログラム変換方法
JP7338778B2 (ja) プログラム、命令生成方法及び命令生成装置
JPH06214803A (ja) 仮想空間ブロック配置方式
US5854919A (en) Processor and its operation processing method for processing operation having bit width exceeding data width of bit storage unit
JP2568657B2 (ja) データ駆動型マイクロプロセッサにおけるハッシュ衝突回避方法
JP3338466B2 (ja) 主記憶アクセス最適化処理装置
JP2921259B2 (ja) 多分岐命令の処理方式
JP3008483B2 (ja) リンク処理装置
JP2809073B2 (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