JPH1021086A - プログラム変換装置とデバッグ装置 - Google Patents
プログラム変換装置とデバッグ装置Info
- Publication number
- JPH1021086A JPH1021086A JP8169195A JP16919596A JPH1021086A JP H1021086 A JPH1021086 A JP H1021086A JP 8169195 A JP8169195 A JP 8169195A JP 16919596 A JP16919596 A JP 16919596A JP H1021086 A JPH1021086 A JP H1021086A
- Authority
- JP
- Japan
- Prior art keywords
- program
- optimization
- line
- information
- variable
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
わせでデバッグ装置に伝えることができ、最適化過程の
情報作成の負担を軽減する。 【解決手段】 プリミティブ記憶部102 には、最適化過
程の履歴情報が記録されている。入力部201 は、変数と
値、または実行停止させたい行を入力する。プリミティ
ブ合成部204 は、最適化過程を表す履歴情報を得る。コ
ード実行部206は、実行コードを実行する。変数操作部2
07 は、得られた変数と資源の関係に基づき変数の値を
得る。出力部208 は、得られた変数の値を表示する。行
表示部209 は、プログラム、または、生成された実行コ
ードを表示する。行情報表示部210 は、行に対して行な
われた最適化に関する情報を行単位に表示する。操作可
能変数表示部211 は、各行において、どの変数が設定参
照可能であるか行単位に表示する。最適化過程表示部21
2 は、変数に関してどのような最適化がなされたかを表
示する。
Description
おいて、プログラムを実行コードに変換するプログラム
変換装置と、プログラム変換装置によって生成された実
行コードにおける誤りを発見し、設計通りにソフトウエ
アが動作するか検証するデバッグ装置に関するものであ
る。
さらにコードサイズを縮小するため、最適化を行うプロ
グラム変換装置に対する要求が高まっている。最適化技
術の向上に伴い、プログラム変換装置が一時変数を生成
し、プログラムの変数を一時変数に置換した上で最適化
を行う方式が主流となっている。
グラム変換装置の構成を示すものである。図16におい
て、301はプログラム記憶部で、変換対象のプログラ
ムが記憶されている。302は生成コード記憶部で、生
成された実行コードを記憶する。303は最適化情報記
憶部で、変数と割り付けられたレジスタと範囲の対応を
表す情報を記憶する。304はデバッグ情報記憶部で、
プログラムの行と実行コードのアドレスの対応を示す行
アドレス記憶部部3041と、関数の情報を表す関数情
報記憶部3032からなる。関数情報記憶部3042の
内容として、関数の開始アドレス、関数の引数と変数の
名前と型、変数がスタックに確保される場合は、スタッ
クのオフセット値が記憶される。305は内部表現変換
部で、プログラムをプログラム記憶部301から得てプ
ログラム変換装置で使用する内部表現に変換する。30
6は最適化部で、内部表現変換部305が変換した内部
表現を最適なコードを生成できるよう変換する。最適化
部には、レジスタ割り当て部3061を有し、プログラ
ム中の変数をレジスタに割り当てる処理が行われる。3
07はコード生成部で、最適化部304で資源の割り付
けを終えた内部表現をもとに実行コードを生成し、生成
コード記憶部302に記憶する。また、レジスタに割り
当てられなかった変数をスタックに割り当てる。308
はデバッグ情報生成部で、行とアドレスの関係を行アド
レス記憶部3041に出力する。また、関数のアドレ
ス、関数の変数に関する情報を関数情報記憶部3042
に出力する。309は最適化情報生成部で、最適化部3
06で行われた結果を変数と資源と範囲の情報で表現
し、資源情報記憶部303に出力する。
置について、以下その動作について説明する。図17
(A)はプログラム記憶部301の内容を表す。内部表現
変換部305では、プログラム記憶部301よりプログ
ラムを得て、内部表現に変換する。次に、最適化部30
6では、内部表現変換部305で変換された内部表現に
含まれる変数に対してレジスタを割り当てる最適化を行
う。変数xにはレジスタD1、変数aにはレジスタD2、変数
zにはレジスタD3をそれぞれ割り当てる。この結果、最
適化された内部表現は図17(B)となる。次に、コード
生成部307で、実行コードを生成する。この結果、生
成コード記憶部には、実行コードが記憶される。生成コ
ード記憶部302の内容を図17の(C)に示す。次に、
デバッグ情報生成部307で、行とアドレスの関係をデ
バッグ情報記憶部304内の行アドレス記憶部3041
に出力する。関数の変数、関数の開始アドレスに関する
情報をデバッグ情報記憶部304内の関数情報記憶部3
042に出力する。デバッグ情報記憶部304の内容を
図18の(A)に示す。次に、最適化情報生成部309
で、変数と資源と有効範囲を最適化情報記憶部303に
出力する。この結果を図18の(B)に示す。
装置の一例について説明する。図19は従来のデバッグ
装置の構成を示すものである。図19において、301
はプログラム記憶部であり、プログラムが記憶されてい
る。302は生成コード記憶部であり、生成された実行
コードが記憶されている。303は最適化情報記憶部
で、変数と割り付けられたレジスタと範囲の対応を表す
情報が記憶されている。304はデバッグ情報記憶部
で、プログラムの行と実行コードのアドレスの対応を示
す行アドレス記憶部部3041と、関数の情報を表す関
数情報記憶部3042からなる。関数情報記憶部403
2の内容として、関数の開始アドレス、関数の引数と変
数の名前と型、変数がスタックに確保される場合は、ス
タックのオフセット値が記憶されている。401は入力
部であり、オペレータが設定や参照したい変数を指定す
る。402はコード実行部であり、生成コード記憶部3
02より実行コードを得て実行する。403は変数操作
部であり、入力部401で指定された変数の資源情報を
最適化情報記憶部303とデバッグ情報記憶部304よ
り得て、割り付けられた資源を判断し、コード実行部4
02に問い合わせて変数の値を得る。404は出力部で
あり、変数操作部403で得られた変数の値を表示す
る。405は行表示部であり、プログラム記憶部301
よりプログラムを得て停止行を含む関数を表示する。
いて、以下その動作について説明する。プログラム記憶
部301の内容を図20(A)に示す。生成コード記憶部
302の内容を図20(B)に示す。デバッグ情報記憶部
304の内容を図21(A)に示す。最適化情報記憶部3
03の内容を図21(B)に示す。オペレータは入力部4
01に対して、10行目における変数zの値を参照した
いと設定する。図22の(A)を参照。次に、コード実行
部402では、実行コードを生成コード記憶部302よ
り得て指定された10行目まで実行する。次に、変数操
作部403において、指定された変数zの資源を最適化
情報記憶部303より得て、変数zがレジスタD3に割り
当てられたと判断する。コード実行402に対してレジ
スタD3を参照し、変数の値が10であると判断する。次
に、出力部404において、変数yの値を出力する。図
22の(C)を参照のこと。次に、行表示部405におい
て、停止行を含む関数のプログラムを表示する。図22
の(B)を参照のこと。
ようなプログラム変換装置の構成では、プログラム変換
装置において、変数を別の変数で置換する最適化や、変
数を定数に置換する最適化や、これら最適化により不要
となった変数を削除する最適化等、新たな最適化が導入
された場合、最適化の結果を変数と資源または、変数と
資源を含む式の形式で表現するため、新しい最適化項目
を表現できない問題がある。
移動や削除が発生した時も、デバッグ装置に最適化結果
を伝えることができない。さらに、変数と資源の関係で
最適化過程を表現しようとすると、同一の変数に対して
複数回最適化が行なわれた場合、最適化が行なわれるた
びに、最適化情報を更新する必要がある。このため、プ
ログラム変換装置では最適化情報を更新するための処理
が複雑になる問題がある。
い最適化が行なわれた実行コードをユーザがデバッグす
る際、実行の順序がプログラム通りに行なわれない問題
や変数の値を設定した場合、他の値も同時に変わってし
まう問題が、コンパイル装置から、これらの最適化に関
する情報が伝えられないため、ユーザのデバッグ操作に
対して、警告や誤解を防ぐ対応ができず、ユーザはプロ
グラムの誤りを検出するのが困難になる問題がある。
換装置において行の削除、移動、変数の置換、移動、削
除といった複数の最適化処理が行なわれても、その過程
をデバッグ装置に伝えることができ、かつ、最適化過程
を表す情報の作成の負担を軽減することを可能とするプ
ログラム変換装置を提供することを目的する。
適化過程の情報に基づき、行の移動や削除、変数の削除
や置換等が発生した場合、ユーザに最適化結果を伝え、
変数の参照や実行コードの実行において、最適化過程を
表示し、ユーザに警告を出すことにより、デバッグを行
う際に発生する誤解や誤操作を防ぐことを可能にするデ
バッグ装置を提供することを目的とする。
に、本発明の請求項1記載のプログラム変換装置は、入
力されたプログラムを最適化する最適化処理手段を含
み、目的とする実行コードを生成し出力するプログラム
変換装置において、前記最適化処理手段は、それぞれが
異なる最適化機能を有する、複数の最適化単機能処理手
段から構成され、前記プログラム変換装置はさらに、前
記最適化単機能処理手段のそれぞれが行った最適化に関
する履歴情報をそれぞれの最適化機能に対応づける形式
で生成し出力する最適化単機能履歴情報生成手段を備え
たものである。
換装置は、請求項1記載のプログラム変換装置に対し
て、前記最適化単機能処理手段が有する最適化機能を基
本最適化機能とし、前記最適化処理手段はさらに、前記
基本最適化機能のいずれとも異なる第二の最適化機能を
有する第二最適化単機能処理手段を備え、前記最適化単
機能履歴情報生成手段はさらに、前記第二最適化単機能
処理手段が行った最適化に関する履歴情報を、前記基本
最適化機能を組み合わせた形式で生成する第二最適化単
機能履歴情報生成手段を含むようにしたものである。
換装置は、請求項1または2記載のプログラム変換装置
に対して、前記プログラムは、高級言語で記述されたプ
ログラムであり、前記プログラム変換装置はさらに、該
プログラムの構文を解析して中間的な記述言語に変換す
る内部表現変換手段を備え、前記最適化処理手段は、前
記内部表現変換手段によって変換されたプログラムに対
して前記中間的な記述言語のレベルでの最適化を行い、
前記プログラム変換装置はさらに、前記最適化処理手段
によって最適化されたプログラムを前記中間的な記述言
語から目的とする機械の機械言語に変換して実行コード
を生成する実行コード生成手段を備えるようにしたもの
である。
換装置は、請求項1から3記載のプログラム変換装置に
対して、前記最適化単機能処理手段が有する最適化機能
のそれぞれが、共通部分式最適化機能、不要コード最適
化機能、コピー伝搬最適化機能、定数伝搬最適化機能、
ループ不変式最適化機能およびレジスタ割り当て機能の
いずれかを含むようにしたものである。
換装置は、請求項1から4記載のプログラム変換装置に
対して、前記最適化単機能履歴情報生成手段における履
歴情報の生成を、前記プログラムをデバッグする際の該
プログラムの最小実行単位ごとに行うようにしたもので
ある。
換装置は、請求項5記載のプログラム変換装置に対し
て、前記最適化単機能処理手段が有する最適化機能が、
プログラムの前記最小実行単位の移動またはプログラム
中の変数の移動に関する最適化機能と、少なくとも1つ
の他の最適化機能とからなり、前記プログラム変換装置
はさらに、前記最適化単機能処理手段においてプログラ
ムの前記最小実行単位の移動またはプログラム中の変数
の移動に関する最適化がなされた場合に、前記最適化単
機能履歴情報生成手段が生成する履歴情報に前記他の最
適化機能に関する履歴情報を含むことを抑制する第一履
歴情報抑制手段を備え、前記第一履歴情報抑制手段によ
って抑制された履歴情報を出力するるようにしたもので
ある。
換装置は、請求項5または6記載のプログラム変換装置
に対して、前記プログラム変換装置はさらに、前記最適
化単機能履歴情報生成手段が前記最小実行単位ごとに履
歴情報を生成するに際し、前記最適化単機能履歴情報生
成手段が生成する履歴情報に、前記最小実行単位中に指
定されない変数の最適化機能に関する履歴情報を含むこ
とを抑制する第二履歴情報抑制手段を備え、前記第二履
歴情報抑制手段によって抑制された履歴情報を出力する
ようにしたものである。
換装置は、請求項7記載のプログラム変換装置に対し
て、前記第二履歴情報抑制手段は、前記最小実行単位中
に指定されない変数の資源割り当て情報を含むようにし
たものである。
換装置は、請求項5から8記載のプログラム変換装置に
対して、前記最小実行単位が、プログラムの行であるよ
うにしたものである。
置は、被デバッグプログラムを請求項1から9記載のプ
ログラム変換装置に入力し、該プログラム変換装置と結
合して動作するデバッグ装置において、前記プログラム
変換装置から実行コードを受け、該実行コードを実行
し、少なくとも該実行コードによって指示される実行資
源を含むコード実行手段と、利用者の要求に基づいて、
前記コード実行手段に対して前記実行資源の参照または
設定を行う実行資源操作手段と、前記プログラム変換装
置から前記プログラム変換装置における前記最適化単機
能履歴情報生成手段が生成した履歴情報を受け、前記履
歴情報が有する個々の最適化機能に関する情報を組み合
わせることにより、前記被デバッグプログラムから前記
実行コードを生成する際になされた最適化の過程を表す
最適化情報を合成する最適化情報合成手段と、前記最適
化情報合成手段によって合成された前記最適化情報の一
部と前記実行資源操作手段によって操作された実行資源
の内容とを、利用者の要求に基づいて表示する表示手段
とを備えたものである。
置は、請求項10記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成される前記最適化情報
は、前記被デバッグプログラム中に指定される変数と前
記実行資源との関係に関する情報、および、前記被デバ
ッグプログラムの行と前記実行コードとの対応関係に関
する情報の少なくとも一方を含むようにしたものであ
る。
置は、請求項10または11記載のデバッグ装置に対し
て、前記最適化情報合成手段における前記最適化情報の
合成を、前記プログラム変換装置から前記履歴情報を受
けた時に、前記被デバッグプログラムのすべてに亘って
行うか、または、利用者の要求があった時に、該要求に
応じて都度、前記被デバッグプログラムのうち該要求に
関係する部分を選んで行うようにしたものである。
置は、請求項12記載のデバッグ装置に対して、前記し
た2通りの、前記最適化情報合成手段における前記最適
化情報の合成の時期を、利用者が予め指定するか、また
は、前記被デバッグプログラム、前記実行コード、前記
履歴情報のいずれかの大きさに応じて切り替えるように
したものである。
置は、請求項10から13記載のデバッグ装置に対し
て、前記最適化情報合成手段によって合成された前記最
適化情報を、前記プログラム変換装置における前記最適
化単機能履歴情報生成手段が生成した履歴情報に書き戻
すようにしたものである。
置は、請求項10から14記載のデバッグ装置に対し
て、利用者の要求に基づいて前記表示手段が表示する前
記最適化情報の一部が、前記被デバッグプログラムから
前記実行コードを生成する際になされた最適化の過程の
内、該要求に関する箇所すべてであるようにしたもので
ある。
置は、請求項10から14記載のデバッグ装置に対し
て、前記最適化情報合成手段によって合成された前記最
適化情報に、前記被デバッグプログラム中の第一の変数
を異なる第二の変数に置換する内容の最適化情報を含
み、前記第二の変数は前記実行資源の一部に割り当てら
れ、利用者が前記第一の変数に所望値を設定する要求を
する場合に、前記実行資源操作手段は、前記コード実行
手段の前記実行資源の該一部に該所望値を設定し、前記
表示手段は、前記第一の変数に該所望値が設定された旨
と、前記第二の変数にも該所望値が設定された旨とを表
示するようにしたものである。
置は、請求項10または11記載のデバッグ装置に対し
て、前記最適化情報合成手段によって合成された前記最
適化情報に、前記被デバッグプログラム中の第一の変数
を異なる第二の変数に置換する内容の最適化情報を含
み、前記第二の変数は前記実行資源の一部に割り当てら
れ、利用者が前記第二の変数に所望値を設定する要求を
する場合に、前記実行資源操作手段は、前記コード実行
手段の前記実行資源の該一部に該所望値を設定し、前記
表示手段は、前記第二の変数に該所望値が設定された旨
と、前記第一の変数にも該所望値が設定された旨、また
は、前記第一の変数は置換されており該所望値への設定
ができない旨のいずれかとを表示するようにしたもので
ある。
置は、請求項10または11記載のデバッグ装置に対し
て、前記コード実行手段における前記被デバッグプログ
ラムの実行の中断中において、前記実行資源操作手段
が、前記被デバッグプログラムの該中断箇所を含む関数
が扱う変数について、該変数が割り当てられた前記実行
資源を参照し、前記表示手段が、前記実行資源操作手段
の参照によって得られた該変数の値と該変数に関する最
適化情報とを表示するようにしたものである。
置は、請求項18記載のデバッグ装置に対して、前記実
行資源操作手段が、前記被デバッグプログラムの該中断
箇所を含む関数が扱う全ての変数について、該変数が割
り当てられた前記実行資源を参照するようにしたもので
ある。
置は、請求項11記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成された前記最適化情報
に、前記被デバッグプログラムの第一の行の記載内容を
異なる第二の行に移動する内容の最適化情報を含む場合
に、前記表示手段は、該移動の内容を表示するようにし
たものである。
置は、請求項20記載のデバッグ装置に対して、前記表
示手段は前記の場合に、前記第一の行の内容を表示する
際に、第二の行に移動した旨を表示するか、または、前
記第二の行の内容を表示する際に、第一の行から移動さ
れた旨を表示するか、または、前記第一の行と前記第二
の行との内容を表示する際に、第一の行は第二の行に移
動し第二の行は第一の行から移動された旨を表示するよ
うにしたものである。
置は、請求項11記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成された前記最適化情報
に、前記被デバッグプログラムの第一の行の記載内容を
異なる第二の行に移動する内容の最適化情報を含む場合
に、前記表示手段は、前記被デバッグプログラムを表示
する際に、前記被デバッグプログラムの前記第一の行と
前記第二の行とを入れ替えて表示するようにしたもので
ある。
置は、請求項11記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成された前記最適化情報
に、前記被デバッグプログラムの第一の行の記載内容を
異なる第二の行に移動する内容の最適化情報を含む場合
に、前記表示手段は、前記被デバッグプログラムを表示
する際に、前記被デバッグプログラムの前記第一の行と
前記第二の行とを入れ替えずに表示するか、前記被デバ
ッグプログラムの前記第一の行と前記第二の行とを入れ
替えて表示するかを予め利用者が指定するようにしたも
のである。
置は、請求項11記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成された前記最適化情報
に、前記被デバッグプログラムの第一の行の記載内容を
異なる第二の行に移動する内容の最適化情報または前記
被デバッグプログラムの第一の行を削除する内容の最適
化情報を含む場合に、前記表示手段は、前記被デバッグ
プログラムの前記第一の行に含まれる変数が操作できな
い旨を表示するか、または、前記被デバッグプログラム
の前記第一の行に含まれる変数は操作しても正しくない
場合がある旨を表示するようにしたものである。
置は、請求項24記載のデバッグ装置に対して、前記表
示手段は前記の表示を、前記被デバッグプログラムの前
記第一の行に含まれる変数に対して、利用者が参照を要
求した場合、または、利用者が所望値を設定する要求を
した場合に行うようにしたものである。
置は、請求項11記載のデバッグ装置に対して、さら
に、前記コード実行手段における前記被デバッグプログ
ラムの実行が、予め利用者により指定された停止行にか
かると前記コード実行手段に対して実行の停止を指令す
るブレークポイント手段を備え、前記最適化情報合成手
段によって合成された前記最適化情報に、前記被デバッ
グプログラムの第一の行の記載内容を異なる第二の行に
移動する内容の最適化情報を含み、利用者が前記第一の
行を停止行として前記ブレークポイント手段に設定した
場合に、前記表示手段は、実行上は前記被デバッグプロ
グラムの前記第一の行で停止できない旨を表示するよう
にしたものである。
置は、請求項26記載のデバッグ装置に対して、前記表
示手段は、停止できない旨を表示するかわりに、実行上
は前記被デバッグプログラムの前記第二の行で停止する
旨を表示するようにしたものである。
置は、請求項11記載のデバッグ装置に対して、さら
に、前記コード実行手段における前記被デバッグプログ
ラムの実行が、予め利用者により指定された停止行にか
かると前記コード実行手段に対して実行の停止を指令す
るブレークポイント手段を備え、前記最適化情報合成手
段によって合成された前記最適化情報に、前記被デバッ
グプログラムの第一の行を削除する内容の最適化情報を
含み、利用者が前記第一の行を停止行として前記ブレー
クポイント手段に設定した場合に、前記表示手段は、実
行上は前記被デバッグプログラムの前記第一の行で停止
できない旨を表示するようにしたものである。
置は、請求項10、11、16、17、24または25
記載のデバッグ装置に対して、前記表示手段は、前記被
デバッグプログラムを表示する際に、前記被デバッグプ
ログラム中の変数の生存区間に関する情報を併せて表示
するようにしたものである。
置は、請求項29記載のデバッグ装置に対して、前記し
た併せて表示する情報を、前記被デバッグプログラム中
の変数の利用者による操作が可能な区間に関する情報と
するようにしたものである。
置は、請求項30記載のデバッグ装置に対して、前記し
た利用者による操作が可能な区間を、前記プログラム変
換装置から受ける履歴情報に該変数の最適化機能に関す
る情報を含むか否かにより決定するようにしたものであ
る。
置は、請求項29から31記載のデバッグ装置に対し
て、前記した生存区間に関する情報の表示または利用者
による操作が可能な区間の表示を、前記被デバッグプロ
グラムの行のそれぞれと対応づけて表示するようにした
ものである。
置は、請求項11および26から28記載のデバッグ装
置に対して、前記表示手段は、前記被デバッグプログラ
ムと前記実行コードとを同時に表示する際に、利用者に
より特定された前記被デバッグプログラムの行を表示す
るとともに、前記特定された前記被デバッグプログラム
の行に対応する前記実行コードの箇所を併せて表示する
ようにしたものである。
置は、請求項11および26から28記載のデバッグ装
置に対して、前記表示手段は、前記被デバッグプログラ
ムと前記実行コードとを同時に表示する際に、利用者に
より特定された前記実行コードの箇所を表示するととも
に、前記特定された前記実行コードの箇所に対応する前
記被デバッグプログラムの行を併せて表示するようにし
たものである。
置は、請求項33または34記載のデバッグ装置に対し
て、前記した前記被デバッグプログラムの行および前記
実行コードの箇所の利用者による特定を、カーソル移動
キーまたはマウスを用いて行うようにしたものである。
て、図1から図15を用いて説明する。まず本発明の実
施の形態におけるプログラム変換装置を示す。図1は本
発明のプログラム変換装置の構成図を示すものである。
プログラムが記憶されている。102はプリミティブ記
憶部で、最適化過程を表す情報素片で構成されるプリミ
ティブが記憶される。プリミティブの種類として、以下
である。行の移動、行の削除、変数の削除、変数の置
換、変数の移動、変数の変数である。ここで資源とは、
変数を表現するために割り当てられた実行コード中のレ
ジスタまたは、スタックである。また、プリミティブの
情報は行単位での処理の過程を表現する。103は生成
コード記憶部で、コード生成部110で生成された実行
コードを記憶する。104はデバッグ情報記憶部で、プ
ログラムの行と実行コードのアドレスの対応を示す。行
アドレス記憶部部1041と、関数の情報を表す関数情
報記憶部1042からなる。関数情報記憶部1042の
内容として、関数の開始アドレス、関数の引数と変数の
名前と型、変数がスタックに確保される場合は、スタッ
クのオフセット値が記憶される。105は内部表現変換
部で、プログラム記憶部より、プログラムを得て、最適
化部で使用する内部表現に変換する。106は最適化部
で、内部表現変換部105が変換した内部表現を最適な
コードを生成できるよう変換する。最適化部には、共通
部分式最適化部1061、定数伝搬最適化部1062、
コピー伝搬最適化部1063、ループ不変式最適化部1
064、不要コード最適化部1065、レジスタ割り当
て部1066から構成される。共通部分式最適化部10
61では、行に含まれる共通な式を変数に置換する。定
数伝搬最適化部1062では、変数への定数の代入式が
あり、かつ、代入式以降で使用されている変数が定数で
置換可能な場合に代入式の定数で代用する。コピー伝搬
最適化部1063では、変数の代入式があり、かつ、代
入された変数が代入式の右辺で置換可能な場合に、代入
式の右辺で代用する。ループ不変式最適化部1064で
は、ループに含まれる文の中で、ループの外に移動して
も実行結果に影響を与えない文をループの外に移動させ
る。不要コード最適化部1065では、最適化された結
果、実行不要なコードを削除する。レジスタ割り当て部
1066では、変数に対してレジスタを割り当て、レジ
スタで全ての変数を表せない時に、スタックに変数を確
保する。107はプリミティブ生成部で、最適化が行わ
れるつど、行われた最適化を表すプリミティブを生成す
る。プリミティブの種類と表現形式と意味を図2の(A)
に示す。最適化項目と生成されるプリミティブの関係を
図2の(B)に示す。108は移動行情報削除部で、プリ
ミティブ生成部107において、生成したプリミティブ
のうち、移動行に対して生成されたプリミティブである
場合、行の移動を表すプリミティブを残し、それ以外の
プリミティブ情報を削除する。109は不要変数情報削
除部で、移動行情報削除部108で削除後のプリミティ
ブに対して、不要な変数に関するプリミティブを削除す
る。削除の方法として、変数の資源を表すプリミティブ
のうちで、プログラム行に存在せず、かつ、置換、移動
を表すプリミティブに含まれない変数である場合、変数
の資源を表すプリミティブを削除する。110はコード
生成部で、最適化部106で最適化された内部表現から
実行コードを生成し、生成コード記憶部103に出力す
る。111はデバッグ情報生成部で、行とアドレスの関
係を行アドレス記憶部1041に出力する。また、関数
のアドレス、関数の変数に関する情報を関数情報記憶部
1042に出力する。
態によるプログラム変換装置について一例を用いてその
動作を説明する。
て、実行コードを実行するハードウエアモデルを図3に
示す。中央演算処理装置には、データ用のレジスタがD
0、D1、D2、D3、アドレス用のレジスタがA0、A1、A2、A
3が用意されている。また、現在実行中のアドレスを示
すプログラムカウンタPC、現在のスタックの先頭位置を
表すスタックポインタSPが用意されている。実行コード
とスタックはメモリ上に配置されている。
記憶されている。図4(A)はプログラム記憶部101に
記憶されているプログラムの例である。図4(A)におい
て、Line1は、関数testの開始を表す。また、関数test
の引数と返り値が存在しないことを表す。
数を宣言する。Line3は、変数bに100を代入する事を表
す。
ine5は、Line5からLine12までの行を無限に繰り返すこ
とを表す。
の返り値を変数xに代入することを表す。
とを表す。Line8は、引数をaとして、関数g1を呼び出す
事を表す。
表す。Line10は、引数をzとして、関数g2を呼び出す事
を表す。
出す事を表す。Line12は、Line5の繰り返しの範囲の終
りを表す。
現変換部105は、プログラム記憶部101からプログ
ラムを得て、文字列から内部表現に変換する。一般に内
部表現は構文解析木で表現されるが、本実施の形態では
説明の上で、プログラムに修正を加える方式で表現す
る。
部105で生成された内部表現に対して最適化処理を行
う。
て、共通する部分が存在しないので、共通部分最適化部
1061は何も処理しない。次に、定数伝搬最適化部1
062により、Line6の変数bは定数100に置換される。
また、コピー伝搬最適化部1063により、Line10の変
数zは変数xに置換される。また、ループ不変式最適化部
1064により、Line6の行はwhileの行の外に移動され
る。また、上記最適化により実行が不要になった行、Li
ne3、Line9は不要コード削除部1065により、削除さ
れる。この結果、最適化されたコードは図4の(B)とな
る。
ジスタ割り当て部1066において、レジスタの割り当
てを行う。変数b、変数zは使われないので、割り当てを
行なわない。変数aに対してはレジスタD1を割り当て、
変数xに対してはレジスタD2を割り当てる。この結果、
最適化されたコードは図4の(C)となる。
適化部106で発生した最適化を表すためのプリミティ
ブを出力する。本実施の形態では、プリミティブはプロ
グラムの行単位で出力されるものとする。また、変数の
資源を表すプリミティブも各行における変数と資源の関
係を表すものとする。本実施の形態において、デバッグ
装置の動作は、プログラム行の単位でのみ停止可能と
し、実行コードの行の単位では停止できないする仕様と
する。これにより、ユーザはプログラムの行単位におけ
る変数の値しか見ることができなくなるがプリミティブ
は、行単位で出力すればよく、情報量の削減が可能とな
る。変数の資源を表すプリミティブも、各プログラム行
における変数と資源の関係を出力するだけでよい。
106で発生したLine7における変数bから定数100の置
換を表すプリミティブ『置換b->100』を出力する。ま
た、Line10における変数zから変数xへの置換を表すプリ
ミティブ『置換z->x』を出力する。また、Line7におけ
る行の移動を表すプリミティブ『行移動To:Line4』を出
力する。Line3、Line9における行の削除を表すプリミテ
ィブ『行削除』を出力する。さらに、Line4において、
変数aにレジスタD1が割り当てられ、Line5、Line8、Lin
e10、Line11において設定参照可能となるため、変数の
資源を表すプリミティブ『資源a:D1』をLine5、Line8、
Line10、Line11の各行に出力する。また、Line6Line8Li
ne11の各行において、変数xにレジスタD2が割り当てら
れ、Line8、Line10、Line11の行において変数xが設定参
照可能となるため、変数の資源を表すプリミティブ『資
源x:D2』をLine8、Line10、Line11の行に出力する。こ
の結果、生成されたプリミティブの内容を図4の(D)に
示す。
プリミティブ生成部107で生成された情報量を低減さ
せるため、移動した行に含まれるプリミティブを削除す
る。図4の(D)に示すプリミティブにおいて、Line6か
らLine4の後ろに移動された行におけるプリミティブの
うち、行の移動以外は削除する。よって、Line6におい
て、移動を表すプリミティブ『行移動To:Line4』以外の
プリミティブを削除する。よって、置換を表すプリミテ
ィブ『置換b->100』は、削除される。
存在せず、かつ、変数の置換、変数の移動を表すプリミ
ティブに含まれない変数に対して出力された変数の資源
を表すプリミティブを削除する。Line5、Line6、Line1
0、Line11において、変数の資源を表すプリミティブ
『資源a:D2』が出力されているが、プログラムの行にお
いて、変数aは存在しない。よって、Line5、Line6、Lin
e10、Line11に出力されている変数の資源を表すプリミ
ティブ『資源a:D2』を削除する。Line8において、変数
の資源を表すプリミティブ『資源a:D2』が出力されてい
るが、プログラムの行に変数aが存在するため、削除し
ない。次に、Line10において、変数の資源を表すプリミ
ティブ『資源x:D3』が出力されている。プログラムには
変数xが使用されていないが、置換を表すプリミティブ
『置換z->x』が出力されているので、変数の資源を表す
プリミティブは削除しない。Line11において、変数の資
源を表すプリミティブ『資源x:D3』が出力されている。
プログラムに変数xが使用されているので、変数の資源
を表すプリミティブは削除しない。
ブ記憶部102に出力する。この結果、得られたプリミ
ティブ記憶部102の内容を図4の(E)に示す。
06で最適化された内部表現を実行コードに変換する。
変換された実行コードを生成コード記憶部103に出力
する。プログラム変換装置によって生成されたコードを
図5の(A)に示す。関数を呼び出す時、引数と返り値は
レジスタを用いるとし、関数で使用するレジスタは、関
数の開始時に保存し、関数の終了時に復元するものとす
る。
ある。0x100の前のtest:は、ラベルを表す。
サブルーチン_initの呼びだしを表す。
とを表す。0x10Cは、D2と100を乗算し、結果をD2に代入
することを表す。
す。0x110は、レジスタD2をレジスタD0に代入して、引
数を渡す。
す。0x118は、サブルーチン_getData1の呼びだしを表
す。
して、返り値を得る。0x120は、レジスタD2をレジスタD
0に代入して、引数を渡す。
す。0x128は、レジスタD2をレジスタD0に代入して、引
数を渡す。
す。0x130は、ラベルLoopにジャンプすることを表す。
は、サブルーチンtestからコールした関数へ戻ることを
表す。
ード生成部110で決定された、プログラムの行と生成
された実行コードのアドレスの関係を行アドレス記憶部
1041に出力する。また、関数とアドレスの関係、関
数の変数に関する情報を関数情報記憶部1042に出力
する。この結果、作成されたデバッグ情報記憶部104
の内容を図5の(b)に示す。
グ装置を示す。図6は本発明の実施の形態におけるデバ
ッグ装置の構成図を示すものである。
が記憶されている。102はプリミティブ記憶部で、最
適化過程を表すプリミティブが記憶されている。103
は生成コード記憶部で、実行コードが記憶されている。
104はデバッグ情報記憶部で、プログラムの行と実行
コードのアドレスの対応を示す行アドレス記憶部104
1と、関数の情報を表す関数情報記憶部1042からな
る。関数情報記憶部1042の内容として、関数の開始
アドレス、関数の引数と変数の名前と型、変数がスタッ
クに確保される場合は、スタックのオフセット値が記憶
されている。201は入力部で、ユーザが参照したい変
数、または設定したい変数と値を入力する。または、実
行停止させたい行を入力する。202は移動削除変数判
定部で、入力部201で入力された変数が、変数が含ま
れる行の前後の移動行または削除行に含まれているか判
断し、もし含まれている場合、移動、削除行をユーザに
通知し、プログラムの記述通り値が設定、参照されない
場合があること出力部208に表示する。203はブレ
ークポイント設定部で、ユーザの指定した行に対してブ
レークポイントを設定する。さらに、プリミティブ記憶
部102から情報を得て、指定された行が移動行である
か判断し、もし移動行であるなら、出力部208に対し
て実行の順序がプログラムの通りにならない事を表示す
る。204はプリミティブ合成部で、プリミティブ記憶
部102から最適化過程を表すプリミティブを得て、ど
のような最適化がなされたかを調査し、変数がどの資源
に割り当てられているかを得る。この合成とは、プリミ
ティブを辿りながら変数がどの資源に割り当てられてい
るか、行が最終的にどの行に移動したかを調査するもの
である。例えば、Line10において、変数zは置換情報が
出力され、変数zが変数xに置換されている、また変数x
の資源はレジスタD2である。よって、これらのプリミテ
ィブを合成することにより、変数zはD2に存在するとい
う新しい情報を得る。この処理を合成と呼ぶ。一旦合成
して得られた情報は、『合成z:D2』の形式でプリミティ
ブ記憶部102に出力することにより、2回目からの合
成は不要となる。205は合成起動判断部で、プリミテ
ィブの合成を、デバッグ装置起動時に合成するか、変数
参照時に合成するかを判断する。もし、デバッグ装置起
動時に合成すると判断した場合は、プリミティブ合成部
204を起動し、ユーザからの変数の参照に関する指示
が入力される前に全ての行におけるプリミティブを合成
する。もし、変数参照時に合成すると判断した場合は、
ユーザからの変数の参照に関する指示が入力される時点
で、その行におけるプリミティブを合成する。本実施の
形態における判断基準として、プリミティブの情報量に
基づき決定する方法、プログラム行の行数に基づき決定
する方法、実行コードのコードサイズに基づき決定する
方法がある。本実施の形態では、プログラム行の行数が
一定量以上である場合にデバッグ装置を起動時にプリミ
ティブを合成するものとする。206はコード実行部
で、生成コード記憶部103より実行コードを得て、実
行する。コード実行部206は、シミュレータ、モニ
タ、インサーキットエミュレータのいずれかで構成され
る。207は変数操作部で、プリミティブ合成部204
得られた変数と資源の関係に基づきコード実行部206
に問い合わせて変数の値を得る。また、変数に対して値
を設定する。もし、ユーザが指定した変数が置換された
変数である場合、出力部に対して、置換された変数の値
が変化することを出力する。208は出力部で、変数操
作部207で得られた変数の値を表示する。209は行
表示部で、プログラム、または、生成された実行コー
ド、または、両方を表示する。さらに、現在の実行停止
位置を示す矢印を表示する。210は行情報表示部で、
行に対して行なわれた最適化に関する情報をプリミティ
ブ記憶部102より得て行単位に表示する。211は操
作可能変数表示部で、各行において、どの変数が設定参
照可能であるかプリミティブ合成部204を用いて調査
し、設定参照可能である変数に対して行単位にマーク付
けして表示する。212は最適化過程表示部で、変数に
関してどのような最適化がなされたかを表示する。21
3は表示順序切替部で、行表示部209、行情報表示部
210、操作可能変数表示部211における行の表示の
順序をユーザの要望に応じて切替える。もし、ユーザか
ら、行の表示をプログラムの順番ではなく、最適化によ
り行が入れ替わった結果の順番で表示せよと要望があっ
た時、プリミティブ記憶部102より、行の移動に関す
る情報を得て、行を入れ替えた上で、行表示部209、
行情報表示部210、操作可能変数表示部211の行の
表示を行う。214は変数自動表示部で、実行停止した
行における変数の値と最適化過程をプリミティブ合成部
と変数操作部を用いて表示する。215は連動行表示制
御部で、行表示部209において、プログラムと生成さ
れた実行コードの両方を表示する際、プログラムと生成
された実行コードの関係を明示してどの行が対応づいて
いるか表示すると共に、表示開始行を変更するさい、プ
ログラムと実行コードの両方の開始位置を共に変更す
る。また、どの行を表示するかの指定方法として、カー
ソル移動キーと呼ばれるキーを用いて変更するとする。
カーソル移動キーには、カーソル上移動キーとカーソル
下移動キーを用いる。
を図7のフローチャートを用いて説明する。
始行を調査対象行とする。 (S02)入力部201において、ユーザが設定または参照
のために指定した変数と同じ変数が調査対象行において
存在するか、プログラム記憶部101よりプログラムを
得て調べる。
数が調査対象行に存在する場合は、(S04)に進む。存在
しない場合は(S11)に進む。
ミティブを得て、調査対象行が最適化により移動、また
は、削除されていないか、または、最適化により行に存
在した変数が削除されていないか調査する。
(S06)に進む。そうでないなら(S07)に進む。
の移動を表すプリミティブより得て、出力部208に対
して、『操作された変数が含まれるXXX行は、YYY行に移
動されています。プログラム通りに設定、参照されない
場合があります』と出力する。(S11)に進む(ここで、X
XXは調査対象行、YYYは移動先の行を表す)。
(S08)に進む。そうでないなら(S09)に進む。
た変数が含まれるXXX行は削除されています。プログラ
ム通りに設定、参照されない場合があります』と出力す
る。(S11)に進む(ここで、XXXは調査対象行を表す)。
したら、(S10)に進む。そうでないなら(S11)に進む。
た変数はXXX行において削除されています。プログラム
通りに設定、参照されない場合があります』と出力す
る。(S11)に進む(ここで、XXXは調査対象行を表す)。
査が終了したら、処理を終了する。そうでないなら、(S
12)に進む。
める。(S02)に進む。 (終り)ブレークポイント設定部203のアルゴリズム
を図8のフローチャートを用いて説明する。
設定する。ブレークポイントの設定方法と動作は図9の
フローチャートに示す。
をプリミティブ記憶部102より得る。
在する場合は、(S04)に進む。そうでないなら処理を終
了する。
移動先の行を得て、『指定された行は移動しています。
YYY行目の実行後に停止します』と表示する(ここで、Y
YYは移動先の行を表す)。
9の(A)のフローチャートを用いて説明する。
る実行コードのアドレスを、行アドレス記憶部1041
より得る。
みを発生させる命令を書き込む。 (S03)割り込みが発生した時に、デバッグ装置を制御す
るプログラムに実行が移るように割り込み処理を設定す
る。
(B)のフローチャートを用いて説明する。
る。
制御するプログラムの実行が開始される。
が実行され、デバッグ装置においてユーザの入力を受け
付ける。
リズムを図10のフローチャートを用いて説明する。
報記憶部1042より得る。 (S02)行表示部209において表示しているプログラム
の表示開始行を調査対象行とする。
して、調査対象行において、設定参照が可能であるか、
プリミティブ合成部204を用いて調べる。ここで、設
定可能とは、変数に対応する資源が存在する場合であ
る。参照可能とは、変数に対応する資源が存在する場
合、または、変数が変数、または、定数に置換されてい
る場合である。
合、(S05)に進む。そうでないなら(S06)に進む。
査対象行に該当する行にマークをつける。
に進む。そうでないなら、残る変数に対して調査するた
め(S03)に進む。
ログラムの全行に対して調査が終了したら終了する。そ
うでないなら、(S08)に進む。
進む。 (終り)連動表示制御部215の表示開始時のアルゴリ
ズムを図11のフローチャートを用いて説明する。
憶部101より得たプログラムを表示するプログラム表
示と生成コード記憶部103より得た実行コードを表示
する実行コード表示を設ける。
式より表示開始位置を得て、行表示部209のプログラ
ム表示の開始行を設定する。
対応する実行コードのアドレスを行アドレス記憶部10
41より得て、行表示部209の実行コード表示の表示
開始アドレスに設定する。
おいて、実行停止位置に反転行を設定する。
対応する実行コードのアドレスを行アドレス記憶部10
41より得て、行表示部209の実行コード表示で反転
させるアドレスに設定する。
置を示す矢印を現在停止している位置に設定する。
て、カーソル上移動キー、カーソル下移動キーが押下さ
れた時のアルゴリズムを図12のフローチャートを用い
て説明する。
たキーがカーソル下移動キーである場合、(S02)に進
む。そうでないなら、(S03)に進む。
たキーがカーソル上移動キーである場合、(S06)に進
む。そうでないなら、終了する。
表示における反転行を一行分下げる。
はみでる場合は、(S05)に進む。そうでないなら、(S09)
に進む。
表示の開始行を一行分増やし、プログラム表示をスクロ
ールさせる。(S09)に進む。
表示における反転行を一行分下げる。
はみでる場合は、(S08)に進む。そうでないなら、(S09)
に進む。
表示の開始行を一行分減らし、プログラム表示をスクロ
ールさせる。
対応する実行コードのアドレスを行アドレス記憶部10
41より得て、行表示部209の実行コード表示の表示
開始アドレスに設定する。
対応する実行コードのアドレスを行アドレス記憶部10
41より得て、行表示部209の実行コード表示で反転
させるアドレスに設定する。
置を示す矢印を現在停止している位置に設定する。
実施の形態におけるデバッグ装置について一例を用いて
その動作を説明する。
ラム記憶部101に記憶されているプログラムは図13
の(A)である。プリミティブ記憶部102に記憶されて
いるプリミティブは図13の(B)である。生成コード記
憶部103に記憶されている実行コードは図13の(C)
である。デバッグ情報記憶部104内の行アドレス記憶
部1041と関数情報記憶部1042の内容は図13の
(D)である。
動時、プリミティブ合成部204を起動時に合成すべき
か、または、ユーザのデバッグ操作に応じてするか判断
する。本実施の形態では、プログラムの行が10行以上な
ので、ユーザの操作に応じて、プリミティブを合成する
と判断する。
における変数zの値を20に設定』と入力する。
参照すると指定した変数zに関して、変数zを含む行がLi
ne10の前後において移動、または、削除されていないか
プリミティブ記憶部102から行に関する最適化情報を
得てを調べる。この結果、Line:9において、変数zがプ
ログラム中に使用され、かつ、削除された行であると判
断する。
としてる変数zはLine:9に含まれていますが行が削除さ
れました。プログラムの記述通り設定、参照できない場
合があります。』と表示する。
ィブ記憶部102から、Line10における変数zの資源を
得る。Line10における置換を表すプリミティブ、『置換
z->x』と、変数の資源表すプリミティブ『資源x:D2』の
情報を得て、『合成z:D2』の情報を作成する。また、得
られた情報をプリミティブ記憶部102に出力する。次
に、コード実行部206では、Line10まで実行させる。
プログラムLine10に該当するアドレスをデバッグ情報記
憶部104より得て、0x120と判断する。生成コード記
憶部103より実行コードを得て、0x120まで実行させ
る。
部204で得られた変数と資源の関係より、コード実行
部206に対して、変数xの値を表すレジスタD2の値を
得る。レジスタD2の値が12である場合、出力部208に
対して『変数zの値は12です』と表示する。さらに、レ
ジスタD2に対して、ユーザが指定した値を設定する。さ
らに、出力部208に対して『変数zの値を20に設定し
ました』と表示する。さらに、変数zは変数xに置換され
ているので、出力部208に対して『変数xは変数zに置
換されていますので、変数xの値も変わります』と表示
する。
ミティブ合成部204で変数の資源を得る際に得られた
情報である変数zの最適化過程を表すため、『変数zは変
数xに置換されました。』と表示する。
対して、プログラムの順番で表示せよと指定する。本実
施の形態のデバッグ装置では、行表示部209におい
て、実行停止している行が含まれる関数の開始から表示
するものとする。現在Line10で停止しており、関数test
に含まれるので、行表示部209では、関数の開始行で
あるLine7からLine13まで表示する。
いて、どのような行に対する最適化がなされたかをプリ
ミティブ記憶部102から得て表示する。本実施の形態
のデバッグ装置では、行の移動、削除を表示する。
リミティブから、操作可能な変数を判断し、もしその行
で、デバッグ情報、または、プリミティブが出ている場
合には、参照、または、設定が可能な変数であると判断
し、○をつける。
報記憶部1042より、関数内で使用される変数を得
る。この結果、変数a、b、x、zを得る。各変数に対し
て、Line10における、値をプリミティブ合成部204と
変数操作部207を起動して調べる。
プリミティブが出力されず、かつ、スタックにも確保さ
れていないので、変数aは参照できないと判断する。
て設定参照不可能と表示する。変数bも同様に、プリミ
ティブが出力されず、かつ、スタックにも確保されてい
ないので、変数bは参照できないと判断する。変数自動
表示部215では、変数bに対して設定参照不可能と表
示する。変数xはプリミティブ記憶部102において、
変数の資源を表すプリミティブ『資源x:D3』が出力され
ているので、変数xがレジスタD3に割り当てられている
と判断する。
値を参照し、変数xの値が20であることを得る。変数自
動表示部215では、変数xに対して値が20であると表
示する。
て、変数zのプリミティブをプリミティブ記憶部102
から得る。この結果、置換を表すプリミティブ『置換z-
>x』と、変数の資源を表すプリミティブ『資源x:D3』を
得て、変数zは変数xに置換されていると分かる。変数自
動表示部215では、変数zに対して変数xに置換されて
おり、20であると表示する。
(A)となる。次に、ユーザは、表示順序切替部213に
対して、最適化された行の順番で表示せよと指定する。
この時、表示順序切替部213では、プリミティブ記憶
部102より、行の移動の情報を得る。この結果、Line
6がLine4の後ろに移動したことを表すプリミティブを得
る。Line6をLine4の後ろに移動させた上で行表示を行
う。また、同様に、行情報表示部210、操作可能変数
表示部211における行の表示の順番も入れ替える。こ
の結果、行情報表示部210と行表示部209と操作可
能変数表示部211の表示は、図14の(B)となる。そ
の他の部分は図14の(A)と同じである。
対して、プログラムと実行コードの両方を連動表示せよ
と指定する。現在の停止位置はLine10であるので、連動
表示におけるプログラム表示の表示開始位置をLine7と
する。次に、Line7におけるアドレスの値をデバッグ情
報記憶部104の行とアドレスの情報より得て、アドレ
スが0x108であると得る。行表示部209に対して、プ
ログラムをLine7から表示し、実行コードを0x108から表
示を開始せよと指定する。また、現在の停止位置がLine
7であるので、停止位置を示す矢印をLine7に表示する。
また、プログラムの行と実行コードのアドレスの対応付
けを示すため、プログラム表示の行と実行コード表示の
行を反転させる。表示の初期反転位置は、実行停止位置
なので、Line10を反転させる。また、Line10のアドレス
をデバッグ情報記憶部104の行とアドレスの情報より
得て、0x120と分かる。行表示部209に対して、Line1
0と0x120の位置に反転表示するよう指定する。この結
果、図15の(A)となる。
たいと思い、カーソル上移動キーを押下する。連動表示
制御部215では、行表示部209におけるプログラム
表示の反転をLine10からLine9に変更する。次に、Line9
に該当するアドレスをデバッグ情報記憶部104の行ア
ドレス記憶部1041より得ようとするが、存在しな
い。よって、行表示部209における実行コード表示の
反転を行なわない。
見たいと思い、カーソル上移動キーを押下する。連動表
示制御部215では、行表示部209におけるプログラ
ム表示の反転をLine9からLine8に変更する。次に、Line
8に該当するアドレスをデバッグ情報記憶部104の行
アドレス記憶部1041より得る。この結果、Line8の
アドレスは、0x118であると分かる。実行コードの表示
における反転を0x120の位置から、0x118に変更する。こ
の結果図15の(B)となる。
見たいと思い、カーソル上移動キーを押下する。現在、
行表示の開始と、反転位置が同じであるので、行表示部
209のプログラムの表示開始行をLine7に変更する。L
ine7に該当するアドレスをデバッグ情報記憶部104の
行アドレス記憶部1041より得て、0x108であると分
かる。よって、行表示部209の実行コードの表示開始
アドレスを0x108に変更する。
表示の反転をLine8からLine7に変更し、実行コードの反
転を0x120の位置から、0x118に変更する。この結果、デ
バッグ装置の表示は図15の(C)となる。
して、ユーザがLine6にブレークポイントを設定せよと
指定する。この時、ブレークポイント設定部203で
は、デバッグ情報記憶部104より、Line6のアドレス
を得て、0x104のアドレスを得る。この結果、0x104にブ
レークポイントを設定する。次に、指定された行が移動
行であるか判断するため、プリミティブ記憶部102よ
り、行の移動に関する情報を得る。この結果、Line6に
は、行の移動をあらわすプリミティブが出ていたため、
移動行であると判断し、Line6がLine4の後ろに移動した
ことを得る。出力部208において、ユーザに対して、
『指定したLine6はLine4に移動しています。停止はLine
4実行後に停止します』と表示する。
換装置のプリミティブ生成部107において、最適化過
程を変数の置換、変数の削除、変数の資源、行の削除、
行の移動といった汎用性の高い情報を用いて表現してい
る。このため最適化部106において新しい最適化項目
が導入されても、あらかじめ用意したプリミティブを組
み合わせることにより最適化過程を表現可能である。
の変数操作部207において、変数が別の変数に置換さ
れた場合は、置換された結果の変数に対して変数の値を
設定していたが、出力部208でユーザに対して、『置
換されていますので設定できません』と警告を出すのに
とどめることも可能である。
象が、置換先の変数、置換元の変数のいずれであって
も、警告を出すことも可能である。この場合、変数xが
変数yに置換され、ユーザが変数yに対して操作しようと
した場合、出力部208でユーザに対して『変数yは変
数xから参照されています。変数xの値も変わります』と
出すことにより、ユーザに知らないままに、置換元の変
数の値が変わってしまう事を防ぐことが可能となる。
ザが変数の値を設定しようとした時に、変数操作部20
7は、出力部208に対して、『変数は別の変数から参
照されています』と警告を出すことにより、ユーザが誤
って別の変数も同時に変えるのを防ぐことも可能とな
る。
は、設定された行が削除された行である場合、出力部2
08に対して、『削除されていますのでブレークポイン
トは設定できません』と表示することも可能である。
換された変数も操作可能としてマークして表示していた
が、スタックに確保されるかまたは、資源割り当てされ
た変数のみマークすることも可能である。
動、削除行に含まれる変数と削された変数を調査対象と
したが、置換された変数も対象とすることにより、他の
行で置換された変数に対して操作しようとした場合、ユ
ーザに警告を出すことが可能となる。
れた行の順番で表示する場合、移動行を移動された結果
に基づき表示していたが、削除された行を表示しないこ
とにより、最適化結果を表現することが可能である。ま
た、変数に関して、置換された変数が存在した場合、置
換された結果の変数でプログラムを表示することによ
り、変数が何に置換されたか明示することが可能であ
る。
のプログラム変換装置は、入力されたプログラムを最適
化する最適化処理手段を含み、目的とする実行コードを
生成し出力するプログラム変換装置において、 前記最
適化処理手段は、それぞれが異なる最適化機能を有す
る、複数の最適化単機能処理手段から構成され、前記プ
ログラム変換装置はさらに、前記最適化単機能処理手段
のそれぞれが行った最適化に関する履歴情報をそれぞれ
の最適化機能に対応づける形式で生成し出力する最適化
単機能履歴情報生成手段を備えたものである。この構成
によれば、プログラム変換装置が出力する履歴情報を、
用いるデバッグのための手段の機能に束縛されないよう
にすることができる。
換装置は、請求項1記載のプログラム変換装置に対し
て、前記最適化単機能処理手段が有する最適化機能を基
本最適化機能とし、前記最適化処理手段はさらに、前記
基本最適化機能のいずれとも異なる第二の最適化機能を
有する第二最適化単機能処理手段を備え、前記最適化単
機能履歴情報生成手段はさらに、前記第二最適化単機能
処理手段が行った最適化に関する履歴情報を、前記基本
最適化機能を組み合わせた形式で生成する第二最適化単
機能履歴情報生成手段を含むようにしたものである。こ
の構成によれば、新しい最適化機能がプログラム変換装
置に導入されても、用いるデバッグのための手段におい
てその最適化機能に容易に対応することができる。
換装置は、請求項1または2記載のプログラム変換装置
に対して、前記プログラムは、高級言語で記述されたプ
ログラムであり、前記プログラム変換装置はさらに、該
プログラムの構文を解析して中間的な記述言語に変換す
る内部表現変換手段を備え、前記最適化処理手段は、前
記内部表現変換手段によって変換されたプログラムに対
して前記中間的な記述言語のレベルでの最適化を行い、
前記プログラム変換装置はさらに、前記最適化処理手段
によって最適化されたプログラムを前記中間的な記述言
語から目的とする機械の機械言語に変換して実行コード
を生成する実行コード生成手段を備えるようにしたもの
である。この構成によれば、プログラムが高級言語で記
述されていても同様の効果が得られる。
換装置は、請求項1から4記載のプログラム変換装置に
対して、前記最適化単機能履歴情報生成手段における履
歴情報の生成を、前記プログラムをデバッグする際の該
プログラムの最小実行単位ごとに行うようにしたもので
ある。この構成によれば、用いるデバッグのための手段
においてコードの範囲の比較が不要で、利用者の要求に
対する応答速度が向上する。また、履歴情報の情報量が
削減される場合もある。
換装置は、請求項5記載のプログラム変換装置に対し
て、前記最適化単機能処理手段が有する最適化機能が、
プログラムの前記最小実行単位の移動またはプログラム
中の変数の移動に関する最適化機能と、少なくとも1つ
の他の最適化機能とからなり、前記プログラム変換装置
はさらに、前記最適化単機能処理手段においてプログラ
ムの前記最小実行単位の移動またはプログラム中の変数
の移動に関する最適化がなされた場合に、前記最適化単
機能履歴情報生成手段が生成する履歴情報に前記他の最
適化機能に関する履歴情報を含むことを抑制する第一履
歴情報抑制手段を備え、前記第一履歴情報抑制手段によ
って抑制された履歴情報を出力するるようにしたもので
ある。この構成によれば、履歴情報の情報量の増大を抑
制することができる。
換装置は、請求項5または6記載のプログラム変換装置
に対して、前記プログラム変換装置はさらに、前記最適
化単機能履歴情報生成手段が前記最小実行単位ごとに履
歴情報を生成するに際し、前記最適化単機能履歴情報生
成手段が生成する履歴情報に、前記最小実行単位中に指
定されない変数の最適化機能に関する履歴情報を含むこ
とを抑制する第二履歴情報抑制手段を備え、前記第二履
歴情報抑制手段によって抑制された履歴情報を出力する
ようにしたものである。この構成によれば、履歴情報の
情報量の増大を抑制することができる。次に本発明の請
求項10記載のデバッグ装置は、被デバッグプログラム
を請求項1から9記載のプログラム変換装置に入力し、
該プログラム変換装置と結合して動作するデバッグ装置
において、前記プログラム変換装置から実行コードを受
け、該実行コードを実行し、少なくとも該実行コードに
よって指示される実行資源を含むコード実行手段と、利
用者の要求に基づいて、前記コード実行手段に対して前
記実行資源の参照または設定を行う実行資源操作手段
と、前記プログラム変換装置から前記プログラム変換装
置における前記最適化単機能履歴情報生成手段が生成し
た履歴情報を受け、前記履歴情報が有する個々の最適化
機能に関する情報を組み合わせることにより、前記被デ
バッグプログラムから前記実行コードを生成する際にな
された最適化の過程を表す最適化情報を合成する最適化
情報合成手段と、前記最適化情報合成手段によって合成
された前記最適化情報の一部と前記実行資源操作手段に
よって操作された実行資源の内容とを、利用者の要求に
基づいて表示する表示手段とを備えたものである。この
構成によれば、利用者は実行コードになされた最適化の
過程を知ることができる。
置は、請求項10記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成される前記最適化情報
は、前記被デバッグプログラム中に指定される変数と前
記実行資源との関係に関する情報、および、前記被デバ
ッグプログラムの行と前記実行コードとの対応関係に関
する情報の少なくとも一方を含むようにしたものであ
る。この構成によれば、被デバッグプログラム中の変数
および行の少なくとも一方をデバッグすることができ
る。
置は、請求項10または11記載のデバッグ装置に対し
て、前記最適化情報合成手段における前記最適化情報の
合成を、前記プログラム変換装置から前記履歴情報を受
けた時に、前記被デバッグプログラムのすべてに亘って
行うか、または、利用者の要求があった時に、該要求に
応じて都度、前記被デバッグプログラムのうち該要求に
関係する部分を選んで行うようにしたものである。この
構成によれば、デバッグ時の利用者の要求に対する応答
性が向上するか、または、立ちあげ時の時間を短縮する
ことができる。
置は、請求項12記載のデバッグ装置に対して、前記し
た2通りの、前記最適化情報合成手段における前記最適
化情報の合成の時期を、利用者が予め指定するか、また
は、前記被デバッグプログラム、前記実行コード、前記
履歴情報のいずれかの大きさに応じて切り替えるように
したものである。この構成によれば、利用者がプログラ
ムの大きさにより選べるか、または、プログラムの大き
さにより自動的に選択される。
置は、請求項10から13記載のデバッグ装置に対し
て、前記最適化情報合成手段によって合成された前記最
適化情報を、前記プログラム変換装置における前記最適
化単機能履歴情報生成手段が生成した履歴情報に書き戻
すようにしたものである。この構成によれば、同じ最適
化情報に対する再合成が不要になる。
置は、請求項10から14記載のデバッグ装置に対し
て、利用者の要求に基づいて前記表示手段が表示する前
記最適化情報の一部が、前記被デバッグプログラムから
前記実行コードを生成する際になされた最適化の過程の
内、該要求に関する箇所すべてであるようにしたもので
ある。この構成によれば、最適化過程を知ることでデバ
ッグの精度が向上する。
置は、請求項10から14記載のデバッグ装置に対し
て、前記最適化情報合成手段によって合成された前記最
適化情報に、前記被デバッグプログラム中の第一の変数
を異なる第二の変数に置換する内容の最適化情報を含
み、前記第二の変数は前記実行資源の一部に割り当てら
れ、利用者が前記第一の変数に所望値を設定する要求を
する場合に、前記実行資源操作手段は、前記コード実行
手段の前記実行資源の該一部に該所望値を設定し、前記
表示手段は、前記第一の変数に該所望値が設定された旨
と、前記第二の変数にも該所望値が設定された旨とを表
示するようにしたものである。この構成によれば、表示
により置換された変数に対する設定の副作用を認知する
ことができる。
置は、請求項10または11記載のデバッグ装置に対し
て、前記最適化情報合成手段によって合成された前記最
適化情報に、前記被デバッグプログラム中の第一の変数
を異なる第二の変数に置換する内容の最適化情報を含
み、前記第二の変数は前記実行資源の一部に割り当てら
れ、利用者が前記第二の変数に所望値を設定する要求を
する場合に、前記実行資源操作手段は、前記コード実行
手段の前記実行資源の該一部に該所望値を設定し、前記
表示手段は、前記第二の変数に該所望値が設定された旨
と、前記第一の変数にも該所望値が設定された旨、また
は、前記第一の変数は置換されており該所望値への設定
ができない旨のいずれかとを表示するようにしたもので
ある。この構成によれば、表示により置換された変数に
対する設定の副作用を認知することができる。
置は、請求項10または11記載のデバッグ装置に対し
て、前記コード実行手段における前記被デバッグプログ
ラムの実行の中断中において、前記実行資源操作手段
が、前記被デバッグプログラムの該中断箇所を含む関数
が扱う変数について、該変数が割り当てられた前記実行
資源を参照し、前記表示手段が、前記実行資源操作手段
の参照によって得られた該変数の値と該変数に関する最
適化情報とを表示するようにしたものである。この構成
によれば、利用者は逐次、変数の値および変数に関する
最適化情報の表示を要求する必要がなくなり利便性が向
上する。
置は、請求項11記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成された前記最適化情報
に、前記被デバッグプログラムの第一の行の記載内容を
異なる第二の行に移動する内容の最適化情報を含む場合
に、前記表示手段は、該移動の内容を表示するようにし
たものである。この構成によれば、表示により行の移動
の視認性が増し、デバッグ効率が向上する。
置は、請求項11記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成された前記最適化情報
に、前記被デバッグプログラムの第一の行の記載内容を
異なる第二の行に移動する内容の最適化情報を含む場合
に、前記表示手段は、前記被デバッグプログラムを表示
する際に、前記被デバッグプログラムの前記第一の行と
前記第二の行とを入れ替えて表示するようにしたもので
ある。この構成によれば、利用者は被デバッグプログラ
ムの実行の順序を容易に理解することができる。
置は、請求項11記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成された前記最適化情報
に、前記被デバッグプログラムの第一の行の記載内容を
異なる第二の行に移動する内容の最適化情報を含む場合
に、前記表示手段は、前記被デバッグプログラムを表示
する際に、前記被デバッグプログラムの前記第一の行と
前記第二の行とを入れ替えずに表示するか、前記被デバ
ッグプログラムの前記第一の行と前記第二の行とを入れ
替えて表示するかを予め利用者が指定するようにしたも
のである。この構成によれば、被デバッグプログラムの
書かれた順序に則ってデバッグするか実行された順序に
則ってデバッグするかの主眼に応じて切り替えることが
できる。
置は、請求項11記載のデバッグ装置に対して、前記最
適化情報合成手段によって合成された前記最適化情報
に、前記被デバッグプログラムの第一の行の記載内容を
異なる第二の行に移動する内容の最適化情報または前記
被デバッグプログラムの第一の行を削除する内容の最適
化情報を含む場合に、前記表示手段は、前記被デバッグ
プログラムの前記第一の行に含まれる変数が操作できな
い旨を表示するか、または、前記被デバッグプログラム
の前記第一の行に含まれる変数は操作しても正しくない
場合がある旨を表示するようにしたものである。この構
成によれば、表示により移動または削除された行に含ま
れる変数に対する設定および参照の限界範囲を認知する
ことができる。
置は、請求項11記載のデバッグ装置に対して、さら
に、前記コード実行手段における前記被デバッグプログ
ラムの実行が、予め利用者により指定された停止行にか
かると前記コード実行手段に対して実行の停止を指令す
るブレークポイント手段を備え、前記最適化情報合成手
段によって合成された前記最適化情報に、前記被デバッ
グプログラムの第一の行の記載内容を異なる第二の行に
移動する内容の最適化情報を含み、利用者が前記第一の
行を停止行として前記ブレークポイント手段に設定した
場合に、前記表示手段は、実行上は前記被デバッグプロ
グラムの前記第一の行で停止できない旨を表示するよう
にしたものである。この構成によれば、表示によりブレ
ークポイントによる停止ができないことを認知すること
ができる。
置は、請求項26記載のデバッグ装置に対して、前記表
示手段は、停止できない旨を表示するかわりに、実行上
は前記被デバッグプログラムの前記第二の行で停止する
旨を表示するようにしたものである。この構成によれ
ば、表示により利用者の意図とは異なる行で停止するこ
とを認知することができる。
置は、請求項11記載のデバッグ装置に対して、さら
に、前記コード実行手段における前記被デバッグプログ
ラムの実行が、予め利用者により指定された停止行にか
かると前記コード実行手段に対して実行の停止を指令す
るブレークポイント手段を備え、前記最適化情報合成手
段によって合成された前記最適化情報に、前記被デバッ
グプログラムの第一の行を削除する内容の最適化情報を
含み、利用者が前記第一の行を停止行として前記ブレー
クポイント手段に設定した場合に、前記表示手段は、実
行上は前記被デバッグプログラムの前記第一の行で停止
できない旨を表示するようにしたものである。この構成
によれば、表示によりブレークポイントによる停止がで
きないことを認知することができる。
置は、請求項10、11、16、17、24または25
記載のデバッグ装置に対して、前記表示手段は、前記被
デバッグプログラムを表示する際に、前記被デバッグプ
ログラム中の変数の生存区間に関する情報を併せて表示
するようにしたものである。この構成によれば、利用者
が最適化過程を知る手掛かりとなり、デバッグの効率が
向上する。
置は、請求項29記載のデバッグ装置に対して、前記し
た併せて表示する情報を、前記被デバッグプログラム中
の変数の利用者による操作が可能な区間に関する情報と
するようにしたものである。この構成によれば、利用者
に参照または設定可能な変数が何かを予め知らしめるこ
とができ、デバッグの効率が向上する。
置は、請求項11および26から28記載のデバッグ装
置に対して、前記表示手段は、前記被デバッグプログラ
ムと前記実行コードとを同時に表示する際に、利用者に
より特定された前記被デバッグプログラムの行を表示す
るとともに、前記特定された前記被デバッグプログラム
の行に対応する前記実行コードの箇所を併せて表示する
ようにしたものである。この構成によれば、利用者にと
って、被デバッグプログラムと実行コードとの対応関係
がより解かりやすくなる。
置は、請求項11および26から28記載のデバッグ装
置に対して、前記表示手段は、前記被デバッグプログラ
ムと前記実行コードとを同時に表示する際に、利用者に
より特定された前記実行コードの箇所を表示するととも
に、前記特定された前記実行コードの箇所に対応する前
記被デバッグプログラムの行を併せて表示するようにし
たものである。この構成によれば、実行コードの所定の
箇所で停止させたい場合、対応する被デバッグプログラ
ムの行がわかるので、そこにブレークポイントを設定す
ることにより、容易に停止させることができる。
置の構成図
類を表す関係図 (B)は同じく、最適化部とプリミティブ生成部で生成さ
れるプリミティブの関係を表す関係図
す構成図
の内容を表す関係図 (B)は同じく、最適化されたコードを表す関係図 (C)は同じく、レジスタ割り当てされたコードを表す関
係図 (D)は同じく、生成されたプリミティブを表す関係図 (E)は同じく、プリミティブ情報記憶部の内容を表す関
係図
の内容を表す関係図 (B)は同じく、デバッグ情報記憶部の内容を表す関係図
成図
作を示すフローチャート
の動作を示すフローチャート
の設定時の動作を示すフローチャート (B)は同実施の形態におけるブレーク発生時の動作を示
すフローチャート
動作を示すフローチャート
を示すフローチャート
ーソル上移動キー、または、カーソル下移動キーが押下
された時の動作を示すフローチャート
部の内容を表す関係図 (B)は同じく、プリミティブ情報記憶部の内容を表す関
係図 (C)は同じく、生成コード記憶部の内容を表す関係図 (D)は同じく、デバッグ情報記憶部の内容を表す関係図
動作結果を表す関係図 (B)は同じく、表示順序切替部に対して、最適化された
行の順番で表示せよと指定した場合の行表示部、行情報
表示部、操作可能変数操作部の動作結果を表す関係図
を表す構成図 (B)は同実施の形態における連動表示制御部に対して、
プログラムと実行コードの両方を連動表示せよと指定し
た場合の行表示部と行情報表示部の動作結果を表す関係
図 (C)は同じく、連動表示制御部に対してカーソル上移動
キーが押下された後の行表示部と行情報表示部の動作結
果を表す関係図 (D)は同じく、連動表示制御部に対してカーソル上移動
キーが押下された後の行表示部と行情報表示部の動作結
果を表す関係図
内容を表す関係図 (B)は同じく、最適化部によりレジスタ割り当て内部表
現を表す関係図 (C)は同じく、生成コード記憶部の内容を表す関係図
の内容を表す関係図 (B)は同じく、最適化情報記憶部の内容を表す関係図
内容を表す関係図 (B)は同じく、生成コード記憶部の内容を表す関係図
の内容を表す関係図 (B)は同じく、最適化情報記憶部の内容を表す関係図
関係図 (B)は同じく、行表示部の動作結果を表す関係図 (C)は同じく、出力部の動作結果を表す関係図
Claims (35)
- 【請求項1】 入力されたプログラムを最適化する最適
化処理手段を含み、目的とする実行コードを生成し出力
するプログラム変換装置において、前記最適化処理手段
は、それぞれが異なる最適化機能を有する、複数の最適
化単機能処理手段から構成され、前記プログラム変換装
置はさらに、前記最適化単機能処理手段のそれぞれが行
った最適化に関する履歴情報をそれぞれの最適化機能に
対応づける形式で生成し出力する最適化単機能履歴情報
生成手段を備えたことを特徴とするプログラム変換装
置。 - 【請求項2】 前記最適化単機能処理手段が有する最適
化機能を基本最適化機能とし、前記最適化処理手段はさ
らに、前記基本最適化機能のいずれとも異なる第二の最
適化機能を有する第二最適化単機能処理手段を備え、前
記最適化単機能履歴情報生成手段はさらに、前記第二最
適化単機能処理手段が行った最適化に関する履歴情報
を、前記基本最適化機能を組み合わせた形式で生成する
第二最適化単機能履歴情報生成手段を含むことを特徴と
する請求項1記載のプログラム変換装置。 - 【請求項3】 前記プログラムは、高級言語で記述され
たプログラムであり、前記プログラム変換装置はさら
に、該プログラムの構文を解析して中間的な記述言語に
変換する内部表現変換手段を備え、前記最適化処理手段
は、前記内部表現変換手段によって変換されたプログラ
ムに対して前記中間的な記述言語のレベルでの最適化を
行い、前記プログラム変換装置はさらに、前記最適化処
理手段によって最適化されたプログラムを前記中間的な
記述言語から目的とする機械の機械言語に変換して実行
コードを生成する実行コード生成手段を備えたことを特
徴とする請求項1または2記載のプログラム変換装置。 - 【請求項4】 前記最適化単機能処理手段が有する最適
化機能のそれぞれが、共通部分式最適化機能、不要コー
ド最適化機能、コピー伝搬最適化機能、定数伝搬最適化
機能、ループ不変式最適化機能およびレジスタ割り当て
機能のいずれかを含むことを特徴とする請求項1から3
記載のプログラム変換装置。 - 【請求項5】 前記最適化単機能履歴情報生成手段にお
ける履歴情報の生成を、前記プログラムをデバッグする
際の該プログラムの最小実行単位ごとに行うことを特徴
とする請求項1から4記載のプログラム変換装置。 - 【請求項6】 前記最適化単機能処理手段が有する最適
化機能が、プログラムの前記最小実行単位の移動または
プログラム中の変数の移動に関する最適化機能と、少な
くとも1つの他の最適化機能とからなり、前記プログラ
ム変換装置はさらに、前記最適化単機能処理手段におい
てプログラムの前記最小実行単位の移動またはプログラ
ム中の変数の移動に関する最適化がなされた場合に、前
記最適化単機能履歴情報生成手段が生成する履歴情報に
前記他の最適化機能に関する履歴情報を含むことを抑制
する第一履歴情報抑制手段を備え、前記第一履歴情報抑
制手段によって抑制された履歴情報を出力することを特
徴とする請求項5記載のプログラム変換装置。 - 【請求項7】 前記プログラム変換装置はさらに、前記
最適化単機能履歴情報生成手段が前記最小実行単位ごと
に履歴情報を生成するに際し、前記最適化単機能履歴情
報生成手段が生成する履歴情報に、前記最小実行単位中
に指定されない変数の最適化機能に関する履歴情報を含
むことを抑制する第二履歴情報抑制手段を備え、前記第
二履歴情報抑制手段によって抑制された履歴情報を出力
することを特徴とする請求項5または6記載のプログラ
ム変換装置。 - 【請求項8】 前記第二履歴情報抑制手段は、前記最小
実行単位中に指定されない変数の資源割り当て情報を含
むことを抑制する請求項7記載のプログラム変換装置。 - 【請求項9】 前記最小実行単位が、プログラムの行で
ある請求項5から8記載のプログラム変換装置。 - 【請求項10】 被デバッグプログラムを請求項1から
9記載のプログラム変換装置に入力し、該プログラム変
換装置と結合して動作するデバッグ装置において、前記
プログラム変換装置から実行コードを受け、該実行コー
ドを実行し、少なくとも該実行コードによって指示され
る実行資源を含むコード実行手段と、利用者の要求に基
づいて、前記コード実行手段に対して前記実行資源の参
照または設定を行う実行資源操作手段と、前記プログラ
ム変換装置から前記プログラム変換装置における前記最
適化単機能履歴情報生成手段が生成した履歴情報を受
け、前記履歴情報が有する個々の最適化機能に関する情
報を組み合わせることにより、前記被デバッグプログラ
ムから前記実行コードを生成する際になされた最適化の
過程を表す最適化情報を合成する最適化情報合成手段
と、前記最適化情報合成手段によって合成された前記最
適化情報の一部と前記実行資源操作手段によって操作さ
れた実行資源の内容とを、利用者の要求に基づいて表示
する表示手段とを備えたことを特徴とするデバッグ装
置。 - 【請求項11】 前記最適化情報合成手段によって合成
される前記最適化情報は、前記被デバッグプログラム中
に指定される変数と前記実行資源との関係に関する情
報、および、前記被デバッグプログラムの行と前記実行
コードとの対応関係に関する情報の少なくとも一方を含
むことを特徴とする請求項10記載のデバッグ装置。 - 【請求項12】 前記最適化情報合成手段における前記
最適化情報の合成を、前記プログラム変換装置から前記
履歴情報を受けた時に、前記被デバッグプログラムのす
べてに亘って行うか、または、利用者の要求があった時
に、該要求に応じて都度、前記被デバッグプログラムの
うち該要求に関係する部分を選んで行うことを特徴とす
る請求項10または11記載のデバッグ装置。 - 【請求項13】 前記した2通りの、前記最適化情報合
成手段における前記最適化情報の合成の時期を、利用者
が予め指定するか、または、前記被デバッグプログラ
ム、前記実行コード、前記履歴情報のいずれかの大きさ
に応じて切り替えることを特徴とする請求項12記載の
デバッグ装置。 - 【請求項14】 前記最適化情報合成手段によって合成
された前記最適化情報を、前記プログラム変換装置にお
ける前記最適化単機能履歴情報生成手段が生成した履歴
情報に書き戻すことを特徴とする請求項10から13記
載のデバッグ装置。 - 【請求項15】 利用者の要求に基づいて前記表示手段
が表示する前記最適化情報の一部が、前記被デバッグプ
ログラムから前記実行コードを生成する際になされた最
適化の過程の内、該要求に関する箇所すべてであること
を特徴とする請求項10から14記載のデバッグ装置。 - 【請求項16】 前記最適化情報合成手段によって合成
された前記最適化情報に、前記被デバッグプログラム中
の第一の変数を異なる第二の変数に置換する内容の最適
化情報を含み、前記第二の変数は前記実行資源の一部に
割り当てられ、利用者が前記第一の変数に所望値を設定
する要求をする場合に、前記実行資源操作手段は、前記
コード実行手段の前記実行資源の該一部に該所望値を設
定し、前記表示手段は、前記第一の変数に該所望値が設
定された旨と、前記第二の変数にも該所望値が設定され
た旨とを表示することを特徴とする請求項10または1
1記載のデバッグ装置。 - 【請求項17】 前記最適化情報合成手段によって合成
された前記最適化情報に、前記被デバッグプログラム中
の第一の変数を異なる第二の変数に置換する内容の最適
化情報を含み、前記第二の変数は前記実行資源の一部に
割り当てられ、利用者が前記第二の変数に所望値を設定
する要求をする場合に、前記実行資源操作手段は、前記
コード実行手段の前記実行資源の該一部に該所望値を設
定し、前記表示手段は、前記第二の変数に該所望値が設
定された旨と、前記第一の変数にも該所望値が設定され
た旨、または、前記第一の変数は置換されており該所望
値への設定ができない旨のいずれかとを表示することを
特徴とする請求項10または11記載のデバッグ装置。 - 【請求項18】 前記コード実行手段における前記被デ
バッグプログラムの実行の中断中において、前記実行資
源操作手段が、前記被デバッグプログラムの該中断箇所
を含む関数が扱う変数について、該変数が割り当てられ
た前記実行資源を参照し、前記表示手段が、前記実行資
源操作手段の参照によって得られた該変数の値と該変数
に関する最適化情報とを表示することを特徴とする請求
項10または11記載のデバッグ装置。 - 【請求項19】 前記実行資源操作手段が、前記被デバ
ッグプログラムの該中断箇所を含む関数が扱う全ての変
数について、該変数が割り当てられた前記実行資源を参
照する請求項18記載のデバッグ装置。 - 【請求項20】 前記最適化情報合成手段によって合成
された前記最適化情報に、前記被デバッグプログラムの
第一の行の記載内容を異なる第二の行に移動する内容の
最適化情報を含む場合に、前記表示手段は、該移動の内
容を表示することを特徴とする請求項11記載のデバッ
グ装置。 - 【請求項21】 前記表示手段は前記の場合に、前記第
一の行の内容を表示する際に、第二の行に移動した旨を
表示するか、または、前記第二の行の内容を表示する際
に、第一の行から移動された旨を表示するか、または、
前記第一の行と前記第二の行との内容を表示する際に、
第一の行は第二の行に移動し第二の行は第一の行から移
動された旨を表示する請求項20記載のデバッグ装置。 - 【請求項22】 前記最適化情報合成手段によって合成
された前記最適化情報に、前記被デバッグプログラムの
第一の行の記載内容を異なる第二の行に移動する内容の
最適化情報を含む場合に、前記表示手段は、前記被デバ
ッグプログラムを表示する際に、前記被デバッグプログ
ラムの前記第一の行と前記第二の行とを入れ替えて表示
することを特徴とする請求項11記載のデバッグ装置。 - 【請求項23】 前記最適化情報合成手段によって合成
された前記最適化情報に、前記被デバッグプログラムの
第一の行の記載内容を異なる第二の行に移動する内容の
最適化情報を含む場合に、前記表示手段は、前記被デバ
ッグプログラムを表示する際に、前記被デバッグプログ
ラムの前記第一の行と前記第二の行とを入れ替えずに表
示するか、前記被デバッグプログラムの前記第一の行と
前記第二の行とを入れ替えて表示するかを予め利用者が
指定することを特徴とする請求項11記載のデバッグ装
置。 - 【請求項24】 前記最適化情報合成手段によって合成
された前記最適化情報に、前記被デバッグプログラムの
第一の行の記載内容を異なる第二の行に移動する内容の
最適化情報または前記被デバッグプログラムの第一の行
を削除する内容の最適化情報を含む場合に、前記表示手
段は、前記被デバッグプログラムの前記第一の行に含ま
れる変数が操作できない旨を表示するか、または、前記
被デバッグプログラムの前記第一の行に含まれる変数は
操作しても正しくない場合がある旨を表示することを特
徴とする請求項11記載のデバッグ装置。 - 【請求項25】 前記表示手段は前記の表示を、前記被
デバッグプログラムの前記第一の行に含まれる変数に対
して、利用者が参照を要求した場合、または、利用者が
所望値を設定する要求をした場合に行う請求項24記載
のデバッグ装置。 - 【請求項26】 さらに、前記コード実行手段における
前記被デバッグプログラムの実行が、予め利用者により
指定された停止行にかかると前記コード実行手段に対し
て実行の停止を指令するブレークポイント手段を備え、
前記最適化情報合成手段によって合成された前記最適化
情報に、前記被デバッグプログラムの第一の行の記載内
容を異なる第二の行に移動する内容の最適化情報を含
み、利用者が前記第一の行を停止行として前記ブレーク
ポイント手段に設定した場合に、前記表示手段は、実行
上は前記被デバッグプログラムの前記第一の行で停止で
きない旨を表示することを特徴とする請求項11記載の
デバッグ装置。 - 【請求項27】 前記表示手段は、停止できない旨を表
示するかわりに、実行上は前記被デバッグプログラムの
前記第二の行で停止する旨を表示する請求項26記載の
デバッグ装置。 - 【請求項28】 さらに、前記コード実行手段における
前記被デバッグプログラムの実行が、予め利用者により
指定された停止行にかかると前記コード実行手段に対し
て実行の停止を指令するブレークポイント手段を備え、
前記最適化情報合成手段によって合成された前記最適化
情報に、前記被デバッグプログラムの第一の行を削除す
る内容の最適化情報を含み、利用者が前記第一の行を停
止行として前記ブレークポイント手段に設定した場合
に、前記表示手段は、実行上は前記被デバッグプログラ
ムの前記第一の行で停止できない旨を表示することを特
徴とする請求項11記載のデバッグ装置。 - 【請求項29】 前記表示手段は、前記被デバッグプロ
グラムを表示する際に、前記被デバッグプログラム中の
変数の生存区間に関する情報を併せて表示することを特
徴とする請求項10、11、16、17、24または2
5記載のデバッグ装置。 - 【請求項30】 前記した併せて表示する情報を、前記
被デバッグプログラム中の変数の利用者による操作が可
能な区間に関する情報とする請求項29記載のデバッグ
装置。 - 【請求項31】 前記した利用者による操作が可能な区
間を、前記プログラム変換装置から受ける履歴情報に該
変数の最適化機能に関する情報を含むか否かにより決定
する請求項30記載のデバッグ装置。 - 【請求項32】 前記した生存区間に関する情報の表示
または利用者による操作が可能な区間の表示を、前記被
デバッグプログラムの行のそれぞれと対応づけて表示す
る請求項29から31記載のデバッグ装置。 - 【請求項33】 前記表示手段は、前記被デバッグプロ
グラムと前記実行コードとを同時に表示する際に、利用
者により特定された前記被デバッグプログラムの行を表
示するとともに、前記特定された前記被デバッグプログ
ラムの行に対応する前記実行コードの箇所を併せて表示
することを特徴とする請求項11および26から28記
載のデバッグ装置。 - 【請求項34】 前記表示手段は、前記被デバッグプロ
グラムと前記実行コードとを同時に表示する際に、利用
者により特定された前記実行コードの箇所を表示すると
ともに、前記特定された前記実行コードの箇所に対応す
る前記被デバッグプログラムの行を併せて表示すること
を特徴とする請求項11および26から28記載のデバ
ッグ装置。 - 【請求項35】 前記した前記被デバッグプログラムの
行および前記実行コードの箇所の利用者による特定を、
カーソル移動キーまたはマウスを用いて行う請求項33
または34記載のデバッグ装置。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8169195A JPH1021086A (ja) | 1996-06-28 | 1996-06-28 | プログラム変換装置とデバッグ装置 |
DE69712986T DE69712986T2 (de) | 1996-06-28 | 1997-03-27 | Programmentwicklungssystem |
EP97302199A EP0817049B1 (en) | 1996-06-28 | 1997-03-27 | A program development system |
TW086103957A TW366451B (en) | 1996-06-28 | 1997-03-27 | A program development system which consists of a debugging information generation apparatus which refers to the optimization process to generate debugging information to enable operation verification and debugging apparatus |
CNB971132046A CN1143225C (zh) | 1996-06-28 | 1997-03-28 | 调整信息生成装置和由调整装置所组成的程序开发系统 |
KR1019970011066A KR100417655B1 (ko) | 1996-06-28 | 1997-03-28 | 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템 |
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 |
---|---|---|---|
JP8169195A JPH1021086A (ja) | 1996-06-28 | 1996-06-28 | プログラム変換装置とデバッグ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1021086A true JPH1021086A (ja) | 1998-01-23 |
Family
ID=15881985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8169195A Withdrawn JPH1021086A (ja) | 1995-09-29 | 1996-06-28 | プログラム変換装置とデバッグ装置 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP0817049B1 (ja) |
JP (1) | JPH1021086A (ja) |
KR (1) | KR100417655B1 (ja) |
CN (1) | CN1143225C (ja) |
DE (1) | DE69712986T2 (ja) |
TW (1) | TW366451B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7028291B2 (en) | 2001-08-06 | 2006-04-11 | Matsushita Electric Industrial Co., Ltd. | Debugging method and debugging device |
EP2963547A1 (en) | 2014-03-31 | 2016-01-06 | Fujitsu Limited | Compiling device, compiling method, and storage medium storing compiler program |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269454B1 (en) * | 1998-11-06 | 2001-07-31 | Advanced Micro Devices, Inc. | Maintaining object information concurrent with data optimization for debugging |
US8239832B2 (en) * | 2007-05-25 | 2012-08-07 | Microsoft Corporation | In-process debugging using external debugging infrastructure |
JP6207799B1 (ja) * | 2016-08-24 | 2017-10-04 | 三菱電機株式会社 | プログラマブルロジックコントローラ |
JP7174430B2 (ja) | 2017-09-25 | 2022-11-17 | 株式会社フジキン | バルブ装置、調整情報生成方法、流量調整方法、流体制御装置、流量制御方法、半導体製造装置および半導体製造方法 |
CN109240743B (zh) * | 2018-08-03 | 2021-07-27 | 挖财网络技术有限公司 | 一种利用特定标签来进行代码切换的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4667290A (en) * | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
US4953084A (en) * | 1987-11-16 | 1990-08-28 | Hewlett-Packard Company | Method and apparatus using variable ranges to support symbolic debugging of optimized code |
JPH03240837A (ja) * | 1990-02-19 | 1991-10-28 | Nec Corp | デバッグ情報生成装置 |
AU4598593A (en) * | 1992-06-05 | 1994-01-04 | Convex Computer Corporation | Computer program debugging in the presence of compiler synthesized variables |
US5371747A (en) * | 1992-06-05 | 1994-12-06 | Convex Computer Corporation | Debugger program which includes correlation of computer program source code with optimized object code |
JPH06274369A (ja) * | 1993-03-19 | 1994-09-30 | Hitachi Ltd | 最適化プログラムのデバッグ方式 |
-
1996
- 1996-06-28 JP JP8169195A patent/JPH1021086A/ja not_active Withdrawn
-
1997
- 1997-03-27 DE DE69712986T patent/DE69712986T2/de not_active Expired - Fee Related
- 1997-03-27 TW TW086103957A patent/TW366451B/zh active
- 1997-03-27 EP EP97302199A patent/EP0817049B1/en not_active Expired - Lifetime
- 1997-03-28 CN CNB971132046A patent/CN1143225C/zh not_active Expired - Fee Related
- 1997-03-28 KR KR1019970011066A patent/KR100417655B1/ko not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7028291B2 (en) | 2001-08-06 | 2006-04-11 | Matsushita Electric Industrial Co., Ltd. | Debugging method and debugging device |
EP2963547A1 (en) | 2014-03-31 | 2016-01-06 | Fujitsu Limited | Compiling device, compiling method, and storage medium storing compiler program |
Also Published As
Publication number | Publication date |
---|---|
EP0817049B1 (en) | 2002-06-05 |
TW366451B (en) | 1999-08-11 |
KR980004050A (ko) | 1998-03-30 |
CN1172304A (zh) | 1998-02-04 |
CN1143225C (zh) | 2004-03-24 |
KR100417655B1 (ko) | 2004-06-09 |
EP0817049A1 (en) | 1998-01-07 |
DE69712986T2 (de) | 2002-10-17 |
DE69712986D1 (de) | 2002-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6003143A (en) | Tool and method for diagnosing and correcting errors in a computer program | |
US4885717A (en) | System for graphically representing operation of object-oriented programs | |
USRE36422E (en) | Debugging system wherein multiple code views are simultaneously managed | |
US6016474A (en) | Tool and method for diagnosing and correcting errors in a computer program | |
Adams et al. | Dbxtool: a window‐based symbolic debugger for Sun workstations | |
US20010011370A1 (en) | Interactive software testing system and method | |
JPH0950389A (ja) | コンピュータシステムを使って実装される装置及び方法 | |
JP2000347894A (ja) | ソースプログラムチェック装置およびそのプログラム記録媒体 | |
JPH07295859A (ja) | プログラムの動的特性の決定 | |
JP2001507490A (ja) | 階層的状態チャートを実現するデバイス及び方法及びそれに有用な装置 | |
US20050060685A1 (en) | Program generator | |
JP2000122886A (ja) | 半導体試験装置のプログラム作成方式 | |
JPH1021086A (ja) | プログラム変換装置とデバッグ装置 | |
JP5849592B2 (ja) | プログラマブルコントローラシステム、そのプログラミング装置、プログラマブルコントローラ、プログラム、デバッグ方法 | |
CN106560797A (zh) | 一种基于调试器的单元测试系统及方法 | |
CN110061609B (zh) | 电力转换系统、编程辅助装置、编程辅助方法和存储介质 | |
US6449050B1 (en) | Code generator for printer driver | |
US20050071786A1 (en) | Timing and distance control for displaying dynamic information | |
JP4295912B2 (ja) | デバッグシステム | |
JP2009282723A (ja) | オブジェクト編集装置及びプログラム | |
JP4601144B2 (ja) | プログラム開発システム、記録媒体および方法 | |
JP2004139313A (ja) | ソースコード表示システム及びプログラム | |
US20060206879A1 (en) | Java program method invocation display | |
JPS63223931A (ja) | 論理図実行ル−ト出力処理方式 | |
JP2013235381A (ja) | データ編集装置およびデータ編集方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050623 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060529 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060606 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060822 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20060929 |