JPH0997182A - プログラム変換装置およびデバッグ装置 - Google Patents

プログラム変換装置およびデバッグ装置

Info

Publication number
JPH0997182A
JPH0997182A JP7252710A JP25271095A JPH0997182A JP H0997182 A JPH0997182 A JP H0997182A JP 7252710 A JP7252710 A JP 7252710A JP 25271095 A JP25271095 A JP 25271095A JP H0997182 A JPH0997182 A JP H0997182A
Authority
JP
Japan
Prior art keywords
variable
unit
temporary
program
resource
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
JP7252710A
Other languages
English (en)
Inventor
Fumio Sumi
史生 角
Shuichi Takayama
秀一 高山
Jiyunko Sayama
旬子 佐山
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP7252710A priority Critical patent/JPH0997182A/ja
Priority to US08/828,430 priority patent/US5881288A/en
Publication of JPH0997182A publication Critical patent/JPH0997182A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 プログラム変換装置から一時変数に置き換え
られた変数の情報を得ることで最適化された実行コード
のデバッグを可能にする。 【構成】 入力部205で指定された変数が一時変数に
置換されていた場合、置換変数判断部206において、
変数置換情報記憶部201を参照して変数が置換された
一時変数名を得て、一時変数資源判断部207におい
て、一時変数資源情報記憶部202を参照して一時変数
が割り付けられた資源情報を得る。コード実行部209
において、生成コード記憶部204より実行コードを得
て入力部205で指定された行まで実行する。変数操作
部210において、一時変数資源判断部207で得られ
た資源情報に基づき、コード実行部209に問い合わせ
て、変数の値を得る。出力部211において、変数の値
を表示する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はソフトウエア開発におい
て、プログラムを実行コードに変換するプログラム変換
装置と、プログラム変換装置によって生成された実行コ
ードにおける誤りを発見し、設計通りにソフトウエアが
動作するか検証するデバッグ装置に関するものである。
【0002】
【従来の技術】近年、ソフトウエアの実行効率を高め、
さらにコードサイズを縮小するため、最適化を行なうプ
ログラム変換装置に対する要求が高まっている。最適化
技術の向上に伴い、プログラム変換装置が一時変数を生
成し、プログラムの変数を一時変数に置換した上で最適
化を行なう方式が主流となっている。
【0003】図12は従来の最適化情報を出力するプロ
グラム変換装置の構成を示すものである。
【0004】図12において、401はプログラム記憶
部で、変換対象のプログラムが記憶されている。402
は生成コード記憶部で、生成された実行コードを記憶す
る。403はデバッグ情報記憶部で、変数と割り付けら
れた資源の対応を表すデバッグ情報を記憶する。404
は内部表現変換部で、プログラムをプログラム記憶部4
01から得てプログラム変換装置で使用する内部表現に
変換する。405は内部表現最適化部で、内部表現変換
部404が変換した内部表現を最適なコードを生成でき
るよう変換する。変換の過程でプログラム中の変数や計
算式を当該装置内でのみ使用する一時変数で置き換える
場合がある。406は資源割り付け部で、内部表現最適
化部405が最適化した内部表現中に存在する変数につ
いて資源を割り付ける。407はコード生成部で、資源
割り付け部406で資源の割り付けを終えた内部表現を
もとにコードを生成し、生成コード記憶部402に記憶
する。408はデバッグ情報出力部で、資源割り付け部
406で割り付けられた資源と変数の対応を表すデバッ
グ情報をデバッグ情報記憶部403に記憶する。
【0005】図13はプログラム記憶部401の内容を
表す。まず、内部表現変換部405は図13のプログラ
ムを図14の(a)の内部表現に変換する。図14の(a)説
明を以下に記す。
【0006】 ・L1, L2 ラベル ・jsr f f への関数呼出し ・t1 jsr f の戻り値を表す一時変数 ・x cmp 0 x と 0 の比較 ・jeq L1 x cmp 0 の結果が x == 0 なら L1 へ分岐する ・goto L2 L2 へ分岐 次に内部表現最適化部405は図14の(a)の内部表現
を図14の(b)の内部表現に変換する。変換過程で行な
った最適化は次の2つである。 (1)プログラムの変数 x を 一時変数t1 に置換する。 (2)y = x + 3 と z = x + 3 に含まれる計算式 x + 3
を一時変数 t2で置き換える。新たにt2 = x + 3を生成
する(なお、xはt1で置換されているので t2 = t1 +3と
なる)。
【0007】次に資源割り付け部406は図14の(b)
の内部表現に対して資源を割り付ける。図14の(c)は
図14の(b)の内部表現中の変数に割り付けられた資源
を()内に記述した内部表現である。図14の(c)中、r0,
r1 はレジスタ、mem1,mem2 はメモリの資源を表す。
【0008】次にコード生成部407は図14の(c)の
内部表現から実行コードを生成する。同時にデバッグ情
報出力部408はデバッグ情報を生成する。図15の
(a)は生成コード記憶部402の内容である。図15の
(a)の説明を以下に記す。
【0009】 ・L1, L2 ラベル ・add r0, 3, r1 r0 と 3 を加算した値を r1 に転送 ・cmp r0, 0 r0 と 0 を比較する。
【0010】 ・jeq L1 cmp r0, 0 の結果、r0 が 0 と等しいなら ば、L1 に分岐する。
【0011】 ・(mem1) mem1 はアドレスで、(mem1) は mem1 のア ドレスのメモリを表す。mem2 も同様。
【0012】 ・mov r1, (mem1) r1 の値を (mem1) に転送する。 mov r1, (mem2) も同様。
【0013】 ・goto L1 L1 への分岐 図15の(b)はデバッグ情報記憶部403の内容であ
る。図15の(b)において、変数名yはmem1で示されるア
ドレスのメモリと対応することを示す。また、この情報
が生成された実行コードにおける行C_1からC_7まで有効
であることを示す。同様に、変数名zはmem2で示される
アドレスのメモリと対応することを示す。
【0014】最適化機能を持つプログラム変換装置が生
成する実行コードの特徴として、実行コードの各行にお
いて、変数の資源割り付けが変化する点が挙げられる。
このため、最適化により生成される実行コードにおける
変数とプログラムにおける変数と対応を取るのが困難と
なる。最適化処理がなされた実行コードに対しても正し
くデバッグ可能になるよう、デバッグ装置では、プログ
ラム変換装置が出力した変数資源情報を読み込み、変数
が割り付けられた資源を実行コードの各行ごとに判断す
る方法が考案されている。
【0015】従来の最適化対応のデバッグ装置として、
特開平1-166141に示すものが挙げられる。以下図面を参
照しながら、上記した従来のデバッグ装置の一例につい
て説明する。
【0016】図16は従来のデバッグ装置の構成を示す
ものである。図16において、501はデバッグ情報記
憶部であり、プログラムの変数の資源割り付け情報が記
憶されている。502は生成コード記憶部であり、生成
された実行コードが記憶されている。503は入出力部
であり、オペレータが参照したい変数を指定する。ま
た、コード実行中の変数の値をオペレータに表示する。
504はデバッガ部であり、変数資源判断部、コード実
行部、変数操作部から構成される。505は変数資源判
断部であり、入出力部503で指定された変数の資源情
報をデバッグ情報記憶部501より得て、割り付けられ
た資源を判断する。506はコード実行部であり、生成
コード記憶部502より実行コードを得て実行する。5
07は変数操作部であり、変数資源判断部505で得ら
れた資源情報に基づき、コード実行部506に問い合わ
せて変数の値を得る。得られた値を入出力部503に出
力する。
【0017】図19は従来例における実行コードの動作
環境を示す。動作環境としては、コンピュータ本体60
1、オペレータの入出力を行なうターミナル602、プ
ログラムが記憶されているディスク装置603から構成
される。コンピュータ本体601は、中央演算処理部6
10、メモリ611、入出力制御部612から構成され
る。中央演算処理部610は、レジスタ620、命令実
行部620から構成される。レジスタは、r0,r1,r2,フ
ラグレジスタの4本から構成されるものとする。命令実
行部で実行可能な命令一覧を図20に示す、命令の中
で、転送命令を図21、算術演算命令を図22、比較と
ジャンプ命令を図23にそれぞれ示す。
【0018】以上のように構成されたデバッグ装置につ
いて、以下その動作について説明する。
【0019】図17の(a)は入出力部を表す。図17の
(b)は生成コード記憶部502の内容を表す。図17の
(c)はデバッグ情報記憶部503の内容を表す。 (s1)オペレータは入出力部503に対して、11行目に
おける変数yの値を参照したいと設定する。 (s2)変数資源判断部505において、指定された変数y
の資源をデバッグ情報記憶部501より得て、変数yが
メモリのアドレスmem1に割り付けられたと判断する。 (s3)コード実行部506では、指定された11行目まで
実行する。図18の(a)は、11行目が実行される前で
停止している状態を表す。図18の(b)は、レジスタの
状態を表す。図18の(c)は、メモリの状態を表す。 (s4)変数操作部507では、コード実行部506に対し
て変数資源判断部505で得られた資源情報である、メ
モリのアドレスmem1を指定して、値を得る。この結果、
15という値を得る。mem1は変数yの資源であるので、
変数yの値が15であると判断する。 (s5)入出力部503において、変数yの値を出力する。
図18の(d)は変数yの値が15であることを示す。 (おわり)。
【0020】
【発明が解決しようとする課題】しかしながら、従来の
デバッグ装置では、一時変数を使ってプログラムを変換
する装置により生成された実行コードに対して正しくデ
バッグできない問題が発生する。この理由として、一時
変数に置換されたプログラムの変数に関する情報がプロ
グラム変換装置から出力されておらず、デバッグ装置に
対してユーザがそのような変数を指定した場合、設定や
参照ができないためである。
【0021】例えば、従来例において、変数xは一時変
数に置換されたため、図17の(c)に示すようにデバッ
グ情報記憶部503に変数xの情報は出力されない。こ
の時、ユーザが参照したい変数として、変数xを指定し
ても、デバッグ情報に変数xが存在しないため、デバッ
グ装置はどの資源を参照して良いか分からない。このた
め、変数xに対する値の参照や設定が不可能となる問題
点を有していた。
【0022】本発明は上記問題点に鑑み、プログラム変
換装置の最適化によりプログラムの変数が一時変数に置
換されても、参照や設定可能なデバッグ装置を提供する
ことを目的とする。
【0023】
【課題を解決するための手段】上記問題点を解決するた
め、請求項1記載の発明は、一時変数とプログラムの変
数の対応を保持する対応情報保持手段と対応情報保持手
段に保持された一時変数と対応するプログラムの変数を
表すデバッグ情報を出力する一時変数最適化情報出力手
段と対応情報保持手段に保持された一時変数と割り付け
られた資源を表すデバッグ情報を出力する一時変数資源
情報出力手段という構成を有している。
【0024】請求項2記載の発明は、請求項1記載の発
明の構成用件である一時変数最適化情報出力手段が、プ
ログラムの変数が前記対応情報保持手段に保持された一
時変数で置換された場合は、プログラムの変数が前記一
時変数に置換された情報を表すデバッグ情報を出力する
変数置換情報出力手段である構成を有している。
【0025】請求項3記載の発明は、請求項1記載の発
明の構成用件である一時変数最適化情報出力手段が、プ
ログラムの変数と演算子で構成される計算式が対応情報
保持手段に保持された一時変数で置換された場合は、計
算式が一時変数に置換された情報を表すデバッグ情報を
出力する計算式置換情報出力手段である構成を有してい
る。
【0026】請求項4記載の発明は、プログラム変換装
置が生成した実行コードを記憶した生成コード記憶手段
と、一時変数に関する資源割り付け情報を記憶した一時
変数資源情報記憶手段と、プログラムの変数に関する資
源割り付け情報を記憶したデバッグ情報記憶手段と、変
数名を指定する入力手段と、入力手段で入力された変数
名が一時変数であった場合、一時変数情報記憶手段より
資源割り付け情報を得て一時変数が存在する資源を決定
する一時変数資源判断手段と、入力手段で入力された変
数名がプログラムの変数であった場合、デバッグ情報記
憶手段より資源割り付け情報を得て変数が存在する資源
をを決定する変数資源判断手段と、生成コード記憶手段
より実行コードを得てプログラムを実行するコード実行
手段と、コード実行手段に問い合わせて、一時変数資源
判断手段、または、変数資源判断手段より指定された資
源に対して変数の値に対する操作を行なう変数操作手段
と変数操作手段で得られた変数の値を出力する出力手段
の構成を有している。
【0027】請求項5に記載の発明は、請求項4の発明
に、プログラムの変数名と置換された一時変数名を記憶
する変数情報記憶手段と、変数情報記憶手段より置換情
報を得て、入力手段で入力されたプログラムの変数が変
数情報記憶手段に含まれていた場合、置換された一時変
数名を得る置換変数判断手段を追加した構成を有してい
る。
【0028】請求項6に記載の発明は、請求項4の発明
に、プログラムの変数と一時変数の関係を式で表現して
記憶する変数情報記憶手段と、変数情報記憶手段よりプ
ログラムの変数と一時変数の関係を表す式を得て、入力
手段で入力された変数が変数情報記憶手段で得られた式
に含まれる場合、式と式に含まれる一時変数名を得る計
算式置換変数判断手段と、変数操作手段で得られた一時
変数の値と、計算式置換変数判断手段から得た式より、
プログラムの変数の値を計算する計算式適用手段を追加
した構成を有している。
【0029】
【作用】請求項1記載の発明によると一時変数最適化情
報出力部が対応情報保持部に保持された一時変数と対応
するプログラムの変数を表すデバッグ情報を出力する。
又、一時変数資源情報出力部が対応情報保持手段に保持
された一時変数と割り付けられた資源を表すデバッグ情
報を出力する。
【0030】請求項2記載の発明によると請求項1記載
の一時変数最適化情報出力部に替わって変数置換情報出
力部がプログラムの変数が対応情報保持部に保持された
一時変数で置換された場合は、プログラムの変数が一時
変数に置換された情報を表すデバッグ情報を出力する。
【0031】請求項3記載の発明によると請求項1記載
の一時変数最適化情報出力部に替わって計算式置換情報
出力部がプログラムの変数と演算子で構成される計算式
が対応情報保持部に保持された一時変数で置換された場
合は、計算式が前記一時変数に置換された情報を表すデ
バッグ情報を出力する。
【0032】請求項4に記載の発明によると、入力手段
において、オペレータは参照したい変数名を指定し、一
時変数資源判断手段において、入力手段において、入力
された変数名が一時変数であるかを変数資源情報記憶手
段より得て判断し、もし、一時変数であったなら、変数
資源情報記憶手段より一時変数の資源情報を得る。変数
資源判断手段において、入力手段において、入力された
変数名がプログラムの変数であるかをデバッグ情報記憶
手段より得て判断し、もし、プログラムの変数であった
なら、デバッグ情報記憶手段よりプログラムの変数の資
源情報を得る。
【0033】コード実行手段において、生成コード記憶
手段より実行コードを得てプログラムを実行する。変数
操作手段において、一時変数資源判断手段、または、変
数資源判断手段より得られた資源情報における値をコー
ド実行手段に問い合わせて得る。出力手段では、変数操
作手段において得られた変数の値を出力する。
【0034】さらに、請求項5に記載の発明によると、
置換変数判断手段において、変数情報記憶手段より置換
情報を得て、入力手段で入力された変数が変数情報記憶
手段に含まれていた場合、置換された一時変数名を得
る。一時変数資源判断手段において、入力手段におい
て、入力された変数名が一時変数であるかを一時変数資
源情報記憶手段より得て判断し、もし、一時変数であっ
たなら、変数資源情報記憶手段より一時変数の資源情報
を得る。変数資源判断手段において、入力手段におい
て、入力された変数名がプログラムの変数であるかを変
数資源情報記憶手段より得て判断し、もし、プログラム
の変数であったなら、変数資源情報記憶手段より変数の
資源情報を得る。コード実行手段において、生成コード
記憶手段より実行コードを得てプログラムを実行する。
変数操作手段において、コード実行手段に対して、一時
変数資源判断手段より得られた資源情報を指定して変数
の値を問い合わせて得る。出力手段では、変数操作手段
において得られた変数の値を出力する。
【0035】さらに、請求項6に記載の発明によると、
計算式置換変数判断手段において、変数情報記憶手段よ
りプログラムの変数と一時変数の関係を表す式を得て、
入力手段で入力された変数が変数情報記憶手段から得ら
れた式に含まれる場合、計算式と式に含まれる一時変数
名を得る。一時変数資源判断手段において、入力手段に
おいて入力された変数名が一時変数であるかを一時変数
資源情報記憶手段より得て判断し、もし、一時変数であ
ったなら、一時変数資源情報記憶手段より一時変数の資
源情報を得る。変数資源判断手段において、入力手段に
おいて入力された変数名がプログラムの変数であるかを
変数資源情報記憶手段より得て判断し、もし、プログラ
ムの変数であったなら、変数資源情報記憶手段より変数
の資源情報を得る。コード実行手段において、生成コー
ド記憶手段より実行コードを得てプログラムを実行す
る。変数操作手段において、コード実行手段に対して、
一時変数資源判断手段より得られた資源情報を指定し
て、変数の値を問い合わせて得る。計算式適用手段にお
いて、変数操作手段で得られた一時変数の値と、計算式
置換変数判断手段から得た計算式より、プログラムの変
数の値を計算し、出力手段で値を出力する。
【0036】
【実施例】以下本発明の第1、第2、第3、の請求項に
基づくプログラム変換装置について第一の実施例を図面
を参照しながら説明する。図1は本発明のプログラム変
換装置の構成図を示すものである。101はプログラム
記憶部で、変換対象のプログラムが記憶されている。1
02は対応情報保持部で、最適化されたプログラムの変
数と一時変数の対応を保持する。103は生成コード記
憶部で、生成された実行コードを記憶する。104はデ
バッグ情報記憶部で、プログラムの変数と割り付けられ
た資源の対応を表すデバッグ情報を記憶する。105は
一時変数資源情報記憶部で、一時変数と割り付けられた
資源の対応を表すデバッグ情報を記憶する。106は変
数置換情報記憶部で、一時変数に置換されたプログラム
の変数の対応を記憶する。107は計算式置換情報記憶
部で、プログラムの変数を含む式と置換された一時変数
の関係を記憶する。108は内部表現変換部で、プログ
ラム記憶部101からプログラムを得て、プログラム変
換装置で使用する内部表現に変換する。109は内部表
現最適化部で、内部表現変換部108が変換した内部表
現を最適なコードを生成できるよう変換する。変換の過
程でプログラム中の変数や計算式を当該装置内でのみ使
用する一時変数で置き換える場合がある。110は資源
割り付け部で、内部表現最適化部109が最適化した内
部表現の中に存在する変数について資源を割り付ける。
111はコード生成部で、資源割り付け部110で資源
の割り付けを終えた内部表現をもとに実行コードを生成
する。112はデバッグ情報出力部で、資源割り付け部
110で割り付けられた資源と変数との対応を表すデバ
ッグ情報を生成する。113は一時変数資源情報出力部
で、対応情報保持部102に保持された一時変数と割り
付けられた資源を表すデバッグ情報を出力する。114
は一時変数最適化情報出力部で、変数置換情報出力部1
15と計算式置換情報出力部116から構成される。変
数置換情報出力部115は、変数から一時変数変数への
置換情報を対応情報保持部102から得て変数置換情報
記憶部106に出力する。計算式置換情報出力部116
は、変数を含む式から一時変数変数への置換情報を対応
情報保持部102から得て計算式置換情報記憶部107
に出力する。
【0037】一例を用いてその動作を説明する。図2の
(a)は実施例に使用するプログラムを表す。
【0038】内部表現変換部108により内部表現に変
換されるまでは従来例と同様である。内部表現変換部1
08により変換された内部表現を図2の(b)に示す。
【0039】次に、内部表現最適化部109は内部表現
に変換する。変換結果は従来例と同じである。図2の
(c)に変換された内部表現を示す。
【0040】この際、変換過程で行なった最適化は次の
2つである。 (1)プログラムの変数 x を一時変数 t1 に置換する。 (2)y = x + 3 と z = x + 3 に含まれる計算式 x + 3
を一時変数 t2 で置換される。新たにt2 = x + 3を生成
する(なお、xはt1で置換されているので t2 = t1+ 3と
なる)。
【0041】この二つの最適化の情報を対応情報保持部
102に記憶する。図3の(a)は対応情報保持部102
の内容である。図3の(a)中最初の項目である line は
図2の(c)中の該当行を表す。残りの二つの項目は置換
した変数と置換された内容を表す。
【0042】次にコード生成部111,デバッグ情報出
力部112は従来例と同様に実行コードとデバッグ情報
を生成し、生成コード記憶部103とデバッグ情報記憶
部104に出力する。図3の(b)は生成コード記憶部1
03の内容である。図3の(c)はデバッグ情報記憶部1
04の内容である。次に一時変数資源情報出力部113
は対応情報保持部102に記憶してある一時変数につい
て対応する資源の情報を一時変数資源情報記憶部105
に出力する。図3の(d)は一時変数資源情報記憶部10
5の内容である。
【0043】さらに、変数置換情報出力部115は対応
情報保持部102に記憶してある置換情報を変数置換情
報記憶部106に出力する。図3の(e)は変数置換情報
記憶部106の内容である。
【0044】計算式置換情報出力部116は対応情報保
持部102に記憶してある計算式を計算式置換情報記憶
部107に出力する。図3の(f)は計算式置換情報記憶
部107の内容である。
【0045】次に、本発明の第4、第5の請求項に基づ
く第2の実施例について示す。図4は本発明の第2の実
施例におけるデバッグ装置の構成図を示すものである。
【0046】201は変数置換情報記憶部であり、一時
変数に置換された変数が記憶されている。202は一時
変数資源情報記憶部であり、一時変数が最適化により割
り付けられた資源が記憶されている。203はデバッグ
情報記憶部であり、プログラムの変数が最適化により割
り付けられた資源が記憶されている。204は生成コー
ド記憶部であり、プログラム変換装置により生成された
実行コードが記憶されている。205は入力部であり、
オペレータが参照したい変数名と実行中の位置を行番号
で入力する。206は置換変数判断部であり、入力部2
05で入力された変数が置換されているか判断する。も
し置換されていたら、変数置換情報記憶部201より置
換した一時変数名を得る。207は一時変数資源判断部
であり、置換変数判断部206で得られた一時変数名に
対して一時変数資源情報記憶部202より資源情報を得
て、一時変数がどのレジスタ、または、メモリに割り付
けられているか情報を得る。208は変数資源判断部で
あり、入力部205で入力された変数が一時変数以外の
変数であった場合、デバッグ情報記憶部203よりプロ
グラムの変数に対する資源情報を得て、変数がどのレジ
スタ、または、メモリに割り付けられているか情報を得
る。209はコード実行部であり、生成コード記憶部2
03より実行コードを得て、入力部205で指定された
行まで実行する。210は変数操作部であり、一時変数
資源判断部207、又は、変数資源判断部208で得ら
れた資源情報に基づき、コード実行部209に問い合わ
せて、変数の値を得る。211は出力部で、変数操作部
210で得られた変数の値を表示する。本実行コードが
動作する環境は従来例で示した図19と同様である。
【0047】デバッグ装置の動作を図5のフローチャー
トを用いて示す。 (S01)オペレータは入力部205に対して参照したい変
数と,参照したい行を設定する。 (S02)置換変数判断部206において、指定された変数
が一時変数に置換されているか判断する。 (S03)もし一時変数に置換されている場合、(S04)に進
む。もし置換されていない場合は、(S06)に進む。 (S04)変数置換情報記憶部201より,置換先の一時変数
名を得る。 (S05)一時変数資源判断部207において、一時変数が
割り付けられた資源情報を一時変数資源情報記憶部20
2より得る。(S07)に進む。 (S06)変数資源判断部208において、プログラムの変
数が割り付けられた資源情報をデバッグ情報記憶部20
3より得る。 (S07)コード実行部209において、生成コード記憶部
204から実行コードを得て、入力部205で指定され
た行まで実行する。 (S08)変数操作部210で、コード実行部209に対し
て、一時変数資源判断部207、又は、変数資源判断部
208で得られた変数の資源情報を指定して変数の値を
得る。 (S09)出力部211において、変数操作部210で得ら
れた変数の値を出力する。 (おわり)。
【0048】次に、以上の基本動作の内容を具体例をと
って示す。サンプルとして使用するプログラムは第1の
実施例で使用した図2の(a)のプログラムと同一であ
る。
【0049】図6の(a)は入力部205を表す。図6の
(b)は出力部211を表す。図6の(c)は生成コード記憶
部204の内容を表す。図6の(d)はデバッグ情報記憶
部203の内容を表す。図6の(e)は一時変数資源情報
記憶部202の内容を表す。図6の(f)は変数置換情報
記憶部201の内容を表す。 (S20)オペレータは入力部205に対して、参照したい
変数名とプログラム中における行を指定する。図7の
(a)はオペレータが6行目を実行する際の変数x を値を
参照するために入力部205に設定した例である。 (S21)置換変数判断部205において、入力部205で
指定された変数が一時変数に置換されているかを調べ
る。 (S22)変数置換情報記憶部201を調べた結果、指定さ
れた6行目における変数xは一時置換されていると判断
し、置換先の一時変数t1を得る。 (S23)一時変数資源判断部207において一時変数t1に
割り付けられた資源情報を一時変数資源情報記憶部20
2より得る。この結果、一時変数t1は6行目において、
レジスタr0に存在すると判断する。 (S24)コード実行部209において、生成コード記憶部
203から実行コードを得て実行する。図7の(b)は、
6行目を実行する前に停止している状態を表す。図7の
(c)は、この時のレジスタの状態、図7の(d)は、この時
のメモリの状態を示す。 (S25)変数操作部210において、コード実行部209
に問い合わせてレジスタr0の値を得る。r0の値が12であ
った。レジスタr0は一時変数t1を表しており、変数xはt
1に置換されていたため、変数xが12であることが分か
る。 (S26)出力部211において、得られた変数xの値である
12を出力する。図7の(e)は出力例である。 (おわり)。
【0050】なお、第2の実施例において、変数操作部
は変数に対する設定操作のみを示したが、変数に対する
値の設定も実現可能である。また、本実施例ではデバッ
グ装置において、変数から一時変数への置換情報を用い
て資源を判断したが、プログラム変換装置において、一
時変数への置換情報を用いて変数に割り付けた資源情報
を判断し、出力することも可能である。
【0051】次に、本発明の第4、第6の請求項に基づ
く第3の実施例について示す。図8は本発明の第3の実
施例におけるデバッグ装置の構成図を示すものである。
第2の実施例の構成要素を示す図4と異なるのは変数置
換情報記憶部201、置換変数判断部206の代わり
に、計算式置換情報記憶部301、計算式置換変数判断
部306、計算式適用部311を設けた点である。それ
以外の構成要素は同じ動作をする。
【0052】301は計算式置換情報記憶部であり、一
時変数に置換された変数が式の形式で記憶されている。
302は一時変数資源情報記憶部であり、一時変数が最
適化により割り付けられた資源が記憶されている。30
3はデバッグ情報記憶部であり、プログラムの変数が最
適化により割り付けられた資源が記憶されている。30
4は生成コード記憶部であり、プログラム変換装置によ
り生成された実行コードが記憶されている。305は入
力部であり、オペレータが参照したい変数名と実行中の
位置を行番号で入力する。306は計算式置換変数判断
部であり、入力部305で入力された変数が一時変数を
含む式に置換されているか判断する。もし置換されてい
たら、計算式置換情報記憶部301より置換された一時
変数との関係を表す式を得る。307は一時変数資源判
断部であり、計算式置換変数判断部306で得られた一
時変数名に対して一時変数資源情報記憶部302より資
源情報を得て、一時変数がどのレジスタ、または、メモ
リに割り付けられているか情報を得る。308は変数資
源判断部であり、入力部305で入力された変数が一時
変数以外の変数であった場合、デバッグ情報記憶部30
3より資源情報を得て、どのレジスタ、または、メモリ
に割り付けられているか情報を得る。309はコード実
行部であり、生成コード記憶部304より実行コードを
得て、入力部305で指定された行まで実行する。31
0は変数操作部であり、一時変数資源判断部307、ま
たは、変数資源判断部308で得られた資源情報に基づ
き、コード実行部309に問い合わせて、変数の値を得
る。311は計算式適用部であり、オペレータが指定し
た変数が一時変数を含む式に置換されていた場合、変数
操作部310で得られた一時変数の値に対して、計算式
置換変数判断部306で得られた式を使って置換された
の変数の値を計算する。312は出力部で、計算式適用
部311で得られた変数の値を表示する。デバッグ装置
の動作を図9のフローチャートを用いて示す。 (S01)オペレータは入力部305に対して参照したい変
数と,参照したい行を指定する。 (S02)計算式置換変数判断部306において、変数が式
に置換されているか判断する。 (S03)もし式に置換されている場合、(S04)に進む。もし
式に置換されていない場合、(S05)に進む。 (S04)計算式置換情報記憶部301より置換された式と
式に含まれる変数を得る。 (S05)一時変数資源判断部307において一時変数が割
り付けられた資源を一時変数資源情報記憶部302から
得る。(S07)に進む。 (S06)変数資源判断部307においてプログラムの変数
が割り付けられた資源をデバッグ情報記憶部303より
得る。 (S07)コード実行部309において、生成コード記憶部
303から実行コードを得て、入力部304で指定され
た行まで実行する。 (S08)変数操作部310においてコード実行部309に
問い合わせて変数の値の参照を行なう。 (S09)計算式適用部311において、変数が式に置換さ
れていたか判断する。 (S10)もし式に置換されていた場合、(S11)に進む。もし
式に置換されていなかった場合、(S12)に進む。 (S11)置換された式と得られた一時変数の値からオペレ
ータが指定した変数の値を得る。 (S12)出力部312において、得られた変数の値を出力
する。 (おわり)。
【0053】次に、以上の基本動作の内容を具体例をと
って示す。
【0054】図10の(a)は生成コード記憶部304を
表す。図10の(b)はデバッグ情報記憶部303を表
す。図10の(c)は一時変数資源情報記憶部302を表
す。図10の(d)は計算式置換情報記憶部301を表
す。入力部305と出力部312は第2の実施例である
図6の(a)、図6の(b)に示すものと同じである。 (S20)オペレータは入力部305に対して、参照したい
変数名とプログラム中における行を指定する。図10の
(e)はオペレータが入力部305に対して、7行目を実
行する際の変数xを値を参照するためにに入力した例で
ある。 (S21)計算式置換変数判断部306において、入力部3
05で指定された変数xが一時変数を含む式に置換され
ているか調べる。 (S22)計算式置換情報記憶部301を調べた結果、指定
行7における変数xが置換されていると判断する。さら
に、変数xが置換された一時変数との関係を表す式を得
る。この結果、プログラムの変数xは、一時変数t2に置
換され、x+3=t2という式を得る。 (S23)一時変数資源判断部307において一時変数t2に
割り付けられた資源情報を一時変数資源情報記憶部30
2より得る。この結果、一時変数t2は12行目において
レジスタr1に存在すると判断する。 (S24)コード実行部309において、生成コード記憶部
303から実行コードを得て実行する。図11の(a)
は、7行目を実行する前に停止している状態を表す。こ
の時、レジスタの状態は、図11の(b),メモリの状態は
図11の(c)となる。 (S25)変数操作部310において、コード実行部309
に問い合わせてレジスタr1の値を得る。r1の値が15で
あり、よって、一時変数t2の値は15である。 (S26)計算式適用部311において、変数xが式に置換さ
れているため、x+3=t2という式を使って、一時変数の値
からオペレータが指定した変数xの値を計算する。一時
変数t2の値が15であるため、式を計算した結果、変数
xの値は、12であると判断する。 (S28)出力部312において、計算によって得られた変
数xの値12出力する。図12の(d)は出力部を表す。 (おわり)。
【0055】以上のように、プログラム変換装置の最適
化機能により、プログラムの変数を含む式が一時変数に
置換された場合であっても、デバッグ装置において、計
算式置換情報記憶部より置換を表す計算式を得て、実行
結果の値に対して、計算式を適用してプログラムの変数
の値を計算することにより値が参照可能となる。
【0056】なお、本実施例では、一時変数に置換され
たプログラムの式に含まれる変数に対して参照する例を
示したが、入力部で入力された値に対して計算式適用部
で一時変数の値を計算し、変数操作部で設定することに
より、プログラムの変数に対する値の設定も可能であ
る。
【0057】さらに、本実施例では、デバッグ装置にお
いて、計算式置換情報記憶部から、プログラムの変数と
一時変数の関係を表す計算式を得て、一時変数資源情報
記憶部から、一時変数がどの資源に割り付けられたか情
報を得て、まずプログラムの変数から式に含まれる一時
変数名を検索し、次に一時変数名から資源情報を検索し
たが、あらかじめプログラム変換装置において、計算式
置換情報記憶部と一時変数資源情報記憶部を検索して、
プログラム変数と資源情報の関係を得て、変数と資源情
報の関係を表す式を計算式置換情報記憶部に記憶する方
法も可能である。この場合、デバッグ装置では、計算式
置換情報記憶部に記憶された式を参照するだけでプログ
ラムの変数がどの資源にあるのか得ることができる。
【0058】
【発明の効果】以上のように本発明はプログラム変換装
置が生成した一時変数に関する情報をプログラム変換装
置からデバッグ装置に得て、一時変数の資源情報を判断
して、一時変数に対しても参照や設定を可能となる。従
来の最適化対応デバッグ装置では不可能であった、最適
化により一時変数に置換された変数や、一時変数を含む
式に置換された場合も最適化されていない場合と同様に
変数が参照や設定が可能となる。よって、本発明の実用
的効果は大きい。
【図面の簡単な説明】
【図1】本発明の第1の実施例におけるプログラム変換
装置の構成図
【図2】(a)は同実施例におけるプログラム記憶部の内
容を表す図 (b)は同じく、内部表現変換部により変換された内部表
現を表す図 (c)は同じく、内部表現最適化部により変換された内部
表現を表す図
【図3】(a)は同実施例における対応情報保持部の内容
を表す図 (b)は同じく、生成コード記憶部の内容を表す図 (c)は同じく、デバッグ情報記憶部の内容を表す図 (d)は同じく、一時変数資源情報記憶部の内容を表す図 (e)は同じく、変数置換情報記憶部の内容を表す図 (f)は同じく、計算式置換情報記憶部の内容を表す図
【図4】第2の実施例におけるデバッグ装置の構成図を
示す図
【図5】同実施例における動作をフローチャートを用い
て示す図
【図6】(a)は同実施例における入力部を表す図 (b)は同じく、出力部を表す図 (c)は同じく、生成コード記憶部の内容を表す図 (d)は同じく、デバッグ情報記憶部の内容を表す図 (e)は同じく、一時変数資源情報記憶部の内容を表す図 (f)は同じく、変数置換情報記憶部の内容を表す図
【図7】(a)は同実施例の入力部に対して変数名と行を
設定した例を示す図 (b)は同じく、6行目を実行する前に停止している状態
を表す図 (c)は同じく、レジスタの状態を示す図 (d)は同じく、メモリの状態を示す図 (e)は同じく、出力部における出力例を示す図
【図8】第3の実施例におけるデバッグ装置の構成図を
示す図
【図9】デバッグ装置の動作を表すフローチャート
【図10】(a)は同実施例における生成コード記憶部を
表す図 (b)は同じく、デバッグ情報記憶部を表す図 (c)は同じく、一時変数資源情報記憶部を表す図 (d)は同じく、計算式置換情報記憶部を表す図 (e)は同じく、オペレータが入力部に対して、入力した
例を示す図
【図11】(a)は7行目を実行する前に停止している状
態を表す図 (b)はレジスタの状態を表す図 (c)はメモリの状態を表す図 (d)は出力部の出力例を表す図
【図12】従来のプログラム変換装置の構成図
【図13】同従来例のプログラム記憶部の内容を表す図
【図14】(a)は同従来例の内部表現変換部が変換した
結果を表す図 (b)は同じく、内部表現最適化部が変換した結果を表す
図 (c)は同じく、内部表現最適化部が変換した結果を形式
を変えて表す図
【図15】(a)は同従来例の生成コード記憶部の内容を
表す図 (b)は同じく、デバッグ情報記憶部の内容を表す図
【図16】従来のデバッグ装置の構成を示す図
【図17】(a)は同従来例の入出力部を表す図 (b)は同じく、生成コード記憶部の内容を表す図 (c)は同じく、デバッグ情報記憶部の内容を表す図
【図18】(a)は同従来例の実行コードの実行途中段階
を示す図 (b)は同じく、レジスタの状態を表す図 (c)は同じく、メモリの状態を表す図 (d)は同じく、入出力部の状態を表す図
【図19】実行コードの動作環境を示す図
【図20】実行コードの命令一覧を示す図
【図21】実行コード中の転送命令を示す図
【図22】実行コード中の算術演算命令を示す図
【図23】実行コード中の比較・ジャンプ命令を示す図
【符号の説明】
101 プログラム記憶部 102 対応情報保持部 103 生成コード記憶部 104 デバッグ情報記憶部 105 一時変数資源情報記憶部 106 変数置換情報記憶部 107 計算式置換情報記憶部 108 内部表現変換部 109 内部表現最適化部 110 資源割り付け部 111 コード生成部 112 デバッグ情報出力部 113 一時変数資源情報出力部 114 一時変数最適化情報出力部 115 変数置換情報出力部 116 計算式置換情報出力部 201 変数置換情報記憶部 202 一時変数資源情報記憶部 203 デバッグ情報記憶部 204 生成コード記憶部 205 入力部 206 置換変数判断部 207 一時変数資源判断部 208 変数資源判断部 209 コード実行部 210 変数操作部 211 出力部 301 計算式置換情報記憶部 302 一時変数資源情報記憶部 303 デバッグ情報記憶部 304 生成コード記憶部 305 入力部 306 計算式置換変数判断部 307 一時変数資源判断部 308 変数資源判断部 309 コード実行部 310 変数操作部 311 計算式適用部 312 出力部 401 プログラム記憶部 402 生成コード記憶部 403 デバッグ情報記憶部 404 内部表現変換部 405 内部表現最適化部 406 資源割り付け部 407 コード生成部 408 デバッグ情報出力部 501 デバッグ情報記憶部 502 生成コード記憶部 503 入出力部 504 デバッガ部 505 変数資源判断部 506 コード実行部 507 変数操作部

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 プログラムからプログラムには存在しな
    い一時変数を使用して内部表現に変換し、内部表現に存
    在する変数に資源を割り付け、プログラムの変数と割り
    付けられた資源の対応を表すデバッグ情報と実行コード
    を出力するプログラム変換装置であって、一時変数とプ
    ログラムの変数の対応を保持する対応情報保持部と前記
    対応情報保持部に保持された一時変数と対応するプログ
    ラムの変数を表すデバッグ情報を出力する一時変数最適
    化情報出力部と前記対応情報保持手段に保持された一時
    変数と割り付けられた資源を表すデバッグ情報を出力す
    る一時変数資源情報出力部とを備えたプログラム変換装
    置。
  2. 【請求項2】 一時変数最適化情報出力部がプログラム
    の変数が対応情報保持部に保持された一時変数で置換さ
    れた場合は、プログラムの変数が一時変数に置換された
    情報を表すデバッグ情報を出力する変数置換情報出力部
    である請求項1記載のプログラム変換装置。
  3. 【請求項3】 一時変数最適化情報出力部がプログラム
    の変数と演算子で構成される計算式が対応情報保持部に
    保持された一時変数で置換された場合は、計算式が一時
    変数に置換された情報を表すデバッグ情報を出力する計
    算式置換情報出力部である請求項1記載のプログラム変
    換装置。
  4. 【請求項4】 プログラム変換装置が生成した実行コー
    ドを記憶した生成コード記憶部と、一時変数に関する資
    源割り付け情報を記憶した一時変数資源情報記憶部と、
    プログラムの変数に関する資源割り付け情報を記憶した
    デバッグ情報記憶部と、変数名を指定する入力部と、前
    記入力部で入力された変数名が一時変数であった場合、
    前記一時変数資源情報記憶部より資源割り付け情報を得
    て変数に対して割り付けられた資源を判断する一時変数
    資源判断部と、前記入力部で入力された変数名がプログ
    ラムの変数であった場合、前記デバッグ情報記憶部より
    資源割り付け情報を得て変数に対して割り付けられた資
    源を判断する変数資源判断部と、前記生成コード記憶部
    より実行コードを得てプログラムを実行するコード実行
    部と、前記コード実行部に対して、前記一時変数資源判
    断部、または、一時変数資源判断部で判断した資源を指
    定して変数の値を得る変数操作部と前記変数操作部で得
    られた変数の値を出力する出力部から構成されるデバッ
    グ装置。
  5. 【請求項5】 プログラムの変数名と置換された一時変
    数名を記憶する変数情報記憶部と、前記変数情報記憶部
    より置換情報を得て、入力部で入力された変数が前記変
    数情報記憶部に含まれていた場合、置換された一時変数
    名を得る置換変数判断部を追加した請求項4記載のデバ
    ッグ装置。
  6. 【請求項6】 プログラムの変数と一時変数の関係を式
    で表現して記憶する変数情報記憶部と、前記変数情報記
    憶部よりプログラムの変数と一時変数の関係を表す式を
    得て、入力部で入力された変数が前記変数情報記憶部で
    得られた式に含まれる場合、式と式に含まれる一時変数
    名を得る計算式置換変数判断部と、変数操作部で得られ
    た一時変数の値と、前記計算式置換変数判断部で得られ
    た式から、プログラムの変数の値を計算する計算式適用
    部を追加した請求項4記載のデバッグ装置。
JP7252710A 1995-09-29 1995-09-29 プログラム変換装置およびデバッグ装置 Pending JPH0997182A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP7252710A JPH0997182A (ja) 1995-09-29 1995-09-29 プログラム変換装置およびデバッグ装置
US08/828,430 US5881288A (en) 1995-09-29 1997-03-28 Debugging information generation system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7252710A JPH0997182A (ja) 1995-09-29 1995-09-29 プログラム変換装置およびデバッグ装置

Publications (1)

Publication Number Publication Date
JPH0997182A true JPH0997182A (ja) 1997-04-08

Family

ID=17241178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7252710A Pending JPH0997182A (ja) 1995-09-29 1995-09-29 プログラム変換装置およびデバッグ装置

Country Status (1)

Country Link
JP (1) JPH0997182A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008536236A (ja) * 2005-04-13 2008-09-04 テレフオンアクチーボラゲット エル エム エリクソン(パブル) コンピュータシステムにおけるデータ値の整合性(コヒーレンス:coherence)
JP2014029610A (ja) * 2012-07-31 2014-02-13 Fujitsu Ltd コード処理方法、情報処理装置およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008536236A (ja) * 2005-04-13 2008-09-04 テレフオンアクチーボラゲット エル エム エリクソン(パブル) コンピュータシステムにおけるデータ値の整合性(コヒーレンス:coherence)
JP2014029610A (ja) * 2012-07-31 2014-02-13 Fujitsu Ltd コード処理方法、情報処理装置およびプログラム

Similar Documents

Publication Publication Date Title
CN114115857B (zh) 一种机器学习模型自动化生产线构建方法及系统
US6922827B2 (en) Iterative software development environment with prioritized build rules
JP5307802B2 (ja) 外部デバッグのインフラストラクチャを使用するインプロセスのデバッグ
US8332845B2 (en) Compile timing based on execution frequency of a procedure
US8028268B2 (en) System and method for building software package for embedded system
US7089568B2 (en) Program control method, computer system, control program, and storage medium storing the control program
US20050195390A1 (en) Method of testing open services gateway initiative service platform and test tool using the method
KR19980086685A (ko) 원격으로 오브젝트를 실행하는 방법
JP2001508909A (ja) バーチャルマシン命令を処理するためのデータ処理装置
JPH10111818A (ja) バーストプロファイリング方法およびシステム
CN114510339B (zh) 一种计算任务调度方法、装置、电子设备及可读存储介质
US6981134B2 (en) Method and system for processing using a CPU and digital signal processor
CN114064152A (zh) 基于动态加载的嵌入式多核调试系统及其调试方法
US20040168157A1 (en) System and method for creating a process invocation tree
JPH0997182A (ja) プログラム変換装置およびデバッグ装置
US20050086632A1 (en) Interface method for a device driver
JPH08502375A (ja) コンピュータにて並列実行処理可能なオブジェクト指向プログラムの少なくとも1つのオブジェクトにおける少なくとも1つのテストの実施方法
JPH03184123A (ja) デジタルデータプロセッサのための手続き状態記述子システム
JPH10289110A (ja) プログラム変換装置とデバッグ装置
JP2795676B2 (ja) プログラムトレース装置
CN117873607A (zh) 自定义功能对应目标操作的处理方法及装置
JPH08320813A (ja) プログラムシミュレータ装置及びプログラムデバッグ方法
JPH10326192A (ja) Catv端末ソフトウェアプログラムダウンロードシステム
CN114528071A (zh) 一种应用检测方法、装置、设备和存储介质
JPH07319730A (ja) テスト・デバッグ方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040413