JPH10340193A - 言語処理装置、言語処理方法およびその記録媒体 - Google Patents
言語処理装置、言語処理方法およびその記録媒体Info
- Publication number
- JPH10340193A JPH10340193A JP9149222A JP14922297A JPH10340193A JP H10340193 A JPH10340193 A JP H10340193A JP 9149222 A JP9149222 A JP 9149222A JP 14922297 A JP14922297 A JP 14922297A JP H10340193 A JPH10340193 A JP H10340193A
- Authority
- JP
- Japan
- Prior art keywords
- function
- optimization
- speed
- processing
- speed optimization
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【課題】 スピード最適化を施す関数を自由に指定でき
るようにして、所望の実行スピードとサイズを有するオ
ブジェクトが得られる言語処理装置を提供する。 【解決手段】 ソースプログラムファイルの構文解析を
行い中間コードを生成する構文解析部と、中間コードの
所定の関数に予め指定された最適化処理を施す最適化処
理部とを有し、ソースプログラムファイルを翻訳してオ
ブジェクトモジュールファイルを出力する言語処理装置
において、中間コードからスピード最適化を施す関数を
抽出するスピード最適化関数認識処理部と、スピード最
適化を施す関数から呼び出される関数を見つけ出す関数
呼び出し関係解析部と、関数呼び出し関係解析部の処理
結果を登録するスピード最適化処理関数登録部を有し、
最適化処理部はスピード最適化処理関数登録部に登録さ
れた関数のうち、スピード最適化を施す関数及びその関
数からのみ呼び出される関数にスピード最適化を施す。
るようにして、所望の実行スピードとサイズを有するオ
ブジェクトが得られる言語処理装置を提供する。 【解決手段】 ソースプログラムファイルの構文解析を
行い中間コードを生成する構文解析部と、中間コードの
所定の関数に予め指定された最適化処理を施す最適化処
理部とを有し、ソースプログラムファイルを翻訳してオ
ブジェクトモジュールファイルを出力する言語処理装置
において、中間コードからスピード最適化を施す関数を
抽出するスピード最適化関数認識処理部と、スピード最
適化を施す関数から呼び出される関数を見つけ出す関数
呼び出し関係解析部と、関数呼び出し関係解析部の処理
結果を登録するスピード最適化処理関数登録部を有し、
最適化処理部はスピード最適化処理関数登録部に登録さ
れた関数のうち、スピード最適化を施す関数及びその関
数からのみ呼び出される関数にスピード最適化を施す。
Description
【0001】
【発明の属する技術分野】本発明はソース・プログラム
・ファイルを翻訳してオブジェクト・モジュール・ファ
イルを出力する言語処理装置および言語処理方法に関す
るものである。
・ファイルを翻訳してオブジェクト・モジュール・ファ
イルを出力する言語処理装置および言語処理方法に関す
るものである。
【0002】
【従来の技術】言語処理装置は入力されたソース・プロ
グラムを他の言語のプログラム(例えば機械語プログラ
ム)に翻訳する処理装置であり、言語処理装置によって
生成されたプログラムはオブジェクト・モジュール・フ
ァイル(以下、オブジェクトと称す)と呼ばれる。
グラムを他の言語のプログラム(例えば機械語プログラ
ム)に翻訳する処理装置であり、言語処理装置によって
生成されたプログラムはオブジェクト・モジュール・フ
ァイル(以下、オブジェクトと称す)と呼ばれる。
【0003】一般に、言語処理装置によって生成された
オブジェクトには、その実行性能として高速性が求めら
れ、同時にそのサイズが小さいこと(必要なメモリ容量
が少ないこと)が求められる。そのため、言語処理装置
では生成するオブジェクトの実行速度を向上させるため
の最適化処理(以下、スピード最適化と称す)、及びオ
ブジェクトサイズを削減するための最適化処理(以下、
サイズ最適化と称す)が実行される。
オブジェクトには、その実行性能として高速性が求めら
れ、同時にそのサイズが小さいこと(必要なメモリ容量
が少ないこと)が求められる。そのため、言語処理装置
では生成するオブジェクトの実行速度を向上させるため
の最適化処理(以下、スピード最適化と称す)、及びオ
ブジェクトサイズを削減するための最適化処理(以下、
サイズ最適化と称す)が実行される。
【0004】ここで、図8〜図12を参照して従来の言
語処理装置について説明する。
語処理装置について説明する。
【0005】図8は従来の言語処理装置の構成を示すブ
ロック図である。
ロック図である。
【0006】図8において、従来の言語処理装置902
は、入力されたソース・プログラム・ファイル901の
構文解析を行い、予め定められた、言語処理しやすい様
式に変換した第1の中間コード905を出力する構文解
析部904と、不図示の入力手段を介して入力された最
適化オプション指示を保持する最適化指示部906と、
最適化オプション指示にしたがって第1の中間コード9
05の各関数に対してサイズ最適化またはスピード最適
化のいずれか一方を施し、その処理結果である第2の中
間コード910を出力する最適化処理部907と、第2
の中間コード910からオブジェクトコードを生成する
コード生成部911と、コード生成部911によって生
成されたオブジェクトコードをオブジェクト・モジュー
ル・ファイル913として出力するオブジェクト出力部
912とによって構成されている。
は、入力されたソース・プログラム・ファイル901の
構文解析を行い、予め定められた、言語処理しやすい様
式に変換した第1の中間コード905を出力する構文解
析部904と、不図示の入力手段を介して入力された最
適化オプション指示を保持する最適化指示部906と、
最適化オプション指示にしたがって第1の中間コード9
05の各関数に対してサイズ最適化またはスピード最適
化のいずれか一方を施し、その処理結果である第2の中
間コード910を出力する最適化処理部907と、第2
の中間コード910からオブジェクトコードを生成する
コード生成部911と、コード生成部911によって生
成されたオブジェクトコードをオブジェクト・モジュー
ル・ファイル913として出力するオブジェクト出力部
912とによって構成されている。
【0007】図8に示した従来の言語処理装置902に
は、1つのソース・プログラム・ファイル901に対し
てサイズ最適化またはスピード最適化のいずれか一方を
施すことが指定され、言語処理装置902は第1の中間
コード905中の全ての関数に対して同一の最適化を施
している。その理由は、サイズ最適化とスピード最適化
とでは、相反する処理を行うことがあるため、それらを
同時に有効にすることができないためである。
は、1つのソース・プログラム・ファイル901に対し
てサイズ最適化またはスピード最適化のいずれか一方を
施すことが指定され、言語処理装置902は第1の中間
コード905中の全ての関数に対して同一の最適化を施
している。その理由は、サイズ最適化とスピード最適化
とでは、相反する処理を行うことがあるため、それらを
同時に有効にすることができないためである。
【0008】例えば、スピード最適化の手法としてイン
ライン展開がある。このインライン展開については、
『コンパイラII−原理・技法・ツール』(A.V.エイ
ホ,R.セシィ,JD.ウルマン著、原田賢一訳 19
90年10月10日発行 サイエンス社)で詳細に説明
され、その第519頁に「手続きをマクロと同じように
扱う。すなわち、手続き呼び出しは、呼び出し側のその
箇所で、呼び出される手続きの本体とテキストのまま置
き換える。また、仮引数も実引数のテキスト通りに置き
換える。このようなテキストの置換をマクロ展開または
インライン展開という。」と記載されている。また、同
文献の第520頁には、「…、インライン展開に関する
技法は、プログラムの実行時間を短くするための手段と
して提案されている。手続きの駆動の準備には、駆動レ
コードに対する記憶域の割り付け、機械状態の退避、リ
ンクの設定および制御の移行のために一定のコストがか
かる。手続き本体が小さいと、本体のコードよりも呼び
出し系列のコードのほうに実行の負荷がかかってしま
う。そのようなときには、プログラムが多少大きくなっ
ても、本体を呼び出し側のコードの中にインライン展開
するほうが効率的である。」と記載されている。すなわ
ち、インライン展開は関数の呼び出し処理によるオーバ
ーヘッドを防止して、プログラムの実行速度を向上させ
る手法であり、上述したように処理されたプログラムの
サイズが多少大きくなる欠点がある。
ライン展開がある。このインライン展開については、
『コンパイラII−原理・技法・ツール』(A.V.エイ
ホ,R.セシィ,JD.ウルマン著、原田賢一訳 19
90年10月10日発行 サイエンス社)で詳細に説明
され、その第519頁に「手続きをマクロと同じように
扱う。すなわち、手続き呼び出しは、呼び出し側のその
箇所で、呼び出される手続きの本体とテキストのまま置
き換える。また、仮引数も実引数のテキスト通りに置き
換える。このようなテキストの置換をマクロ展開または
インライン展開という。」と記載されている。また、同
文献の第520頁には、「…、インライン展開に関する
技法は、プログラムの実行時間を短くするための手段と
して提案されている。手続きの駆動の準備には、駆動レ
コードに対する記憶域の割り付け、機械状態の退避、リ
ンクの設定および制御の移行のために一定のコストがか
かる。手続き本体が小さいと、本体のコードよりも呼び
出し系列のコードのほうに実行の負荷がかかってしま
う。そのようなときには、プログラムが多少大きくなっ
ても、本体を呼び出し側のコードの中にインライン展開
するほうが効率的である。」と記載されている。すなわ
ち、インライン展開は関数の呼び出し処理によるオーバ
ーヘッドを防止して、プログラムの実行速度を向上させ
る手法であり、上述したように処理されたプログラムの
サイズが多少大きくなる欠点がある。
【0009】したがって、一般にサイズ最適化が指定さ
れた場合は、オブジェクトサイズが増大するためインラ
イン展開が実行されず、スピード最適化が指定された場
合は、オブジェクトの実行速度の向上が見込まれるため
インライン展開が実行される。
れた場合は、オブジェクトサイズが増大するためインラ
イン展開が実行されず、スピード最適化が指定された場
合は、オブジェクトの実行速度の向上が見込まれるため
インライン展開が実行される。
【0010】ここで、図9に示すようなC言語で記述さ
れたソース・プログラム・ファイルに対して従来の言語
処理装置902でサイズ最適化を施しコンパイルした場
合、図10に示すようなオブジェクト(プログラム)が
出力される。
れたソース・プログラム・ファイルに対して従来の言語
処理装置902でサイズ最適化を施しコンパイルした場
合、図10に示すようなオブジェクト(プログラム)が
出力される。
【0011】図10に示したプログラムでは、言語処理
装置902でインライン展開が実行されていないため、
例えば図9に示したソース・プログラム・ファイル90
1中の関数plusの呼び出し命令文403〜405、
408〜410は、引数設定の命令文1004、100
6、1008、1010、1012、1014と、関数
plusの呼び出し命令文1005、1007、100
9、1011、1013、1015とにそれぞれコンパ
イルされている。
装置902でインライン展開が実行されていないため、
例えば図9に示したソース・プログラム・ファイル90
1中の関数plusの呼び出し命令文403〜405、
408〜410は、引数設定の命令文1004、100
6、1008、1010、1012、1014と、関数
plusの呼び出し命令文1005、1007、100
9、1011、1013、1015とにそれぞれコンパ
イルされている。
【0012】また、図9に示すようなC言語で記述され
たソース・プログラム・ファイル901に対して従来の
言語処理装置902でスピード最適化を施しコンパイル
した場合、図11に示すようなオブジェクト(プログラ
ム)が出力される。
たソース・プログラム・ファイル901に対して従来の
言語処理装置902でスピード最適化を施しコンパイル
した場合、図11に示すようなオブジェクト(プログラ
ム)が出力される。
【0013】図11に示したプログラムでは、言語処理
装置でインライン展開が実行されているため、例えば図
9に示したソース・プログラム・ファイル901中の関
数plusの呼び出し命令文403〜405、408〜
410は、インライン展開された命令文1104〜11
09にそれぞれコンパイルされている。
装置でインライン展開が実行されているため、例えば図
9に示したソース・プログラム・ファイル901中の関
数plusの呼び出し命令文403〜405、408〜
410は、インライン展開された命令文1104〜11
09にそれぞれコンパイルされている。
【0014】仮に、コンパイルされたプログラムの各命
令文のコードサイズ、及び実行に要するクロック数が図
12に示すような場合、関数plusの呼び出し処理に
着目すると、コードサイズ及び処理に要するクロック数
は、サイズ最適化を施した場合とスピード最適化を施し
た場合とでそれぞれ以下のようになる。
令文のコードサイズ、及び実行に要するクロック数が図
12に示すような場合、関数plusの呼び出し処理に
着目すると、コードサイズ及び処理に要するクロック数
は、サイズ最適化を施した場合とスピード最適化を施し
た場合とでそれぞれ以下のようになる。
【0015】まず、サイズ最適化を施した場合、図10
に示すように関数plusの呼び出し処理は、引数設定
の命令文(mov)と関数plusの呼び出し命令文
(jarl)とに分解され、そのコードサイズは(2+
4)×6箇所=36バイトとなる。また、処理に要する
クロック数は(1+3)×6箇所=24クロックとな
る。さらに、関数plusの呼び出し処理には、命令文
の実行クロック数に加えて関数plusの処理のクロッ
ク数(1+1+1+3)×6回=36クロックも必要に
なるため、最終的に要するクロック数は合計(24+3
6)=60クロックとなる。
に示すように関数plusの呼び出し処理は、引数設定
の命令文(mov)と関数plusの呼び出し命令文
(jarl)とに分解され、そのコードサイズは(2+
4)×6箇所=36バイトとなる。また、処理に要する
クロック数は(1+3)×6箇所=24クロックとな
る。さらに、関数plusの呼び出し処理には、命令文
の実行クロック数に加えて関数plusの処理のクロッ
ク数(1+1+1+3)×6回=36クロックも必要に
なるため、最終的に要するクロック数は合計(24+3
6)=60クロックとなる。
【0016】一方、スピード最適化を施した場合、図1
1に示すようにインライン展開の命令文(ld.w、a
dd、st.w)のコードサイズは(4+2+4)×6
箇所=60バイトとなる。また、処理に要するクロック
数は(1+1+1)×6箇所=18クロックとなる。
1に示すようにインライン展開の命令文(ld.w、a
dd、st.w)のコードサイズは(4+2+4)×6
箇所=60バイトとなる。また、処理に要するクロック
数は(1+1+1)×6箇所=18クロックとなる。
【0017】すなわち、サイズ最適化ではコードサイズ
が36バイト、処理に要するクロック数が60クロック
となり、スピード最適化ではコードサイズが60バイ
ト、処理に要するクロック数が18クロックとなる。
が36バイト、処理に要するクロック数が60クロック
となり、スピード最適化ではコードサイズが60バイ
ト、処理に要するクロック数が18クロックとなる。
【0018】以上説明したように、オブジェクトの実行
速度及びオブジェクトサイズを同時に最適化することが
できない最適化技法が存在するため、従来の言語処理装
置ではサイズ最適化あるいはスピード最適化のいずれか
一方のみを施していた。
速度及びオブジェクトサイズを同時に最適化することが
できない最適化技法が存在するため、従来の言語処理装
置ではサイズ最適化あるいはスピード最適化のいずれか
一方のみを施していた。
【0019】ところで、インライン展開については、特
定の関数についてのみインライン展開を実行する手法が
ある。例えば、『NECユーザーズ・マニュアルCA7
32/CA830/CA850/V800シリーズ・C
コンパイラ・パッケージC言語 資料番号U11010
JJ2V0UM00(第2版)1996年8月発行NE
C』の61頁によると、インライン展開の命令文(#p
ragma inline)を用いて、 #pragma inline func1,func2 と指定することにより、関数func1、関数func
2については呼び出し時に毎回インライン展開が実行さ
れるようになる。
定の関数についてのみインライン展開を実行する手法が
ある。例えば、『NECユーザーズ・マニュアルCA7
32/CA830/CA850/V800シリーズ・C
コンパイラ・パッケージC言語 資料番号U11010
JJ2V0UM00(第2版)1996年8月発行NE
C』の61頁によると、インライン展開の命令文(#p
ragma inline)を用いて、 #pragma inline func1,func2 と指定することにより、関数func1、関数func
2については呼び出し時に毎回インライン展開が実行さ
れるようになる。
【0020】したがって、この命令文を用いることによ
り、特定の関数についてインライン展開を施すことが可
能になり、オブジェクトの実行速度を向上させることが
できる。
り、特定の関数についてインライン展開を施すことが可
能になり、オブジェクトの実行速度を向上させることが
できる。
【0021】
【発明が解決しようとする課題】近年、利用者が構築す
るシステムには多彩な機能が組み込まれるようになった
ため、アプリケーションプログラムが複雑化し、オブジ
ェクトサイズが増大する傾向にある。このオブジェクト
サイズの増大については、アプリケーションプログラム
を格納するメモリの進歩によって、増大したオブジェク
トを格納する環境が整ってきている。しかしながら、シ
ステムのコストを低減するためには、可能な限り少ない
記憶容量のメモリを使用することが望ましく、特に装置
組み込み用のマイクロコンピュータの分野でオブジェク
トサイズの低減が望まれる。
るシステムには多彩な機能が組み込まれるようになった
ため、アプリケーションプログラムが複雑化し、オブジ
ェクトサイズが増大する傾向にある。このオブジェクト
サイズの増大については、アプリケーションプログラム
を格納するメモリの進歩によって、増大したオブジェク
トを格納する環境が整ってきている。しかしながら、シ
ステムのコストを低減するためには、可能な限り少ない
記憶容量のメモリを使用することが望ましく、特に装置
組み込み用のマイクロコンピュータの分野でオブジェク
トサイズの低減が望まれる。
【0022】一方、多彩な機能を1つのシステムで処理
する場合、通常、割り込み処理が利用される。この割り
込み処理で重要なことは、割り込み処理で実行する関数
(以下、割り込み関数と称す)を高速に実行し、次の処
理にいかに速く移れるかという点にある。そこで、割り
込み関数はスピード最適化を施して実行速度を向上させ
ることが望ましい。
する場合、通常、割り込み処理が利用される。この割り
込み処理で重要なことは、割り込み処理で実行する関数
(以下、割り込み関数と称す)を高速に実行し、次の処
理にいかに速く移れるかという点にある。そこで、割り
込み関数はスピード最適化を施して実行速度を向上させ
ることが望ましい。
【0023】このように、装置組み込み用のマイクロコ
ンピュータを使用する分野等では、ソース・プログラム
・ファイル全体にサイズ最適化を施し、実行速度を向上
させたい割り込み関数にはスピード最適化を施したい場
合が多い。
ンピュータを使用する分野等では、ソース・プログラム
・ファイル全体にサイズ最適化を施し、実行速度を向上
させたい割り込み関数にはスピード最適化を施したい場
合が多い。
【0024】しかしながら、上記したような従来の言語
処理装置では、1つのソース・プログラム・ファイルに
対してサイズ最適化またはスピード最適化のいずれか一
方しか施すことができないため、例えば、利用者は割り
込み関数などの実行速度を向上させたい関数群を別なソ
ース・プログラム・ファイルで記述し、そのソース・プ
ログラム・ファイルに対してのみスピード最適化を指定
し、その他の関数を記述したソース・プログラム・ファ
イルに対してはサイズ最適化を指定するなどの処理を行
う必要があった。
処理装置では、1つのソース・プログラム・ファイルに
対してサイズ最適化またはスピード最適化のいずれか一
方しか施すことができないため、例えば、利用者は割り
込み関数などの実行速度を向上させたい関数群を別なソ
ース・プログラム・ファイルで記述し、そのソース・プ
ログラム・ファイルに対してのみスピード最適化を指定
し、その他の関数を記述したソース・プログラム・ファ
イルに対してはサイズ最適化を指定するなどの処理を行
う必要があった。
【0025】しかしながら、このような方法では、利用
者が実行速度を向上させたい関数を全てピックアップ
し、別ファイルに格納する作業が必要になるため、ソフ
トウェアの設計作業の効率を低下させていた。
者が実行速度を向上させたい関数を全てピックアップ
し、別ファイルに格納する作業が必要になるため、ソフ
トウェアの設計作業の効率を低下させていた。
【0026】また、実行速度を向上させたい関数、及び
コードサイズを削減したい他の関数の両方から呼び出さ
れる関数に対してインライン展開を指定すると、コード
サイズを削減したい関数から呼び出される関数について
もインライン展開が施されるため、オブジェクトサイズ
が増加してしまう問題が生じる。
コードサイズを削減したい他の関数の両方から呼び出さ
れる関数に対してインライン展開を指定すると、コード
サイズを削減したい関数から呼び出される関数について
もインライン展開が施されるため、オブジェクトサイズ
が増加してしまう問題が生じる。
【0027】すなわち、実行速度を向上させたい関数に
はインライン展開を施し、コードサイズを削減したい関
数にはインライン展開を施さないといった細かな指定が
可能であることが望ましい。
はインライン展開を施し、コードサイズを削減したい関
数にはインライン展開を施さないといった細かな指定が
可能であることが望ましい。
【0028】本発明は上記したような従来の技術が有す
る問題点を解決するためになされたものであり、スピー
ド最適化を施す関数を自由に指定できるようにして、所
望の実行スピードとサイズを有するオブジェクトが得ら
れる言語処理装置を提供することを目的とする。
る問題点を解決するためになされたものであり、スピー
ド最適化を施す関数を自由に指定できるようにして、所
望の実行スピードとサイズを有するオブジェクトが得ら
れる言語処理装置を提供することを目的とする。
【0029】
【課題を解決するための手段】上記目的を達成するため
本発明の言語処理装置は、入力されたソースプログラム
ファイルの構文解析を行い、予め定められた様式の中間
コードを生成する構文解析部と、前記中間コードの所定
の関数に対して予め指定された最適化処理を施す最適化
処理部と、を有し、前記ソースプログラムファイルを翻
訳して所定のオブジェクトモジュールファイルを出力す
る言語処理装置において、前記中間コードの中から、予
め指定された、前記オブジェクトモジュールファイルの
実行速度を向上させるための最適化処理であるスピード
最適化を施す関数を抽出するスピード最適化関数認識処
理部と、前記スピード最適化を施す関数及び該関数から
呼び出される関数の組み合せを見つけ出す関数呼び出し
関係解析部と、前記中間コードの中から、前記スピード
最適化を施す関数及び該関数から呼び出される関数を登
録するスピード最適化処理関数登録部と、を有し、前記
最適化処理部は、前記スピード最適化処理関数登録部に
登録された関数のうち、前記スピード最適化を施す関数
及び該関数からのみ呼び出される関数に前記スピード最
適化を施すことを特徴とする。
本発明の言語処理装置は、入力されたソースプログラム
ファイルの構文解析を行い、予め定められた様式の中間
コードを生成する構文解析部と、前記中間コードの所定
の関数に対して予め指定された最適化処理を施す最適化
処理部と、を有し、前記ソースプログラムファイルを翻
訳して所定のオブジェクトモジュールファイルを出力す
る言語処理装置において、前記中間コードの中から、予
め指定された、前記オブジェクトモジュールファイルの
実行速度を向上させるための最適化処理であるスピード
最適化を施す関数を抽出するスピード最適化関数認識処
理部と、前記スピード最適化を施す関数及び該関数から
呼び出される関数の組み合せを見つけ出す関数呼び出し
関係解析部と、前記中間コードの中から、前記スピード
最適化を施す関数及び該関数から呼び出される関数を登
録するスピード最適化処理関数登録部と、を有し、前記
最適化処理部は、前記スピード最適化処理関数登録部に
登録された関数のうち、前記スピード最適化を施す関数
及び該関数からのみ呼び出される関数に前記スピード最
適化を施すことを特徴とする。
【0030】このとき、スピード最適化を施す関数は割
り込み処理を行う関数であってもよい。
り込み処理を行う関数であってもよい。
【0031】また、本発明の言語処理方法は、入力され
たソースプログラムファイルの構文解析を行い、予め定
められた様式の中間コードを生成する構文解析処理と、
前記中間コードの所定の関数に対して予め指定された最
適化処理を施す最適化処理と、を有しし、前記ソースプ
ログラムファイルを翻訳して所定のオブジェクトモジュ
ールファイルを出力する言語処理方法において、前記中
間コードの中から、予め指定された、前記オブジェクト
モジュールファイルの実行速度を向上させるための最適
化処理であるスピード最適化を施す関数を抽出するスピ
ード最適化関数認識処理と、前記スピード最適化を施す
関数及び該関数から呼び出される関数の組み合せを見つ
け出す関数呼び出し関係解析処理と、前記中間コードの
中から、前記スピード最適化を施す関数及び該関数から
呼び出される関数を登録するスピード最適化処理関数登
録処理と、を有し、前記最適化処理で、前記スピード最
適化処理関数登録処理で登録された関数のうち、前記ス
ピード最適化を施す関数及び該関数からのみ呼び出され
る関数に前記スピード最適化を施すことを特徴とする。
たソースプログラムファイルの構文解析を行い、予め定
められた様式の中間コードを生成する構文解析処理と、
前記中間コードの所定の関数に対して予め指定された最
適化処理を施す最適化処理と、を有しし、前記ソースプ
ログラムファイルを翻訳して所定のオブジェクトモジュ
ールファイルを出力する言語処理方法において、前記中
間コードの中から、予め指定された、前記オブジェクト
モジュールファイルの実行速度を向上させるための最適
化処理であるスピード最適化を施す関数を抽出するスピ
ード最適化関数認識処理と、前記スピード最適化を施す
関数及び該関数から呼び出される関数の組み合せを見つ
け出す関数呼び出し関係解析処理と、前記中間コードの
中から、前記スピード最適化を施す関数及び該関数から
呼び出される関数を登録するスピード最適化処理関数登
録処理と、を有し、前記最適化処理で、前記スピード最
適化処理関数登録処理で登録された関数のうち、前記ス
ピード最適化を施す関数及び該関数からのみ呼び出され
る関数に前記スピード最適化を施すことを特徴とする。
【0032】このとき、スピード最適化を施す関数は割
り込み処理を行う関数であってもよい。
り込み処理を行う関数であってもよい。
【0033】さらに、本発明の記録媒体は、入力された
ソースプログラムファイルの構文解析を行い、予め定め
られた様式の中間コードを生成する構文解析処理と、前
記中間コードの所定の関数に対して予め指定された最適
化処理を施す最適化処理と、を有し、前記ソースプログ
ラムファイルを翻訳して所定のオブジェクトモジュール
ファイルを出力する言語処理装置に実行させるプログラ
ムが記録された記録媒体において、前記中間コードの中
から、予め指定された、前記オブジェクトモジュールフ
ァイルの実行速度を向上させるための最適化処理である
スピード最適化を施す関数を抽出するスピード最適化関
数認識処理と、前記スピード最適化を施す関数及び該関
数から呼び出される関数の組み合せを見つけ出す関数呼
び出し関係解析処理と、前記中間コードの中から、前記
スピード最適化を施す関数及び該関数から呼び出される
関数を登録するスピード最適化処理関数登録処理と、を
有し、前記最適化処理で、前記スピード最適化処理関数
登録処理で登録された関数のうち、前記スピード最適化
を施す関数及び該関数からのみ呼び出される関数に前記
スピード最適化を施す処理を、言語処理装置に実行させ
るプログラムを記録したものであり、このとき、スピー
ド最適化を施す関数が割り込み処理を行う関数であって
もよい。
ソースプログラムファイルの構文解析を行い、予め定め
られた様式の中間コードを生成する構文解析処理と、前
記中間コードの所定の関数に対して予め指定された最適
化処理を施す最適化処理と、を有し、前記ソースプログ
ラムファイルを翻訳して所定のオブジェクトモジュール
ファイルを出力する言語処理装置に実行させるプログラ
ムが記録された記録媒体において、前記中間コードの中
から、予め指定された、前記オブジェクトモジュールフ
ァイルの実行速度を向上させるための最適化処理である
スピード最適化を施す関数を抽出するスピード最適化関
数認識処理と、前記スピード最適化を施す関数及び該関
数から呼び出される関数の組み合せを見つけ出す関数呼
び出し関係解析処理と、前記中間コードの中から、前記
スピード最適化を施す関数及び該関数から呼び出される
関数を登録するスピード最適化処理関数登録処理と、を
有し、前記最適化処理で、前記スピード最適化処理関数
登録処理で登録された関数のうち、前記スピード最適化
を施す関数及び該関数からのみ呼び出される関数に前記
スピード最適化を施す処理を、言語処理装置に実行させ
るプログラムを記録したものであり、このとき、スピー
ド最適化を施す関数が割り込み処理を行う関数であって
もよい。
【0034】上記のように構成された言語処理装置は、
スピード最適化関数認識部で、中間コードの中から予め
指定されたスピード最適化を施す関数を抽出し、関数呼
び出し関係解析部で、スピード最適化を施す関数及びそ
の関数から呼び出される関数の組み合せを見つけ出し、
スピード最適化処理関数登録部で、中間コードの中から
スピード最適化を施す関数及びその関数から呼び出され
る関数を登録し、最適化処理部は、スピード最適化処理
関数登録部に登録された関数のうち、スピード最適化を
施す関数及びその関数からのみ呼び出される関数にスピ
ード最適化を施す。したがってソースプログラムファイ
ル全体に対してオブジェクトサイズを削減する最適化処
理の指示がなされた場合でも、実行速度を向上させたい
関数に対してスピード最適化が施される。
スピード最適化関数認識部で、中間コードの中から予め
指定されたスピード最適化を施す関数を抽出し、関数呼
び出し関係解析部で、スピード最適化を施す関数及びそ
の関数から呼び出される関数の組み合せを見つけ出し、
スピード最適化処理関数登録部で、中間コードの中から
スピード最適化を施す関数及びその関数から呼び出され
る関数を登録し、最適化処理部は、スピード最適化処理
関数登録部に登録された関数のうち、スピード最適化を
施す関数及びその関数からのみ呼び出される関数にスピ
ード最適化を施す。したがってソースプログラムファイ
ル全体に対してオブジェクトサイズを削減する最適化処
理の指示がなされた場合でも、実行速度を向上させたい
関数に対してスピード最適化が施される。
【0035】また、スピード最適化を施す関数を指定す
ると、その関数から呼び出される関数も併せてスピード
最適化が施されるため、実行速度を向上させたい処理に
関連する関数を全てピックアップして別ファイルを作成
する等の処理が不要になる。
ると、その関数から呼び出される関数も併せてスピード
最適化が施されるため、実行速度を向上させたい処理に
関連する関数を全てピックアップして別ファイルを作成
する等の処理が不要になる。
【0036】
【発明の実施の形態】次に本発明について図面を参照し
て説明する。
て説明する。
【0037】(第1実施例)まず、本発明の言語処理装
置の第1実施例について図1〜図5を参照して説明す
る。なお、本実施例ではスピード最適化を行う関数とし
て、短時間での処理が要求される割り込み関数を例にし
て説明する。
置の第1実施例について図1〜図5を参照して説明す
る。なお、本実施例ではスピード最適化を行う関数とし
て、短時間での処理が要求される割り込み関数を例にし
て説明する。
【0038】図1は本発明の言語処理装置の第1実施例
の構成を示すブロック図である。
の構成を示すブロック図である。
【0039】図1において、本実施例の言語処理装置1
02は、入力されたソース・プログラム・ファイル10
1-1〜101-nの構文解析を行い、言語処理しやすい様
式に変換した第1の中間コード109を出力する構文解
析部104と、不図示の入力手段を介して入力された最
適化オプション指示を保持する最適化指示部107と、
最適化オプション指示で指定された最適化を行い、その
処理結果である第2の中間コード113を出力する最適
化処理部110と、第2の中間コード113からオブジ
ェクトコードを生成するコード生成部114と、コード
生成部114によって生成されたオブジェクトコードを
オブジェクト・モジュール・ファイル116として出力
するオブジェクト出力部115と、スピード最適化を施
す関数及びその関数から呼び出される関数をスピード最
適化対象の関数として登録するスピード最適化処理関数
登録部108とによって構成されている。
02は、入力されたソース・プログラム・ファイル10
1-1〜101-nの構文解析を行い、言語処理しやすい様
式に変換した第1の中間コード109を出力する構文解
析部104と、不図示の入力手段を介して入力された最
適化オプション指示を保持する最適化指示部107と、
最適化オプション指示で指定された最適化を行い、その
処理結果である第2の中間コード113を出力する最適
化処理部110と、第2の中間コード113からオブジ
ェクトコードを生成するコード生成部114と、コード
生成部114によって生成されたオブジェクトコードを
オブジェクト・モジュール・ファイル116として出力
するオブジェクト出力部115と、スピード最適化を施
す関数及びその関数から呼び出される関数をスピード最
適化対象の関数として登録するスピード最適化処理関数
登録部108とによって構成されている。
【0040】また、構文解析部104には、ソース・プ
ログラム・ファイルの中からスピード最適化を施す関数
を抽出するスピード最適化関数認識処理部105と、ス
ピード最適化を施す関数及びその関数から呼び出される
関数の組み合せを見つけ出す関数呼び出し関係解析部1
06とを有し、最適化処理部110には、登録されたス
ピード最適化対象の関数に対してスピード最適化を施す
スピード最適化部111と、その他の関数についてサイ
ズ最適化を施すサイズ最適化部112とを有している。
ログラム・ファイルの中からスピード最適化を施す関数
を抽出するスピード最適化関数認識処理部105と、ス
ピード最適化を施す関数及びその関数から呼び出される
関数の組み合せを見つけ出す関数呼び出し関係解析部1
06とを有し、最適化処理部110には、登録されたス
ピード最適化対象の関数に対してスピード最適化を施す
スピード最適化部111と、その他の関数についてサイ
ズ最適化を施すサイズ最適化部112とを有している。
【0041】このような構成において、次に本実施例の
言語処理装置の動作について図2を参照して詳細を説明
する。
言語処理装置の動作について図2を参照して詳細を説明
する。
【0042】図2は本発明の言語処理装置の第1実施例
の処理手順を示すフローチャートである。
の処理手順を示すフローチャートである。
【0043】図2において、不図示の入力手段を介して
入力された最適化オプション指示を最適化指示部107
で受け取ると(ステップS201)、最適化処理部11
0は、まず最初に、指定された最適化処理がスピード最
適化か否かを判定する(ステップS202)。ここで、
スピード最適化が指定された場合は、従来と同様にソー
ス・プログラム・ファイル全体に対してスピード最適化
を施す。また、スピード最適化が指定されていない場合
は、以下の構文解析部104によるソース・プログラム
・ファイルの構文解析の終了を待って最適化処理を実行
する。
入力された最適化オプション指示を最適化指示部107
で受け取ると(ステップS201)、最適化処理部11
0は、まず最初に、指定された最適化処理がスピード最
適化か否かを判定する(ステップS202)。ここで、
スピード最適化が指定された場合は、従来と同様にソー
ス・プログラム・ファイル全体に対してスピード最適化
を施す。また、スピード最適化が指定されていない場合
は、以下の構文解析部104によるソース・プログラム
・ファイルの構文解析の終了を待って最適化処理を実行
する。
【0044】構文解析部104は、まず、ソース・プロ
グラム・ファイル101-1〜101 -nの構文解析が全て
終了しているか否かを判定し(ステップS203)。構
文解析が全て終了していない場合は、ソース・プログラ
ム・ファイルを入力し(ステップS204)、入力した
ソース・プログラム・ファイルの最後の行まで解析した
か否かを判定する(ステップS205)。入力したソー
ス・プログラム・ファイルの最後の行まで解析した場合
はステップS203の処理に戻る。
グラム・ファイル101-1〜101 -nの構文解析が全て
終了しているか否かを判定し(ステップS203)。構
文解析が全て終了していない場合は、ソース・プログラ
ム・ファイルを入力し(ステップS204)、入力した
ソース・プログラム・ファイルの最後の行まで解析した
か否かを判定する(ステップS205)。入力したソー
ス・プログラム・ファイルの最後の行まで解析した場合
はステップS203の処理に戻る。
【0045】また、ソース・プログラム・ファイルの最
後の行まで解析していない場合はそのソース・プログラ
ム・ファイルの構文解析を行う(ステップS206)。
後の行まで解析していない場合はそのソース・プログラ
ム・ファイルの構文解析を行う(ステップS206)。
【0046】ここで、構文解析の工程において、スピー
ド最適化関数認識処理部105は、処理中の関数がスピ
ード最適化対象の関数、すなわち割り込み関数であるか
否かを判定し(ステップS207)、割り込み関数と判
定した場合はその関数をスピード最適化対象の関数とし
てスピード最適化処理関数登録部108に登録する(ス
テップS208)。
ド最適化関数認識処理部105は、処理中の関数がスピ
ード最適化対象の関数、すなわち割り込み関数であるか
否かを判定し(ステップS207)、割り込み関数と判
定した場合はその関数をスピード最適化対象の関数とし
てスピード最適化処理関数登録部108に登録する(ス
テップS208)。
【0047】また、関数呼び出し関係解析部106は、
処理中の関数が他の関数を呼び出す命令文、すなわち割
り込み関数であるか否かを判定し(ステップS20
9)、割り込み関数である場合は、その割り込み関数と
呼び出される関数との組み合せを登録する(ステップS
210)。
処理中の関数が他の関数を呼び出す命令文、すなわち割
り込み関数であるか否かを判定し(ステップS20
9)、割り込み関数である場合は、その割り込み関数と
呼び出される関数との組み合せを登録する(ステップS
210)。
【0048】ステップS210の処理が終了したらステ
ップS205の処理に戻り、全てのソース・プログラム
・ファイル101-1〜101-nに対してステップS20
5〜ステップS210の処理を行う。
ップS205の処理に戻り、全てのソース・プログラム
・ファイル101-1〜101-nに対してステップS20
5〜ステップS210の処理を行う。
【0049】一方、ステップS203の処理で構文解析
が全て終了していると判定された場合、構文解析部10
4は、スピード最適化対象の関数とその関数から呼び出
される関数との組み合せを関数呼び出し関係解析部10
6を参照して調べ、スピード最適化対象の関数から呼び
出される関数についてもスピード最適化対象の関数とし
てスピード最適化処理関数登録部108に登録する(ス
テップS211)。
が全て終了していると判定された場合、構文解析部10
4は、スピード最適化対象の関数とその関数から呼び出
される関数との組み合せを関数呼び出し関係解析部10
6を参照して調べ、スピード最適化対象の関数から呼び
出される関数についてもスピード最適化対象の関数とし
てスピード最適化処理関数登録部108に登録する(ス
テップS211)。
【0050】構文解析部104によるステップS211
の処理が終了すると、最適化処理部110は、まず最初
に、構文解析部104から出力された中間コード109
の全ての関数について最適化が終了しているか否かを判
定し(ステップS213)、最適化が終了していない場
合はその関数について以下の手順で最適化を施す。
の処理が終了すると、最適化処理部110は、まず最初
に、構文解析部104から出力された中間コード109
の全ての関数について最適化が終了しているか否かを判
定し(ステップS213)、最適化が終了していない場
合はその関数について以下の手順で最適化を施す。
【0051】まず、処理中の関数がスピード最適化対象
の関数(割り込み関数)であるか否かを判定し(ステッ
プS214)、スピード最適化対象の関数であるなら
ば、スピード最適化部111によってその関数に対して
スピード最適化を施す(ステップS216)。続いて、
処理中の関数がスピード最適化対象の関数からのみ呼び
出される関数であるか否かを判定し(ステップS21
5)、スピード最適化対象の関数からのみ呼び出される
関数である場合はスピード最適化部111によってその
関数に対してスピード最適化を施す(ステップS21
6)。
の関数(割り込み関数)であるか否かを判定し(ステッ
プS214)、スピード最適化対象の関数であるなら
ば、スピード最適化部111によってその関数に対して
スピード最適化を施す(ステップS216)。続いて、
処理中の関数がスピード最適化対象の関数からのみ呼び
出される関数であるか否かを判定し(ステップS21
5)、スピード最適化対象の関数からのみ呼び出される
関数である場合はスピード最適化部111によってその
関数に対してスピード最適化を施す(ステップS21
6)。
【0052】それ以外の関数については、スピード最適
化以外の最適化、すなわちサイズ最適化をサイズ最適化
部112によって施す(ステップS217)。
化以外の最適化、すなわちサイズ最適化をサイズ最適化
部112によって施す(ステップS217)。
【0053】ステップS217の処理が終了したらステ
ップS213の処理に戻り、第1の中間コード109の
全ての関数について最適化が終了するまで、ステップS
213〜ステップS217の処理を繰り返す。
ップS213の処理に戻り、第1の中間コード109の
全ての関数について最適化が終了するまで、ステップS
213〜ステップS217の処理を繰り返す。
【0054】一方、ステップS213の処理で第1の中
間コード109の全ての関数について最適化が終了した
と判定された場合は、コード生成部114の処理に移
る。
間コード109の全ての関数について最適化が終了した
と判定された場合は、コード生成部114の処理に移
る。
【0055】コード生成部114は、まず最初に、最適
化処理部110で生成した第2の中間コード113の全
ての関数についてオブジェクトコードの生成が終了して
いるか否かを判定し(ステップS218)、オブジェク
トコードの生成が全て終了していない場合はオブジェク
トコードの生成を実行する(ステップS219)。ステ
ップS219の処理が終了したらステップS218の処
理に戻り、第2の中間コード113の全ての関数につい
てコード生成が終了するまでステップS218、ステッ
プS219の処理を繰り返す。
化処理部110で生成した第2の中間コード113の全
ての関数についてオブジェクトコードの生成が終了して
いるか否かを判定し(ステップS218)、オブジェク
トコードの生成が全て終了していない場合はオブジェク
トコードの生成を実行する(ステップS219)。ステ
ップS219の処理が終了したらステップS218の処
理に戻り、第2の中間コード113の全ての関数につい
てコード生成が終了するまでステップS218、ステッ
プS219の処理を繰り返す。
【0056】ステップS218の処理で第2の中間コー
ド113の全ての関数のオブジェクトコードの生成が終
了したら、オブジェクト出力部115の処理に移る。
ド113の全ての関数のオブジェクトコードの生成が終
了したら、オブジェクト出力部115の処理に移る。
【0057】オブジェクト出力部115は、コード生成
部114で生成されたオブジェクトコードをオブジェク
ト・モジュール・ファイル116として出力し(ステッ
プS220)、処理を終了する。
部114で生成されたオブジェクトコードをオブジェク
ト・モジュール・ファイル116として出力し(ステッ
プS220)、処理を終了する。
【0058】なお、スピード最適化関数認識処理部10
5では、例えば図3に示すように記述されたC言語によ
る命令文から割り込み関数を抽出することができる。図
3に示した例は、『NECユーザーズ・マニュアル C
A732/CA830/CA850 V800シリーズ
・Cコンパイラ・パッケージC言語編 資料番号U11
010JJ2V0UM00(第2版)1996年8月発
行 NEC』の71頁に記載されている。
5では、例えば図3に示すように記述されたC言語によ
る命令文から割り込み関数を抽出することができる。図
3に示した例は、『NECユーザーズ・マニュアル C
A732/CA830/CA850 V800シリーズ
・Cコンパイラ・パッケージC言語編 資料番号U11
010JJ2V0UM00(第2版)1996年8月発
行 NEC』の71頁に記載されている。
【0059】次に、本実施例の言語処理装置によって得
られる効果について、スピード最適化としてインライン
展開を実行した場合を例にして具体的に説明する。
られる効果について、スピード最適化としてインライン
展開を実行した場合を例にして具体的に説明する。
【0060】従来の技術で用いた図9に示すようなC言
語で記述されたソース・プログラム・ファイルに対し
て、本実施例の言語処理装置を用いてコンパイルする場
合、スピード最適化関数認識部105は、割り込み関数
の宣言文401によって関数funcを割り込み関数と
認識し、関数呼び出し関係解析部106は、図4に示す
ように関数func、関数main、及び関数plus
の組み合せを認識する。
語で記述されたソース・プログラム・ファイルに対し
て、本実施例の言語処理装置を用いてコンパイルする場
合、スピード最適化関数認識部105は、割り込み関数
の宣言文401によって関数funcを割り込み関数と
認識し、関数呼び出し関係解析部106は、図4に示す
ように関数func、関数main、及び関数plus
の組み合せを認識する。
【0061】これにより関数funcはスピード最適
化、関数mainはサイズ最適化、関数plusは関数
func及び関数mainの両方から呼ばれているため
サイズ最適化を施すことが決定される。したがって、最
適化処理部110はこの方針にしたがって各関数を最適
化する。
化、関数mainはサイズ最適化、関数plusは関数
func及び関数mainの両方から呼ばれているため
サイズ最適化を施すことが決定される。したがって、最
適化処理部110はこの方針にしたがって各関数を最適
化する。
【0062】上記方針にしたがって最適化され、オブジ
ェクト出力部115から出力されたオブジェクトを図5
に示す。
ェクト出力部115から出力されたオブジェクトを図5
に示す。
【0063】図5において、前述した最適化の方針に基
づき、関数mainは、サイズ最適化が施されるためイ
ンライン展開が実行されず、引数設定の命令文605、
607、609と関数plusの呼び出し命令文60
6、608、610とにコンパイルされている。一方、
割り込み関数funcはスピード最適化が施されるた
め、インライン展開が実行され、インライン展開された
命令文611〜613にコンパイルされている。
づき、関数mainは、サイズ最適化が施されるためイ
ンライン展開が実行されず、引数設定の命令文605、
607、609と関数plusの呼び出し命令文60
6、608、610とにコンパイルされている。一方、
割り込み関数funcはスピード最適化が施されるた
め、インライン展開が実行され、インライン展開された
命令文611〜613にコンパイルされている。
【0064】仮に、コンパイルされたプログラムの各命
令文のコードサイズ、及び実行に要するクロック数が図
12に示すようになる場合、割り込み関数funcの処
理における関数plusの呼び出し処理にはインライン
展開が実行され、コードサイズは4+2+4=10バイ
トとなる。また、処理に要するクロック数は1+1+1
=3クロックとなる。
令文のコードサイズ、及び実行に要するクロック数が図
12に示すようになる場合、割り込み関数funcの処
理における関数plusの呼び出し処理にはインライン
展開が実行され、コードサイズは4+2+4=10バイ
トとなる。また、処理に要するクロック数は1+1+1
=3クロックとなる。
【0065】ここで、従来の技術ではサイズ最適化を一
律に施すため、関数plusの呼び出し処理にはインラ
イン展開が実行されず、引数設定の命令文と関数plu
sの呼び出し命令文にコンパイルされ、そのコードサイ
ズは(2+4)=6バイト、処理に要するクロック数は
1+3=4クロックとなる。また、関数plus自体の
処理時間(1+1+1+3=6クロック)を加えると、
10クロックとなる。
律に施すため、関数plusの呼び出し処理にはインラ
イン展開が実行されず、引数設定の命令文と関数plu
sの呼び出し命令文にコンパイルされ、そのコードサイ
ズは(2+4)=6バイト、処理に要するクロック数は
1+3=4クロックとなる。また、関数plus自体の
処理時間(1+1+1+3=6クロック)を加えると、
10クロックとなる。
【0066】したがって、本実施例の言語処理装置の方
が従来の言語処理装置に比べてコードサイズが(10−
6=4バイト)×3箇所=12バイト多くなる。
が従来の言語処理装置に比べてコードサイズが(10−
6=4バイト)×3箇所=12バイト多くなる。
【0067】しかしながら、割り込み関数funcの処
理に要するクロック数は、本実施例の言語処理装置の方
が従来の言語処理装置に比べて(10−3=7)×3箇
所=21クロック少なくて済む。
理に要するクロック数は、本実施例の言語処理装置の方
が従来の言語処理装置に比べて(10−3=7)×3箇
所=21クロック少なくて済む。
【0068】よって、ソース・プログラム・ファイル全
体に対してサイズ最適化の指示がなされた場合でも、割
り込み処理等のように実行速度を向上させたい関数に対
してはスピード最適化が施されるため、実行速度の向上
が要求される処理の実行速度を満足させつつ、その条件
下で最小のオブジェクトサイズとなるオブジェクトモジ
ュールファイルを得ることができる。
体に対してサイズ最適化の指示がなされた場合でも、割
り込み処理等のように実行速度を向上させたい関数に対
してはスピード最適化が施されるため、実行速度の向上
が要求される処理の実行速度を満足させつつ、その条件
下で最小のオブジェクトサイズとなるオブジェクトモジ
ュールファイルを得ることができる。
【0069】また、スピード最適化を施す関数を指定す
ると、その関数から呼び出される関数も併せてスピード
最適化が施されるため、実行速度を向上させたい処理に
関連する関数を全てピックアップして別ファイルを構成
する等の処理が不要になり、設計作業の効率が向上す
る。
ると、その関数から呼び出される関数も併せてスピード
最適化が施されるため、実行速度を向上させたい処理に
関連する関数を全てピックアップして別ファイルを構成
する等の処理が不要になり、設計作業の効率が向上す
る。
【0070】(第2実施例)次に、本発明の言語処理装
置の第2実施例について図6、図7を参照して説明す
る。
置の第2実施例について図6、図7を参照して説明す
る。
【0071】第1実施例では、スピード最適化を施す関
数として、短時間での処理が要求される割り込み関数に
絞って説明した。本実施例はスピード最適化を施す関数
を利用者が自由に設定できるようにする点で第1実施例
と異なっている。言語処理装置の構成については第1実
施例と同様であるため、その説明は省略する。
数として、短時間での処理が要求される割り込み関数に
絞って説明した。本実施例はスピード最適化を施す関数
を利用者が自由に設定できるようにする点で第1実施例
と異なっている。言語処理装置の構成については第1実
施例と同様であるため、その説明は省略する。
【0072】図6は本発明の言語処理装置の第2実施例
の処理手順を示すフローチャートである。
の処理手順を示すフローチャートである。
【0073】図6において、不図示の入力手段を介して
入力された最適化オプション指示を最適化指示部で受け
取ると(ステップS701)、最適化処理部は、まず最
初に、指定された最適化処理の種類がスピード最適化か
否かを判定する(ステップS702)。スピード最適化
が指定されたならば、従来と同様にソース・プログラム
・ファイル全体に対してスピード最適化の処理を施す。
また、スピード最適化が指定されていない場合は、スピ
ード最適化を施す関数が指定されているか否かを判定し
(ステップS703)、スピード最適化を施す関数が指
定されていない場合は第1実施例と同様に割り込み関数
についてスピード最適化を施す(図2のステップS20
3〜ステップS220)。
入力された最適化オプション指示を最適化指示部で受け
取ると(ステップS701)、最適化処理部は、まず最
初に、指定された最適化処理の種類がスピード最適化か
否かを判定する(ステップS702)。スピード最適化
が指定されたならば、従来と同様にソース・プログラム
・ファイル全体に対してスピード最適化の処理を施す。
また、スピード最適化が指定されていない場合は、スピ
ード最適化を施す関数が指定されているか否かを判定し
(ステップS703)、スピード最適化を施す関数が指
定されていない場合は第1実施例と同様に割り込み関数
についてスピード最適化を施す(図2のステップS20
3〜ステップS220)。
【0074】スピード最適化を施す関数が指定されてい
る場合は、その関数をスピード最適化対象の関数として
スピード最適化処理関数登録部108に登録する(ステ
ップS704)。
る場合は、その関数をスピード最適化対象の関数として
スピード最適化処理関数登録部108に登録する(ステ
ップS704)。
【0075】ステップS704の処理が終了すると、最
適化処理部は、以下の構文解析部によるソース・プログ
ラム・ファイルの構文解析の終了を待って最適化処理を
実行する。
適化処理部は、以下の構文解析部によるソース・プログ
ラム・ファイルの構文解析の終了を待って最適化処理を
実行する。
【0076】構文解析部は、まず、ソース・プログラム
・ファイルの構文解析が全て終了しているか否かを判定
し(ステップS705)。構文解析が全て終了していな
い場合は、構文解析が終了していないソース・プログラ
ム・ファイルを入力し(ステップS706)、入力した
ソース・プログラム・ファイルの最後の行まで解析した
か否かを判定する(ステップS707)。入力したソー
ス・プログラム・ファイルの最後の行まで解析した場合
はステップS705の処理に戻る。
・ファイルの構文解析が全て終了しているか否かを判定
し(ステップS705)。構文解析が全て終了していな
い場合は、構文解析が終了していないソース・プログラ
ム・ファイルを入力し(ステップS706)、入力した
ソース・プログラム・ファイルの最後の行まで解析した
か否かを判定する(ステップS707)。入力したソー
ス・プログラム・ファイルの最後の行まで解析した場合
はステップS705の処理に戻る。
【0077】また、ソース・プログラム・ファイルの最
後の行まで解析していない場合はそのソース・プログラ
ム・ファイルの構文解析を行う(ステップS708)。
後の行まで解析していない場合はそのソース・プログラ
ム・ファイルの構文解析を行う(ステップS708)。
【0078】ここで、構文解析の工程では、関数呼び出
し関係解析部は処理中の関数が他の関数を呼び出す命令
文であるか否かを判定し(ステップS709)、他の関
数を呼び出す命令文である場合は、その関数及びその関
数に呼び出される関数の組み合せを登録する(ステップ
S710)。
し関係解析部は処理中の関数が他の関数を呼び出す命令
文であるか否かを判定し(ステップS709)、他の関
数を呼び出す命令文である場合は、その関数及びその関
数に呼び出される関数の組み合せを登録する(ステップ
S710)。
【0079】ステップS710の処理が終了したらステ
ップS707の処理に戻り、全てのソース・プログラム
・ファイルに対してステップS707〜ステップS71
0の処理を行う。
ップS707の処理に戻り、全てのソース・プログラム
・ファイルに対してステップS707〜ステップS71
0の処理を行う。
【0080】一方、ステップS705の処理で構文解析
が全て終了したと判定された場合、構文解析部は、スピ
ード最適化対象の関数とその関数から呼び出される関数
の組み合せを関数呼び出し関係解析部を参照して調べ、
スピード最適化対象の関数から呼び出される関数につい
てもスピード最適化対象の関数としてスピード最適化処
理関数登録部に登録する(ステップS711)。
が全て終了したと判定された場合、構文解析部は、スピ
ード最適化対象の関数とその関数から呼び出される関数
の組み合せを関数呼び出し関係解析部を参照して調べ、
スピード最適化対象の関数から呼び出される関数につい
てもスピード最適化対象の関数としてスピード最適化処
理関数登録部に登録する(ステップS711)。
【0081】以降のステップS713〜ステップS72
0の処理は、第1実施例のステップS213〜ステップ
S220の処理と同様であるため、その説明は省略す
る。
0の処理は、第1実施例のステップS213〜ステップ
S220の処理と同様であるため、その説明は省略す
る。
【0082】ここで、図7に最適化オプション指示の例
を示す。図7の801はスピード最適化を関数func
1と関数func2に対して実行させる最適化指定であ
り、802はオブジェクト全体に対してサイズ最適化を
実行させる最適化指定である。
を示す。図7の801はスピード最適化を関数func
1と関数func2に対して実行させる最適化指定であ
り、802はオブジェクト全体に対してサイズ最適化を
実行させる最適化指定である。
【0083】したがって、本実施例についても、ソース
・プログラム・ファイルのうち、実行速度を向上させた
い関数に対して例えば図7に示すようにスピード最適化
を指定することで、第1実施例と同様のオブジェクトを
得ることができる。
・プログラム・ファイルのうち、実行速度を向上させた
い関数に対して例えば図7に示すようにスピード最適化
を指定することで、第1実施例と同様のオブジェクトを
得ることができる。
【0084】ところで、本発明の言語処理装置の各構成
要素で実行する処理は、それぞれCPUを備えた計算機
で行ってもよい。その場合、計算機には言語処理のため
の処理プログラムが記録された不図示の記録媒体を備
え、第1実施例及び第2実施例で記載したソース・プロ
グラム・ファイルからオブジェクト・モジュール・ファ
イルへの翻訳、及び最適化処理の処理手順は、記録媒体
に記録された処理プログラムにしたがって実行される。
ここで、記録媒体は磁気ディスク、半導体メモリ、ある
いはその他の記録媒体であってもよい。
要素で実行する処理は、それぞれCPUを備えた計算機
で行ってもよい。その場合、計算機には言語処理のため
の処理プログラムが記録された不図示の記録媒体を備
え、第1実施例及び第2実施例で記載したソース・プロ
グラム・ファイルからオブジェクト・モジュール・ファ
イルへの翻訳、及び最適化処理の処理手順は、記録媒体
に記録された処理プログラムにしたがって実行される。
ここで、記録媒体は磁気ディスク、半導体メモリ、ある
いはその他の記録媒体であってもよい。
【0085】
【発明の効果】本発明は以上説明したように構成されて
いるので、以下に記載する効果を奏する。
いるので、以下に記載する効果を奏する。
【0086】中間コードの中から予め指定されたスピー
ド最適化を施す関数を抽出するスピード最適化関数認識
処理部と、スピード最適化を施す関数及びその関数から
呼び出される関数の組み合せを見つけ出す関数呼び出し
関係解析部と、中間コードの中からスピード最適化を施
す関数及びその関数から呼び出される関数を登録するス
ピード最適化処理関数登録部とを有し、最適化処理部
が、スピード最適化処理関数登録部に登録された関数の
うち、スピード最適化を施す関数及びその関数からのみ
呼び出される関数にスピード最適化を施すことで、ソー
スプログラムファイル全体に対してオブジェクトサイズ
を削減する最適化処理の指示がなされた場合でも、実行
速度を向上させたい関数に対してはスピード最適化が施
される。したがって、割り込み処理等のように実行速度
の向上が要求される処理に関連する関数の実行速度を満
足させつつ、その条件下で最小のオブジェクトサイズと
なるオブジェクトモジュールファイルを得ることができ
る。
ド最適化を施す関数を抽出するスピード最適化関数認識
処理部と、スピード最適化を施す関数及びその関数から
呼び出される関数の組み合せを見つけ出す関数呼び出し
関係解析部と、中間コードの中からスピード最適化を施
す関数及びその関数から呼び出される関数を登録するス
ピード最適化処理関数登録部とを有し、最適化処理部
が、スピード最適化処理関数登録部に登録された関数の
うち、スピード最適化を施す関数及びその関数からのみ
呼び出される関数にスピード最適化を施すことで、ソー
スプログラムファイル全体に対してオブジェクトサイズ
を削減する最適化処理の指示がなされた場合でも、実行
速度を向上させたい関数に対してはスピード最適化が施
される。したがって、割り込み処理等のように実行速度
の向上が要求される処理に関連する関数の実行速度を満
足させつつ、その条件下で最小のオブジェクトサイズと
なるオブジェクトモジュールファイルを得ることができ
る。
【0087】また、スピード最適化を施す関数を指定す
ると、その関数から呼び出される関数も併せてスピード
最適化が施されるため、実行速度を向上させたい処理に
関連する関数を全てピックアップして別ファイルを構成
する等の処理が不要になり、設計作業の効率が向上す
る。
ると、その関数から呼び出される関数も併せてスピード
最適化が施されるため、実行速度を向上させたい処理に
関連する関数を全てピックアップして別ファイルを構成
する等の処理が不要になり、設計作業の効率が向上す
る。
【図1】本発明の言語処理装置の第1実施例の構成を示
すブロック図である。
すブロック図である。
【図2】本発明の言語処理装置の第1実施例の処理手順
を示すフローチャートである。
を示すフローチャートである。
【図3】C言語による割り込み関数の記述例を示す図で
ある。
ある。
【図4】関数func、関数main、及び関数plu
sの呼び出し関係を示す図である。
sの呼び出し関係を示す図である。
【図5】図9に示したソース・プログラム・ファイルを
本発明の言語処理装置の第1実施例で最適化した場合の
オブジェクト・モジュール・ファイルを示す図である。
本発明の言語処理装置の第1実施例で最適化した場合の
オブジェクト・モジュール・ファイルを示す図である。
【図6】本発明の言語処理装置の第2実施例の処理手順
を示すフローチャートである。
を示すフローチャートである。
【図7】スピード最適化の対象関数を指定する命令文の
例を示す図である。
例を示す図である。
【図8】従来の言語処理装置の構成を示すブロック図で
ある。
ある。
【図9】C言語で記述されたソース・プログラム・ファ
イルの例を示す図である。
イルの例を示す図である。
【図10】図9に示したソース・プログラム・ファイル
を従来の言語処理装置でサイズ最適化した場合のオブジ
ェクト・モジュール・ファイルを示す図である。
を従来の言語処理装置でサイズ最適化した場合のオブジ
ェクト・モジュール・ファイルを示す図である。
【図11】図9に示したソース・プログラム・ファイル
を従来の言語処理装置でスピード最適化した場合のオブ
ジェクト・モジュール・ファイルを示す図である。
を従来の言語処理装置でスピード最適化した場合のオブ
ジェクト・モジュール・ファイルを示す図である。
【図12】オブジェクト・モジュール・ファイルの各命
令文のコードサイズ及び実行に要するクロック数の例を
示す図である。
令文のコードサイズ及び実行に要するクロック数の例を
示す図である。
101-1〜101-n ソース・プログラム・ファイル 102 言語処理装置 104 構文解析部 105 スピード最適化関数認識処理部 106 関数呼び出し関係解析部 107 最適化指示部 108 スピード最適化処理関数登録部 109 第1の中間コード 110 最適化処理部 111 スピード最適化部 112 サイズ最適化部 113 第2の中間コード 114 コード生成部 115 オブジェクト出力部 116 オブジェクト・モジュール・ファイル 604〜613 命令文 801、802 最適化指定
Claims (6)
- 【請求項1】 入力されたソースプログラムファイルの
構文解析を行い、予め定められた様式の中間コードを生
成する構文解析部と、 前記中間コードの所定の関数に対して予め指定された最
適化処理を施す最適化処理部と、を有し、前記ソースプ
ログラムファイルを翻訳して所定のオブジェクトモジュ
ールファイルを出力する言語処理装置において、 前記中間コードの中から、予め指定された、前記オブジ
ェクトモジュールファイルの実行速度を向上させるため
の最適化処理であるスピード最適化を施す関数を抽出す
るスピード最適化関数認識処理部と、 前記スピード最適化を施す関数及び該関数から呼び出さ
れる関数の組み合せを見つけ出す関数呼び出し関係解析
部と、 前記中間コードの中から、前記スピード最適化を施す関
数及び該関数から呼び出される関数を登録するスピード
最適化処理関数登録部と、を有し、 前記最適化処理部は、 前記スピード最適化処理関数登録部に登録された関数の
うち、前記スピード最適化を施す関数及び該関数からの
み呼び出される関数に前記スピード最適化を施すことを
特徴とする言語処理装置。 - 【請求項2】 請求項1に記載の言語処理装置におい
て、 スピード最適化を施す関数は割り込み処理を行う関数で
あることを特徴とする言語処理装置。 - 【請求項3】 入力されたソースプログラムファイルの
構文解析を行い、予め定められた様式の中間コードを生
成する構文解析処理と、 前記中間コードの所定の関数に対して予め指定された最
適化処理を施す最適化処理と、を有し、前記ソースプロ
グラムファイルを翻訳して所定のオブジェクトモジュー
ルファイルを出力する言語処理方法において、 前記中間コードの中から、予め指定された、前記オブジ
ェクトモジュールファイルの実行速度を向上させるため
の最適化処理であるスピード最適化を施す関数を抽出す
るスピード最適化関数認識処理と、 前記スピード最適化を施す関数及び該関数から呼び出さ
れる関数の組み合せを見つけ出す関数呼び出し関係解析
処理と、 前記中間コードの中から、前記スピード最適化を施す関
数及び該関数から呼び出される関数を登録するスピード
最適化処理関数登録処理と、を有し、 前記最適化処理で、 前記スピード最適化処理関数登録処理で登録された関数
のうち、前記スピード最適化を施す関数及び該関数から
のみ呼び出される関数に前記スピード最適化を施すこと
を特徴とする言語処理方法。 - 【請求項4】 請求項3に記載の言語処理方法におい
て、 スピード最適化を施す関数は割り込み処理を行う関数で
あることを特徴とする言語処理方法。 - 【請求項5】 入力されたソースプログラムファイルの
構文解析を行い、予め定められた様式の中間コードを生
成する構文解析処理と、 前記中間コードの所定の関数に対して予め指定された最
適化処理を施す最適化処理と、を有し、前記ソースプロ
グラムファイルを翻訳して所定のオブジェクトモジュー
ルファイルを出力する言語処理装置に実行させるプログ
ラムが記録された記録媒体において、 前記中間コードの中から、予め指定された、前記オブジ
ェクトモジュールファイルの実行速度を向上させるため
の最適化処理であるスピード最適化を施す関数を抽出す
るスピード最適化関数認識処理と、 前記スピード最適化を施す関数及び該関数から呼び出さ
れる関数の組み合せを見つけ出す関数呼び出し関係解析
処理と、 前記中間コードの中から、前記スピード最適化を施す関
数及び該関数から呼び出される関数を登録するスピード
最適化処理関数登録処理と、を有し、 前記最適化処理で、 前記スピード最適化処理関数登録処理で登録された関数
のうち、前記スピード最適化を施す関数及び該関数から
のみ呼び出される関数に前記スピード最適化を施す処理
を、言語処理装置に実行させるプログラムを記録した記
録媒体。 - 【請求項6】 請求項5に記載の記録媒体において、 スピード最適化を施す関数が割り込み処理を行う関数で
ある記録媒体。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9149222A JPH10340193A (ja) | 1997-06-06 | 1997-06-06 | 言語処理装置、言語処理方法およびその記録媒体 |
| EP98110321A EP0883060A3 (en) | 1997-06-06 | 1998-06-05 | Compiler capable of carrying out both size optimization and speed optimization |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9149222A JPH10340193A (ja) | 1997-06-06 | 1997-06-06 | 言語処理装置、言語処理方法およびその記録媒体 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH10340193A true JPH10340193A (ja) | 1998-12-22 |
Family
ID=15470537
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9149222A Pending JPH10340193A (ja) | 1997-06-06 | 1997-06-06 | 言語処理装置、言語処理方法およびその記録媒体 |
Country Status (2)
| Country | Link |
|---|---|
| EP (1) | EP0883060A3 (ja) |
| JP (1) | JPH10340193A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2006114069A (ja) * | 2006-01-20 | 2006-04-27 | Matsushita Electric Ind Co Ltd | コンパイラ装置 |
| JP2007108940A (ja) * | 2005-10-12 | 2007-04-26 | Fujitsu Ltd | 拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体 |
| US7698696B2 (en) | 2002-07-03 | 2010-04-13 | Panasonic Corporation | Compiler apparatus with flexible optimization |
| JP2013140513A (ja) * | 2012-01-05 | 2013-07-18 | Fuji Electric Co Ltd | 組込み機器用ソフトウェア作成支援装置およびその方法、並びにプログラム |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9141613B2 (en) | 2012-10-30 | 2015-09-22 | Appsense Limited | Systems and methods for determining an address for a private function |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH05120025A (ja) * | 1991-10-29 | 1993-05-18 | Nec Software Ltd | ソースプログラムのインライン展開方法 |
| JPH08263300A (ja) * | 1995-03-20 | 1996-10-11 | Nec Corp | インライン展開方式 |
-
1997
- 1997-06-06 JP JP9149222A patent/JPH10340193A/ja active Pending
-
1998
- 1998-06-05 EP EP98110321A patent/EP0883060A3/en not_active Withdrawn
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH05120025A (ja) * | 1991-10-29 | 1993-05-18 | Nec Software Ltd | ソースプログラムのインライン展開方法 |
| JPH08263300A (ja) * | 1995-03-20 | 1996-10-11 | Nec Corp | インライン展開方式 |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7698696B2 (en) | 2002-07-03 | 2010-04-13 | Panasonic Corporation | Compiler apparatus with flexible optimization |
| US8418157B2 (en) | 2002-07-03 | 2013-04-09 | Panasonic Corporation | Compiler apparatus with flexible optimization |
| JP2007108940A (ja) * | 2005-10-12 | 2007-04-26 | Fujitsu Ltd | 拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体 |
| JP2006114069A (ja) * | 2006-01-20 | 2006-04-27 | Matsushita Electric Ind Co Ltd | コンパイラ装置 |
| JP2013140513A (ja) * | 2012-01-05 | 2013-07-18 | Fuji Electric Co Ltd | 組込み機器用ソフトウェア作成支援装置およびその方法、並びにプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0883060A2 (en) | 1998-12-09 |
| EP0883060A3 (en) | 2002-05-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3190773B2 (ja) | 言語処理プログラムのコンパイル処理方法 | |
| US6292939B1 (en) | Method of reducing unnecessary barrier instructions | |
| US5815719A (en) | Method and apparatus for easy insertion of assembler code for optimization | |
| US20040003381A1 (en) | Compiler program and compilation processing method | |
| US7823139B2 (en) | Method and system for translating programming languages | |
| US5812854A (en) | Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream | |
| US6983458B1 (en) | System for optimizing data type definition in program language processing, method and computer readable recording medium therefor | |
| JP2003196106A (ja) | プログラム変換方法、コンピュータ装置及びプログラム | |
| US7917899B2 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
| CN111930359B (zh) | 一种异构嵌入式系统上进行算法开发的系统及方法 | |
| JPH10340193A (ja) | 言語処理装置、言語処理方法およびその記録媒体 | |
| US7707561B2 (en) | Apparatus, system, and method for converting data | |
| US20050144605A1 (en) | Information processing system and code generation method | |
| JPH0869381A (ja) | コンパイル方式 | |
| EP0633525B1 (en) | Method for compilation of programming languages | |
| JP3218566B2 (ja) | インライン展開処理装置 | |
| JP2000056981A (ja) | プログラム変換装置 | |
| JP3323147B2 (ja) | コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 | |
| JP2003131888A (ja) | 手続き間命令スケジューリング方法 | |
| JPH0659933A (ja) | コード変換装置 | |
| JP2001125793A (ja) | コンパイラシステム及びコンパイル方法並びに記録媒体 | |
| JPH10326193A (ja) | インライン展開関数の最適化のためのコンパイル方法 | |
| JP2013080281A (ja) | 実行制御プログラム、コンパイラ、実行制御装置および実行制御方法 | |
| JPH11195011A (ja) | 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体 | |
| JPH06214800A (ja) | 目的プログラムの最適化処理システム |