JP3424520B2 - プログラム変換装置とデバッグ装置 - Google Patents

プログラム変換装置とデバッグ装置

Info

Publication number
JP3424520B2
JP3424520B2 JP23435597A JP23435597A JP3424520B2 JP 3424520 B2 JP3424520 B2 JP 3424520B2 JP 23435597 A JP23435597 A JP 23435597A JP 23435597 A JP23435597 A JP 23435597A JP 3424520 B2 JP3424520 B2 JP 3424520B2
Authority
JP
Japan
Prior art keywords
constant
execution code
divided
information
constants
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
Application number
JP23435597A
Other languages
English (en)
Other versions
JPH1173326A (ja
Inventor
顯 宅間
秀一 高山
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 Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP23435597A priority Critical patent/JP3424520B2/ja
Priority to EP98306918A priority patent/EP0899661B1/en
Priority to US09/143,628 priority patent/US6141791A/en
Priority to DE69816381T priority patent/DE69816381T2/de
Priority to KR1019980035359A priority patent/KR100537258B1/ko
Publication of JPH1173326A publication Critical patent/JPH1173326A/ja
Application granted granted Critical
Publication of JP3424520B2 publication Critical patent/JP3424520B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はソフトウェア開発に
おいて、プログラムを実行コードに変換するプログラム
変換装置と、プログラム変換装置によって生成された実
行コードにおける誤りを発見し、設計通りにソフトウェ
アが動作するか検証するデバッグ装置に関するものであ
る。
【0002】
【従来の技術】近年、プロセッサの開発において高速な
命令実行のために命令コード長を固定化する方法が主流
となってきている。固定命令長のプロセッサでは16ま
たは32ビットの命令長であることが多いが、32ビッ
トの命令長では32ビット長の定数は最低でも2命令に
分割して表現する必要がある。
【0003】例えば、SUNマイクロシステムズ(株)
のSPARCワークステーションに搭載されているプロ
セッサは32ビットの固定命令長である。このプロセッ
サで使用されているプログラム変換装置では32ビット
の定数を上位と下位の2命令に分割した実行コードとし
て出力している。生成された実行コードをデバッグ装置
で疑似ソースプログラムに逆変換すると分割された定数
は分割された表記で出力される。
【0004】図14は従来の技術におけるプログラム変
換装置とデバッグ装置を合わせた全体構成を示すもので
ある。同図において101は入力ソースプログラムであ
る。102は入力ソースプログラム101を実行可能プ
ログラム103に変換するプログラム変換装置である。
102は複数のプログラム変換装置から構成されること
もある。103には実行コード情報の他にデバッグのた
めに必要なデバッグ情報を含ませることができる。10
4はデバッグ装置で実行可能プログラム103をロード
する機能、実行コードを実行する機能、レジスタやメモ
リなどの資源を操作する機能、実行コードを疑似ソース
プログラム105に逆変換して出力する機能、実行コー
ドを変更する機能などを持つ。デバッグ装置104には
実行可能プログラムを実行する際に実行履歴情報を記憶
し、後から出力する機能を備えたものもある。
【0005】図15は従来のプログラム変換装置の構成
を示すものである。以下、その動作について説明する。
ソースプログラム入力部201において記憶装置211
から入力されたソースプログラムはプログラム変換部2
02で中間記述レベル表現に変換される。その後、定数
分割部203で定数を扱う命令をプロセッサに適した部
分定数に分割し、プログラム最適化部205で命令の並
べ替えや不要コードの削除によるプログラムの最適化が
行なわれる。実行コード出力部207において生成され
た実行コードを記憶装置211に出力する。デバッグ情
報生成部208では実行コードをデバッグするために必
要なデバッグ情報を生成し、デバッグ情報出力部209
においてデバッグ情報を記憶装置211に出力する。
【0006】従来のプログラム変換装置によって出力さ
れる実行可能プログラム103にはデバッグのためのデ
バッグ情報が含まれる。実行可能プログラム103はフ
ァイル内容を識別するためのファイル識別情報801、
実行コードの内容を示す実行コード情報802、識別子
の名前とその値を関連づける識別子情報803、ソース
ファイルの名前と実行コードを関連づけるソースファイ
ル情報804、ソースファイル中の行番号と実行コード
を関連づける行番号情報805、識別子の型内容を示す
型情報806の一部または全部から構成される。
【0007】以上によって構成された実行可能プログラ
ム103は、図16のように構成される従来のデバッグ
装置によって使用される。以下、その動作について説明
する。デバッグ装置を起動すると利用者からのコマンド
入力待ちとなる。利用者が被デバッグプログラムの読み
込みコマンドを入力装置912から入力すると入力解析
部901で解析が行なわれ、実行コード入力・記憶部9
02に制御が移る。902では記憶装置911より前述
のプログラム変換装置で生成された実行プログラム10
3を入力し、主記憶に記憶する。
【0008】次に利用者が実行コードの逆変換コマンド
を入力装置912より入力すると入力解析部901で解
析がなされ、実行コード逆変換部908に制御が移る。
実行コード逆変換部908では実行コード入力・記憶部
902において記憶していた実行コード及びデバッグ情
報を参照し、これを疑似ソースプログラムに逆変換す
る。生成した疑似ソースプログラムを疑似ソースプログ
ラム出力部909より出力装置913に出力する。利用
者が実行コードの実行を指示した場合は、同様に91
2、901を経て、実行コード実行部903により実行
コード入力・記憶部902で記憶した実行コードが実行
される。この際に実行履歴記憶部904に実行アドレス
の履歴を記憶しておき、後から実行履歴出力部905で
実行履歴を出力装置913に出力することができるもの
もある。
【0009】またデバッグ装置ではその他にレジスタや
メモリなどの資源を参照・変更するための資源参照・変
更部906や実行コードを変更するための実行コード変
更部910を持つ。
【0010】
【発明が解決しようとする課題】しかしながら上記のよ
うな構成では、利用者がデバッグ装置において実行コー
ドからソースプログラムに逆変換操作をする際に、分割
された部分定数を元のソースプログラムにあった数値ま
たは識別子として復元して出力できないという問題があ
る。
【0011】また、デバッグ操作における実行コード中
定数の変更は、変更前と同じ分割位置に同じビット幅
に分割して行なう必要があり利用者の操作を困難になる
問題がある。利用者が0x00001000番地に配置
される変数aに定数0x12345678を代入する実
行コードに対して逆変換コマンドを使用した際の入出力
例を図17に示す。またニモニックの説明図を図18に
示す。L1701は利用者によるデバッグコマンドの入
力行である。L1702からL1705は逆変換出力で
あり、各行は元の入力ソースプログラムに対応する行番
号、実行コードが配置されたアドレス、実行コードの機
械語の値、逆変換したニモニックから構成される。L1
702はレジスタo0に定数0x12345678の上
位22ビットすなわち0x12345400を設定し、
L1703はレジスタo0に定数0x12345678
の下位10ビットすなわち0x00000278を10
進数で表した632を論理和を使って設定することを示
している。L1704はレジスタo1に変数aの格納先
であるアドレス0x00001000の上位22ビット
すなわち0x00001000を設定し、L1705は
レジスタo1とアドレス0x00001000の下位1
0ビットすなわち0x000の論理和から求めた変数a
の格納先アドレスのメモリにレジスタo0の値を設定す
ることを示している。定数0x12345678はL1
702とL1703にそれぞれ22ビットと10ビット
の部分定数として分割された値のまま出力される。変数
aのアドレス0x00001000番地もL1704と
L1705の行に分割された値のまま出力される。また
この実行コード中の定数を変更する場合は、利用者が元
と同じビット位置に分割してそれぞれの部分定数を変更
する必要がある。
【0012】本発明は上記問題点を解決するために実行
コードからソースプログラムに逆変換する際に、定数を
分割した情報を出力することができるプログラム変換装
置を提供することを目的とする。また実行コードからソ
ースプログラムに逆変換する際に、プログラム変換装置
で生成された定数を分割した情報に基づき、定数を復元
してデバッグを行なう際に実行コードの意味を利用者に
理解しやすくすることを可能にするデバッグ装置を提供
することを目的とする。
【0013】また実行コード中の定数を変更する際に、
変更後の定数をプログラム変換装置で生成された定数を
分割した情報に基づき、変更前と同じ分割位置に同じビ
ット幅に分割して格納し、利用者の手による分割作業を
軽減することを可能にするデバッグ装置を提供すること
を目的とする。またプログラム変換装置から定数を分割
した情報が得られなかった場合は、実行コード情報また
は実行履歴情報を検索して情報を得て、上記問題を解決
するデバッグ装置を提供することを目的とする。
【0014】
【課題を解決するための手段】この課題を解決するため
に、本発明の請求項1記載のプログラム変換装置は入力
されたソースプログラムに含まれる1つの定数をプロセ
ッサに適した2つ以上の部分定数に分割する定数分割手
段を有し、前記定数分割手段により分割された前記部分
定数をそれぞれ1つの実行コードに含ませて出力する実
行コード出力手段と、前記定数分割手段における定数を
分割しても部分定数から元の定数を復元して出力するこ
とが可能となる定数の分割に関する情報を定数分割情報
として生成し出力する定数分割情報生成手段とを備える
機能を備えたものである。
【0015】また本発明の請求項2記載のプログラム変
換装置は、請求項1記載のプログラム変換装置に対し
て、入力されたソースプログラムを実行コードに変換す
る際に最適化を行なう最適化手段を有し、前記最適化手
段において請求項1において生成した定数分割情報を最
適化による定数を扱う命令の一部または全部を移動また
は削除を行なった場合、対応する定数分割情報を連係し
て移動または削除する定数分割情報補正手段を含むよう
にしたものである。
【0016】また本発明の請求項3記載のプログラム変
換装置は、請求項1または2記載の定数分割手段におい
て分割される定数が数値か識別子かのどちらで記述され
ていたかを区別するための情報を前記定数分割情報に付
加して生成し出力するようにしたものである。また本発
明の請求項1から3のいずれか記載のプログラム変換装
置は、前記部分定数のそれぞれに対して、前記部分定数
が分割される前の定数のどの部分かを特定するための情
報と、前記部分定数がどの実行コードに含まれるかを特
定するための情報との少なくとも一方を含むようにした
ものである。
【0017】次に本発明の請求項5記載のデバッグ装置
は、ソースプログラムに含まれる1つの定数を2つ以上
の部分に分割し、分割された定数を含む実行コードをデ
バッグするデバッグ装置であり、前記実行コードと、定
数がいかに分割されたかを示す定数分割情報とを入力す
る入力手段と、入力された前記実行コードを逆変換して
疑似ソースプログラムを得る逆変換手段と、前記逆変換
手段において得られた前記疑似ソースプログラム中に分
割された定数を検出すると、入力された前記定数分割情
報を利用して前記分割された定数を分割前の定数に置き
換える定数復元手段と、前記定数復元手段により定数の
置き換えられた前記疑似ソースプログラムを出力する出
力手段とを備えたものである。
【0018】また本発明の請求項6記載のデバッグ装置
は、請求項5記載のデバッグ装置における前記定数復元
手段において、検出した前記疑似ソースプログラム中の
分割された定数に関して、前記定数分割情報が利用でき
ないと判断すると、前記分割された定数を含む実行コー
ドに先行または後続する実行コードから前記分割された
定数の他の部分を含む実行コードを検索し、前記分割さ
れた定数と検索して得られた前記分割された定数の他の
部分とを組合せて分割前の定数を得ることができるよう
ににしたものである。
【0019】また本発明の請求項7記載のデバッグ装置
は、請求項5記載のデバッグ装置に加えて、入力された
前記実行コードを実行する実行コード実行手段と、前記
実行コード実行手段により実行された実行コードの履歴
を記憶する実行履歴記憶手段とを備え、前記定数復元手
段は、検出した前記疑似ソースプログラム中の分割され
た定数に関して、前記定数分割情報が利用できないと判
断すると、前記実行履歴記憶手段から前記分割された定
数を含む実行コードと前記分割された定数の他の部分を
含む実行コードとを検索し、検索して得られた実行コー
ドに含まれる定数の部分を組合せて分割前の定数を得ら
れるようにしたものである。
【0020】また本発明の請求項8記載のデバッグ装置
は、請求項7記載のデバッグ装置における前記実行履歴
記憶手段において前記実行コード実行手段により実行さ
れた実行コードのアドレス履歴を記憶し、前記定数復元
手段は、検出した前記疑似ソースプログラム中の分割さ
れた定数に関して、前記定数分割情報が利用できないと
判断すると、前記実行履歴記憶手段から逆変換する実行
コードのアドレスに一致するアドレス履歴を検索し、該
アドレスに先行または後続するアドレスの実行コードか
ら前記分割された定数の他の部分を含む実行コードを検
索し、前記分割された定数と検索して得られた前記分割
された定数の他の部分とを組合せて分割前の定数を得ら
れるようにしたものである。
【0021】また本発明の請求項9記載のデバッグ装置
は、請求項6から8のいずれか1項に記載のデバッグ装
置における前記定数復元手段において、検出した前記疑
似ソースプログラム中の分割された定数に関して、前記
定数分割情報が利用できないと判断した場合に、組合せ
て得た前記分割前の定数を前記定数分割情報に追加して
記録するようにしたものである。
【0022】また本発明の請求項10記載のデバッグ装
置は、請求項5記載のデバッグ装置における前記定数分
割情報において、分割された定数のそれぞれに対して分
割前の定数が数値か識別子かのどちらで記述されていた
かを区別するための情報を含んでなり、前記定数復元手
段は、前記定数分割情報に基づいて、復元した分割前の
定数が識別子で記述されていたことを判断すると、前記
復元した分割前の定数をさらに対応する識別子に置き換
え、前記出力手段は、前記定数復元手段により識別子に
置き換えられた前記疑似ソースプログラムを出力できる
ようにしたものである。
【0023】また本発明の請求項11記載のデバッグ装
置は、請求項5記載のデバッグ装置における前記出力手
段において、前記定数復元手段により復元された分割前
の定数に関して、分割前の1つの定数の複数に分割され
た部分を含む全ての実行コードに対応する前記疑似ソー
スプログラム上の部位を他と区別して出力できるように
したものである。
【0024】また本発明の請求項12記載のデバッグ装
置は、請求項5記載のデバッグ装置における前記定数分
割情報において、分割された定数のそれぞれに対して分
割される前の定数のどの部分かを特定するための情報を
含んでなり、前記デバッグ装置はさらに、変更すべき定
数を特定する定数特定手段と、前記定数特定手段により
特定された定数に代わる変更定数を入力する定数入力手
段と、前記定数分割情報に基づいて、前記定数特定手段
により特定された定数がいかに分割されているかを判別
し、それと同様に前記定数入力手段により入力された前
記変更定数を分割する定数分割手段と、前記定数分割手
段により判別された分割された定数の各部分を、前記定
数分割手段により分割された前記変更定数の各部分によ
って置き換える定数変更手段とを備えるようにしたもの
である。
【0025】また本発明の請求項13記載のデバッグ装
置は、請求項12記載のデバッグ装置において入力デバ
イスを用いて前記定数特定手段を行なうことができるよ
うにしたものである。また本発明の請求項14記載のデ
バッグ装置は、請求項5記載のデバッグ装置において対
象とするプロセッサが、命令中に定数レジスタへ格納す
べき定数が置かれていることを解読する解読手段と、前
記解読手段により前記定数が置かれていると解読された
場合には、前記定数レジスタに定数が格納されていない
と判断すると前記定数を所定位置に格納し、前記定数レ
ジスタに定数が既に格納されていると判断すると前記定
数レジスタに既に格納されている定数を残したまま新た
な定数を前記定数レジスタに格納する格納手段と、前記
定数レジスタに格納されている全ての定数を読み出し、
その定数をオペランドとするオペレーションを実行する
実行手段とを備えてなるプロセッサに対応できるように
したものである。
【0026】また本発明の請求項15記載のデバッグ装
置は、請求項14記載のデバッグ装置において前記プロ
セッサは、並列実行する複数のオペレーションからなる
命令を実行するVLIWプロセッサであって、前記VL
IWプロセッサは並列実行できるオペレーションがない
場合、オペレーションの代わりに定数が配置された命令
のうち前記定数以外のオペレーションを並列実行すると
ともに、前記定数は順に格納しておき後続の命令で使用
することができるようにしたものである。
【0027】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図1から図13を用いて説明する。図1は本発明の
実施の形態におけるプログラム変換装置とデバッグ装置
を合わせた全体構成を示すものである。同図中の102
は定数分割情報生成手段106、定数分割情報補正手段
107、定数分割情報出力手段108を持ったプログラ
ム変換装置であり、104は定数復元手段110と定数
変更手段111を持ったデバッグ装置である。入力ソー
スプログラム101をプログラム変換装置102に入力
すると定数分割手段により定数がプロセッサに適した形
に分割され、実行コードとして生成される。それと対応
する定数復元のためのデバッグ情報が定数分割情報生成
手段106により生成される。またプログラム変換装置
内でプログラムの最適化がなされた場合に定数情報補正
手段107は定数分割情報を最適化内容に合わせて補正
する。定数分割情報出力手段108は完成した定数分割
情報を実行可能プログラム103内に定数分割情報10
9として出力する。
【0028】デバッグ装置104は実行可能プログラム
103を入力し実行コードの逆変換を行なうことができ
る。逆変換の際に定数復元手段110によって実行コー
ド中の部分定数を元の定数に復元した形で疑似ソースプ
ログラム105として出力する。また実行コード中の定
数を変更する場合は定数変更手段111により変更前と
同じように分割して変更することができる。
【0029】まず本発明の実施の形態におけるプログラ
ム変換装置102を示す。図2はプログラム変換装置1
02の構成図を示すものである。201はソースプログ
ラム入力部で、記憶装置208からソースプログラムを
入力する。202はプログラム変換部でソースプログラ
ムを中間記述レベル表現に変換する。203は定数分割
部で、中間記述レベル表現中の定数をプロセッサの持つ
オペレーションで効率良く扱える部分定数に分割する。
209は定数分割情報生成部で定数分割部203におい
て分割した定数に関する情報を生成する。204はプロ
グラム最適化部で中間記述レベル表現のプログラム中の
オペレーションを移動して実行順序を変更することや不
要なオペレーションを削除することによって最適化を行
ないつつ実行コードを生成する。210は定数分割情報
補正部でプログラム最適化部204によって定数を扱う
オペレーションを移動または削除した場合、定数分割情
報生成部204で生成した定数分割情報と実際のプログ
ラムの関連づけに差が生じるのを防ぐために、定数分割
情報も移動または削除して補正する。205は実行コー
ド出力部でプログラム最適化部によって生成された実行
コードを記憶装置208に出力する。206はデバッグ
情報生成部でデバッグに必要な識別子や行番号と実行コ
ードの関連づけなどのデバッグ情報を生成する。207
はデバッグ情報出力部でデバッグ情報生成部206によ
って生成されたデバッグ情報を記憶装置208に出力す
る。211は定数分割情報出力部で、定数分割情報補正
部210によって補正された定数分割情報を記憶装置2
08に出力する。
【0030】以上のように構成された本発明の実施の形
態によるプログラム変換装置についてプログラムの一例
を用いてその動作を説明する。実施の形態のプログラム
変換装置において、実行コードを実行するプロセッサの
ハードウェアモデルを図3に示す。同図はVLIWアー
キテクチャを採るプロセッサであり、R0からR15の
16本の32ビット汎用レジスタを持ち、32ビット固
定長命令を解読実行する。1命令はP0.0からP3.
2までの4ビットずつに区切られた8個のフィールドに
分割されており、P0.0はフィールドの組み合わせ方
法を、P1.0は分岐オペレーションの種別を、P2.
0からP2.2は第1演算をP3.0からP3.2は第
2演算を表す。これにより分岐、第1演算、第2演算の
最大3オペレーションが同時に実行できる。また分岐ま
たは演算のオペレーションにおいて全てのフィールドを
使用しなかった場合は、余ったフィールドに後続する命
令で使用する定数を分割して埋める。
【0031】再び図2の説明に戻る。記憶装置208上
にソースプログラムが記憶されている。例としてソース
プログラム中に大域変数aに16進数0x123456
78を代入する実行文が存在した場合で説明する。ソー
スプログラムはソースプログラム入力部201より構文
が適切かチェックしながら入力される。プログラム変換
部202ではソースプログラムを中間記述レベル表現に
変換する。変数aがレジスタR0に割り当てられた場
合、図4に示す中間記述レベル表現に変換される。同図
において各行は以下の意味を持つ。L401はデータの
始まりを示す中間記述レベルの疑似命令。L402は変
数aが大域データであることを示す中間記述レベルの疑
似命令。L403は変数a用の領域を確保する中間記述
レベルの疑似命令。L404は実行コードの始まりを示
す中間記述レベルの疑似命令。L405は定数0x12
345678をレジスタR0に代入することを示す中間
記述レベルの命令。L406は変数aのアドレスをレジ
スタR1に代入することを示す中間記述レベルの命令。
L407はレジスタR1のアドレスにレジスタR0の内
容を格納することを示す中間記述レベルの命令。
【0032】図2の定数分割部203は、中間記述レベ
ル表現中の定数をプロセッサの持つオペレーションで効
率良く扱える定数のビット幅に分割し、図5に示すプロ
グラムを得る。同図において各行は以下の意味を持つ。
L501はデータの始まりを示す疑似命令。L502は
変数aが大域データであることを示す疑似命令。L50
3は変数a用の領域を確保する疑似命令。L504は実
行コードの始まりを示す疑似命令。L505は定数0x
12345678の8ビット目から上位24ビットを蓄
積することを示すオペレーション。“$”記号は最上位
ビットからの部分定数を表す。L506は定数0x12
345678の下位8ビットと蓄積した定数の上位を結
合してレジスタR0に代入することを示すオペレーショ
ン。L507は変数aのアドレスの上位24ビットを蓄
積することを示すオペレーション。L508は変数aの
アドレスの下位8ビットと蓄積した定数の上位を結合し
てレジスタR1に代入することを示すオペレーション。
L509はレジスタR1のアドレスにレジスタR0の内
容を格納することを示すオペレーション。
【0033】図2の定数分割情報生成部209は定数分
割部203において分割した定数に関する情報を定数分
割情報として図6の601から606の要素を持たせて
生成する。同図において各情報要素は以下の意味を持
つ。601は定数の種別を表す情報。種別には数値、識
別子がある。602は定数の分割される前の値そのもの
を表す情報である。603は定数を分割した数を表す情
報である。604は定数をどのビット位置から分割した
かを表す情報である。605は定数をどれだけのビット
長に分割したかを表す情報である。606は分割した部
分定数を扱うオペレーションが存在する位置を表す情報
である。位置は命令の存在するアドレスと同一命令中に
複数オペレーションがある場合にどのオペレーションか
を区別するための通し番号で表される。
【0034】定数が2つに分割された場合は、604、
605、606の要素に対応する値は2つずつ出力され
る。この後、図2のプログラム最適化部205でプログ
ラム中の図示しない前後の部分も含めて実行コード長ま
たは実行時間が短くなるようにオペレーションを移動し
て実行順序を変更することや不要なオペレーションを削
除することによって最適化を行ない、図7に示すプログ
ラムを得る。同図において各行は以下の意味を持つ。L
701はデータの始まりを示す疑似命令。L702は変
数aが大域データであることを示す疑似命令。L703
は変数a用の領域を確保する疑似命令。L704は実行
コードの始まりを示す疑似命令。L705は定数0x1
2345678の上位24ビットを部分定数として蓄積
することを示すオペレーション。"SFST"は定数を蓄
積するオペレーションを、"24"は蓄積するビット数
を、"0x123456"は分割された部分定数を、"8"
は分割されたビット位置を、"$"は分割された先頭のオ
ペレーションであることを示している。L706は変数
aのアドレスの上位12ビットを部分定数として蓄積す
ることを示すオペレーション。L507の時に比べ最適
化により、分割位置を変更している。L707は定数0
x12345678の下位8ビットと蓄積した上位の部
分定数を結合してレジスタR0に代入することを示すオ
ペレーション。先頭の"||"記号は直前のオペレーション
とまとめて1命令とすることを示す並列実行記号であ
る。L708は変数aのアドレスの下位20ビットと蓄
積した上位の部分定数を結合してレジスタR1に代入す
ることを示すオペレーション。L709はレジスタR1
のアドレスにレジスタR0の内容を格納することを示す
オペレーション。
【0035】再び図2の説明に戻る。定数分割情報補正
部210では、プログラム最適化部204によって部分
定数を扱う命令を移動または削除した場合、定数分割情
報と実際のプログラムの関連づけに差が生じるので、定
数分割情報も移動または削除して補正する。実行コード
出力部205でプログラム最適化部によって生成された
実行コードを記憶装置208に出力する。デバッグ情報
生成部206でデバッグに必要なデバッグ情報を生成
し、これをデバッグ情報出力部207によって記憶装置
208に出力する。定数分割情報出力部211では、定
数分割情報補正部210によって補正された定数分割情
報を記憶装置208に出力する。図7の例が0x800
00000番地から実行コードとして出力された場合、
定数分割情報の各要素は図6の610から618のよう
に出力される。
【0036】最終的に実行プログラムには図8の情報が
出力される。同図において各情報要素は以下の意味を持
つ。801はファイル識別情報で実行可能なプロセッサ
の種類やプログラム変換装置のバージョンなどの情報が
含まれる。802は実行コード情報でプロセッサで実行
可能な機械語コードが含まれる。803は識別子情報で
識別子とその識別子に対応する値が対で識別子の数だけ
保存されている。804はソースファイル情報でプログ
ラム変換装置に入力されたソースファイルの名前や言語
種別などの情報が含まれる。805は行番号情報で入力
されたソースファイルの行番号と生成された実行コード
のアドレスを対で実行文の数だけ保存されている。80
6は型情報で識別子の型に関する情報が含まれる。80
7は定数分割情報でこの内容は図6の通りである。
【0037】図8の801から806の情報は従来の技
術におけるプログラム変換装置においても出力されてい
た情報であるが、807が追加された新しい定数分割情
報である。実行ファイルに図8における定数分割情報8
07の情報が加えられたことによって定数がどのように
分割されたか簡単に知ることができるようになる。
【0038】次に本発明の実施の形態におけるデバッグ
装置を示す。図9は本発明のデバッグ装置の構成図を示
すものである。901は入力解析部で利用者によるデバ
ッグコマンドの入力の意味を解析する。902は実行コ
ード入力・記憶部で記憶装置911より実行コードを入
力し、主記憶上に記憶しておく。903は実行コード実
行部で実行コードを実行する。904は実行履歴記憶部
で実行履歴を記憶しておく。905は実行履歴出力部で
実行履歴を出力装置913に出力する。906は資源参
照・変更部でメモリやレジスタなどの資源を参照、変更
する。907はソースプログラム入力部でソースプログ
ラムをそのまま出力する場合に使用される。908は実
行コード逆変換部で実行コードを疑似ソースプログラム
に逆変換する。909は疑似ソースプログラム出力部で
逆変換された疑似ソースプログラムを出力装置913に
出力する。910は実行コード変更部でプログラム変更
コマンドを処理する。914は定数復元部で分割された
部分定数を元の定数に復元する処理を行なう。915は
定数変更部で変更する定数を変更前と同じように分割し
て更新する。
【0039】以上のように構成された本発明の実施の形
態によるデバッグ装置について一例を用いてその動作を
説明する。デバッグ装置を起動すると利用者からのコマ
ンド入力待ちとなる。利用者が被デバッグプログラムの
読み込みコマンドを入力装置912から入力すると入力
解析部901で解析が行なわれ、実行コード入力・記憶
部902に制御が移る。902では記憶装置911より
前述のプログラム変換装置で生成された図8の情報を含
む実行プログラム103を入力し、主記憶に記憶する。
【0040】次に利用者が実行コードの逆変換コマンド
を入力装置912より入力すると入力解析部901で解
析がなされ、実行コード逆変換部908に制御が移る。
実行コード逆変換部908と定数復元部914のアルゴ
リズムを図10のフローチャートを用いて説明する。(S
1001)主記憶より実行コードを参照する。(S1002)実行コ
ードをニモニックに逆変換する。(S1003)ニモニックが
分割された定数の一部を操作するオペレーションか調べ
る。関わりがなければ処理を終了する。(S1004)オペレ
ーションに対応する定数分割情報があるか調べる。定数
分割情報があれば(S1012)に進む。(S1005)オペレーショ
ンに対応する実行履歴情報があるか調べる。実行履歴情
報があれば(S1013)に進む。(S1006)逆変換したい実行コ
ードに先行または後続する実行コードを検索し、分割さ
れた定数の残りの部分を扱う実行コードを取得する。(S
1007)分割された実行コードから分割された部分定数を
集め、一つの定数として復元する。(S1008)集めた定数
分割に関する情報を定数分割情報に追加する。(S1009)
オペレーション中の分割後の部分定数部分を分割前の定
数に置換する。(S1010)定数分割情報より定数が数値か
識別子のどちらで記述されていたか調べる。数値であれ
ば処理を終了する。(S1011)定数部分を該当する識別子
に置換して処理を終了する。(S1012)定数分割情報より
定数を取得し、(S1009)に進む。(S1013)逆変換したい実
行コードに該当する実行履歴情報より、先行または後続
する実行コードを検索し、分割された定数の残りの部分
を扱う実行コードを取得し、(S1007)に進む。
【0041】図10の制御の流れは1オペレーションを
逆変換する部分であるので、この制御を逆変換終了アド
レスの最後のオペレーションになるまで繰り返す。実行
コードの逆変換が終了した時点で疑似ソースプログラム
出力部909より逆変換結果を出力装置913に出力す
る。出力が終了した時点で次のコマンド入力待ちに制御
を戻す。
【0042】利用者が図7の命令表現に相当する実行コ
ードを逆変換コマンドを使用した際の入出力例を図11
に示す。L1101は利用者によるデバッグコマンドの
入力行である。L1102からL1106は逆変換出力
であり、各行は元の入力ソースプログラムに対応する行
番号、実行コードが配置されたアドレス、実行コードの
機械語の値、逆変換したニモニックから構成される。L
1104の行では1命令で複数のオペレーションが表現
されているために2つ目以降のオペレーションを示す行
にはアドレスと機械語コードの出力が省略され、代わり
に並列実行することを示す並列実行記号"||"が出力され
る。L1101の入力を入力解析部901が解析する。
先頭の"0012>"は利用者に12番目のデバッグコマ
ンドの入力を促す記号である。続く"UX"は実行コード
逆変換コマンド名を示しており、"0x8000000
0,0x8000000F"は実行コードを逆変換する
開始と終了アドレスを示している。この解析結果により
実行コード逆変換部908に制御が移る。まず0x80
000000番地の実行コード"F1123456"を主
記憶より参照する。この実行コードをニモニックに逆変
換すると"SFST24 0x123456"が得られ
る。このオペレーションは定数と関連するために図6の
定数分割情報中の要素606とこのオペレーションのア
ドレス及び同一アドレスでの複数のオペレーションを区
別するためのオペレーションの通し番号を比較して対応
する情報があるか検索する。対応する情報が存在した場
合は、要素602の値611より元の定数が0x123
45678であることが特定できるので"SFST24
0x12345678"に置換する。要素604と60
5の値613と615よりビット位置が8でビット長が
24であることがわかるので、ビット位置を加えて"S
FST24 0x12345678,8"となり、更に
24+8=32かつ定数は32ビット長であるので、最
上位ビットからの部分定数であることがわかるため更
に"$"記号を付加して"SFST24 0x12345
678,8,$"に置換する。要素601の値610よ
り定数の種別は数値であることがわかるので0x123
45678は数値のまま扱われ復元が終了する。
【0043】この過程において、もし定数分割情報中に
対応する情報が見つからなかった場合は、L705のオ
ペレーションがある0x80000000番地に先行ま
たは後続する実行コードから定数を扱うオペレーション
を検索する。既に実行コードを実行した後で実行履歴が
ある場合はその中から実際に実行したアドレスの実行コ
ードのみを検索し、実行履歴がない場合は実行コードを
前方または後方に連続して検索する。
【0044】この検索により図7のL706,L707,
L708の3つのオペレーションが候補に上がる。L7
05のオペレーションでは24ビットの部分定数を扱っ
ているので残りは32−24=8ビットである。L70
6は12ビットもの部分定数を扱っているので候補から
外れる。残った候補の中からL705に配置が近いオペ
レーションとしてL707が選択される。L707の実
行コードを参照すると“D0780000”が得られる
ので、この中から部分定数を抽出し0x78を得る。こ
れにより定数分割情報の内、602、603、604、
605、606の要素が得られるので601の種別は数
値として扱い、定数分割情報を610から618の値で
生成して記憶する。後は定数分割情報がある場合と同様
の処理により“SFST24 0x12345678,
8,$”が得られる。同様の処理を0x8000000
F番値まで繰り返し、L1102からL1106までの
出力を得る。
【0045】L1102はL705と、L1103はL
706と、L1104はL707と、L1105はL7
08と、L1106はL709に対応づけされる逆変換
結果である。通常の出力は何らかの前景色で出力される
が、定数を扱うオペレーションは対応づけを区別できる
ように色わけして出力される。図11の例ではL110
2とL1104は一つの定数を扱うため前景色とは別の
色1で、L1103とL1105も同様に色1とは別の
色2で出力される。L1107は次のデバッグコマンド
の入力を待機している状態である。
【0046】次に利用者が実行コードの変更コマンドを
入力装置911より入力すると入力解析部901で解析
がなされ、実行コード変更部910に制御が移る。実行
コード変更部910と定数変更部915のアルゴリズム
を図12のフローチャートを用いて説明する。(S1201)
変更後のコードは定数に関わるオペレーションであるか
調べる。定数に関わりがなければ(S1214)へ進む。(S120
2)変更後のコード中に含まれる定数の種類を601の情
報を使用して識別子で記述されているか調べる。識別子
でなければ(S1204)へ進む。(S1203)識別子情報より識別
子に対応する定数を求め、変更後のコード中に含まれる
識別子を定数に変換する。(S1204)変更前のコードは
数全体または定数の一部を扱うオペレーションであるか
調べる。定数全体または定数の一部を扱うのでなければ
(S1211)へ進む。(S1205)変更前コードに対応する定数分
割情報があるか調べる。情報があれば(S1212)へ進む。
(S1206)変更前コードに対応する実行履歴分割情報があ
るか調べる。情報があれば(S1213)へ進む。(S1207)変更
したい実行コードに先行または後続する実行コードを検
索し、分割された定数の残りの部分を扱うオペレーショ
ンを取得する。(S1208)復元した情報を定数分割情報に
追加する。(S1209)定数分割情報中の定数を変更後のも
のに更新する。(S1210)変更前のオペレーション中の定
数部分を変更後の定数に更新して処理を終了する。(S12
11)後続する定数を扱うオペレーションに影響がでる旨
を警告表示する。変更前は定数関連命令ではないにも関
わらずに変更後が定数関連命令のため、定数を分割した
場合に、うまく後続する命令に格納できなくなるので警
告を表示する。(S1212)定数分割情報より分割オペレー
ションを取得する。(S1213)逆変換したい実行コードに
該当する実行履歴より、先行または後続して実行した実
行コードを検索し、分割された定数の残りの部分を扱う
オペレーションを取得する。(S1214)変更前オペレーシ
ョンを変更後オペレーションに更新して処理を終了す
る。
【0047】実行コードの更新が終了した時点でコマン
ドを終了し、次のコマンド入力待ちに制御を戻す。利用
者が図11中の定数0x12345678を変更する際
の入出力例を図13に示す。L1301は利用者による
デバッグコマンドの入力行である。先頭の"0014>"
は利用者に14番目のデバッグコマンドの入力を促す記
号である。続く"A"は実行コード変更コマンド名を示し
ており、"0x80000000"は実行コードを変更す
るアドレスを示している。L1302には変更前の実行
コードの逆変換結果が出力される。逆変換出力は図10
と同様の制御で処理され出力内容もL1102と同じで
ある。L1303は変更後のオペレーションの入力行で
ある。先頭の"?"は利用者に入力を促す記号である。続
く"SFST24 0x87654321,8,$"は利
用者が入力した変更後のオペレーションである。L13
04とL1305は1回目の変更後かつ2回目の次のアド
レスに移動しての変更前のオペレーションである。L1
302とL1305のオペレーションを組み合わせて定
数を形成していたために、L1302をL1303に変
更したことにより、L1305は既に変更された後の定
数として出力されている。L1304の機械語部分もL
1303において既に変更されたオペレーションに関連
する部分は変更されている。L1306は変更後のオペ
レーションの入力行である。"."は変更を終了する入力
である。L1307は次のデバッグコマンドの入力を待
機している状態である。
【0048】次に利用者がコマンド入力ではなくカーソ
ルキーやマウスなどを使用してオペレーションの変更位
置を指定した場合を説明する。利用者が何らかの方法で
図11のL1102からL1106のような実行コード
の逆変換結果を出力装置に出力したとものする。この状
態でカーソルキーやマウスなどの入力装置を使用して変
更したい定数0x12345678を指定する際に、L
1102またはL1104のどちらのオペレーションを
選択しても特定できる機能を持つ。この機能は定数分割
情報中に分割されたオペレーションの位置の情報を定数
分割数603の数だけ604から606の要素から得て
検索することに実現される。
【0049】このデバッグ装置の定数の復元機能により
部分定数を元の定数のイメージで表示することができ、
利用者の実行コードの内容の理解を助けることができ
る。また、プログラム変換装置から定数分割情報が得ら
れなかった場合においても実行履歴または実行コードを
利用することによって定数を復元できるために既存のプ
ログラム変換装置で作成された被デバッグプログラムに
おいても同様の効果を発揮できる。ここで実行履歴を利
用することにより定数を蓄積する複数のオペレーション
間に分岐命令が入っていても正確に組合せを特定するこ
とができる。更に定数分割情報を追加することで再度同
じ復元を行なう際に高速に復元できるだけでなく、実行
履歴情報が消去された場合にも正確に復元可能となる。
【0050】このデバッグ装置の定数の変更機能により
定数が部分定数に分割されたことを利用者が意識しなく
ても簡単に変更が可能となる。なお、定数の分割及び復
元は即値だけではなく、絶対アドレス、相対アドレス、
オフセットなどにも適用できるものである。またVLI
Wプロセッサを実施例に使用したが、VLIW以外のプ
ロセッサにも使用可能である。
【0051】なお、実施例の定数には整数を使用したが
小数や複素数などにも使用可能である。なお、実施例の
定数を扱うオペレーションには転送オペレーションを使
用したが分岐オペレーションなどにも使用可能である。
なお、実施例においては定数は2つに連続したアドレス
に分割された場合を示したが、3つ以上に非連続なアド
レスに分割された場合も使用可能である。
【0052】なお、実施例においてはデバッグ機能の指
示はコマンド入力による方法を示したが、マウス、トラ
ックボール、タッチパネル、ライトペンなど他の入力デ
バイスによる操作も可能である。なお、分割された定数
を扱うオペレーションを色分けして区別する実施例を示
したが、書体の変更、記号付加、下線の出力など別の表
現で区別することも可能である。
【0053】
【発明の効果】以上のように本発明における請求項1の
プログラム変換装置は、入力されたソースプログラムに
含まれる定数を、プロセッサに適した2つ以上の部分定
数に分割する定数分割手段と、前記定数分割手段におけ
るデバッグ情報として定数を分割しても部分定数から元
の定数を復元して出力することが可能となる定数の分割
に関する情報として定数分割情報を生成し出力する機能
を備えたものである。この構成によれば定数を分割して
も部分定数から元の定数を復元することが可能となる。
【0054】また本発明の請求項2記載のプログラム変
換装置は、実行コードの最適化を行なう際、定数を扱う
オペレーションの一部または全部を移動または削除を行
なった場合、対応する定数分割情報を連係して移動また
は削除する定数分割情報補正手段を含むようにしたもの
である。この構成によれば定数分割後に更に最適化を行
なった場合においても、部分定数から元の定数を知るこ
とができるため、最適化を行なっても最適化前と同様に
定数の復元が可能となる。
【0055】また本発明の請求項3記載のプログラム変
換装置は、前記定数分割情報において分割される定数が
数値か識別子のどちらで記述されていたか区別するため
の情報を生成し出力する機能を追加したものである。こ
れにより定数が即値か識別子のどちらで記述されていた
かプログラム変換後に区別することが可能となる。また
本発明における請求項4記載のプログラム変換装置は、
前記部分定数のそれぞれに対して、前記部分定数が分割
される前の定数のどの部分かを特定するための情報と、
前記部分定数がどの実行コードに含まれるかを特定する
ための情報との少なくとも一方を出力するが、これによ
り実行コードと元の定数の相関関係を知ることができる
ようになる。
【0056】本発明における請求項5のデバッグ装置
は、ソースプログラムに含まれる1つの定数を2つ以上
の部分に分割し、分割された定数を含む実行コードをデ
バッグするデバッグ装置である。前記実行コードと、定
数がいかに分割されたかを示す定数分割情報とを入力す
る入力手段と、入力された前記実行コードを逆変換して
疑似ソースプログラムを得る逆変換手段と、前記逆変換
手段において得られた前記疑似ソースプログラム中に分
割された定数を検出すると、入力された前記定数分割情
報を利用して前記分割された定数を分割前の定数に置き
換える定数復元手段と、前記定数復元手段により定数の
置き換えられた前記疑似ソースプログラムを出力する出
力手段とを備える。この構成によれば、部分定数を分割
前の定数に復元して疑似ソースプログラムとして出力す
ることが可能になる。
【0057】また本発明における請求項6のデバッグ装
置は、前記定数復元手段において検出した前記疑似ソー
スプログラム中の分割された定数に関して、前記定数分
割情報が利用できないと判断すると、前記分割された定
数を含む実行コードに先行または後続する実行コードか
ら前記分割された定数の他の部分を含む実行コードを検
索し、前記分割された定数と検索して得られた前記分割
された定数の他の部分とを組合せて分割前の定数を得
る。これにより定数分割情報が得られない場合において
も定数の復元を行なうことができる。
【0058】また本発明における請求項7のデバッグ装
置は、さらに、入力された前記実行コードを実行する実
行コード実行手段と、前記実行コード実行手段により実
行された実行コードの履歴を記憶する実行履歴記憶手段
とを備え、前記定数復元手段は、検出した前記疑似ソー
スプログラム中の分割された定数に関して、前記定数分
割情報が利用できないと判断すると、前記実行履歴記憶
手段から前記分割された定数を含む実行コードと前記分
割された定数の他の部分を含む実行コードとを検索し、
検索して得られた実行コードに含まれる定数の部分を組
合せて分割前の定数を得る。これにより定数分割情報が
得られない場合においても定数の復元を行なうことがで
きる。
【0059】また本発明における請求項8のデバッグ装
置は、前記実行履歴記憶手段において、前記実行コード
実行手段により実行された実行コードのアドレス履歴を
記憶し、前記定数復元手段は、検出した前記疑似ソース
プログラム中の分割された定数に関して、前記定数分割
情報が利用できないと判断すると、前記実行履歴記憶手
段から逆変換する実行コードのアドレスに一致するアド
レス履歴を検索し、該アドレスに先行または後続するア
ドレスの実行コードから前記分割された定数の他の部分
を含む実行コードを検索し、前記分割された定数と検索
して得られた前記分割された定数の他の部分とを組合せ
て分割前の定数を得る。これにより異なるアドレスで同
じ命令で定数を分割する実行コードを実行した場合にお
いても、これらをアドレスで区別して正確に一致する実
行履歴情報を特定することができる。
【0060】また本発明における請求項9のデバッグ装
置は、前記定数復元手段において、検出した前記疑似ソ
ースプログラム中の分割された定数に関して、前記定数
分割情報が利用できないと判断した場合に、組合せて得
た前記分割前の定数を前記定数分割情報に追加して記録
することを特徴とする。これにより同じアドレスに対し
て再び部分定数の復元要求が来た場合に、2回目以降は
実行コードまたは実行履歴を検索する必要がなくなり高
速に処理することができるようになる。また実行履歴を
消去しても復元が可能になる。
【0061】また本発明における請求項10のデバッグ
装置は、前記定数分割情報において分割された定数のそ
れぞれに対して分割前の定数が数値か識別子かのどちら
で記述されていたかを区別するための情報を含んでな
り、前記定数復元手段は、前記定数分割情報に基づい
て、復元した分割前の定数が識別子で記述されていたこ
とを判断すると、前記復元した分割前の定数をさらに対
応する識別子に置き換え、前記出力手段は、前記定数復
元手段により識別子に置き換えられた前記疑似ソースプ
ログラムを出力する。これにより識別子で記述されてい
た定数は数値ではなく識別子として復元することが可能
となる。
【0062】また本発明における請求項11のデバッグ
装置は、前記出力手段において、前記定数復元手段によ
り復元された分割前の定数に関して、分割前の1つの定
数の複数に分割された部分を含む全ての実行コードに対
応する前記疑似ソースプログラム上の部位を他と区別し
て出力することができる。これによりデバッグ装置の利
用者は疑似ソースプログラム中の部分即値を扱う部分を
他と区別することができる。
【0063】また本発明における請求項12のデバッグ
装置は、前記定数分割情報において、分割された定数の
それぞれに対して分割される前の定数のどの部分かを特
定するための情報を含んでなり、前記デバッグ装置はさ
らに、変更すべき定数を特定する定数特定手段と、前記
定数特定手段により特定された定数に代わる変更定数を
入力する定数入力手段と、前記定数分割情報に基づい
て、前記定数特定手段により特定された定数がいかに分
割されているかを判別し、それと同様に前記定数入力手
段により入力された前記変更定数を分割する定数分割手
段と、前記定数分割手段により判別された分割された定
数の各部分を、前記定数分割手段により分割された前記
変更定数の各部分によって置き換える定数変更手段とを
備える。これにより利用者は分割された定数を意識する
ことなく変更することができる。
【0064】また本発明における請求項13のデバッグ
装置は、前記定数特定手段において、入力デバイスを用
いることを可能とする。これにより実行コードの逆変換
結果をウィンドウなどに出力した際に、変更対象とする
即値を扱うオペレーションが全て出力できなかった場合
においても容易に変更部位を指定することができるよう
になる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるプログラム変換装
置とデバッグ装置を合わせた全体構成図
【図2】本発明の実施の形態におけるプログラム変換装
置の構成図
【図3】本発明の実施の形態におけるハードウェアモデ
ルを表す構成図
【図4】本発明の実施の形態における32ビット定数を
分割する前の中間記述レベル表現例を示す図
【図5】本発明の実施の形態における32ビット定数を
分割した後の命令表現例を示す図
【図6】本発明の実施の形態における定数分割情報の内
容を表す構造図
【図7】本発明の実施の形態における32ビット定数を
分割して更に最適化した後の命令表現例を示す図
【図8】本発明の実施の形態における実行可能プログラ
ムに含まれる情報の種類を表す構造図
【図9】本発明の実施の形態におけるデバッグ装置の構
成図
【図10】本発明の実施の形態における定数復元処理の
流れ図
【図11】本発明の実施の形態における逆変換コマンド
実行例を示す図
【図12】本発明の実施の形態における定数変更処理の
流れ図
【図13】本発明の実施の形態における実行コード変更
コマンド実行例を示す図
【図14】従来の技術におけるプログラム変換装置とデ
バッグ装置を合わせた全体構成図
【図15】従来の技術におけるプログラム変換装置の構
成図
【図16】従来の技術におけるデバッグ装置の構成図
【図17】従来の技術における逆変換コマンド実行例を
示す図
【図18】本発明の実施の形態におけるニモニックの説
明図
【符号の説明】
101 入力ソースプログラム 102 プログラム変換装置 103 実行可能プログラム 104 デバッグ装置 105 疑似ソースプログラム 106 定数分割情報生成手段 107 定数分割情報補正手段 108 定数分割情報出力手段 109 定数分割情報 110 定数復元手段 111 定数変更手段 201 ソースプログラム入力部 202 プログラム変換部 203 定数分割部 204 プログラム最適化部 205 実行コード出力部 206 デバッグ情報生成部 207 デバッグ情報出力部 208 記憶装置 209 定数分割情報生成部 210 定数分割情報補正部 211 定数分割情報出力部 601 定数種別 602 定数の値 603 定数分割数 604 定数分割ビット位置 605 定数分割ビット長 606 定数使用命令位置 801 ファイル識別情報 802 実行コード情報 803 識別子情報 804 ソースファイル情報 805 行番号情報 806 型情報 807 定数分割情報 901 入力解析部 902 実行コード入力・記憶部 903 実行コード実行部 904 実行履歴記憶部 905 実行履歴出力部 906 資源参照・変更部 907 ソースプログラム入力部 908 実行コード逆変換部 909 ソースプログラム出力部 910 実行コード変更部 911 記憶装置 912 入力装置 913 出力装置 914 定数復元部 915 定数変更部
フロントページの続き (56)参考文献 特開 平7−271606(JP,A) 特開 平5−150979(JP,A) 特開 平8−6797(JP,A) 特開 平11−7388(JP,A) 特開 平11−7387(JP,A) 特開 平11−53187(JP,A) 特開 平11−53186(JP,A) 特開 平11−73325(JP,A) 特開 平5−35493(JP,A) 特開 平6−202874(JP,A) 特開 平7−129411(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 G06F 9/44

Claims (15)

    (57)【特許請求の範囲】
  1. 【請求項1】 ソースプログラムを翻訳しアセンブリ言
    語または機械言語に変換するプログラム変換装置におい
    て、 入力されたソースプログラムに含まれる1つの定数を2
    つ以上の部分定数に分割する定数分割手段と、 前記定数分割手段により分割された前記部分定数をそれ
    ぞれ1つの実行コードに含ませて出力する実行コード出
    力手段と、 前記定数分割手段における定数を分割しても部分定数か
    ら元の定数を復元して出力することが可能となる定数の
    分割に関する情報を定数分割情報として生成し出力する
    定数分割情報生成手段とを備えることを特徴とするプロ
    グラム変換装置。
  2. 【請求項2】 前記プログラム変換装置はさらに、 前記実行コードの移動または削除を伴う最適化を行うプ
    ログラム最適化手段と、 前記プログラム最適化手段により前記部分定数を含む実
    行コードの移動または削除がなされた場合、対応する前
    記定数分割情報を連係して移動または削除する定数分割
    情報補正手段とを備えることを特徴とする請求項1記載
    のプログラム変換装置。
  3. 【請求項3】 前記定数分割情報生成手段は、前記定数
    分割手段において分割される定数が数値か識別子かのど
    ちらで記述されていたかを区別するための情報を前記定
    数分割情報に付加して生成し出力する機能を有すること
    を特徴とする請求項1または2記載のプログラム変換装
    置。
  4. 【請求項4】 前記定数分割情報は、前記部分定数のそ
    れぞれに対して、前記部分定数が分割される前の定数の
    どの部分かを特定するための情報と、前記部分定数がど
    の実行コードに含まれるかを特定するための情報との少
    なくとも一方を含んでなることを特徴とする請求項1か
    ら3のいずれか1項に記載のプログラム変換装置。
  5. 【請求項5】 ソースプログラムに含まれる1つの定数
    を2つ以上の部分に分割し、分割された定数を含む実行
    コードをデバッグするデバッグ装置において、 前記実行コードと、定数がいかに分割されたかを示す定
    数分割情報とを入力する入力手段と、 入力された前記実行コードを逆変換して疑似ソースプロ
    グラムを得る逆変換手段と、 前記逆変換手段において得られた前記疑似ソースプログ
    ラム中に分割された定数を検出すると、入力された前記
    定数分割情報を利用して前記分割された定数を分割前の
    定数に置き換える定数復元手段と、 前記定数復元手段により定数の置き換えられた前記疑似
    ソースプログラムを出力する出力手段とを備えたことを
    特徴とするデバッグ装置。
  6. 【請求項6】 前記定数復元手段は、検出した前記疑似
    ソースプログラム中の分割された定数に関して、前記定
    数分割情報が利用できないと判断すると、前記分割され
    た定数を含む実行コードに先行または後続する実行コー
    ドから前記分割された定数の他の部分を含む実行コード
    を検索し、前記分割された定数と検索して得られた前記
    分割された定数の他の部分とを組合せて分割前の定数を
    得ることを特徴とする請求項5記載のデバッグ装置。
  7. 【請求項7】 前記デバッグ装置はさらに、入力された
    前記実行コードを実行する実行コード実行手段と、前記
    実行コード実行手段により実行された実行コードの履歴
    を記憶する実行履歴記憶手段とを備え、 前記定数復元手段は、検出した前記疑似ソースプログラ
    ム中の分割された定数に関して、前記定数分割情報が利
    用できないと判断すると、前記実行履歴記憶手段から前
    記分割された定数を含む実行コードと前記分割された定
    数の他の部分を含む実行コードとを検索し、検索して得
    られた実行コードに含まれる定数の部分を組合せて分割
    前の定数を得ることを特徴とする請求項5記載のデバッ
    グ装置。
  8. 【請求項8】 前記実行履歴記憶手段は、前記実行コー
    ド実行手段により実行された実行コードのアドレス履歴
    を記憶し、 前記定数復元手段は、検出した前記疑似ソースプログラ
    ム中の分割された定数に関して、前記定数分割情報が利
    用できないと判断すると、 前記実行履歴記憶手段から逆変換する実行コードのアド
    レスに一致するアドレス履歴を検索し、 該アドレスに先行または後続するアドレスの実行コード
    から前記分割された定数の他の部分を含む実行コードを
    検索し、 前記分割された定数と検索して得られた前記分割された
    定数の他の部分とを組合せて分割前の定数を得ることを
    特徴とする請求項7記載のデバッグ装置。
  9. 【請求項9】 前記定数復元手段は、検出した前記疑似
    ソースプログラム中の分割された定数に関して、前記定
    数分割情報が利用できないと判断した場合に、組合せて
    得た前記分割前の定数を前記定数分割情報に追加して記
    録することを特徴とする請求項6から8のいずれか1項
    に記載のデバッグ装置。
  10. 【請求項10】 前記定数分割情報は、分割された定数
    のそれぞれに対して分割前の定数が数値か識別子かのど
    ちらで記述されていたかを区別するための情報を含んで
    なり、 前記定数復元手段は、前記定数分割情報に基づいて、復
    元した分割前の定数が識別子で記述されていたことを判
    断すると、前記復元した分割前の定数をさらに対応する
    識別子に置き換え、 前記出力手段は、前記定数復元手段により識別子に置き
    換えられた前記疑似ソースプログラムを出力することを
    特徴とする請求項5記載のデバッグ装置。
  11. 【請求項11】 前記出力手段は、前記定数復元手段に
    より復元された分割前の定数に関して、分割前の1つの
    定数の複数に分割された部分を含む全ての実行コードに
    対応する前記疑似ソースプログラム上の部位を他と区別
    して出力することを特徴とする請求項5記載のデバッグ
    装置。
  12. 【請求項12】 前記定数分割情報は、分割された定数
    のそれぞれに対して分割される前の定数のどの部分かを
    特定するための情報を含んでなり、 前記デバッグ装置はさらに、 変更すべき定数を特定する定数特定手段と、 前記定数特定手段により特定された定数に代わる変更定
    数を入力する定数入力手段と、 前記定数分割情報に基づいて、前記定数特定手段により
    特定された定数がいかに分割されているかを判別し、そ
    れと同様に前記定数入力手段により入力された前記変更
    定数を分割する定数分割手段と、 前記定数分割手段により判別された分割された定数の各
    部分を、前記定数分割手段により分割された前記変更定
    数の各部分によって置き換える定数変更手段とを備える
    ことを特徴とする請求項5記載のデバッグ装置。
  13. 【請求項13】 前記定数特定手段は、入力デバイスを
    用いて行われることを特徴とする請求項12記載のデバ
    ッグ装置。
  14. 【請求項14】 前記デバッグ装置は、対象とするプロ
    セッサが、 命令中に定数レジスタへ格納すべき定数が置かれている
    ことを解読する解読手段と、 前記解読手段により前記定数が置かれていると解読され
    た場合には、前記定数レジスタに定数が格納されていな
    いと判断すると前記定数を所定位置に格納し、前記定数
    レジスタに定数が既に格納されていると判断すると前記
    定数レジスタに既に格納されている定数を残したまま新
    たな定数を前記定数レジスタに格納する格納手段と、 前記定数レジスタに格納されている全ての定数を読み出
    し、その定数をオペランドとするオペレーションを実行
    する実行手段とを備えてなるプロセッサであることを特
    徴とする請求項5記載のデバッグ装置。
  15. 【請求項15】 前記プロセッサは、並列実行する複数
    のオペレーションからなる命令を実行するVLIWプロ
    セッサであって、前記VLIWプロセッサは並列実行で
    きるオペレーションがない場合、オペレーションの代わ
    りに定数が配置された命令のうち前記定数以外のオペレ
    ーションを並列実行するとともに、前記定数は順に格納
    しておき後続の命令で使用するものであることを特徴と
    する請求項14記載のデバッグ装置。
JP23435597A 1997-08-29 1997-08-29 プログラム変換装置とデバッグ装置 Expired - Fee Related JP3424520B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP23435597A JP3424520B2 (ja) 1997-08-29 1997-08-29 プログラム変換装置とデバッグ装置
EP98306918A EP0899661B1 (en) 1997-08-29 1998-08-28 Debug aid device for symbolic programs and compiler achieving the same.
US09/143,628 US6141791A (en) 1997-08-29 1998-08-28 Debug aid device, program compiler device, storage medium storing computer-readable debugger program, and storage medium storing program compiler program
DE69816381T DE69816381T2 (de) 1997-08-29 1998-08-28 Vorrichtung zur Unterstützung von Fehlersuche in symbolische Programme und entsprechender Kompiler.
KR1019980035359A KR100537258B1 (ko) 1997-08-29 1998-08-29 디버그지원장치,프로그램번역장치,컴퓨터판독가능한디버그지원프로그램을기록한기록매체,프로그램번역프로그램을기록한기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23435597A JP3424520B2 (ja) 1997-08-29 1997-08-29 プログラム変換装置とデバッグ装置

Publications (2)

Publication Number Publication Date
JPH1173326A JPH1173326A (ja) 1999-03-16
JP3424520B2 true JP3424520B2 (ja) 2003-07-07

Family

ID=16969711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23435597A Expired - Fee Related JP3424520B2 (ja) 1997-08-29 1997-08-29 プログラム変換装置とデバッグ装置

Country Status (5)

Country Link
US (1) US6141791A (ja)
EP (1) EP0899661B1 (ja)
JP (1) JP3424520B2 (ja)
KR (1) KR100537258B1 (ja)
DE (1) DE69816381T2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3424520B2 (ja) * 1997-08-29 2003-07-07 松下電器産業株式会社 プログラム変換装置とデバッグ装置
US6314557B1 (en) * 1998-12-14 2001-11-06 Infineon Technologies Development Center Tel Aviv Ltd Hybrid computer programming environment
JP3699354B2 (ja) * 1998-12-22 2005-09-28 富士通株式会社 最適化オブジェクト生成装置及び方法
JP3488161B2 (ja) * 2000-01-31 2004-01-19 Necエレクトロニクス株式会社 プログラム開発装置、プログラム開発方法及びプログラム開発プログラムを記録した記録媒体
JP2002091762A (ja) * 2000-09-14 2002-03-29 Denso Corp プログラム生成装置
US7086033B2 (en) * 2002-04-25 2006-08-01 International Business Machines Corporation Software debugger having a monitor for monitoring conditional statements within a software program
US20040030963A1 (en) * 2002-08-12 2004-02-12 Sun Microsystems, Inc., A Delaware Corporation Method and apparatus for debugging computer program
JP2004152279A (ja) * 2002-10-08 2004-05-27 Matsushita Electric Ind Co Ltd プログラム更新方法および端末装置
US7613961B2 (en) * 2003-10-14 2009-11-03 Hewlett-Packard Development Company, L.P. CPU register diagnostic testing
US7343588B2 (en) * 2004-01-30 2008-03-11 International Business Machines Corporation Method of generating and utilizing debug history
US8407206B2 (en) * 2005-05-16 2013-03-26 Microsoft Corporation Storing results related to requests for software development services
JP2006338421A (ja) * 2005-06-03 2006-12-14 Fujitsu Ltd リモートデータベース操作プログラム、リモートデータベース操作方法、およびリモートデータベース操作装置
JP2006350686A (ja) * 2005-06-16 2006-12-28 Seiko Epson Corp 命令セット・シミュレータ生成装置及びシミュレータ生成方法
US20070226702A1 (en) * 2006-03-22 2007-09-27 Rolf Segger Method for operating a microcontroller in a test environment
US20130179863A1 (en) * 2012-01-11 2013-07-11 Microsoft Corporation Bug variant detection using program analysis and pattern identification
US9129063B2 (en) * 2013-05-14 2015-09-08 Oracle International Corporation Visualizing a computer program execution history
US8997060B2 (en) 2013-07-31 2015-03-31 International Business Machines Corporation Parallel program analysis and branch prediction
US9436450B2 (en) * 2014-09-01 2016-09-06 Freescale Semiconductor, Inc. Method and apparatus for optimising computer program code
JP6559600B2 (ja) * 2016-03-17 2019-08-14 株式会社東芝 情報処理装置、情報処理プログラムおよび検査システム
CN108198124B (zh) * 2017-12-27 2023-04-25 上海联影医疗科技股份有限公司 医学图像处理方法、装置、计算机设备和存储介质
CN112948271A (zh) * 2021-04-09 2021-06-11 腾讯科技(深圳)有限公司 一种代码测试方法、装置、设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4694420A (en) * 1982-09-13 1987-09-15 Tektronix, Inc. Inverse assembly method and apparatus
US5287548A (en) * 1988-02-29 1994-02-15 Allen-Bradley Company, Inc. Programmable controller having a stored program with both machine language instructions and source code data
EP0525243B1 (de) * 1991-07-31 1996-09-18 Siemens Aktiengesellschaft Verfahren zur Visualisierung von protokollierten Informationen in einem Kommunikationssystem
US5555419A (en) * 1993-01-06 1996-09-10 Digital Equipment Corporation Correlation system
JP3546980B2 (ja) * 1996-03-29 2004-07-28 松下電器産業株式会社 データ処理装置
JP3424520B2 (ja) * 1997-08-29 2003-07-07 松下電器産業株式会社 プログラム変換装置とデバッグ装置

Also Published As

Publication number Publication date
JPH1173326A (ja) 1999-03-16
EP0899661A1 (en) 1999-03-03
EP0899661B1 (en) 2003-07-16
KR19990024035A (ko) 1999-03-25
DE69816381T2 (de) 2004-02-12
DE69816381D1 (de) 2003-08-21
US6141791A (en) 2000-10-31
KR100537258B1 (ko) 2006-02-28

Similar Documents

Publication Publication Date Title
JP3424520B2 (ja) プログラム変換装置とデバッグ装置
EP0838755B1 (en) Binary program conversion apparatus and method
JP3327818B2 (ja) プログラム変換装置及び記録媒体
US20080178149A1 (en) Inferencing types of variables in a dynamically typed language
JPH0695311B2 (ja) コード最適化方法
US20090249307A1 (en) Program analysis apparatus, program analysis method, and program storage medium
JP2002527815A (ja) プログラムコード変換方法
JPH0519173B2 (ja)
JP2002149416A (ja) プログラムの最適化方法及びこれを用いたコンパイラ
JP2001166949A (ja) シンボリック実行を用いてソースコードをコンパイルするための方法及び装置
US20090049431A1 (en) Method and compiler of compiling a program
JPH0926884A (ja) バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置
US7979853B2 (en) Compiler device, method, program and recording medium
JP2001166946A (ja) 階層の平坦化によりソースコードをコンパイルする方法及び装置
US6202203B1 (en) Method of, system for, and computer program product for providing global value numbering
US6256782B1 (en) Compile apparatus, compile method and computer-readable medium storing compiler
US11635947B2 (en) Instruction translation support method and information processing apparatus
US11556317B2 (en) Instruction translation support method and information processing apparatus
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
Morris et al. A system program generator
JP2006202134A (ja) プロファイル情報収集方法および装置
JPH0522272B2 (ja)
JP2827979B2 (ja) アセンブラ処理装置及びアセンブラ処理方法
Haynes The architecture of an ALGOL 60 computer implemented with distributed processors
Akin A re-usable code generator for prime 50-series computers

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees