JP2000305786A - コンパイル処理装置及びプログラム記録媒体 - Google Patents
コンパイル処理装置及びプログラム記録媒体Info
- Publication number
- JP2000305786A JP2000305786A JP11115678A JP11567899A JP2000305786A JP 2000305786 A JP2000305786 A JP 2000305786A JP 11115678 A JP11115678 A JP 11115678A JP 11567899 A JP11567899 A JP 11567899A JP 2000305786 A JP2000305786 A JP 2000305786A
- Authority
- JP
- Japan
- Prior art keywords
- parentheses
- equivalent
- instruction
- program
- generating
- 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
ムをコンパイルしてオブジェクトプログラムを生成する
コンパイル処理装置に関し、プログラマの望む形態で数
式演算を実行するオブジェクトプログラムを生成できる
ようにすることを目的とする。 【解決手段】入力するソースプログラムに、括弧又はそ
れに相当するものが記述されているのか否かを検出する
検出手段5と、検出手段5により括弧又はそれに相当す
るものが記述されていることが検出される場合に、その
記述箇所を示す情報を生成する生成手段6と、生成手段
6の生成する情報が検出される場合に、その検出箇所に
係る命令の演算評価順序に関する最適化を抑止しつつ、
数式演算に対する最適化を実行する最適化手段3とを備
えるように構成する。
Description
るソースプログラムをコンパイルしてオブジェクトプロ
グラムを生成するコンパイル処理装置と、その装置の実
現に用いられるプログラムが格納されるプログラム記録
媒体とに関し、特に、プログラマの望む形態で数式演算
を実行するオブジェクトプログラムを生成できるように
するコンパイル処理装置と、その装置の実現に用いられ
るプログラムが格納されるプログラム記録媒体とに関す
る。
場合には、プログラマの望む形態で数式演算を実行する
ことが好ましい。これから、これを実現するための技術
を構築していく必要がある。
弧によって演算評価順序を指定することができる。更
に、特定の高級プログラミング言語の中には、自然に決
定する演算評価順序(例えば、掛け算は足し算より優先
するとか、左側を優先するとかいったルール)について
は、数学的に等価である限り、その演算評価順序の変更
を許しているものの、括弧で指定された演算評価順序に
ついては、その演算評価順序の変更を許していないもの
もある。
どの別の言語に変換するコンパイラでは、自然に決定す
る演算評価順序と括弧で指定された演算評価順序とを区
別せずに最適化処理を施すことで、オブジェクトプログ
ラムを生成するように処理している。
ンパイラでは、プログラマの記述した括弧を無視して、
最も高い最適化効率が得られるようにと、ソースプログ
ラムに記述される数式演算の演算評価順序を変更してい
くように処理している。
ていると、プログラマの望む形態で数式演算が実行され
ないことが起こるという問題点がある。
括弧を挿入することがあるが、従来技術に従っている
と、このような場合にも、最適化の観点から括弧に関係
なく演算評価順序が変更されてしまうことで、桁落ちが
発生してしまうという問題点がある。
であって、数式演算を記述するソースプログラムをコン
パイルする構成を採るときにあって、プログラマの望む
形態で数式演算を実行するオブジェクトプログラムを生
成できるようにする新たなコンパイル処理装置の提供
と、その装置の実現に用いられるプログラムが格納され
る新たなプログラム記録媒体の提供とを目的とする。
を図示する。
理装置であって、数式演算を記述するソースプログラム
をコンパイルしてオブジェクトプログラムを生成するも
のである。
プログラムを構文解析する構文解析手段2と、構文解析
手段2の解析結果に従い演算評価順序を変更することで
数式演算の最適化を実行する最適化手段3と、最適化手
段3により最適化されたソースプログラムの中間テキス
トからオブジェクトプログラムを生成するオブジェクト
生成手段4とを備える。
明を実現するために、構文解析手段2に、ソースプログ
ラムに括弧又はそれに相当するものが記述されているの
か否かを検出する検出手段5と、検出手段5により括弧
又はそれに相当するものが記述されていることが検出さ
れる場合に、その記述箇所を示す情報を生成する生成手
段6とを備え、これを受けて、最適化手段3は、生成手
段6の生成した情報が検出される場合に、その検出箇所
に係る命令の演算評価順序に関する最適化を抑止しつ
つ、数式演算に対する最適化を実行する。
持つ機能は具体的にはプログラムで実現されるものであ
り、このプログラムは、フロッピィディスクなどに格納
されたり、サーバなどのディスクなどに格納され、それ
らからコンパイル処理装置1にインストールされてメモ
リ上で動作することで、本発明を実現することになる。
処理装置1では、構文解析手段2の検出手段5は、入力
するソースプログラムに、括弧又はそれに相当するもの
が記述されているのか否かを検出し、これを受けて、構
文解析手段2の生成手段6は、検出手段5により括弧又
はそれに相当するものが記述されていることが検出され
る場合に、その記述箇所を示す情報を生成する。
当するものの記述箇所を示す新たな命令を生成したり、
括弧又はそれに相当するものの記述箇所に、それが記述
されていないときに生成する命令と同一内容を持つ別の
名前を持つ命令を生成したり、括弧又はそれに相当する
ものの記述箇所の指す命令のオペランドに特定のコメン
ト情報を付加することなどにより、括弧又はそれに相当
するものの記述箇所を示す情報を生成する。
化手段3は、生成手段6の生成した情報が検出される場
合に、その検出箇所に係る命令の演算評価順序に関する
最適化を抑止しつつ、数式演算に対する最適化を実行す
る。
1では、数式演算を記述するソースプログラムをコンパ
イルする構成を採るときにあって、プログラマが括弧又
はそれに相当するものを記述しつつ数式演算をプログラ
ムするときには、その括弧又はそれに相当するものの指
す数式演算部分の演算評価順序に関する最適化を抑止す
る構成を採ることから、プログラマの望む形態で数式演
算を実行するオブジェクトプログラムを生成できるよう
になる。
を詳細に説明する。
って、プリコンパイラ100と本発明を具備するコンパ
イラ101とを備えて、ソースファイル20に格納され
る数式演算を記述するソースプログラムをコンパイルす
ることでオブジェクトプログラムを生成して、それをオ
ブジェクトファイル30に格納する処理を行うものであ
る。
ラ101は、フロッピィディスクや回線などを介してイ
ンストールされることになる。
1が構文解析処理で実行する処理フローの一実施例、図
4に、本発明を具備するコンパイラ101が最適化処理
で実行する処理フローの一実施例を図示する。次に、こ
れらの処理フローに従って、本発明について詳細に説明
する。
文解析処理に入ると、図3の処理フローに従って、数式
演算を記述するソースプログラムを構文解析すること
で、中間テキストレベルの命令列を生成する。
01は、構文解析処理に入ると、図3の処理フローに示
すように、先ず最初に、ステップ1で、最適化処理のレ
ベルを示す最適化オプションを入力する。この最適化オ
プションは、翻訳対象となるソースプログラム名を指定
して発行される翻訳コマンドに付加されているので、そ
れを抽出することで行う。
プションがソースプログラムに記述される括弧の無視を
指示するものであるのか否かを判断して、括弧を無視し
てはならないことの指示を判断するときには、ステップ
3に進んで、翻訳対象となるソースプログラムから数式
演算を読み込む。
式演算が括弧でくくられたものであるのか否かを判断し
て、括弧でくくられた数式演算であることを判断すると
きには、ステップ5に進んで、その数式演算に対する命
令と括弧を示す命令とを生成する。一方、括弧でくくら
れた数式演算でないことを判断するときには、ステップ
6に進んで、その数式演算に対する命令のみを生成す
る。
終了すると、ステップ7に進んで、全ソースプログラム
の読み込みを終了したのか否かを判断して、全ソースプ
ログラムの読み込みを終了していないことを判断すると
きには、ステップ3に戻り、全ソースプログラムの読み
込みを終了したことを判断するときには、処理を終了す
る。
ションがソースプログラムに記述される括弧の無視を指
示するものであることを判断するときには、ステップ8
に進んで、翻訳対象となるソースプログラムから数式演
算を読み込み、続くステップ9で、その読み込んだ数式
演算が括弧でくくられているものであっても、括弧を示
す命令を生成することなく、その数式演算に対する命令
を生成し、その読み込んだ数式演算が括弧でくくられて
いない場合には、そのままその数式演算に対する命令を
生成する。
ログラムの読み込みを終了したのか否かを判断して、全
ソースプログラムの読み込みを終了していないことを判
断するときには、ステップ8に戻り、全ソースプログラ
ムの読み込みを終了したことを判断するときには、処理
を終了する。
イラ101は、構文解析処理に入るときにあって、最適
化オプションがソースプログラムに記述される括弧を無
視してはならないことを指示するときに、 x=(a+2.0)+1.0 という数式演算が与えられると、図5(a)に示すよう
に、一時格納域から別の一時格納域への格納を指示する
命令内容を持つ“括弧を示す命令「psis」”を生成
しつつ、この数式演算に対応させて、 add t1,“a”,“2.0” psis t2,t1 add t3,t2,“1.0” という中間テキストレベルの命令列を生成するように処
理する。
ムに記述される括弧を無視してはならないことを指示す
るときに、 x=a+2.0+1.0 という括弧のない数式演算が与えられると、図5(b)
に示すように、この括弧を示す命令「psis」を生成
することなく、この数式演算に対応させて、 add t1,“a”,“2.0” add t2,t1,“1.0” という中間テキストレベルの命令列を生成するように処
理する。
01は、ソースプログラムの構文解析処理に入ると、括
弧でくくられていない数式演算のときには、図6に示す
ように、従来技術と同様のツリー構造に従って中間テキ
ストレベルの命令列を生成していくのに対して、括弧で
くくられた数式演算のときには、図7に示すように、従
来技術と異なるツリー構造に従って、“括弧を示す命令
「psis」”を生成しつつ中間テキストレベルの命令
列を生成していく構成を採るのである。
するコンパイラ101は、図4の処理フローに従って、
生成した中間テキストレベルの命令列の演算評価順序を
変更していくことで、数式演算の最適化処理を実行す
る。
01は、最適化処理に入ると、図4の処理フローに示す
ように、先ず最初に、ステップ1で、最適化オプション
がソースプログラムに記述される括弧の無視を指示する
ものであるのか否かを判断して、括弧を無視してはなら
ないことの指示を判断するときには、ステップ2に進ん
で、構文解析処理で生成した中間テキストレベルの命令
を読み込む。
令が括弧を示す命令であるのか否かを判断して、括弧を
示す命令であることを判断するときには、ステップ4に
進んで、その括弧を示す命令が規定する演算評価順序を
変更することになる最適化を行わず、最適化を行う。一
方、括弧を示す命令でないことを判断するときには、ス
テップ5に進んで、演算評価順序を変更する最適化を行
う。
終了すると、ステップ6に進んで、全命令の処理を終了
したのか否かを判断して、全命令の処理を終了していな
いことを判断するときには、ステップ2に戻り、全命令
の処理を終了したことを判断するときには、処理を終了
する。
ソースプログラムに記述される括弧の無視を指示するも
のであることを判断するときには、ステップ7に進ん
で、構文解析処理で生成した中間テキストレベルの命令
を読み込み、続くステップ8で、その読み込んだ命令が
括弧を示す命令であってもなくても、演算評価順序を変
更する最適化を行う。
を終了したのか否かを判断して、全命令の処理を終了し
ていないことを判断するときには、ステップ7に戻り、
全命令の処理を終了したことを判断するときには、処理
を終了する。
イラ101は、最適化処理に入るときにあって、最適化
オプションがソースプログラムに記述される括弧を無視
してはならないことを指示するときに、構文解析処理で
得た中間テキストレベルの命令例が、 add t1,“a”,“2.0” psis t2,t1 add t3,t2,“1.0” であるときには、図8に示すように、括弧を示す命令
「psis」が規定する演算評価順序を最適化の対象と
することなく、最適化を行うように処理する。すなわ
ち、括弧の中の演算評価順序を変えずに、最適化を行う
ように処理するのである。
ムに記述される括弧を無視してはならないことを指示す
るときに、構文解析処理で得た中間テキストレベルの命
令例が、 add t1,“a”,“2.0” add t2,t1,“1.0” であるときには、整数をまとめるべく、図9に示すよう
に、演算評価順序を変更させる最適化を行うことで、こ
の命令列を、 add t2,“3.0”,“a” という形に変形していくように処理する。
イラ101は、数式演算を記述するソースプログラムを
コンパイルするときに、ソースプログラムに記述される
括弧の指定する数式演算部分の演算評価順序に関する最
適化を抑止するように処理するのである。これにより、
プログラマの望む形態で数式演算を実行するオブジェク
トプログラムを生成できるようになる。
3の処理フローに従う場合には、図10(a)に示すよ
うに、括弧を示す命令を生成することで、括弧の指定す
る数式演算部分の演算評価順序に関する最適化を抑止す
るように処理したが、このような命令を生成しない構成
を採ることも可能である。
の記述箇所に、それが記述されていないときに生成する
命令(この例ではadd命令)と同一内容を持つ別の名
前を持つ命令(この例ではpadd命令)を生成するこ
とで、括弧の指定する数式演算部分の演算評価順序に関
する最適化を抑止するように処理したり、図10(c)
に示すように、括弧の記述箇所の指す命令のオペランド
に対応付けて、括弧が記述されている旨を示す特別のコ
メント(この例ではpointer)を付加すること
で、括弧の指定する数式演算部分の演算評価順序に関す
る最適化を抑止するように処理する構成を採ることも可
能である。
は、ソースプログラムに記述される括弧のみに適用され
るものではなく、演算評価順序を規定する性質を持つ全
てのもの(括弧に相当するもの)に対して適用可能であ
る。
演算評価順序を規定する括弧に相当する性質を有するこ
とから、本発明を用いることで、ボラタイルとして宣言
された部分までは、その演算評価順序を変更しないよう
に処理することができるようになる。
数式演算を記述するソースプログラムをコンパイルする
構成を採るときにあって、プログラマが括弧又はそれに
相当するものを記述しつつ数式演算をプログラムすると
きには、その括弧又はそれに相当するものの指す数式演
算部分の演算評価順序に関する最適化を抑止する構成を
採ることから、プログラマの望む形態で数式演算を実行
するオブジェクトプログラムを生成できるようになる。
Claims (6)
- 【請求項1】 数式演算を記述するソースプログラムを
コンパイルしてオブジェクトプログラムを生成するコン
パイル処理装置において、 入力するソースプログラムに、括弧又はそれに相当する
ものが記述されているのか否かを検出する検出手段と、 上記検出手段により括弧又はそれに相当するものが記述
されていることが検出される場合に、その記述箇所を示
す情報を生成する生成手段とを備えることを、特徴とす
るコンパイル処理装置。 - 【請求項2】 請求項1記載のコンパイル処理装置にお
いて、 生成手段は、括弧又はそれに相当するものの記述箇所を
示す新たな命令を生成することで、括弧又はそれに相当
するものの記述箇所を示す情報を生成することを、 特徴とするコンパイル処理装置。 - 【請求項3】 請求項1記載のコンパイル処理装置にお
いて、 生成手段は、括弧又はそれに相当するものの記述箇所
に、それが記述されていないときに生成する命令と同一
内容を持つ別の名前を持つ命令を生成することで、括弧
又はそれに相当するものの記述箇所を示す情報を生成す
ることを、 特徴とするコンパイル処理装置。 - 【請求項4】 請求項1記載のコンパイル処理装置にお
いて、 生成手段は、括弧又はそれに相当するものの記述箇所の
指す命令のオペランドに特定のコメント情報を付加する
ことで、括弧又はそれに相当するものの記述箇所を示す
情報を生成することを、 特徴とするコンパイル処理装置。 - 【請求項5】 請求項1〜4のいずれかに記載されるコ
ンパイル処理装置において、 生成手段の生成する情報が検出される場合に、その検出
箇所に係る命令の演算評価順序に関する最適化を抑止し
つつ、数式演算に対する最適化を実行する最適化手段を
備えることを、 特徴とするコンパイル処理装置。 - 【請求項6】 数式演算を記述するソースプログラムを
コンパイルしてオブジェクトプログラムを生成するコン
パイル処理装置の実現に用いられるプログラムが格納さ
れるプログラム記録媒体であって、 入力するソースプログラムに、括弧又はそれに相当する
ものが記述されているのか否かを検出する検出処理と、 上記検出処理により括弧又はそれに相当するものが記述
されていることが検出される場合に、その記述箇所を示
す情報を生成する生成処理とをコンピュータに実行させ
るプログラムが格納されることを、 特徴とするプログラム記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11567899A JP4712925B2 (ja) | 1999-04-23 | 1999-04-23 | コンパイル処理装置及びコンピュータ読み取り可能なプログラム記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11567899A JP4712925B2 (ja) | 1999-04-23 | 1999-04-23 | コンパイル処理装置及びコンピュータ読み取り可能なプログラム記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000305786A true JP2000305786A (ja) | 2000-11-02 |
JP4712925B2 JP4712925B2 (ja) | 2011-06-29 |
Family
ID=14668583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11567899A Expired - Fee Related JP4712925B2 (ja) | 1999-04-23 | 1999-04-23 | コンパイル処理装置及びコンピュータ読み取り可能なプログラム記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4712925B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101118819B1 (ko) * | 2010-02-08 | 2012-03-20 | 김준홍 | 심볼과 수식을 지원하는 컴파일러를 기록한 기록 매체 |
-
1999
- 1999-04-23 JP JP11567899A patent/JP4712925B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101118819B1 (ko) * | 2010-02-08 | 2012-03-20 | 김준홍 | 심볼과 수식을 지원하는 컴파일러를 기록한 기록 매체 |
Also Published As
Publication number | Publication date |
---|---|
JP4712925B2 (ja) | 2011-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4057938B2 (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 | |
JP2002024029A (ja) | コンパイラ、コンパイル方法及びコンパイルプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JPH0762825B2 (ja) | コード生成方法及び装置 | |
JP2015201119A (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
JP4026940B2 (ja) | プログラム変換装置 | |
US20090249317A1 (en) | Xslt-specific jit compiler | |
JP2006107338A (ja) | プログラム処理装置 | |
US11068463B2 (en) | System and method for managing log data | |
JP2008276735A (ja) | プログラムコード変換装置及びプログラムコード変換方法 | |
CN102831004B (zh) | 一种基于C*core处理器的优化编译方法及编译器 | |
JP2000305786A (ja) | コンパイル処理装置及びプログラム記録媒体 | |
JP2005190302A (ja) | 情報処理システム及びコード生成方法 | |
JPH10320212A (ja) | キャッシュ向け最適化方法 | |
US20040064301A1 (en) | Software development system, simulator, and recording medium | |
JPH0756745A (ja) | 言語処理プログラムのコンパイラ処理方式 | |
US20040045018A1 (en) | Using address space bridge in postoptimizer to route indirect calls at runtime | |
JP3461185B2 (ja) | ロードモジュールへのソースコード行番号登録方法および装置 | |
JP2001265605A (ja) | コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム | |
von Ronne et al. | Interpreting programs in static single assignment form | |
JP2003067195A (ja) | 最適化コンパイル方法及び最適化コンパイル装置 | |
JP4006887B2 (ja) | コンパイラ、プロセッサおよび記録媒体 | |
Masuda et al. | Software and Hardware Design Issues for Low Complexity High Performance Processor Architecture | |
CN117992183A (zh) | 一种事件响应方法、系统、电子设备及存储介质 | |
JP3018783B2 (ja) | コンパイル方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060316 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081006 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090421 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090622 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20090622 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20090622 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100330 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110324 |
|
LAPS | Cancellation because of no payment of annual fees |