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

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

Info

Publication number
JPH1173326A
JPH1173326A JP9234355A JP23435597A JPH1173326A JP H1173326 A JPH1173326 A JP H1173326A JP 9234355 A JP9234355 A JP 9234355A JP 23435597 A JP23435597 A JP 23435597A JP H1173326 A JPH1173326 A JP H1173326A
Authority
JP
Japan
Prior art keywords
constant
execution code
divided
execution
information
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.)
Granted
Application number
JP9234355A
Other languages
English (en)
Other versions
JP3424520B2 (ja
Inventor
Akira Takuma
顯 宅間
Shuichi Takayama
秀一 高山
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 JP23435597A priority Critical patent/JP3424520B2/ja
Priority to DE69816381T priority patent/DE69816381T2/de
Priority to US09/143,628 priority patent/US6141791A/en
Priority to EP98306918A priority patent/EP0899661B1/en
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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 定数を様々な分割方法で不連続に分割された
場合においてもどのように分割されたかを知ることがで
きるプログラム変換装置を提供する。また分割された部
分定数を元の定数に復元することと部分定数を分割され
ていることを利用者が意識せずに変更できるデバッグ装
置を提供する。 【解決手段】 プログラム変換装置において定数を分割
する際に定数をどのように分割したかを示す定数分割情
報を生成し、出力する。デバッグ装置においては定数分
割情報、実行コード、実行履歴情報のいずれかを使用し
て部分定数を元の定数に復元して出力する。また、定数
を扱う命令を変更する際は定数を分割すべき状態を復元
時と同様に検出して自動的に残りの部分定数を扱う命令
を変更し、利用者の負担を軽減する。

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において記憶装置208
から入力されたソースプログラムはプログラム変換部2
02で中間記述レベル表現に変換される。その後、定数
分割部203で定数を扱う命令をプロセッサに適した部
分定数に分割し、プログラム最適化部204で命令の並
べ替えや不要コードの削除によるプログラムの最適化が
行なわれる。実行コード出力部205において生成され
た実行コードを記憶装置208に出力する。デバッグ情
報生成部206では実行コードをデバッグするために必
要なデバッグ情報を生成し、デバッグ情報出力部207
においてデバッグ情報を記憶装置208に出力する。
【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に示す。L1701は利用者によるデバッグ
コマンドの入力行である。L1702からL1705は
逆変換出力であり、各行は元の入力ソースプログラムに
対応する行番号、実行コードが配置されたアドレス、実
行コードの機械語の値、逆変換したニモニックから構成
される。定数0x12345678はL1702とL1
703にそれぞれ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に示すプログラムを得る。同図にお
いて各行は以下の意味を持つ。L701はデータの始ま
りを示す疑似命令。L702は変数aが大域データであ
ることを示す疑似命令。L703は変数a用の領域を確
保する疑似命令。L704は実行コードの始まりを示す
疑似命令。L705は定数0x12345678の上位
24ビットを部分定数として蓄積することを示すオペレ
ーション。“SFST”は定数を蓄積するオペレーショ
ンを、“24”は蓄積するビット数を、“0x1234
56”は分割された部分定数を、“8”は分割されたビ
ット位置を、“$”は分割された先頭のオペレーション
であることを示している。L706は変数aのアドレス
の上位12ビットを部分定数として蓄積することを示す
オペレーション。L707は定数0x12345678
の下位8ビットと蓄積した上位の部分定数を結合してレ
ジスタR0に代入することを示すオペレーション。先頭
の“||”記号は直前のオペレーションとまとめて1命令
とすることを示す並列実行記号である。L708は変数
aのアドレスの下位24ビットと蓄積した上位の部分定
数を結合してレジスタ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のフローチャートを用いて説明する。 (S1001)主記憶より実行コードを参照する。 (S1002)実行コードをニモニックに逆変換する。 (S1003)ニモニックが分割された定数に関わるオペレー
ションか調べる。関わりがなければ処理を終了する。 (S1004)オペレーションに対応する定数分割情報がある
か調べる。定数分割情報があれば(S1012)に進む。 (S1005)オペレーションに対応する実行履歴情報がある
か調べる。実行履歴情報があれば(S1013)に進む。 (S1006)逆変換したい実行コードに先行または後続する
実行コードを検索し、分割された定数の残りの部分を扱
う実行コードを取得する。 (S1007)分割された実行コードから分割された部分定数
を集め、一つの定数として復元する。 (S1008)集めた定数分割に関する情報を定数分割情報に
追加する。 (S1009)オペレーション中の分割後の部分定数部分を分
割前の定数に置換する。 (S1010)定数分割情報より定数が数値か識別子のどちら
で記述されていたか調べる。数値であれば処理を終了す
る。 (S1011)定数部分を該当する識別子に置換して処理を終
了する。 (S1012)定数分割情報より定数を取得し、(S1009)に進
む。 (S1013)逆変換したい実行コードに該当する実行履歴情
報より、先行または後続する実行コードを検索し、分割
された定数の残りの部分を扱う実行コードを取得し、(S
1007)に進む。
【0041】図10の制御の流れは1オペレーションを
逆変換する部分であるので、この制御を逆変換終了アド
レスの最後のオペレーションになるまで繰り返す。実行
コードの逆変換が終了した時点で疑似ソースプログラム
出力部909より逆変換結果を出力装置913に出力す
る。出力が終了した時点で次のコマンド入力待ちに制御
を戻す。
【0042】利用者が図7の命令表現に相当する実行コ
ードを逆変換コマンドを使用した際の入出力例を図11
に示す。L1101は利用者によるデバッグコマンドの
入力行である。L1102からL1106は逆変換出力
であり、各行は元の入力ソースプログラムに対応する行
番号、実行コードが配置されたアドレス、実行コードの
機械語の値、逆変換したニモニックから構成される。L
1104の行では1命令で複数のオペレーションが表現
されているために2つ目以降のオペレーションを示す行
にはアドレスと機械語コードの出力が省略され、代わり
に並列実行することを示す並列実行記号“||”が出力さ
れる。L1101の入力を入力解析部901が解析す
る。先頭の“0012>”は利用者に12番目のデバッ
グコマンドの入力を促す記号である。続く“UX”は実
行コード逆変換コマンド名を示しており、“0x800
00000,0x8000000F”は実行コードを逆
変換する開始と終了アドレスを示している。この解析結
果により実行コード逆変換部908に制御が移る。まず
0x80000000番地の実行コード“F11234
56”を主記憶より参照する。この実行コードをニモニ
ックに逆変換すると“SFST24 0x12345
6”が得られる。このオペレーションは定数と関連する
ために図6の定数分割情報中の要素606とこのオペレ
ーションのアドレス及びオペレーションの通し番号を比
較して対応する情報があるか検索する。対応する情報が
存在した場合は、要素602の値611より元の定数が
0x12345678であることが特定できるので“S
FST24 0x12345678”に置換する。要素
604と605の値613と615よりビット位置が8
でビット長が24であることがわかるので、ビット位置
を加えて“SFST24 0x12345678,8”
となり、更に24+8=32かつ定数は32ビット長で
あるので、最上位ビットからの部分定数であることがわ
かるため更に“$”記号を付加して“SFST24 0
x12345678,8,$”に置換する。要素601
の値610より定数の種別は数値であることがわかるの
で0x12345678は数値のまま扱われ復元が終了
する。
【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)へ進
む。 (S1202)変更後のコード中に含まれる定数の種類を60
1の情報を使用して識別子で記述されているか調べる。
識別子でなければ(S1204)へ進む。 (S1203)識別子情報より識別子に対応する定数を求め、
変更後のコード中に含まれる識別子を定数に変換する。 (S1204)変更前のコードは定数に関わるオペレーション
であるか調べる。定数に関わりがなければ(S1211)へ進
む。 (S1205)変更前コードに対応する定数分割情報があるか
調べる。情報があれば(S1212)へ進む。 (S1206)変更前コードに対応する実行履歴分割情報があ
るか調べる。情報があれば(S1213)へ進む。 (S1207)変更したい実行コードに先行または後続する実
行コードを検索し、分割された定数の残りの部分を扱う
オペレーションを取得する。 (S1208)復元した情報を定数分割情報に追加する。 (S1209)定数分割情報中の定数を変更後のものに更新す
る。 (S1210)変更前のオペレーション中の定数部分を変更後
の定数に更新して処理を終了する。 (S1211)後続する定数を扱うオペレーションに影響がで
る旨を警告表示する。 (S1212)定数分割情報より分割オペレーションを取得す
る。 (S1213)逆変換したい実行コードに該当する実行履歴よ
り、先行または後続して実行した実行コードを検索し、
分割された定数の残りの部分を扱うオペレーションを取
得する。 (S1214)変更前オペレーションを変更後オペレーション
に更新して処理を終了する。
【0047】実行コードの更新が終了した時点でコマン
ドを終了し、次のコマンド入力待ちに制御を戻す。利用
者が図11中の定数0x12345678を変更する際
の入出力例を図13に示す。L1301は利用者による
デバッグコマンドの入力行である。先頭の“0014
>”は利用者に14番目のデバッグコマンドの入力を促
す記号である。続く“A”は実行コード変更コマンド名
を示しており、“0x80000000”は実行コード
を変更するアドレスを示している。L1302には変更
前の実行コードの逆変換結果が出力される。逆変換出力
は図10と同様の制御で処理され出力内容もL1102
と同じである。L1303は変更後のオペレーションの
入力行である。先頭の“?”は利用者に入力を促す記号
である。続く“SFST24 0x87654321,
8,$”は利用者が入力した変更後のオペレーションで
ある。L1304とL1305は次のアドレスの変更前
のオペレーションである。L1302とL1305のオ
ペレーションを組み合わせて定数を形成していたため
に、L1302をL1303に変更したことにより、L
1305は既に変更された後の定数として出力されてい
る。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】従来の技術における逆変換コマンド実行例を
示す図
【符号の説明】
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 定数変更部

Claims (15)

    【特許請求の範囲】
  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 プログラム変換装置とデバッグ装置
DE69816381T DE69816381T2 (de) 1997-08-29 1998-08-28 Vorrichtung zur Unterstützung von Fehlersuche in symbolische Programme und entsprechender Kompiler.
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
EP98306918A EP0899661B1 (en) 1997-08-29 1998-08-28 Debug aid device for symbolic programs and compiler achieving the same.
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 true JPH1173326A (ja) 1999-03-16
JP3424520B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8997060B2 (en) 2013-07-31 2015-03-31 International Business Machines Corporation Parallel program analysis and branch prediction

Families Citing this family (20)

* 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
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
DE59108210D1 (de) * 1991-07-31 1996-10-24 Siemens Ag 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 松下電器産業株式会社 プログラム変換装置とデバッグ装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8997060B2 (en) 2013-07-31 2015-03-31 International Business Machines Corporation Parallel program analysis and branch prediction
US9454375B2 (en) 2013-07-31 2016-09-27 International Business Machines Corporation Parallel program analysis and branch prediction

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3424520B2 (ja) プログラム変換装置とデバッグ装置
US5048018A (en) Debugging parallel programs by serialization
EP1618470B1 (en) Method and apparatus for recovering data values in dynamic runtime systems
US20080178149A1 (en) Inferencing types of variables in a dynamically typed language
JP4699580B2 (ja) データ処理システムの配列の静的初期化方法、データ処理方法、並びにデータ処理システム及びその制御手順をコンピュータに実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体
US8276130B2 (en) Method and compiler of compiling a program
JP2001166949A (ja) シンボリック実行を用いてソースコードをコンパイルするための方法及び装置
JP6418696B2 (ja) 命令セットシミュレータおよびそのシミュレータ生成方法
JPH0926884A (ja) バイナリ操作を必要とするタスク中に必要なフロー情報を使用可能とする方法および装置
JP2001166946A (ja) 階層の平坦化によりソースコードをコンパイルする方法及び装置
US7979853B2 (en) Compiler device, method, program and recording medium
US6256782B1 (en) Compile apparatus, compile method and computer-readable medium storing compiler
US6202203B1 (en) Method of, system for, and computer program product for providing global value numbering
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
JP5932707B2 (ja) 計算機、プログラム及びデータ生成方法
US20040034845A1 (en) Code conversion method and apparatus
JP2006202134A (ja) プロファイル情報収集方法および装置
Krall Implementation techniques for Prolog.
CN116775127B (zh) 一种基于RetroWrite框架的静态符号执行插桩方法
Nguyen Compiler design and implementation in OCaml with LLVM framework
JP2008071065A (ja) インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体
KARAPATEAS RETARGETING AN ASSEMBLY OPTIMIZER FOR THE MIPS/SCALE ASSEMBLY
Haynes The architecture of an ALGOL 60 computer implemented with distributed processors
JP2002073347A (ja) 例外処理方法及びコンパイラ
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