JPH01128136A - コンパイル処理装置 - Google Patents

コンパイル処理装置

Info

Publication number
JPH01128136A
JPH01128136A JP62286604A JP28660487A JPH01128136A JP H01128136 A JPH01128136 A JP H01128136A JP 62286604 A JP62286604 A JP 62286604A JP 28660487 A JP28660487 A JP 28660487A JP H01128136 A JPH01128136 A JP H01128136A
Authority
JP
Japan
Prior art keywords
mathematical function
function
mathematical
processing
conversion
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
JP62286604A
Other languages
English (en)
Other versions
JPH0795275B2 (ja
Inventor
Mariko Sakamoto
真理子 坂本
Hiroshi Nagakura
長倉 浩士
Hideo Takashima
高嶋 秀夫
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 JP62286604A priority Critical patent/JPH0795275B2/ja
Publication of JPH01128136A publication Critical patent/JPH01128136A/ja
Publication of JPH0795275B2 publication Critical patent/JPH0795275B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概要〕 例えば平方根関数のような数学関数を含むソースプログ
ラムのコンパイルを行うコンパイル処理方式に関し。
数学関数がより高速処理ができる別の数学関数に変換可
能か否かを認識し、その変換を行うことによって、数学
関数の処理を最適化することを目的とし。
数学関数を含むソースプログラムをコンパイルするコン
パイル処理方式において、前記ソースプログラムの解析
を行う構文解析部と、前記数学関数の使用形態を認識し
て別の数学関数に変換可能か否かを判断する認識部と2
前記数学関数を前記別の数学関数に変換する変換部と、
前記ソースプログラムに対応する目的コードを生成する
目的コード生成部とを少なくとも備え、前記変換が可能
である場合、少なくとも前記数学関数を前記側の数学関
数に変換し、前記数学関数の処理を最適化するように構
成する。
〔産業上の利用分野〕
本発明はコンパイル処理方式に関し、更に詳しくは1例
えば平方根関数のような数学関数を含むソースプログラ
ムのコンパイルを行うコンパイル処理方式に関する。
科学技術計算の分野で用いられるプログラムにおいては
、基本的な数学関数(平方根関数、指数関数、対数関数
、三角関数等)が大きなコストを占める(実行時間の大
きな割合を占める)ものが少なくない。
このようなプログラムでは、数学関数の処理の最適化に
よる処理速度の高速化が、実行性能の向上つまりプログ
ラム全体の実行時間の大幅な短縮に大きな効果をもたら
す。
〔従来の技術〕
第4図は従来の数学関数のコンパイル処理の例を示す図
である。
ソースプログラムが入力されると(■)、コンパイラは
その構文解析を行い(■)、その解析結果に従ってソー
スプログラムと等価の中間言語(コード)を生成する(
■)。
ソースプログラムがFORTRANにより図示の如く。
F=Q/5QRT (X−1−Y)−□   (1)と
記述されていた場合、中間言語は例えば。
とされる。ここで、5QRTは平方根関数、tlとt2
はコンパイラが生成した作業変数である。
次に、コンパイラは、生成された中間言語に従って、目
的(オブジェクト)コードを生成する(■)。従って、
数学関数を処理するためのプログラムが格納された関数
ライブラリからは、平方根関数5CRTのプログラムが
呼出される(■)。
平方根関数5CRTの処理においては、 (2)式のt
 2=SQRT (t 1)を処理する場合、実際は、
計算機内ではその処理の都合上。
の如き処理が行われるようにされている。
従って、 (1)式は、実際は。
F=Q/ (1/ (1/、、/l 1))  −(4
)の如く処理される。
〔発明が解決しようとする問題点〕
前述の従来技術においては、数学関数の処理の最適化の
手段として、主に関数自体(関数ライブラリに格納され
た関数プログラム)の性能向上のみが考慮され、数学関
数がソースプログラムにおいてどのように使用されてい
るかという使用形態が考慮されることはなかった。
即ち、 (3)式の如き処理のなされる数学関数5CR
Tが(1)式の如くソースプログラムで使用される場合
F=Q* t 2’ −Q*1/Jt 1 −(5)の
如くに変換することにより、 (4)式に比べ2回の割
算を省略して高速に処理することが可能であるにも拘ら
ず、 (5)式による処理が行われることはなかった。
換言すれば、数学関数の使用形態を認識して。
数学関数を別の数学関数に変換する。即ち、関数ライブ
ラリからの呼出し形式を変換する((3)式のt2’ 
 −1/Vtl  のみを呼出すか、またはこれに相当
する関数プログラムを呼出す)ことは行われない。即ち
、従来のコンパイラは、数学関数の使用形態の認識によ
る最適化という手段を持たないため、ソースプログラム
の記述そのままの数学関数に対応するような目的コード
を生成するのみであった。
本発明は、数学関数がより高速処理ができる別の数学関
数に変換可能か否かを認識し、その変換を行うことによ
って、数学関数の処理を最適化することが可能なコンパ
イル処理方式を提供することを目的とする。
〔問題点を解決するだめの手段〕
第1図は本発明の原理構成図であり5本発明に′よるコ
ンパイラを備えた処理装置を示している。
第1図において、1は中央処理装置(CP U)とメモ
リとを含む処理装置、2はコンパイラ、3は構文解析部
、4は最適化処理部、5は認識部。
6は変換部、7は目的コード生成部、8は結合編集処理
部、9はソースプログラム、10はオブジェクトモジュ
ール、11は関数ライブラリ、12は変換テーブル、1
3はロードモジュールである。
FORTRANの如き高級言語で記述されたソースプロ
グラム9は、コンパイラ2によって機械語コードに翻訳
され、その翻訳結果である目的コードの集合はオブジェ
クトモジュール10として格納される。リンケージエデ
ィタの如き結合編集処理部8は、目的コードに従って関
数ライブラリ11から呼出した関数プログラムと目的コ
ード(オブジェクトモジュール10)とを結合させて。
関数プログラムを直ちに参照できるようにした(実行可
能な形式にした)ロードモジュール13を編集し、格納
する。
コンパイラ2において、構文解析部3は、ソースプログ
ラム9を解析して、中間言語(最適化前)に展開する。
最適化処理部4は、数学関数の使用形態を考慮すること
によって、中間言語の最適化を行う。この最適化された
中間言語について、目的コード生成部7が目的コードを
生成し、オブジェクトモジュール10に展開する。
最適化処理部4においては2次の如き処理が行われる。
構文解析部3からの中間言語を入力とする認識部5は、
その中間言語に含まれる数学関数がより高速処理できる
別の数学関数に変換可能か否かを認識する。この認識は
、数学関数が所定の条件を満足する形で使用されている
かを調べることによって行われる。
このために1例えば、変換テーブル12が用意される。
変換テーブル12には、変換のために満足すべき所定の
条件と、変換後の別の数学関数およびその使用条件とが
登録される。即ち、認識部5は、まず数学関数の使用形
態を認識し1次にこれが変換テーブル12に登録された
所定の条件と一致するかを変換テーブル12を参照して
判断する(一致する時に変換可能とされる)。なお、変
換テーブル12は、関数ライブラリ11内または最適化
処理部4内に設けられてもよい。
変換部6は、認識部5が変換可能とした数学関数につい
て、変換テーブル12を参照することによって、他の数
学関数への変換を行い、これに伴う必要な処理を行う。
関数ライブラリ11は、変換前の数学関数についての関
数プログラムの他、変換後の数学関数についての関数プ
ログラムも含むようにされる。
〔作用〕
コンパイラ2の最適化処理部4は、数学関数の使用形態
が所定の条件を満たす場合に、自動的に。
別の数学関数に変換するというコンパイル処理を行う。
また、この変換に伴う処理として、最適化処理部4は、
別の数学関数をその使用条件に合わせて使用するために
、中間言語の一部を変換するコンパイル処理を行う。
これにより、ソースプログラム9との等偏性を維持しつ
つも、ソースプログラム9における記述に拘らず、より
高速処理が可能な別の数学関数を用いて記述されたロー
ドモジュール13が得られる。
このように、高速処理のための数学関数の最適化が成さ
れた結果、処理装置1においてロードモジュール13(
ソースプログラム9)を実行する場合、その実行時間を
短縮することができる。
〔実施例〕
第2図は本発明の詳細な説明図であり、簡単な具体例を
示している。
ソースプログラム9がFORTRANで記述されており
、その中に図示の如く前述の(1)式と同様の文があっ
たとする。
このソースプログラム9がコンパイラ2に入力されると
、構文解析部3がこれを解析し、最適化前の中間言語か
らなる第1中間テキスト14を生成する。この時、 (
1)式は図示の如く前述の(2)式と同様に展開される
第1中間テキストは最適化処理部4に入力され。
最適化された中間言語からなる第2中間テキスト15が
生成される。この時、 (2)式は。
の如く展開されている。ここでX5QRTは平方根の逆
数を求める関数、t3はコンパイラ2が生成した作業変
数である。また、関数5QRTとX5QRTとの関係は
、変数をt4とすると。
ニュートンーラプソン法を用い、まず1/ITを求めて
からその逆数をとる処理を行う。つまり。
1/A/xを求めるのであれば、本来、最後の逆数をと
る処理は不要である。逆数をとる処理は1回の割り算で
実現されるため、Jxを求める関数5CRT(x)より
も1/、Jxを求める関数X5QRT (x)の方が割
り算の処理が1回だけ少なくてすむ。
(2)式と(6)式とを比較すると9次のようである。
変数t3を求める処理は、 (7)弐の関係を考慮する
と、変数t2を求める処理よりも割算が1回生ないので
、この分高速に処理される。
また、Q;kt3の処理は2割算よりも掛算が高速処理
できるので、Q/12の処理よりもこの分速く処理でき
る。従って、 (6)式は(2)式をより高速に処理す
ることに適した形式に変換したものといえる。
このように、最適化処理部4は、その認識部5において
数学関数5QRTがより高速処理できる数学関数X5Q
RTに変換できることを認識し。
その変換部6において当該変換を第1中間テキスト14
(式(2))に施して第2中間テキスト15(式(6)
)を得る。これにより、数学関数5CRTは、ソースプ
ログラム9におけるその使用形態(割算の除数として用
いられる)までを考慮して、最適化処理されたこととな
る。
目的コード生成部7は、第2中間テキスト15が入力さ
れると、これに基づいてオブジェクトモジュール10を
展開する。
結合編集処理部8は3人力されたオブジェクトモジュー
ル10に従って、数学関数X5QRTを関数ライブラリ
11から呼出す。そして、オブジェクトモジュール10
と数学関数とを結合編集し。
ロードモジュール13を生成する。従って、ロードモジ
ュール13は、ソースプログラム9の記述が数学関数5
CRTであるにも拘わらず、より高速処理が可能な数学
関数X5CRTを用いて記述された機械語コードからな
るものとされる。
処理装置1がロードモジュール13を実行する場合、ソ
ースプログラム9の記述にそのまま対応したコンパイル
処理(第1中間テキスト14を得る処理)に従ったロー
ドモジュールを実行する場合に比べ、数学関数の処理の
最適化により、その実行時間を短くすることができる。
なお、このための処理は最適化処理部4において自動的
に行われるので、プログラマの負担はなく、また、特殊
な関数をソースプログラム中に導入してその可搬性を損
なうこともない。
第3図は最適化処理部4における最適化処理フロー図で
ある。
■ 最適化処理部4に第1中間テキスト14が入力され
ると、認識部5は、使用する数学関数が5CRTである
ことを認識する。換言すれば。
関数ライブラリ11から呼出す数学関数は5QRTであ
ることを認識する。
■ さらに、認識部5は、数学関数5QRTを用いた処
理の結果の値(t2)が割算の除数として参照されてい
ることを認識する。
■ 認識部5は、処理■で得た数学関数5QRTの使用
形態について、これが数学関数SCRTをより高速処理
可能な別の数学関数に変換できる条件に適合しているか
否かを判断する。このために、認識部5は変換テーブル
12を参照する。
変換テーブル12には、数学関数5QRTを用いた処理
の結果の値(t2)が割算あ除数として参照されている
時は、別の数学関数X5QRTに変換可能なことが登録
されている。
■ 認識部5は2数学関数5QRTを用いた処理の結果
の値(t2)がソースプログラム9(第1中間テキスト
14)において他に参照されているか否かを判断する。
認識部5において1次の (ア)数学関数5CRTが使用されている。
(イ)その処理結果の値t2が割算の除数として用いら
れている。即ち、この使用形態が変換テーブル12に登
録されている。
(つ)その処理結果の値t2が他で参照されていない。
という命令列が認識された時、変換部6は次の処理を行
う。
■ 変換部6は、変換テーブルI2を参照して数学関数
5CRTを別の数学関数X5CRTに変換する。即ち、
 (2)式中のt2=SCRT(tl)を、 (6)式
中のt3=XSCRT(tl)に変換する。
■ さらに、変換部6は、変換テーブル12を参照して
、処理■のような変換を行った時の別の     ′数
学関数X5QRTの使用形態を知り、必要な処理を行う
。即ち、数学関数5CRTの処理結果の値t2を除数と
して参照している割算((2)式〇F=Q/12)を、
別の数学関数X5CRTの処理結果の値t3を乗数とし
て参照する掛算((6)式のF=Q*t 3)に変換す
る。これにより、 (2)式と同じくソースプログラム
9の(1)式に等しい(6)式が得られる。
〔発明の効果〕
以上説明したように1本発明によれば、数学関数を含む
ソースプログラムのコンパイル処理において、数学関数
の使用形態までを考慮することにより、当該数学関数を
より高速処理可能な別の数学関数に変換することができ
、プログラム全体の実行時間を短縮することができる。
【図面の簡単な説明】
第1図は本発明の原理構成図。 第2図は一実施例説明図。 第3図は最適化処理フロー図。 第4図は従来のコンパイル処理の例を示す図。 1は処理装置、2はコンパイラ、3は構文解析部、4は
最適化処理部、5は認識部、6は変換部。 7は目的コード生成部、8は結合編集処理部、9はソー
スプログラム、10はオブジェクトモジュール、11は
関数ライブラリ、12は変換テーブル、13はロードモ
ジュール、14および15は中間テキストである。

Claims (1)

  1. 【特許請求の範囲】 数学関数を含むソースプログラム(9)をコンパイルす
    るコンパイル処理方式において、前記ソースプログラム
    (9)の解析を行う構文解析部(3)と、 前記数学関数の使用形態を認識して別の数学関数に変換
    可能か否かを判断する認識部(5)と、前記数学関数を
    前記別の数学関数に変換する変換部(6)と、 前記ソースプログラム(9)に対応する目的コードを生
    成する目的コード生成部(7)とを少なくとも備え、 前記変換が可能である場合、前記構文解析部(3)にお
    ける前記ソースプログラム(9)の解析結果について、
    少なくとも前記数学関数を前記別の数学関数に変換し、
    この変換結果について目的コードを生成することによっ
    て、前記数学関数の処理を最適化する ことを特徴とするコンパイル処理方式。
JP62286604A 1987-11-13 1987-11-13 コンパイル処理装置 Expired - Fee Related JPH0795275B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62286604A JPH0795275B2 (ja) 1987-11-13 1987-11-13 コンパイル処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62286604A JPH0795275B2 (ja) 1987-11-13 1987-11-13 コンパイル処理装置

Publications (2)

Publication Number Publication Date
JPH01128136A true JPH01128136A (ja) 1989-05-19
JPH0795275B2 JPH0795275B2 (ja) 1995-10-11

Family

ID=17706565

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62286604A Expired - Fee Related JPH0795275B2 (ja) 1987-11-13 1987-11-13 コンパイル処理装置

Country Status (1)

Country Link
JP (1) JPH0795275B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284970A (ja) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
JP2005522772A (ja) * 2002-04-15 2005-07-28 ギーゼッケ ウント デフリエント ゲーエムベーハー コンパイラ生成プログラムコードの最適化

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000284970A (ja) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
JP2005522772A (ja) * 2002-04-15 2005-07-28 ギーゼッケ ウント デフリエント ゲーエムベーハー コンパイラ生成プログラムコードの最適化
US7805718B2 (en) 2002-04-15 2010-09-28 Giesecke & Devrient Gmbh Optimisation of a compiler generated program code

Also Published As

Publication number Publication date
JPH0795275B2 (ja) 1995-10-11

Similar Documents

Publication Publication Date Title
US5606697A (en) Compiler system for language processing program
JP4157016B2 (ja) コンパイラ装置及びコンパイル方法
JP3813087B2 (ja) プログラム変換方法、コンピュータ装置及びプログラム
JPH01128136A (ja) コンパイル処理装置
CN113326048B (zh) 浮点数计算精度处理方法、系统、介质及设备
JP2977642B2 (ja) Fortranコンパイル処理装置
CN111857678B (zh) 代码生成方法、装置、电子设备及计算机存储介质
JPS63155264A (ja) ベクトル計算機用言語チユ−ニング処理方式
JPH03240837A (ja) デバッグ情報生成装置
JPH03144830A (ja) 並列処理方式
JPS6074039A (ja) コンパイル言語認識処理方式
JPS63187364A (ja) 指標変数ベクトル化コンパイル方式
JPH0795273B2 (ja) コンパイラにおける和計算の部分展開処理方式
JPH04343140A (ja) コンパイラの最適化処理方法
JPH0414144A (ja) コンパイル処理方法
CN112130861A (zh) 一种移动应用程序跨平台开发系统
JPH0695890A (ja) コンパイラにおける名前置換方式
CN112579088A (zh) 面向异构混合编程的一站式程序编译方法
JPS6297031A (ja) 仮数部のビツト数整合方式
JPH05216683A (ja) 非言語依存のファイル化手順自動生成方法
JP2003208317A (ja) プログラム開発方法
JPH06348505A (ja) コンパイル方法
JPH06274351A (ja) コンパイラの最適化方式
JPH05204699A (ja) デバッグ時識別子探索方式
JPH05100866A (ja) コンパイル・リンク方式

Legal Events

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