JPH0488531A - コード最適化方式 - Google Patents

コード最適化方式

Info

Publication number
JPH0488531A
JPH0488531A JP2202410A JP20241090A JPH0488531A JP H0488531 A JPH0488531 A JP H0488531A JP 2202410 A JP2202410 A JP 2202410A JP 20241090 A JP20241090 A JP 20241090A JP H0488531 A JPH0488531 A JP H0488531A
Authority
JP
Japan
Prior art keywords
conversion pattern
source code
code
syntax
user
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.)
Pending
Application number
JP2202410A
Other languages
English (en)
Inventor
Yoshihiro Masuda
佳弘 増田
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co 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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2202410A priority Critical patent/JPH0488531A/ja
Publication of JPH0488531A publication Critical patent/JPH0488531A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、ユーザが書いた高級言語をソースコードとし
て、これを機械語の目的プログラム(以下、ターゲット
コード)に翻訳するプログラミング言語のコンパイラに
おけるコード最適化方式に関する。
[従来の技術1 一般的に、コンパイラにおけるコード最適化は、主とし
て、生成されるターゲットコードに対して行われる。
ここでいう最適化とは、目的に応じて最良の結果が得ら
れるように工夫することを意味し、言語翻訳プログラム
、ソースプログラムのコード(以下、ソースコードとい
う)を機械語、すなわちターゲットプログラムのコード
(以下、ターゲットコードという)に変換するコンパイ
ラにおける、変換したターゲットプログラムの実行時間
を短縮し、また、変換したターゲットプログラムの記憶
領域を最少とする処理をいう。
例えば、特開昭62−26783号公報に開示されてい
るように、プログラミング言語の組み込み関数をインラ
イン展開する場合において、そのプログラムを記述して
いる言語とは独立に、ターゲットコードすなわち機械語
の命令で組み込み関数を記述しておき、コンパイルの際
に、ターゲットコード・レベルにおいて、組み込み関数
の引用のあった箇所にこの命令を挿入展開している。
このように、従来はターゲットコード・レベルでの最適
化を行うのが一般的で、ソースコード・レベルでの最適
化はあまり行われておらず、また行われているとしても
、その最適化の機構は、定型的な構文について、コンパ
イラに固定的に組み込まれている程度である。
[発明が解決しようとする課題1 上記従来技術におけるソースコード・レベルでの固定さ
れた最適化においては、ソースコードの、ある構文単位
に対して、同し意味で、かつより効率的な記述が存在す
る場合は、それらの全てについてユーザが手作業により
変更を行うか、ユーザが指定したソースコードのあるパ
ターンを別のソースコードに置き換える「マクロ」と呼
ばれる機能を用いて変換する必要があった。
しかし、この「マクロ」機能を用いて指定する最適化の
ための変換パターンは、各プログラム単位で定義される
ものであるために、同じパターンの書き換えを別のプロ
グラムに対して行うためには、その別のプログラム中で
も同し定義を行う必要があり、最適化の妨げとなってい
る。
本発明の目的は、上記従来技術における問題点を解消し
、ユーザがカスタマイズした変換パターンを用いて、ソ
ースコード・レベルで最適化してターゲットコードにコ
ンパイルできるようにし、より効率的なコンパイルがで
きるコード最適化方式を提供することにある。
[課題を解決するための手段] 上記目的を達成するために、本発明は、ソースコードを
入力するソースコード入力手段(第1図、第5図の21
1)と、 ソースコード上のある構文パターンに対して、同じ意味
を持ち、かつ効率のよい別の構文パターンを対応付ける
変換パターンを表として記憶しておくための変換パター
ン登録表格納手段(第1図第5図の23)と、 ユーザによって指定された変換パターンを、前記変換パ
ターン表に登録するための変換パターン登録手段(第1
図、第5図の22)と、前記ソースコード入力手段によ
って入力されたソースコードに対して、その構文単位毎
に、対応する変換パターンを前記変換パターン表から取
り出し、取り出した変換パターンに従って、前記入力さ
れたソースコードを変換して置き換えるソースコード最
適化手段(第1図、第5図の212)と、 前記ソースコード最適化手段で得られたソースコードを
ターゲットコードにコンパイルするターゲットコード生
成手段(第1図、第5図の213)と、 を備えたことを特徴とする。
上記最適化パターンは、必要とした構文に関してユーザ
が任意に作成し登録したソースコートの効率的記述であ
る。
ソースコード最適化手段は、ソースコードが入力された
ときに、そのソースコードの構文単位毎に、前記記憶手
段の変換パターン登録表格納手段に格納されたソースコ
ード・レベルの変換パターン表を検索して、対応する変
換パターンの登録がある場合はこれを選択し、選択した
変換パターンによる記述に当該構文を変換する。
ターゲットコード生成手段は、選択された変換パターン
に従って変換されたソースコードの記述に基づいて、前
記入力ソースコードをターゲットコードにコンパイルす
る。
[作用] 変換パターン登録表格納手段には、ソースコードの構文
に関して、ユーザの経験や知識に基づいて任意に作成し
たソースコードの(ソースコード・レベルでの)効率的
な記述(すなわちコンパイル時間を短縮し、変換したタ
ーゲットコートの記述を少なくし、かつ変換したターゲ
ットプログラムを格納する記憶領域を最少とする記述)
を登録する。
ソースコードがソースコード入力手段を介して入力され
たとき、ソースコード最適化手段は、該ソースコードの
各構文について、前記変換パターン登録表格納手段に記
憶された変換パターン表を検索し、該当する変換パター
ンの登録があった場合には、前記ソースコードの構文を
検索した変換パターンに変換する。
そして、ターゲットコード生成手段は、変換パターンに
従って変換した構文に基づいて、入力したソースコード
をターゲットコードにコンパイルする。
これにより、ユーザは自身の経験と知識に基づいて、自
分流にカスタマイズしたコンパイラを構成でき、ターゲ
ットコードへのコンパイルをソースコード・レベルにお
いて短時間で実行できると共に、コンパイルしたターゲ
・ントコードの記憶領域を最少とすることが可能となる
[実施例] 以下、本発明の実施例を図面を参照して説明する。
第1図は本発明によるコード最適化方式を適用するコン
パイラシステムの構成図であって、1は中央処理装置、
2は記憶装置、3は補助記憶装置、4は表示装置、5は
キーボードである。
また、記憶装置2には、コンパイラ21、変換パターン
登録手段22、変換パターン登録表格納手段23が設け
られている。
なお、コンパイラ21は、ソースコード入力手段211
、ソースコード最適化手段212、ターゲットコード生
成手段213から構成される。
ソースコード31は、高級言語で記述されたソースプロ
グラムファイルであり、ディスク、その他のデータ保持
媒体で提供されるものであるが、ここでは、説明の簡略
化のため、このソースコードのファイルを単にソースコ
ード31として示す。
同図において、記憶装置2の変換パターン登録表格納手
段23には、ユーザがその経験や知識に基づいて作成し
た最適化のための変換パターンを変換パターン登録手段
22によって構文単位で表として登録する。
第2図は第1図の動作を説明するフローチャートであっ
て、以下このフローチャートを参照して第1図によるコ
ンパイル動作を説明する。
コンパイラ21のソースコード入力手段211にコンパ
イルの対象となるソースコードが入力されると(ステッ
プ−1、以下ステップ○○をS−〇〇のように記す)、
その各構文単位ごとに、それに対する最適化パターンが
記憶装置2の変換パターン登録表格納手段23に登録さ
れている変換パターン表中で検索される(S−2)。
検索の結果、該当する変換パターンが登録されている場
合(S−2のyes)には、ソースコード最適化手段2
12においてそのパターンに従って入力された構文単位
が変換される(S−3)。
そして、変換された構文を、入力されたソースコードの
構文として、ターゲットコード生成部13においてター
ゲットコードにコンパイルされる(S−4)。
コンパイルされたターゲットコードは記憶手段2のター
ゲットコード格納領域(図示せず)に記憶される。
なお、検索の結果、該当する変換パターンが登録されて
いない場合には(S−2のno)、入力されたソースコ
ードの構文はそのままターゲットコード主成部手段21
3に渡されて、ターゲットコードにコンパイルされ、そ
れを記憶装置2のターゲットコード格納領域(図示せず
)に記憶する。
この処理をソースコードの全ての構文について実行しく
S−5のnoからS−1に戻るループ)、ソースコード
の入力が完了すると(S−5のyeS)、終了となる。
次に、本発明による変換パターンの登録について説明す
る。
第3図はユーザが指示する変換パターンの一例の説明図
、第4図は記憶装置2の変換パターン登録表格納手段2
3に登録された変換パターン表の説明図である。
第3図において、”defoptimizer’は変換
パターンを登録するためのコマンド名であり、 eqは
構文基、“’ (form)″は構文eqがとる引数、
“(Cond、、、、)″は変換パターンである。
ユーザが変換パターンを指定するためのコマンド“de
foptimizer”による関数の実行は、次のよう
にして行う。
(defoptiwizer関数名 引数 変換パター
ン)ここで、引数は変換対象とする関数の引数、変換パ
ターンはその関数に対して置き換え(変換)を行うため
の変換パターンである。
例えば、前記したeqという関数の実行時間よりもno
tという関数の実行時間の方が短い場合、次にような関
数呼び出しの置き換えを行いたいとする。
(eq nil (symbolp x))−”(no
t (symbolp x))(eq (number
p x) n1l)−+(not (numberp 
x))ここで、eqは同じであるかどうかを調べる関数
であり、nilは論理的な偽を表す。
また、関数5y+mbolpは引数がシンボルであるか
どうかを真(T)、または偽(NIL)で返す関数であ
り、関数nu+5berpは引数が数値であるかどうか
を真(T)、または偽(NIL)で返す関数である。
このような置き換えを行うためには、defoptii
izerによって、次にような変換パターンを指定する
(defoptimizer eq (form)(c
ond ((eq nil (second form
)) −−−−(1)’ (not 、(third 
form)))  −−−−(2)(eq nil 、
(third form)) −−−(3)’ (no
t 、 (second form))) −=(4)
(t form)))        −−−−−−(
5)上記(1)〜(5)のコメントは次のようになる。
(1)2番目の要素が偽(nil)であれば、(2)(
not3番目の引数)という形に置き換える。
(3)3番目の要素が偽(nil)であれば、(4)(
not2番目の引数)という形に置き換える。
(5)それ以外の場合はそのまま。
ここで、「関数名」に相当するのは”eq「引数」に相
当するのは“(form)″  「変換パターン」に相
当するのは、”(cond −−−(t form))
”である。
変換パターン中での(cond (条件式1実行文1)
(条件式1実行文1)(t  実行文3))という式は
、条件式を順に評価してゆき、成立時にそれぞれの実行
文を実行させるためのものである。最後のtはそれ以外
の場合ということを表す。
また、゛(・・・ −)という部分は、このdefop
tis+1zerを行っているときには実行されないこ
とを表し、この部分に書いたようなパターンで置き換え
が行われる。
′(・−−−−>の中で、″“、C−−−−一−)”の
部分は、゛(−・ −・)の中であっても評価される部
分であり、上記例の場合は、変換する式の2番目、3番
目の要素を取り出すために用いられている。
前記したように、コンパイラが呼び出すレ、コンパイル
対象となるソースコードが入力されると、構文解析が行
われる時点で、各構文毎に、その横文単位に対する最適
化のための変換パターンが「変換パターン表j中に存在
するかどうかが調べられる。
そして、もし、該当する変換パターンが存在する場合は
、その変換パターンに従ってソースコードが変換され、
その変換結果からターゲットコードにコンパイルされる
一方、変換パターン表中に該当する変換パターンが登録
されていない場合は、入力されたままのソースコードか
らターゲットコードにコンパイルされる。
例えば、第4図のように変換パターン表中に登録されて
いるとすると、 (eq (symbol−function ’mas
uda) n1l)のように入力されたソースコードは
、 (not (symbol−function ’ma
suda))のように変換された後、ターゲットコード
にコンパイルされる。
このような、ユーザ指定の変換パターンを記憶装置の変
換パターン登録表格納手段に登録して、当該ユーザがコ
ンパイラを自分流にカスタマイズすることで、効率のよ
いコンパイルを行うことができる。
なお、上記実施例では、コンパイラの構文解析時に変換
パターン表を検索して変換を行っているが、本発明は、
このような構成に限られるものではなく、他の時点で変
換を行うようにしてもよいものである。
第5図は本発明によるコード最適化方式を適用するコン
パイラシステムの他の構成図であって、20はコンパイ
ラの前処理を行うブリプロセッサで、第1図と同一符号
は同一機能部分である。
この実施例では、ソースコード31をコンパイラ24に
入力する前に、このコンパイラ24と独立させて設けた
ブリプセッサ20において、変換パターン登録表格納手
段23に登録された変換パターンとの置き換えを行い、
その後にコンパイラ24のターゲットコード生成手段2
13でターゲットコードにコンパイルしている。
変換動作は上記の実施例と同様である。
二の実施例によれば、記憶装置2にユーザそれぞれの変
換パターン登録手段22を設けることにより、コンパイ
ラ24を複数のユーザが自分流にカスタマイズしたもの
として共有できる。
〔発明の効果〕
以上説明したように、本発明によれば、ユーザが指定し
た最適化のための変換パターンをソースコードの構文毎
に表として登録しておくことにより、ユーザの経験や知
識に基づいた変換パターンを用いて当該ユーザがカスタ
マイズしたコンパイラを構成でき、ターゲットコードへ
のコンパイルを短時間で実行できるコード最適化を実現
できると共に、コンパイルしたターゲットコードを記憶
手段に格納するための記憶領域を最少とすることができ
る。
【図面の簡単な説明】
第1図は本発明によるコード最適化方式を適用するコン
パイラシステムの構成図、第2図は第1図の動作を説明
するフローチャート、第3図はユーザが指示する変換パ
ターンの一例の説明図、第4図は記憶装置に格納する変
換パターン表の説明図、第5図は本発明によるコード最
適化方式を適用するコンパイラシステムの他の構成図で
ある。 1・・・・中央処理装置、2・・・・記憶装置、3・・
・・補助記憶装置、4・・・・表示装置、5・・・・キ
ーボード、21・・・・コンパイラ、22・・・・変換
パターン登録手段、23・・・・変換パターン登録表格
納手段、31・・・・ソースコード、211・・・・ソ
ースコード入力手段、212・・・・ソースコード最適
化手段、213・・・・ターゲットコード生成手段。 第1図

Claims (1)

  1. 【特許請求の範囲】  ソースコードを入力するソースコード入力手段と、 ソースコード上のある構文パターンに対して、同じ意味
    を持ち、かつ効率のよい別の構文パターンを対応付ける
    変換パターンを表として記憶しておくための変換パター
    ン登録表格納手段と、ユーザによって指定された変換パ
    ターンを、前記変換パターン表に登録するための変換パ
    ターン登録手段と、 前記入力手段によって入力されたソースコードに対して
    、その構文単位毎に、対応する変換パターンを前記変換
    パターン表から取り出し、取り出した変換パターンに従
    って、前記入力されたソースコードを変換して置き換え
    るソースコード最適化手段と、 前記ソースコード最適化手段で得られたソースコードを
    ターゲットコードにコンパイルするターゲットコード生
    成手段と、 を備えたことを特徴とするコード最適化方式。
JP2202410A 1990-08-01 1990-08-01 コード最適化方式 Pending JPH0488531A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2202410A JPH0488531A (ja) 1990-08-01 1990-08-01 コード最適化方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2202410A JPH0488531A (ja) 1990-08-01 1990-08-01 コード最適化方式

Publications (1)

Publication Number Publication Date
JPH0488531A true JPH0488531A (ja) 1992-03-23

Family

ID=16457045

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2202410A Pending JPH0488531A (ja) 1990-08-01 1990-08-01 コード最適化方式

Country Status (1)

Country Link
JP (1) JPH0488531A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008243019A (ja) * 2007-03-28 2008-10-09 Toshiba Corp ソースコード変換装置及びソースコード変換方法
JP7064680B1 (ja) * 2021-07-28 2022-05-11 SOPPRA Digital transformation株式会社 プログラムコード自動生成システム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008243019A (ja) * 2007-03-28 2008-10-09 Toshiba Corp ソースコード変換装置及びソースコード変換方法
JP7064680B1 (ja) * 2021-07-28 2022-05-11 SOPPRA Digital transformation株式会社 プログラムコード自動生成システム
WO2023007791A1 (ja) * 2021-07-28 2023-02-02 SOPPRA Digital transformation株式会社 プログラムコード自動生成システム

Similar Documents

Publication Publication Date Title
JP4822817B2 (ja) コンパイルシステム
EP1918812A1 (en) A software development system
JPH08234975A (ja) プログラム生成装置および方法
JPH08314728A (ja) ソースプログラムをオブジェクトプログラムに変換する方法および装置
JP2004295398A (ja) コンパイラ、コンパイル方法、及びプログラム開発ツール
JPH0926884A (ja) バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置
US7165244B2 (en) Web application code conversion system
JPH11249875A (ja) プログラミング支援方法及びその装置
US6983457B2 (en) Compile method for storing source code within object code
KR20090011974A (ko) 컴파일 대상 파일 추출 방법
CN100437476C (zh) 用于处理文件的机器执行方法及结合该方法的机器
JPH0488531A (ja) コード最適化方式
GB2420638A (en) Method of substituting code fragments in Internal Representation
JPH0756745A (ja) 言語処理プログラムのコンパイラ処理方式
JP3001427B2 (ja) ソフトウェアコーディングシステム
CN114675831B (zh) 一种编程语言的编译系统及方法
Harmer et al. Transformations to Restructure and Re–engineer COBOL Programs
Wendt Fast code generation using automatically-generated decision trees
CN118312153A (zh) 编译器后端代码生成方法、装置、存储介质
JP2001005655A (ja) アプリケーションジェネレータ開発支援装置及びアプリケーションジェネレータ開発支援方法
JP2022054354A (ja) プログラム変換システム及びプログラム変換方法
JP2990882B2 (ja) 機能シミュレーション装置
JPH05120025A (ja) ソースプログラムのインライン展開方法
Dempsey Using an APL macroprocessor to implement generalized software systems
JPH0695890A (ja) コンパイラにおける名前置換方式