JP3327674B2 - プログラム翻訳装置及び方法 - Google Patents
プログラム翻訳装置及び方法Info
- Publication number
- JP3327674B2 JP3327674B2 JP06490094A JP6490094A JP3327674B2 JP 3327674 B2 JP3327674 B2 JP 3327674B2 JP 06490094 A JP06490094 A JP 06490094A JP 6490094 A JP6490094 A JP 6490094A JP 3327674 B2 JP3327674 B2 JP 3327674B2
- Authority
- JP
- Japan
- Prior art keywords
- line
- information
- source
- variable
- program
- 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 - Lifetime
Links
Description
ソースプログラムを、目的コードに翻訳すると同時に、
高級言語レベルでのデバッグを行なうためにソースプロ
グラムの情報を目的コードに付加するプログラム翻訳装
置及び方法に関するものである。
ログラムを目的コードに変換するという機能(これをコ
ンパイルという。)を有する装置をいう。その際、ソー
スプログラムの変数は資源に割り付けられる。ここでの
資源とはプロセッサのレジスタ、メモリ等の変数の割り
付け先となる記憶媒体のことである。
のオプションを指定することができる。このオプション
は、コンパイルの仕方を指示するもので、例えば、シン
ボリックデバッガー用のコンパイルなどがある。ここ
で、シンボリックデバッガーとは、プログラム開発者
が、ソースレベルの変数などのシンボルを用いてデバッ
グすることができる装置である。そのため、プログラム
翻訳装置は、シンボリックデバッガー用のコンパイル時
に、コンパイル結果にソースプログラムの変数などのシ
ンボルと、それが割当てられた資源との対応関係を表す
変数情報をシンボリックデバッガーに出力する。
ンパイル結果と、それ以外のコンパイル結果(プロセッ
サで実行すべくコンパイルする通常のコンパイル結果)
では、資源の割り付け方法の点で異なっていた。その理
由として、シンボリックデバッカーに対するコンパイル
の仕方を選択した際には、シンボリックデバッカーがソ
ースプログラムの開始から終了までソースプログラムの
変数は同一の資源に割り付けられることを前提としてい
るため、一つの変数に対して一つの資源を割り付ける資
源の割り付け方法をとる。それに対して、シンボリック
デバッカーに対するコンパイルの仕方を選択しなかった
た際、つまりプロセッサで実行すべくコンパイルする際
には、資源の割り付けに関して最適化を行うため、必ず
しも一つの変数に対して一つの資源が割り付けられず、
一つの資源に対して割り付けた資源が途中で変化するこ
とがあるからである。
を示すものである。同図は、構文解析部111と、資源
割り付け部112と、変数資源情報出力部113と、コ
ード生成部114から構成されている。構文解析部11
1は、ソースプログラムの構文を解析して中間言語に変
換するとともに変換された中間行1行毎に対応して行番
号である中間行番号を添付する。図2はC言語によるソ
ースプログラムの例の図であり、図3は図2のソースプ
ログラムが構文解析部111よって中間言語に変換され
かつ中間行番号が添付された例の図である。図3におい
て、L: はラベル、arg は関数呼びだしの引数、jcc は
直前の比較の結果が真ならば、指定したラベルに分岐命
令、jsr は関数への分岐命令、ret は関数呼びだしの戻
り値を表している。
ースプログラムの変数にプロセッサの資源を割り付け
る。具体的には、まず各変数について生存区間を求め
る。変数名と求められた生存区間との対応関係は、図1
3(a)に示される。同図は、変数名と、生存期間であ
る中間行番号とが対応している様子を示す。次に資源割
り付け部112は、各資源を生存区間毎に割り付ける。
割り付けられた資源と生存区間及び変数名との対応表
は、図13(b)に示す。また中間言語中のソースプロ
グラムの変数にプロセッサの資源を割り付けられた例
は、図14に示す。同図は図4の中間言語に対する資源
割り付け部112の動作後の中間言語である。変数の直
後に続く(R0), (R1), (R2)は変数に割り付けられた資源
(この例ではレジスタ)を表す。
け部112が変数に割り付けた資源の情報を表す変数情
報を図15に示すように中間言語に付加する。図15に
おいて .STAB i R1と.STAB a R2は、付加された変数情
報を示し、.STAB i R1は変数i がレジスタ R1 に割り付
けられたことを表す。.STAB a R2 は変数 a がレジスタ
R2 に割り付けられたことを表す。
ードに変換する。図16は図15の中間言語に対する目
的コードである。以上のように従来のプログラム翻訳装
置では、変数に対して資源を1対1に対応するように割
り付けている。
うな構成は、デバッカーに対してコンパイルする際は変
数に割り付けた資源が途中で変わらないことを前提とし
ている。そのため資源の割り付けに関して最適化してコ
ンパイルしたコンパイル結果は変数に割り付けた資源が
途中で変わる場合があり、デバックする際に用いること
ができない場合があった。その場合は、実際に使用する
資源の割り付けに関して最適化してコンパイルしたコン
パイル結果の実行と、デバッカーで使用するためにコン
パイルしたコンパイル結果の実行では、動作面等で差異
が生じデバックする際に不都合があった。
けに関して最適化してコンパイルした場合にも、常にデ
バッカーがデバックすることができるコンパイルを行う
ことができるプログラム翻訳装置及び方法を提供するこ
とを目的とする。
め、本発明におけるプロラム翻訳装置は、高級言語レベ
ルのソースプログラムを目的コードプログラムに翻訳
し、前記高級言語レベルでのデバッグを行うためにデバ
ッグ装置に渡すべき前記ソースプログラムの情報を前記
目的コードプログラムに付加するプログラム翻訳装置で
あって、目的コードの直前に、対応する行番号を示す識
別情報を配することにより、目的コードが前記ソースプ
ログラムのどの行に対応するかを表現したデバッグ情報
を前記目的コードプログラムに付加するデバッグ情報付
加手段を備え、前記デバッグ情報付加手段は、ソースプ
ログラムの構文を解析して中間言語に変換するとともに
変換された中間言語1行毎に行番号である中間行番号を
添付する構文解析手段と、前記中間言語中の各変数を各
資源に割り付けると共に、変数名と資源との組と、その
組が存続している範囲に属する中間行番号との対応表を
出力する資源割り付け手段と、前記中間言語における変
数を含む行がソースプログラムのどの行に該当するかを
示すソース行番号とソース行番号の識別情報とからなる
ソース情報行を前記中間言語における変数を含む行の直
前に挿入するソース情報行出力手段と、前記資源割り付
け手段からの対応表のおいて、中間行番号から識別情報
を導き出して、変数名と資源と識別情報との対応関係を
表す変数情報を表す行を前記中間言語に付加する変数情
報付加手段と、前記中間言語からソース情報行と変数情
報とに基づいて、ソースプログラム中の変数名と、その
変数に割り当てられた資源と、その変数を含むソースプ
ログラムの行番号を表すソース情報行に付加された識別
情報との対応関係を表すデバック情報を含む目的コード
を生成するコード生成手段とを備えている。
訳装置の構成を示す図である。同図は、構文解析部1
1、資源割り付け部12、変数資源情報出力部13、ソ
ース情報行出力部14、変数資源範囲出力部15、コー
ド生成部16から構成されている。
文を解析して中間言語に変換するとともに変換された中
間行1行毎に対応して行番号である中間行番号を添付す
る。図2はC言語によるソースプログラムの例の図であ
り、図3は図2のソースプログラムが構文解析部11に
よって中間言語に変換されかつ中間行番号が添付された
中間言語の例の図である。
中間言語に付いて、まず各変数について生存区間と生存
区間の属する中間行番号を求める。それに基づいて、変
数名と中間行番号の対応関係を図4(a)に示すように
求める。次に各資源を生存区間毎に変数を割り付ける。
さらに変数名と中間行番号と割り付けられた資源との対
応表を図4(b)に示すように作成する。同図では、従
来例とは違い、同じ変数名であっても割当てられている
資源が異なっていることが分かる。また図3の中間言語
中の変数に資源を割り付けた中間言語の例の図は、図5
に示す。変数の直後に続く(R0), (R1), (R2)は変数に割
り付けられた資源(この例ではレジスタ)を表す。
部12が変数に割り付けた資源の情報を表す変数情報を
中間言語に付加する。具体的には、図4(b)に示す変
数名に従って変数情報を作成し中間言語に付加する。図
6は変数情報が付加された例を示す図である。ここ
で、.STAB i R1 は変数 i がレジスタ R1 に割り付けら
れたことを示す。.STAB a R2 は変数 a がレジスタ R2
に割り付けられたことを示す.STAB a R0 は変数 a がレ
ジスタ R0 に割り付けられたことを示す。
命令が相当するソースプログラムの実行文の行番号と識
別番号からなるソース情報行を図6に示すような中間言
語に付加することにより図6から図7のように中間言語
が変化する。具体的には、図8の動作フロー図に示すよ
うに、変数を含む行に該当するソースプログラムの行を
構文解析部11の解析結果を用いて求める(ステップS
701からステップS705)。次に求められたソース
プログラムの行の番号及びソース情報行の通し番号であ
るソース情報行を、変数を含む行の前に挿入する(ステ
ップS706)。また図7において、.LINE 5 ID 1 〜
.LINE 13 ID 8 は、挿入された情報行であり、このう
ち.LINE 5 〜 .LINE 13 は、このソース情報行に続く中
間言語の行が対応しているソースプログラムにおいて相
当する行の行番号を表す。また、IDに続く数字は、ソー
ス情報行の通し番号である識別番号である。
部12で、変数名と中間行番号と割り付けられた資源と
の対応表である図4(b)のうち中間行番号に基づいて
識別番号を求める。次に求められた識別番号を変数資源
情報出力部13によって中間言語に付加された変数情報
に更に付加する。よって、変数名と資源と識別番号との
対応関係を図9に示すように中間言語に付加される。具
体的には、図10の動作フロー図に示すように、対応表
の中間行番号の欄より一つ中間行番号を取り出し(ステ
ップS101からステップS103)、中間言語におい
てその中間行番号の示す行より一行手前の行を読み込み
(ステップS104)。さらにその行がソース情報行で
あれば識別番号である.LINE の ID 番号を取り出し出力
する(ステップS105からステップS106)。図9
において、.STAB i R1 ID 1 2 34 5 は ID 1 の .LINE
から ID 5 の .LINE の間で変数 i が R1 に割り付けら
れていることを表す。他についても同様である。
ドに変換する。図11は、図9の中間言語がコード生成
部16によって目的コードに変換された例の図である。
以上のように構成されたプログラム翻訳装置において、
以下その動作を説明する。まず、図2に示すようなソー
スプログラムが入力される。入力されたソースプログラ
ムは、構文解析部11によって構文を解析され中間言語
に変換等され、図3に示すようになる。次に中間言語
は、資源割り付け部12によって資源が割り付けられ図
5に示すような状態となる。このとき図4(b)に示す
ような資源と変数名と中間行番号の対応表も作成され
る。次に図6に示すように、変数資源情報出力部13に
よって変数資源情報が中間言語中に出力される。さらに
図7に示すようにソース情報行出力部14によって、中
間言語中の命令が相当するソースプログラムの実行文の
行番号と識別番号からなるソース情報行が中間言語に付
加される。次に図9に示すように、変数資源範囲出力部
15によって中間言語中に変数名と資源と識別番号との
対応関係が付加される。さらにこれが図11に示すよう
に、コード生成部16によって中間言語に変換される。
割り付けられていたが、メモリに割り付けられる場合も
同様に適用可能である。尚、本実施例においては、ソー
スプログラムがC言語によって記述されている例を示し
たが、本発明は他のプログラミング言語の翻訳装置に対
しても同様に適用可能である。
ド中で変数に割り付けられた資源が変化する場合にも、
常にデバッカーがデバックすることができる。
構成図である。
る。
る。
る。
である。
る。
例の図である。
例の図である。
Claims (2)
- 【請求項1】 高級言語レベルのソースプログラムを目
的コードプログラムに翻訳し、前記高級言語レベルでの
デバッグを行うためにデバッグ装置に渡すべき前記ソー
スプログラムの情報を前記目的コードプログラムに付加
するプログラム翻訳装置であって、目的コードの直前に、対応する行番号を示す識別情報を
配することにより、目的コードが前記ソースプログラム
のどの行に対応するかを表現したデバッグ情報を前記目
的コードプログラムに付加するデバッグ情報付加手段を
備え、 前記デバッグ情報付加手段は、 ソースプログラムの構文を解析して中間言語に変換する
とともに、変換された中間言語1行毎に行番号である中
間行番号を添付する構文解析手段と、 前記中間言語中の各変数を各資源に割り付けると共に、
変数名と資源との組と、その組が存続している範囲に属
する中間行番号との対応表を出力する資源割り付け手段
と、 前記中間言語における変数を含む行がソースプログラム
のどの行に該当するかを示すソース行番号を含み、識別
情報が付加されたソース情報行を前記中間言語における
変数を含む行の直前に挿入するソース情報行出力手段
と、 前記資源割り付け手段から出力された対応表から中間行
番号を取り出し、その中間行番号の示す行の直前の行が
ソース情報行であれば、その識別情報を導き出して、変
数名と資源と識別情報との対応関係を表す変数情報を前
記中間言語に付加する変数情報付加手段と、 前記中間言語からソース情報行と変数情報とに基づい
て、ソースプログラム中の変数名と、その変数に割り当
てられた資源と、その変数を含むソースプログラムの行
番号を表すソース情報行に付加された識別情報との対応
関係を表すデバック情報を含む目的コードを生成するコ
ード生成手段と からなることを特徴とするプログラム翻
訳装置。 - 【請求項2】 高級言語レベルのソースプログラムを目
的コードプログラムに翻訳し、前記高級言語レベルでの
デバッグを行うためにデバッグ装置に渡すべき前記ソー
スプログラムの情報を前記目的コードプログラムに付加
するプログラム翻訳方法であって、目的コードの直前に、対応する行番号を示す識別情報を
配することにより、目的コードが前記ソースプログラム
のどの行に対応するかを表現したデバッグ情報を前記目
的コードプログラムに付加するデバッグ情報付加ステッ
プを有し、 前記デバッグ情報付加ステップは、 ソースプログラムの構文を解析して中間言語に変換する
とともに、変換された中間言語1行毎に行番号である中
間行番号を添付する構文解析ステップと、 前記中間言語中の各変数を各資源に割り付けると共に、
変数名と資源との組と、その組が存続している範囲に属
する中間行番号との対応表を出力する資源割り付けステ
ップと、 前記中間言語における変数を含む行がソースプログラム
のどの行に該当するかを示すソース行番号を含み、識別
情報が付加されたソース情報行を前記中間言語における
変数を含む行の直前に挿入するソース情報行出力ステッ
プと、 前記資源割り付けステップから出力された対応表から中
間行番号を取り出し、その中間行番号の示す行の直前の
行がソース情報行であれば、その識別情報を導き出し
て、変数名と資源と識別情報との対応関係を表す変数情
報を前記中間言語に付加する変数情報付加ステップと、 前記中間言語からソース情報行と変数情報とに基づい
て、ソースプログラム中の変数名と、その変数に割り当
てられた資源と、その変数を含むソースプログラムの行
番号を表すソース情報行に付加された識別情報との対応
関係を表すデバック情報を含む目的コードを生成するコ
ード生成ステップと からなることを特徴とするプログラ
ム翻訳方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06490094A JP3327674B2 (ja) | 1994-04-01 | 1994-04-01 | プログラム翻訳装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP06490094A JP3327674B2 (ja) | 1994-04-01 | 1994-04-01 | プログラム翻訳装置及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07271606A JPH07271606A (ja) | 1995-10-20 |
JP3327674B2 true JP3327674B2 (ja) | 2002-09-24 |
Family
ID=13271417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP06490094A Expired - Lifetime JP3327674B2 (ja) | 1994-04-01 | 1994-04-01 | プログラム翻訳装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3327674B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170141970A (ko) * | 2016-06-16 | 2017-12-27 | 삼성전자주식회사 | 번역 서비스를 제공하는 전자 장치 및 방법 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3196675B2 (ja) * | 1996-12-27 | 2001-08-06 | 日本電気株式会社 | 言語処理方式 |
JP3612294B2 (ja) | 2001-08-06 | 2005-01-19 | 松下電器産業株式会社 | デバッグ方法およびデバッグ装置 |
JP2008305337A (ja) * | 2007-06-11 | 2008-12-18 | Panasonic Corp | プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム |
JP7163697B2 (ja) * | 2018-09-28 | 2022-11-01 | 富士通株式会社 | 生成プログラム,情報処理装置及び生成方法 |
-
1994
- 1994-04-01 JP JP06490094A patent/JP3327674B2/ja not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170141970A (ko) * | 2016-06-16 | 2017-12-27 | 삼성전자주식회사 | 번역 서비스를 제공하는 전자 장치 및 방법 |
KR102251832B1 (ko) | 2016-06-16 | 2021-05-13 | 삼성전자주식회사 | 번역 서비스를 제공하는 전자 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
JPH07271606A (ja) | 1995-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5815720A (en) | Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system | |
USRE38104E1 (en) | Method and apparatus for resolving data references in generated code | |
Fernandez | Simple and effective link-time optimization of Modula-3 programs | |
US5606697A (en) | Compiler system for language processing program | |
US8522222B2 (en) | Tracing just-in-time compilation with pointers to local variables | |
JPH08202545A (ja) | ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法 | |
JPH05257709A (ja) | 並列化判別方法およびそれを用いた並列化支援方法 | |
JP2003050715A (ja) | コンパイラおよびデバッグ装置 | |
JP2007304840A (ja) | コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム | |
JP3327674B2 (ja) | プログラム翻訳装置及び方法 | |
US20010039653A1 (en) | Program conversion method, program conversion apparatus, storage medium for storing program conversion program and program conversion program | |
JP2008305337A (ja) | プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム | |
JPH07182179A (ja) | オブジェクト指向データベース管理装置 | |
JPH10187461A (ja) | 言語処理方式 | |
JPH11110256A (ja) | プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体 | |
JP2009515243A (ja) | ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法 | |
JP3596570B2 (ja) | クラスの主記憶装置への配置方法 | |
KR100248434B1 (ko) | 객체지향 칠 디버깅 정보 생성방법 | |
JP2662533B2 (ja) | ロジック・アナライザ | |
Karjalainen | A Lisp-based High-level Programming Environment for the TMS320C30 | |
JPH08161179A (ja) | 一文実行方法 | |
JP3018783B2 (ja) | コンパイル方式 | |
JPH1195995A (ja) | データフロー解析装置、データフロー解析方法及びそのためのコンピュータプログラムを記録した記録媒体 | |
JPH04250530A (ja) | プログラム変換/翻訳装置 | |
JP2002108628A (ja) | プログラム変換装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070712 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080712 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090712 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090712 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100712 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110712 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110712 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120712 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120712 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130712 Year of fee payment: 11 |
|
EXPY | Cancellation because of completion of term |