JP3196675B2 - 言語処理方式 - Google Patents
言語処理方式Info
- Publication number
- JP3196675B2 JP3196675B2 JP34924796A JP34924796A JP3196675B2 JP 3196675 B2 JP3196675 B2 JP 3196675B2 JP 34924796 A JP34924796 A JP 34924796A JP 34924796 A JP34924796 A JP 34924796A JP 3196675 B2 JP3196675 B2 JP 3196675B2
- Authority
- JP
- Japan
- Prior art keywords
- intermediate data
- processing
- debug
- source program
- language
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は言語処理方式に関す
る。
る。
【0002】
【従来の技術】従来の言語処理方式では、図8に示すよ
うに言語処理プログラム801中の構文解析部806で
は、ソースファイル802を入力し解析/処理を行な
い、中間言語で表現された中間データ803を生成す
る。次に、最適化部807が前記中間データ803を入
力し解析/処理を行ない、中間データ804を生成す
る。この最適化処理方式は公知例として特開平5−15
8706号公報(中間言語の最適化処理方式)に示され
ている。最後にコード生成部808が前記中間データ8
04を入力し解析/処理を行ない、オブジェクトファイ
ル805を生成する。その後、複数のオブジェクトファ
イルとライブラリをリンクし実行形式ファイルを作成
し、前記ソースファイル802とともにデバッガへ入力
する。
うに言語処理プログラム801中の構文解析部806で
は、ソースファイル802を入力し解析/処理を行な
い、中間言語で表現された中間データ803を生成す
る。次に、最適化部807が前記中間データ803を入
力し解析/処理を行ない、中間データ804を生成す
る。この最適化処理方式は公知例として特開平5−15
8706号公報(中間言語の最適化処理方式)に示され
ている。最後にコード生成部808が前記中間データ8
04を入力し解析/処理を行ない、オブジェクトファイ
ル805を生成する。その後、複数のオブジェクトファ
イルとライブラリをリンクし実行形式ファイルを作成
し、前記ソースファイル802とともにデバッガへ入力
する。
【0003】デバッガではソースプログラム中の1行単
位でプログラムの実行を行なうことができるが、それは
オブジェクトファイル中のデバッグ情報によるものであ
る。デバッグ情報の1つに行番号があり、1つの行番号
に対し1ケ所のアドレスが対応している。ここで図によ
り、最適化されたコードのデバッグについて詳細に説明
する。図9はソースプログラムで、説明の都合上行番号
を付けている。図10は最適化イメージである。最適化
にはさまざまな種類があるが、ここではループの展開に
着目して説明を行なう。実行性能を向上させるために、
条件判断および分岐を1/4に減らすという最適化によ
り、代入文の連続に置挽を行なう。
位でプログラムの実行を行なうことができるが、それは
オブジェクトファイル中のデバッグ情報によるものであ
る。デバッグ情報の1つに行番号があり、1つの行番号
に対し1ケ所のアドレスが対応している。ここで図によ
り、最適化されたコードのデバッグについて詳細に説明
する。図9はソースプログラムで、説明の都合上行番号
を付けている。図10は最適化イメージである。最適化
にはさまざまな種類があるが、ここではループの展開に
着目して説明を行なう。実行性能を向上させるために、
条件判断および分岐を1/4に減らすという最適化によ
り、代入文の連続に置挽を行なう。
【0004】図11は最適化された中間データとデバッ
グ情報である。各中間言語の意味を表中に、またソース
プログラムの一部を中間言語の右側に示してある。ソー
スデバッグ時に図9の8行目にブレークポイントを設定
して実行した場合、デバッグ情報の行番号8に対応した
位置で停止するはずであるが、図10に示したように代
入文は展開され、図11に示したように行番号は複数行
に展開された代入文の最後にしか存在しない。このた
め、1回の実行で4回の代入文が終了してしまうことに
なる。
グ情報である。各中間言語の意味を表中に、またソース
プログラムの一部を中間言語の右側に示してある。ソー
スデバッグ時に図9の8行目にブレークポイントを設定
して実行した場合、デバッグ情報の行番号8に対応した
位置で停止するはずであるが、図10に示したように代
入文は展開され、図11に示したように行番号は複数行
に展開された代入文の最後にしか存在しない。このた
め、1回の実行で4回の代入文が終了してしまうことに
なる。
【0005】
【発明が解決しようとする課題】上述した従来の言語処
理方法で生成されたオブジェクトを用いたソースレベル
のデバッグでは、高度な最適化を指定した場合、コード
の削除や移動が発生し、デバッグ時にブレークポイント
が設定出来なかったり、デバッグ時の動作がソースプロ
グラムに正しく対応しないなどして理解が困難になるた
め、アセンブラソースプログラムを参照しなければなら
ないという問題点があった。これはソースプログラムに
ほぼ正確に対応したデバッグ情報を生成するには、一部
の最適化を行なうことが不可能なためである。
理方法で生成されたオブジェクトを用いたソースレベル
のデバッグでは、高度な最適化を指定した場合、コード
の削除や移動が発生し、デバッグ時にブレークポイント
が設定出来なかったり、デバッグ時の動作がソースプロ
グラムに正しく対応しないなどして理解が困難になるた
め、アセンブラソースプログラムを参照しなければなら
ないという問題点があった。これはソースプログラムに
ほぼ正確に対応したデバッグ情報を生成するには、一部
の最適化を行なうことが不可能なためである。
【0006】なお、ソースレベルのデバッグに支障が生
じないようにオブジェクト作成時に最適化のレベルを下
げたり、最適化指定を無効にすることによりソースプロ
グラムと対応したオブジェクトおよびデバッグ情報を生
成するという手段もある。ところが、最適化レベルが下
げられたり無効になるなど、本来指定したい最適化が行
なわれない場合は、デバッグが正常に完了しても、オブ
ジェクトの実行スピードが満足できないものであった
り、コードサイズが大きくなってしまうという問題が発
生する。そのため、その後デバッグ情報指定をやめ最適
化指定をして再度オブジェクトを作成するが、この実行
形式が正常に動作することの保証はできない。これはオ
ブジェクトの実行スピードの違いによる動作やタイミン
グの違いや、言語処理プログラムの不具合の可能性が否
定できないためである。
じないようにオブジェクト作成時に最適化のレベルを下
げたり、最適化指定を無効にすることによりソースプロ
グラムと対応したオブジェクトおよびデバッグ情報を生
成するという手段もある。ところが、最適化レベルが下
げられたり無効になるなど、本来指定したい最適化が行
なわれない場合は、デバッグが正常に完了しても、オブ
ジェクトの実行スピードが満足できないものであった
り、コードサイズが大きくなってしまうという問題が発
生する。そのため、その後デバッグ情報指定をやめ最適
化指定をして再度オブジェクトを作成するが、この実行
形式が正常に動作することの保証はできない。これはオ
ブジェクトの実行スピードの違いによる動作やタイミン
グの違いや、言語処理プログラムの不具合の可能性が否
定できないためである。
【0007】本発明の目的は、最適化イメージに対応し
たデバッグ用ソースファイルおよびそれに対するデバッ
グ情報を生成することにより、容易にソースデバッグを
行うことを可能とした言語処理方式を提供することにあ
る。
たデバッグ用ソースファイルおよびそれに対するデバッ
グ情報を生成することにより、容易にソースデバッグを
行うことを可能とした言語処理方式を提供することにあ
る。
【0008】
【課題を解決するための手段】本発明の言語処理方式
は、ソースプログラム情報を入力し解析する手段と、解
析情報を最適化された中間言語とする手段と、中間言語
からオブジェクト情報を生成する手段と、最適化後の中
間言語からデバッグ用ソースファイルおよびデバッグ用
ソースプログラム情報を含む中間言語を生成する手段と
を備えている。
は、ソースプログラム情報を入力し解析する手段と、解
析情報を最適化された中間言語とする手段と、中間言語
からオブジェクト情報を生成する手段と、最適化後の中
間言語からデバッグ用ソースファイルおよびデバッグ用
ソースプログラム情報を含む中間言語を生成する手段と
を備えている。
【0009】
【発明の実施の形態】次に、本発明の実施形態を図面を
参照して説明する。図1は、本発明の第1の実施形態の
システム構成図である。言語処理プログラム101は、
構文解析部106、最適化部107、コード生成部10
8、デバッグ用ソースプログラム情報生成部109から
構成されている。前記言語処理プログラム101中の構
文解析部106では、ソースファイル102を入力し、
解析/処理を行ない中間データ103を生成する。次に
最適化部107が、入力した中間データの解析/処理を
行ない、中間データ104を生成する。さらにデバッグ
用ソースプログラム情報生成部109が、入力した中間
データの解析/処理を行ない、デバッグ用ソースファイ
ル110および中間データ111を生成する。最後にコ
ード生成部108が、前記中間データ111を入力し、
解析/処理を行ないオブジェクトファイル105を生成
する。
参照して説明する。図1は、本発明の第1の実施形態の
システム構成図である。言語処理プログラム101は、
構文解析部106、最適化部107、コード生成部10
8、デバッグ用ソースプログラム情報生成部109から
構成されている。前記言語処理プログラム101中の構
文解析部106では、ソースファイル102を入力し、
解析/処理を行ない中間データ103を生成する。次に
最適化部107が、入力した中間データの解析/処理を
行ない、中間データ104を生成する。さらにデバッグ
用ソースプログラム情報生成部109が、入力した中間
データの解析/処理を行ない、デバッグ用ソースファイ
ル110および中間データ111を生成する。最後にコ
ード生成部108が、前記中間データ111を入力し、
解析/処理を行ないオブジェクトファイル105を生成
する。
【0010】図2は、図1に示した言語処理プログラム
のうちのデバッグ用ソースプログラム情報生成部109
におけるフローチャートである。中間データ入力/終了
検出処理201は、中間データ104を1ブロック分読
み込み、中間データの終りか否かの判断を行なう。デバ
ッグ用ソースプログラム情報生成処理202は前記中間
データ入力/終了検出処理201で読み込んだ中間デー
タを解析しソースプログラム情報をデバッグ用ソースフ
ァイル110へ出力するとともに、デバッグ情報を中間
データに追加する。中間データ出力処理203は、前記
デバッグ用ソースプログラム情報生成処理202で変更
した中間データを出力する。
のうちのデバッグ用ソースプログラム情報生成部109
におけるフローチャートである。中間データ入力/終了
検出処理201は、中間データ104を1ブロック分読
み込み、中間データの終りか否かの判断を行なう。デバ
ッグ用ソースプログラム情報生成処理202は前記中間
データ入力/終了検出処理201で読み込んだ中間デー
タを解析しソースプログラム情報をデバッグ用ソースフ
ァイル110へ出力するとともに、デバッグ情報を中間
データに追加する。中間データ出力処理203は、前記
デバッグ用ソースプログラム情報生成処理202で変更
した中間データを出力する。
【0011】次に、図11に示した最適化された中間デ
ータとデバッグ情報の処理を図2のフローチャートを参
照して説明する。ただし、ここでは説明の都合上4行目
のラベルLl以降の入力から説明を行なう。図2に示し
た中間データ入力/終了検出処理201は、中間データ
104のうちラベルLl以降、“;”までの1ブロック
分を読み込む。この時点では中間データの終りではない
ので処理を継続する。次に、前記したデバッグ用ソース
プログラム情報生成処理202では、前記中間データ入
力/終了検出処理201で読み込んだ中間データを解析
し、それに対応するソースプログラム情報をデバッグ用
ソースファイル110へ出力する。これが図3に示すデ
バッグ用ソースプログラムの8行目に相当する。さらに
デバッグ情報としてファイル名および行番号を中間デー
タに追加する。これが図4に示すデバッグ用ソースプロ
グラム情報に対応した中間データとデバッグ情報のうち
のFILE sample o.cとLINE8であ
る。さらに、中間データ出力処理203では、前記デバ
ッグ用ソースプログラム情報生成処理202で変更した
中間データを出力する。
ータとデバッグ情報の処理を図2のフローチャートを参
照して説明する。ただし、ここでは説明の都合上4行目
のラベルLl以降の入力から説明を行なう。図2に示し
た中間データ入力/終了検出処理201は、中間データ
104のうちラベルLl以降、“;”までの1ブロック
分を読み込む。この時点では中間データの終りではない
ので処理を継続する。次に、前記したデバッグ用ソース
プログラム情報生成処理202では、前記中間データ入
力/終了検出処理201で読み込んだ中間データを解析
し、それに対応するソースプログラム情報をデバッグ用
ソースファイル110へ出力する。これが図3に示すデ
バッグ用ソースプログラムの8行目に相当する。さらに
デバッグ情報としてファイル名および行番号を中間デー
タに追加する。これが図4に示すデバッグ用ソースプロ
グラム情報に対応した中間データとデバッグ情報のうち
のFILE sample o.cとLINE8であ
る。さらに、中間データ出力処理203では、前記デバ
ッグ用ソースプログラム情報生成処理202で変更した
中間データを出力する。
【0012】続いて、中間データ入力/終了検出処理2
01に戻り、中間データ104のうち次の、“;”まで
の1ブロック分を読み込む。この時点でも中間データの
終りではないので処理を継続する。その後、同様にデバ
ッグ用ソースプログラム情報生成処理202では前記中
間データ入力/終了検出処理201で読み込んだ中間デ
ータを解析し、それに対応するソースプログラム情報を
デバッグ用ソースファイル110へ出力する。これが図
3の9行目に相当する。さらにデバッグ情報としてファ
イル名および行番号を中間データに追加する。これが図
4のデバッグ用ソースプログラム情報に対応した中間デ
ータとデバッグ情報のうちのFILEsampleとL
INE9である。中間データ出力処理203では、前記
デバッグ用ソースプログラム情報生成処理202で変更
した中間データを出力する。さらに、中間データ入力/
終了検出処理201に戻り、同様に処理を行ない、中間
データ104から読み込む中間データがなくなった時点
で処理を終了する。
01に戻り、中間データ104のうち次の、“;”まで
の1ブロック分を読み込む。この時点でも中間データの
終りではないので処理を継続する。その後、同様にデバ
ッグ用ソースプログラム情報生成処理202では前記中
間データ入力/終了検出処理201で読み込んだ中間デ
ータを解析し、それに対応するソースプログラム情報を
デバッグ用ソースファイル110へ出力する。これが図
3の9行目に相当する。さらにデバッグ情報としてファ
イル名および行番号を中間データに追加する。これが図
4のデバッグ用ソースプログラム情報に対応した中間デ
ータとデバッグ情報のうちのFILEsampleとL
INE9である。中間データ出力処理203では、前記
デバッグ用ソースプログラム情報生成処理202で変更
した中間データを出力する。さらに、中間データ入力/
終了検出処理201に戻り、同様に処理を行ない、中間
データ104から読み込む中間データがなくなった時点
で処理を終了する。
【0013】次に、生成されたデバッグ用ソースファイ
ル110を用いたデバッグ方法について説明する。図5
はデバッグ画面で、図9で示したソースプログラムsa
mple.cと図3で示したデバッグ用ソースプログラ
ムsample_o .c を表示している。オリジナルの
ソースプログラムsample.cによるデバッグ中に
プログラムの動作が最適化によりソースプログラムと対
応しなくなった場合などに、デバッガのソースプログラ
ムの読み込みやソースパスの設定機能により、samp
le.cに加えてsample o.cを表示させる。
sample_o.cをみればsample.cのfo
rループが最適化によってどのように展開されたのかが
わかる。forループの形状は変わっているものの、s
ample.cの8行目がsample o.cの8行
目から11行目に対応している。つまり、通常最適化さ
れたオブジェクトではソースプログラムsample.
cを用いての確認ができなかった展開されたforルー
プ中の動作も、本実施形態により、例えばsample
_o.cの10行目にブレークポイントを設定すること
により、10行目の実行前にプログラムが停止する。そ
の後1行実行を行なうことで10行目の実行内容の確認
か可能となる。もちろん11行目にブレークポイントを
設定しても、同様に10行目の実行結果の確認が可能で
ある。
ル110を用いたデバッグ方法について説明する。図5
はデバッグ画面で、図9で示したソースプログラムsa
mple.cと図3で示したデバッグ用ソースプログラ
ムsample_o .c を表示している。オリジナルの
ソースプログラムsample.cによるデバッグ中に
プログラムの動作が最適化によりソースプログラムと対
応しなくなった場合などに、デバッガのソースプログラ
ムの読み込みやソースパスの設定機能により、samp
le.cに加えてsample o.cを表示させる。
sample_o.cをみればsample.cのfo
rループが最適化によってどのように展開されたのかが
わかる。forループの形状は変わっているものの、s
ample.cの8行目がsample o.cの8行
目から11行目に対応している。つまり、通常最適化さ
れたオブジェクトではソースプログラムsample.
cを用いての確認ができなかった展開されたforルー
プ中の動作も、本実施形態により、例えばsample
_o.cの10行目にブレークポイントを設定すること
により、10行目の実行前にプログラムが停止する。そ
の後1行実行を行なうことで10行目の実行内容の確認
か可能となる。もちろん11行目にブレークポイントを
設定しても、同様に10行目の実行結果の確認が可能で
ある。
【0014】次に、本発明の第2の実施形態を説明す
る。前記した第1の実施形態では、最適化部の生成した
中間データを入力したが、データが大きくなりメモリ上
で処理できない場合はファイルからの入出力となる。そ
のため、デバッグ用ソースプログラム情報生成部が他の
モジュールから独立しているため、開発、メンテナンス
が容易ではあるが、実行時間の増加の可能性がある。こ
の第2の実施形態では、ある特定の単位で最適化部にお
いてデバッグ用ソースプログラム情報を順次生成するよ
うにするものである。すなわち、図6は、本発明の第2
の実施形態のシステム構成図である。言語処理プログラ
ム601は、構文解析部606、コード生成部608、
デバッグ用ソースプログラム情報生成機能付最適化部6
09から構成されている。
る。前記した第1の実施形態では、最適化部の生成した
中間データを入力したが、データが大きくなりメモリ上
で処理できない場合はファイルからの入出力となる。そ
のため、デバッグ用ソースプログラム情報生成部が他の
モジュールから独立しているため、開発、メンテナンス
が容易ではあるが、実行時間の増加の可能性がある。こ
の第2の実施形態では、ある特定の単位で最適化部にお
いてデバッグ用ソースプログラム情報を順次生成するよ
うにするものである。すなわち、図6は、本発明の第2
の実施形態のシステム構成図である。言語処理プログラ
ム601は、構文解析部606、コード生成部608、
デバッグ用ソースプログラム情報生成機能付最適化部6
09から構成されている。
【0015】前記言語処理プログラム601中の構文解
析部606では、ソースファイル602を入力し、解析
/処理を行ない中間データ603を生成する。次にデバ
ッグ用ソースプログラム情報生成機能付最適化部609
が、入力した中間データの解析/処理を行ない、最適化
を行なう。この時生成しようとしている中間データの1
ブロック単位に対応して、ソースプログラム情報をデバ
ッグ用ソースファイル610へ出力するとともに、デバ
ッグ情報を追加した中間データ611を生成する。最後
にコード生成部608が、前記中間データ611を入力
し、解析/処理を行ないオブジェクトファイル605を
生成する。
析部606では、ソースファイル602を入力し、解析
/処理を行ない中間データ603を生成する。次にデバ
ッグ用ソースプログラム情報生成機能付最適化部609
が、入力した中間データの解析/処理を行ない、最適化
を行なう。この時生成しようとしている中間データの1
ブロック単位に対応して、ソースプログラム情報をデバ
ッグ用ソースファイル610へ出力するとともに、デバ
ッグ情報を追加した中間データ611を生成する。最後
にコード生成部608が、前記中間データ611を入力
し、解析/処理を行ないオブジェクトファイル605を
生成する。
【0016】図7は、前記第2の実施形態における言語
処理プログラムのうちのデバッグ用ソースプログラム情
報生成機能付最適化部609におけるフローチャートで
ある。中間データ入力/終了検出処理701は、中間デ
ータ603を特定の単位分読み込み、中間データの終り
か否かの判断を行なう。デバッグ用ソースプログラム情
報生成機能付最適化処理702は前記中間データ入力/
終了検出処理701が読み込んだ中間データを解析し最
適化を行なう。この時生成しようとしている中間データ
の1ブロック単位に対応して、ソースプログラム情報を
デバッグ用ソースファイル610へ出力するとともに、
中間データにデバッグ情報を追加する。中間データ出力
処理703は、前記デバッグ用ソースプログラム情報生
成横能付最適化処理702で変更した中間データを出力
する。
処理プログラムのうちのデバッグ用ソースプログラム情
報生成機能付最適化部609におけるフローチャートで
ある。中間データ入力/終了検出処理701は、中間デ
ータ603を特定の単位分読み込み、中間データの終り
か否かの判断を行なう。デバッグ用ソースプログラム情
報生成機能付最適化処理702は前記中間データ入力/
終了検出処理701が読み込んだ中間データを解析し最
適化を行なう。この時生成しようとしている中間データ
の1ブロック単位に対応して、ソースプログラム情報を
デバッグ用ソースファイル610へ出力するとともに、
中間データにデバッグ情報を追加する。中間データ出力
処理703は、前記デバッグ用ソースプログラム情報生
成横能付最適化処理702で変更した中間データを出力
する。
【0017】次に、図7のフローチャートに従い、図9
に示したソースプログラムを処理する説明を行う。ただ
し、ここでは説明の都合上6行目の以降の入力から説明
を行なう。実際には構文解析部がソースプログラムに対
して生成した中間データを処理するわけであるが、ここ
では最適化処理に着目して説明を行なう。中間データ入
力/終了検出処理701では、6行目の以降のソースプ
ログラムに対する中間データを読み込むが、最適化処理
で規定している対象ブロックである9行目までの中間デ
ータを読み込む。この時点では中間データの終りではな
いので処理を姫続する。
に示したソースプログラムを処理する説明を行う。ただ
し、ここでは説明の都合上6行目の以降の入力から説明
を行なう。実際には構文解析部がソースプログラムに対
して生成した中間データを処理するわけであるが、ここ
では最適化処理に着目して説明を行なう。中間データ入
力/終了検出処理701では、6行目の以降のソースプ
ログラムに対する中間データを読み込むが、最適化処理
で規定している対象ブロックである9行目までの中間デ
ータを読み込む。この時点では中間データの終りではな
いので処理を姫続する。
【0018】続いて、デバッグ用ソースプログラム情報
生成機能付最適化処理702では前記中間データ入力/
終了検出処理701が読み込んだ中間データを解析し、
図10の最適化イメージのようにループの展開最適化を
行なう。展開する1行に対応するソースプログラム情報
を順次、デバッグ用ソースファイル610へ出力する。
これが図3の7行目から13行目に相当する。さらにデ
バッグ情報として、展開する1行に対応するファイル名
および行番号を中間データに追加する。これが図5のデ
バッグ用ソースプログラム情報に対応した中間データと
デバッグ情報のうちのFILE sample_o.c
とLINE8である。また、中間データ出力処理703
では、前記デバッグ用ソースプログラム情報生成横能付
最適化処理702で変更した中間データを出力する。次
に、中間データ入力/終了検出処理701に戻り、同様
に処理を行ない、中間データ603から読み込む中間デ
ータがなくなった時点で処理を終了する。生成されたデ
バッグ用ソースファイル610を用いたデバッグ方法に
ついては第1の実施形態と同様なので説明を省略する。
生成機能付最適化処理702では前記中間データ入力/
終了検出処理701が読み込んだ中間データを解析し、
図10の最適化イメージのようにループの展開最適化を
行なう。展開する1行に対応するソースプログラム情報
を順次、デバッグ用ソースファイル610へ出力する。
これが図3の7行目から13行目に相当する。さらにデ
バッグ情報として、展開する1行に対応するファイル名
および行番号を中間データに追加する。これが図5のデ
バッグ用ソースプログラム情報に対応した中間データと
デバッグ情報のうちのFILE sample_o.c
とLINE8である。また、中間データ出力処理703
では、前記デバッグ用ソースプログラム情報生成横能付
最適化処理702で変更した中間データを出力する。次
に、中間データ入力/終了検出処理701に戻り、同様
に処理を行ない、中間データ603から読み込む中間デ
ータがなくなった時点で処理を終了する。生成されたデ
バッグ用ソースファイル610を用いたデバッグ方法に
ついては第1の実施形態と同様なので説明を省略する。
【0019】
【発明の効果】以上説明したように本発明は、最適化後
の中間言語からデバッグ用ソースファイルおよびデバッ
ク用ソースプログラム情報を含む中間言語を生成する手
段を備えることにより、最適化したオブジェクトにより
ソースデバッグを行なうことが可能となり、不必要に最
適化レベルを落すことなく、目的とする最適化指定が有
効となる。つまり、デバッグ時にプログラムの実行とソ
ースプログラムが対応しない場合には、オリジナルのソ
ースプログラムに加えて、理解の困難なアセンブラソー
スプログラムではなくオリジナルのソースプログラムに
近いデバッグ用ソースプログラムを併せて参照すること
により、最適化がどのように行なわれているのかが分か
るため、プログラムの動作が理解しやすく、容易にソー
スデバッグを行なうことが可能という効果を有してい
る。
の中間言語からデバッグ用ソースファイルおよびデバッ
ク用ソースプログラム情報を含む中間言語を生成する手
段を備えることにより、最適化したオブジェクトにより
ソースデバッグを行なうことが可能となり、不必要に最
適化レベルを落すことなく、目的とする最適化指定が有
効となる。つまり、デバッグ時にプログラムの実行とソ
ースプログラムが対応しない場合には、オリジナルのソ
ースプログラムに加えて、理解の困難なアセンブラソー
スプログラムではなくオリジナルのソースプログラムに
近いデバッグ用ソースプログラムを併せて参照すること
により、最適化がどのように行なわれているのかが分か
るため、プログラムの動作が理解しやすく、容易にソー
スデバッグを行なうことが可能という効果を有してい
る。
【図1】本発明の第1の実施形態のシステム構成図であ
る。
る。
【図2】第1の実施形態におけるデバッグ用ソースプロ
グラム情報生成部の動作を説明するためのフローチャー
トである。
グラム情報生成部の動作を説明するためのフローチャー
トである。
【図3】図1のデバッグ用ソースファイル110のデバ
ッグ用ソースプログラムである。
ッグ用ソースプログラムである。
【図4】図1の中間データ111におけるデバッグ用ソ
ースプログラム情報に対応した中間データとデバッグ情
報である。
ースプログラム情報に対応した中間データとデバッグ情
報である。
【図5】デバッグ画面である。
【図6】本発明の第2の実施形態のシステム構成図であ
る。
る。
【図7】第2の実施形態におけるデバッグ用ソースプロ
グラム情報生成機能付最適化部の動作を説明するための
フローチャートである。
グラム情報生成機能付最適化部の動作を説明するための
フローチャートである。
【図8】従来例のシステム構成図である。
【図9】ソースプログラムの一例を示す図である。
【図10】最適化イメージである。
【図11】最適化された中間データとデバッグ情報であ
る。
る。
101 言語処理プログラム 102 ソースファイル 103 中間データ 104 中間データ 105 オブジェクトファイル 106 構文解析部 107 最適化部 108 コード生成部 109 デバッグ用ソースプログラム情報生成部 110 デバッグ用ソースファイル 111 中間データ 201 中間データ入力/終了検出処理 202 デバッグ用ソースプログラム情報生成処理 203 中間データ出力処理 601 言語処理プログラム 602 ソースファイル 603 中間データ 605 オブジェクトファイル 606 構文解析部 608 コード生成部 609 デバッグ用ソースプログラム情報生成機能付最
適化部 610 デバッグ用ソースファイル 611 中間データ 701 中間データ入力/終了検出処理 702 デバッグ用ソースプログラム情報生成機能付最
適化処理 703 中間データ出力処理
適化部 610 デバッグ用ソースファイル 611 中間データ 701 中間データ入力/終了検出処理 702 デバッグ用ソースプログラム情報生成機能付最
適化処理 703 中間データ出力処理
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平7−271606(JP,A) 特開 平8−255097(JP,A) 特開 平6−274369(JP,A) 「ACM SIGPLAN NOTI CE」Vol.27,No.7(1992− 7)P.1−11 「ACM SIGPLAN NOTI CE」Vol.29,No.6(1994− 6)P.278−289 「ACM SIGPLAN NOTI CE」Vol.31,No.5(1996− 5)P.33−43 (58)調査した分野(Int.Cl.7,DB名) G06F 9/45,11/36
Claims (3)
- 【請求項1】 高級言語で記述されたソースプログラム
情報を入力し解析する手段と、解析した情報を中間言語
で表現する手段と、中間言語レベルで最適化を行なう手
段と、中間言語からオブジェクト情報を生成する手投と
を持つ言語処理方式において、最適化後の中間言語から
デバッグ用ソースファイルおよびデバッグ用ソースプロ
グラム情報を含む中間言語を生成する手段を有すること
を特徴とする言語処理方式。 - 【請求項2】 言語処理を行うプログラムとして、入力
されるソースファイルの解析/処理を行ない第1の中間
データを生成する構文解析部と、得られた第1の中間デ
ータを入力して解析/処理を行ない第2の中間データを
生成する最適化部と、得られた第2の中間データを入力
して解析/処理を行ない、前記デバッグ用ソースファイ
ルおよび第3の中間データを生成するデバッグ用ソース
プログラム情報生成部と、前記第3の中間データを入力
して解析/処理を行ないオブジェクトファイルを生成す
るコード生成部とを備える請求項1記載の言語処理方
式。 - 【請求項3】 言語処理を行うプログラムとして、入力
されるソースファイルの解析/処理を行ない第1の中間
データを生成する構文解析部と、得られた第1の中間デ
ータを入力して解析/処理を行ない第2の中間データと
デバッグ用ソースファイルを生成するデバッグ用ソース
プログラム情報生成部と、前記第2の中間データを入力
して解析/処理を行ないオブジェクトファイルを生成す
るコード生成部とを備える請求項1記載の言語処理方
式。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34924796A JP3196675B2 (ja) | 1996-12-27 | 1996-12-27 | 言語処理方式 |
US08/996,426 US6014516A (en) | 1996-12-27 | 1997-12-22 | Language processing system which generates debugging source file corresponding to optimization image and method therefor |
CN97125846A CN1195811A (zh) | 1996-12-27 | 1997-12-25 | 对应于最优化图象产生调试源文件的语言处理***和方法 |
KR1019970074890A KR100309632B1 (ko) | 1996-12-27 | 1997-12-27 | 최적화이미지에대응한디버그용소스파일을생성하는언어처리시스템및방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34924796A JP3196675B2 (ja) | 1996-12-27 | 1996-12-27 | 言語処理方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10187461A JPH10187461A (ja) | 1998-07-21 |
JP3196675B2 true JP3196675B2 (ja) | 2001-08-06 |
Family
ID=18402482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34924796A Expired - Fee Related JP3196675B2 (ja) | 1996-12-27 | 1996-12-27 | 言語処理方式 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6014516A (ja) |
JP (1) | JP3196675B2 (ja) |
KR (1) | KR100309632B1 (ja) |
CN (1) | CN1195811A (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151701A (en) * | 1997-09-30 | 2000-11-21 | Ahpah Software, Inc. | Method for reconstructing debugging information for a decompiled executable file |
KR100532467B1 (ko) * | 2003-09-18 | 2005-12-01 | 삼성전자주식회사 | 서로 다른 버전에서 생성된 디버깅 정보 파일들을 이용한소스 코드 레벨 디버깅을 제공하는 엠시유 응용프로그램검증 시스템 및 그 방법 |
JP4822817B2 (ja) * | 2005-11-22 | 2011-11-24 | パナソニック株式会社 | コンパイルシステム |
US8904340B2 (en) | 2007-02-13 | 2014-12-02 | International Business Machines Corporation | Use of temporary optimized settings to reduce cycle time of automatically created spreadsheets |
CN101872301A (zh) * | 2009-04-24 | 2010-10-27 | 深圳富泰宏精密工业有限公司 | 测量程序优化***及方法 |
US9207921B2 (en) * | 2009-06-22 | 2015-12-08 | Oracle America, Inc. | Fault tolerant compilation with automatic optimization adjustment |
FR2953612A1 (fr) * | 2009-12-03 | 2011-06-10 | Flexycore | Procede de mise au point d'application logicielle, systeme et produit programme d'ordinateur correspondant. |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0685148B2 (ja) * | 1986-03-07 | 1994-10-26 | 株式会社日立製作所 | 配列デ−タフロ−解析装置 |
JPH0814817B2 (ja) * | 1986-10-09 | 1996-02-14 | 株式会社日立製作所 | 自動ベクトル化方法 |
JP2921190B2 (ja) * | 1991-07-25 | 1999-07-19 | 日本電気株式会社 | 並列実行方式 |
JPH05158706A (ja) * | 1991-12-09 | 1993-06-25 | Nippon Denki Micom Technol Kk | 中間言語の最適化処理方式 |
JPH06274369A (ja) * | 1993-03-19 | 1994-09-30 | Hitachi Ltd | 最適化プログラムのデバッグ方式 |
JPH0721033A (ja) * | 1993-07-07 | 1995-01-24 | Nec Corp | 言語処理装置及びその方法 |
JPH0756745A (ja) * | 1993-08-13 | 1995-03-03 | Nec Corp | 言語処理プログラムのコンパイラ処理方式 |
JP3190773B2 (ja) * | 1993-09-30 | 2001-07-23 | 日本電気株式会社 | 言語処理プログラムのコンパイル処理方法 |
JP3327674B2 (ja) * | 1994-04-01 | 2002-09-24 | 松下電器産業株式会社 | プログラム翻訳装置及び方法 |
JPH0863369A (ja) * | 1994-08-24 | 1996-03-08 | Toshiba Corp | 最適化情報出力方式 |
JPH08255097A (ja) * | 1995-01-20 | 1996-10-01 | Toshiba Corp | デバッグ情報出力方式 |
-
1996
- 1996-12-27 JP JP34924796A patent/JP3196675B2/ja not_active Expired - Fee Related
-
1997
- 1997-12-22 US US08/996,426 patent/US6014516A/en not_active Expired - Fee Related
- 1997-12-25 CN CN97125846A patent/CN1195811A/zh active Pending
- 1997-12-27 KR KR1019970074890A patent/KR100309632B1/ko not_active IP Right Cessation
Non-Patent Citations (3)
Title |
---|
「ACM SIGPLAN NOTICE」Vol.27,No.7(1992−7)P.1−11 |
「ACM SIGPLAN NOTICE」Vol.29,No.6(1994−6)P.278−289 |
「ACM SIGPLAN NOTICE」Vol.31,No.5(1996−5)P.33−43 |
Also Published As
Publication number | Publication date |
---|---|
KR19980064734A (ko) | 1998-10-07 |
KR100309632B1 (ko) | 2002-02-28 |
JPH10187461A (ja) | 1998-07-21 |
US6014516A (en) | 2000-01-11 |
CN1195811A (zh) | 1998-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6367068B1 (en) | Dynamic parsing | |
US7478366B2 (en) | Debugger and method for debugging computer programs across multiple programming languages | |
JP3196675B2 (ja) | 言語処理方式 | |
KR0125605B1 (ko) | 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치 | |
US6993749B2 (en) | Conditional debug monitors | |
JPH08314760A (ja) | プログラム開発支援装置 | |
JPH0554277A (ja) | プラント監視装置 | |
CN117785160B (zh) | 一种低代码应用的行为逻辑开发调试方法、***及装置 | |
JP2004287869A (ja) | プログラム実行監視装置および方法 | |
JPS626260B2 (ja) | ||
JPH11154093A (ja) | プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体 | |
JP2882876B2 (ja) | プログラム試験方法 | |
JP3165105B2 (ja) | プログラムのトレーサ、コンパイラ及びリンカー | |
JP3210203B2 (ja) | プログラム試験方法及びsqlシミュレータ | |
JP3368795B2 (ja) | コンパイル制御方法、コンパイル装置及び記録媒体 | |
JP3077627B2 (ja) | デバッグ方法およびデバッグプログラムを記録する記録媒体 | |
JPH1021078A (ja) | 結合ビュー参照式コンパイル方式 | |
JP2004280476A (ja) | プログラム開発装置、およびプログラム開発プログラム | |
JPH05108372A (ja) | コンパイラ最適化処理内容の出力方式 | |
JPH0353334A (ja) | 言語処理プログラムのデバッグ情報出力処理方式 | |
JPH0279127A (ja) | フォートラン・コンパイル処理方式 | |
JP2003330731A (ja) | プロジェクト管理ファイル生成装置 | |
JPH04307630A (ja) | 簡易デバック・オプション付きコンパイラ | |
JPH03223930A (ja) | ソース生成支援システム | |
JPH0612259A (ja) | コンパイラ処理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |