JPH11194957A - デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体 - Google Patents

デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体

Info

Publication number
JPH11194957A
JPH11194957A JP10001407A JP140798A JPH11194957A JP H11194957 A JPH11194957 A JP H11194957A JP 10001407 A JP10001407 A JP 10001407A JP 140798 A JP140798 A JP 140798A JP H11194957 A JPH11194957 A JP H11194957A
Authority
JP
Japan
Prior art keywords
instruction
source code
long
window
parallel execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP10001407A
Other languages
English (en)
Inventor
Hirohisa Tanaka
裕久 田中
Fumio Sumi
史生 角
Kensuke Kotani
謙介 小谷
Akira Tanaka
旭 田中
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 JP10001407A priority Critical patent/JPH11194957A/ja
Priority to US09/226,228 priority patent/US6286132B1/en
Publication of JPH11194957A publication Critical patent/JPH11194957A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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

Abstract

(57)【要約】 【課題】 複数の命令を並列実行するプロセッサにおい
て、ユーザプログラム上で全ての並列実行される行を表
示するデバッグ支援装置を提供する。 【解決手段】 コード実行部15においてプログラムを
実行する。プログラムの実行が、予め設定されたブレー
クポイントで停止すると、ユーザインターフェィス部1
1はブレークポイントに対応するソースコード文を表示
すると共に、そのブレークポイントに対応する並列実行
行を並列実行情報記憶部5より検索して、並列実行行に
関しての表示を行う。これによりユーザは次に並列実行
される行を視覚的に理解することが出来る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、長語命令列の検証
作業を支援するデバッグ支援装置と、コンパイラに装備
されデバッグ支援装置が用いる並列実行情報を生成する
並列実行情報生成装置と、これらに適用されるプログラ
ムを記録した記録媒体に関する。
【0002】
【従来の技術】近年、並列実行方式が多くのマイクロプ
ロセッサの開発計画に採用されている。ここでいう並列
実行とは、一マシンサイクル当たりに複数個の命令を実
行できるものをいい、その典型的なものには、スーパー
スカラ方式と、VLIW方式とがある。
【0003】スーパースカラ方式とは、プロセッサ内部
の専用回路が並列実行可能な命令を動的に解析して、そ
れらの命令を複数の命令実行ユニットに個別に実行させ
る方式をいう。スーパースカラー方式は、逐次実行方式
と互換性を持つことができるという利点を有する。即
ち、逐次実行方式のプロセッサ向けにコンパイラが生成
したオブジェクトコードをスーパースカラー方式プロセ
ッサはそのまま実行できるのである。その反面、並列実
行可能な命令を動的に解析するために専用ハードウェア
をプロセッサ側に実装する必要があり、ハードウェアコ
ストの増大を招いてしまうという欠点もある。
【0004】VLIW(Very Long Instruction Word)方式と
は、プロセッサ側の語長がオブジェクトコードとして生
成される命令の語長の整数倍を目安に定められており、
整数倍単位の語長を有する長語命令(VLIW命令)に並列
実行可能と解析された命令を複数格納して、格納された
それぞれの命令を複数の命令実行ユニットに個別に実行
させる方式をいう(オブジェクトコードである命令間の
並列実行の可能性を解析し、VLIW命令に格納する処理を
スケジューリングという。またVLIW命令との区別を明確
にするため、オブジェクトコードである命令をオブジェ
クトコード側命令という)。
【0005】この方式では、命令実行時に命令が並列実
行可能かどうかをプロセッサ側で判定する必要がないの
で、ハードウェアの実装量が少なくて済む反面、VLIW命
令一語内の全ての命令格納場所がオブジェクトコード側
命令で満たされない場合が多々ある。この場合、オブジ
ェクトコード側命令で満たされない場所にnopコードが
挿入されるので、このnopコードの分だけコードサイズ
が水増しされてしまい、メモリ規模の増大を招いてしま
うという欠点がある。
【0006】とはいえVLIW方式では、VLIW命令に対する
オブジェクトコード側命令の格納方式が改善されればno
pコードの挿入量を削減できる可能性があり、ハードウ
ェアコスト削減の可能性という観点からみればVLIW方式
の将来性に期待がかかる。
【0007】
【発明が解決しようとする課題】ところでVLIW方式で
は、どの複数のオブジェクトコード側命令をVLIW命令に
格納するかをコンパイラに委ねているので、コンパイラ
が命令間の並列実行の可能性をより解析して高度なスケ
ジューリングを行う程、プログラマが記述したソースプ
ログラムと、VLIW命令列とのギャップが激しくなる傾向
がある。
【0008】そのためプログラマが実際にVLIW命令列を
ターゲットマシン上で動作させてみようとすると、VLIW
方式プロセッサにより並列実行されているオブジェクト
コード側命令が自分が記述したどのソースコードに対応
するかが把握し辛く、自分が記述したどのソースコード
と、どのソースコードとが並列に動作しているかがなか
なか理解できない場合が多い。動作検証中にVLIW命令列
の不具合が発覚した場合、自分が記述したソースプログ
ラムに含まれているどのソースコードがその不具合の原
因であるかがなかなか究明できず、デバッグ作業に時間
がかかるという問題点がある。プログラムのコーディン
グから実機上での動作検証までを高級言語で一貫して行
える開発環境、いわゆる『高級言語指向の開発環境』の
整備が注目を浴びているが、オブジェクトコードがVLIW
命令に格納されたために自分が記述したソースプログラ
ムに含まれているどのソースコードが不具合の原因であ
るかがなかなか究明できないのならば、VLIW命令に対し
てのパッチ当て等のコード直接書換の手法によりその不
具合を対処せざるをえないので、『高級言語指向の開発
環境』が看板倒れになってしまう恐れがある。
【0009】本発明の目的は、プログラマが記述したソ
ースプログラムと、VLIW命令列とのギャップが激しい場
合であっても、VLIW命令列の動作検証時における不具合
の原因をソースプログラムから探し出すことができるデ
バッグ支援装置及び並列実行情報生成装置を提供するこ
とである。
【0010】
【課題を解決するための手段】上記目的を達成するた
め、本発明のデバッグ支援装置は、操作者による長語命
令列の検証作業を支援するデバッグ支援装置であって、
並列実行性が成立するソースコード文を特定する行番号
であって、翻訳後の命令が共通の長語命令に格納された
ものの組みと、格納先の長語命令との対応づけを示す並
列実行情報を記憶する第1記憶手段と、ソースプログラ
ムにおける何れかのソースコード文の行番号を用いての
検証指示を操作者から受け付ける受付手段と、検証指示
に用いられた行番号を含む並列実行情報を第1記憶手段
から読み出す読出手段と、読み出された当該並列実行情
報内にソースコード文の行番号とは別のソースコード文
の行番号が含まれているなら、当該別のソースコード文
に関する表示を行う表示手段とを備えることを特徴とし
ている。
【0011】
【発明の実施の形態】以下、本発明の並列実行情報生成
装置を装備したコンパイラ及びデバッグ支援装置の実施
形態について図面を参照しながら説明する。図1は並列
実行情報生成装置装備型のコンパイラの構成を示す図で
ある。図1においてコンパイラは、プログラム記憶部
1、生成コード記憶部2、デバッグ情報記憶部3、内部
表現変換部6、第1コード生成部7、依存関係解析部
8、第2コード生成部9、デバッグ情報生成部10から
構成される。
【0012】プログラム記憶部1は、ソースプログラム
を記憶している。以降の説明では、プログラム記憶部1
により記憶されているソースプログラムの一例を図8
(a)に示すものとする。内部表現変換部6は、プログ
ラム記憶部1からプログラムを読み込み、コンパイラ内
で使用する内部表現への変換を行なう。
【0013】尚、内部表現変換部6については、本発明
の主眼ではないので、詳細な説明は省略する。第1コー
ド生成部7は、内部表現変換部6で変換された内部表現
に対して、効率の良い実行コードを生成するためのさま
ざまな最適化を実行した後、内部表現状態のソースコー
ドに基づいて、オブジェクトコード列を生成する。図8
(b)は、図8(a)に示すソースプログラム内のソー
スコードの一文からオブジェクトコードの命令がどのよ
うに生成したかを示す図であり、生成元のソースコード
と、生成されたオブジェクトコードとの対応関係を括弧
記号『}』で表現している。
【0014】尚、本明細書ではソースコードで記述され
た一文をソースコード文という。また第1コード生成部
7についても内部表現変換部6同様、本発明の主眼では
ないので、詳細な説明は省略する。依存関係解析部8
は、第1コード生成部7によって最適化が施されたオブ
ジェクトコードの間の依存関係を解析する。ここでいう
依存関係とは、オブジェクトコード内のある命令による
資源の操作と、別の命令による資源の操作との間に潜在
する前後関係をいう。例えば図9(a)の一例では、命
令2:「mov (_mem1),r1」におけるレジスタr1に対しての操
作と、命令4:「add r1,r2」におけるレジスタr1に対して
の操作との間には、命令2:「mov (_mem1),r1」においてレ
ジスタr1に値を定義してから命令4:「add r1,r2」におい
て値を使用するという命令間の前後関係が潜在すること
になる。
【0015】命令2:「mov (_mem1),r1」、命令4:「add r1,
r2」の間のように資源操作間に前後関係の潜在が明らか
になった命令については、命令間に有方向のリンク(有
向辺)を形成し、それらの命令間に潜在している依存関
係を具現化した非巡回有向グラフ(一般にDAGと呼ばれ
る。)を生成する。図10(a)〜(d)は、図9
(b)に示した基本ブロック内に位置する命令間が有向
辺にて連結して得られたDAGを示す。依存関係解析部8
が生成したDAGにおいて有向辺が連結されなかった命令
の組みは資源の使用に関して依存関係がないことが明示
されたことになる。依存関係がないことが明示された命
令は、並列に実行してもプログラムの動作に矛盾を生じ
ないことが保証される。
【0016】第2コード生成部9は、依存関係解析部8
によって得られた依存関係情報を利用して第1コード生
成部7によって生成された複数のオブジェクトコードの
命令をVLIW命令内にパッケージしてゆくことにより、VL
IW命令列を生成する。図10(a)のDAGにおいては、
命令1:「save」−命令2:「mov (_mem1),r1」間、命令1:「sav
e」−命令3:「mov (_mem2),r2」間には有向辺が形成されて
いるが、命令2:「mov (_mem1),r1」、命令3:「mov (_mem
2),r2」、命令5:「mov #0,r3」、命令6:「mov #1,r4」間には
有向辺が形成されておらず、これらの命令間にはどのよ
うな資源に関しての依存関係も存在しないと解釈され
る。これらの命令2:「mov (_mem1),r1」〜命令5:「mov #0,
r3」等、依存関係が存在しないオブジェクトコードは並
列実行が可能であるから同じVLIW命令に配置する。
【0017】図13に第2コード生成部9により生成さ
れたVLIW命令列の一例を示す。VLIW命令列においてアド
レス0x108のVLIW命令:「mov (_mem1),r1_mov (_mem2),r
2」には命令2:「mov (_mem1),r1」及び命令3:「mov (_mem
2),r2」がパッケージされ、アドレス0x110のVLIW命令3:
「add r1,r2_mov #0,r3」には命令4:「add r1,r2」及び命
令5:「mov #0,r3」がパッケージされていることがわか
る。アドレス0x140のVLIW命令:「add r1,r3_add #1,r4」
に命令11:「add r1,r3」及び命令12:「add #1,r4」が配置さ
れ、アドレス0x150のVLIW命令:「mul #2,r2_mov #0,r1」
に命令14:「mul #2,r2」及び命令17:「mov #0,r1」が配置さ
れていることがわかる。
【0018】命令11:「add r1,r3」及び命令12:「add #1,r
4」は共に図10(c)のDAGにおいて命令10:「mul r4,r
1」をリンク元としており、互いに何の依存関係も有して
いない。命令14:「mul #2,r2」及び命令17:「mov #0,r1」も
同様であり、図10(c)のDAGにおいて共に命令18:「r
estore」をリンク先としており、互いに何の依存関係も
有していない。このように依存関係を持たない命令のペ
アが第2コード生成部9により共通のVLIW命令内にパッ
ケージされているのである。
【0019】デバッグ情報記憶部3は、各種デバッグ情
報を保持している。ここでデバッグ情報とは、変換を行
なうプログラムの行と変換後の実行コードのアドレスと
の対応情報、内部表現状態のプログラムに対して第1コ
ード生成部7によりどのような最適化がなされたかとい
う過程を示す最適化情報、ソースプログラム内で用いら
れた変数と、レジスタ及びメモリ等の資源との対応関係
を示す資源割付情報などの総称である。デバッグ情報記
憶部3において留意すべきはデバッグ情報記憶部3は複
数の行アドレス情報を記憶する行アドレス記憶部4、複
数並列実行情報を記憶する並列実行情報記憶部5をその
内部に備える点である。
【0020】行アドレス記憶部4は行アドレス情報を記
憶する。行アドレス情報とは、ソースプログラムの各行
に位置するソースコードが、VLIW命令列においてどのVL
IW命令に対応するかを示す情報であり、各ソースコード
文の行番号と、そのソースコード文に相当するVLIW命令
の相対アドレスを記入するための記入欄とからなる。ソ
ースコードが図8(a)及び図8(b)の一例であり、
VLIW命令が図13の一例である場合の行アドレス情報を
図11に示す。図8(b)を参照すれば、Line:5「a=me
m1;」からは命令2:「mov (_mem1),r1」が生成されてい
る。更に命令2:「mov (_mem1),r1」はVLIW命令列における
相対アドレス0x108のVLIW命令2:「mov (_mem1),r1_mov
(_mem2),r2」に格納されているので、図11に示す行番
号Line:5は命令2:「mov (_mem1),r1」が格納されたVLIW命
令2:「mov (_mem1),r1_mov (_mem2),r2」の相対アドレス
0x108が対応づけられている。
【0021】並列実行情報記憶部5は並列実行情報を記
憶する。並列実行情報とは、VLIW命令列における各VLIW
命令の実行が、ソースプログラムにおけるどのソースコ
ードの実行と等価であるを示す情報であり、VLIW命令の
相対アドレスと、VLIW命令に格納されたオブジェクトコ
ード側命令の生成元となる全てのソースコード文の行番
号の記入欄とからなる。ソースコードが図8(a)、図
8(b)の一例である場合の並列実行情報を図12に示
す。図8(b)を参照すれば、Line:5「a=mem1;」から
は命令2:「mov (_mem1),r1」が生成され、Line:6「b=a+me
m2;」からは命令3:「mov (_mem2),r2」及び命令4:「add r
1,r2」が生成されている。更に命令2:「mov(_mem1),r1」、
命令3:「mov (_mem2),r2」は共にVLIW命令列における相対
アドレス0x108のVLIW命令2:「mov (_mem1),r1_mov (_me
m2),r2」にパッケージされているので行番号Line:5及びL
ine:6は図12において命令2:「mov (_mem1),r1」,命令3:
「mov (_mem2),r2」がパッケージされたVLIW命令2:「mov
(_mem1),r1_mov (_mem2),r2」の相対アドレス0x108に対
応づけられている。
【0022】デバッグ情報生成部10はいわゆる並列実
行情報生成装置に相当するものであり、第2コード生成
部9がVLIW命令列を生成すると、ソースプログラムの各
行に位置するソースコードが、VLIW命令列においてどの
VLIW命令に対応するかを判定し、行アドレス情報を生成
してデバッグ情報記憶部3内の行アドレス記憶部4に書
き込む。生成後、行アドレス情報において同一の相対ア
ドレスとの対応づけられた行番号を一つにまとめて、ま
とめたものを並列実行情報としてデバッグ情報記憶部3
内の並列実行情報記憶部5に書き込む。
【0023】図11の行アドレス情報の一例においてプ
ログラムの5行目に対応する実行コードアドレスは、5
行目に対応する実行コードが、アドレス0x108番値とな
っているので、5行目に対応するアドレスを0x108番値
として、行アドレス情報を登録する。また、6行目に対
応する実行コードは、同じくアドレス0x108番値となっ
ているので、6行目に対応するアドレスも0x108番値と
して、行アドレス情報を登録する。
【0024】依存関係解析部8の処理内容を図3のフロ
−チャ−トに示し、第2コード生成部9の処理内容を図
4のフロ−チャ−トに示す。デバッグ情報生成部10の
処理内容を図5のフロ−チャ−トに示す。図3〜図5の
フロ−チャ−トの処理内容を図8(a)に示すソースプ
ログラムの具体例を交えながら説明する。
【0025】先ずプログラム記憶部1に格納されている
図8(a)に示すソースプログラムを読み込み、内部表
現変換部6により内部表現形式に変換され、第1コード
生成部7により図8(b)に示すようなVLIW命令列が生
成される。次に依存関係解析部8は、資源の使用に関す
る依存関係を命令毎に解析する。ステップa1では、プ
ログラムを基本ブロックに分割する。基本ブロックと
は、実行順序が連続する命令列、すなわち、プログラム
中の連続する命令列であって、列の途中に飛び越しもな
く、また途中への飛び越しもない命令列のことを言う。
まず最初にステップa1により、入力プログラムは基本
ブロックに分割される。基本ブロックに分割後のプログ
ラムを図9(b)に示す。
【0026】次にステップa2において、全ての基本ブ
ロックについて以降の処理を繰り返す。まず最初に基本
ブロックB1について、以降の処理を繰り返す。ステッ
プa3において、基本ブロック内の全ての命令について
以降の処理を繰り返す。先ず命令1:「save」と命令2:「mov
(_mem1),r1」の関係について調べる。ステップa4で
は、基本ブロック内の任意の2つの命令a、bの間に、
資源の使用に関して依存関係があるかどうかを判定す
る。Yesと判定された場合、ステップa5へと処理を移
し、Noと判定された場合はステップa7へと処理を移
す。
【0027】ステップa5では、命令aが命令bより前
に実行しなければならないかどうかを判定する。Yesと
判定された場合、ステップa6へと処理を移し、Noと判
定された場合はステップa7へと処理を移す。命令1:「s
ave」は関数の呼出元の状態を保持するためにレジスタの
保持値の退避などを行なう命令であるので、命令2:「mov
(_mem1),r1」のレジスタr1に関して依存関係がある。従
って、ステップa4ではYesと判定され、ステップa5
に処理を移行する。
【0028】命令1:「save」でのレジスタの退避は、命令
2:「mov (_mem1),r1」でレジスタr1が設定されるよりも前
に実行されなければならないので、ステップa5でYes
と判定され、ステップa6へと処理を移行する。ステッ
プa6では、2つの命令a、bを、命令aから命令bの
向きの辺で結ぶ。ステップa6により、命令1:「save」か
ら命令2:「mov (_mem1),r1」への有向辺が設定される。
【0029】同様にして、命令1:「save」と命令3:「mov
(_mem2),r2」、命令4:「add r1,r2」、命令5:「mov #0,r3」
の関係を調べると、命令3:「mov (_mem2),r2」、命令4:「a
dd r1,r2」、命令5:「mov #0,r3」は命令1:「save」よりも後
に実行されなければならないので、命令1:「save」から命
令3:「mov (_mem2),r2」、命令4:「add r1,r2」、命令5:「mo
v #0,r3」へとそれぞれ有向辺が設定される。
【0030】次に命令2:「mov (_mem1),r1」と命令3:「mov
(_mem2),r2」の依存関係について調べる。命令2:「mov
(_mem1),r1」と命令3:「mov (_mem2),r2」は同じ資源を使
用していないので、命令2:「mov (_mem1),r1」と命令3:「m
ov (_mem2),r2」の間には依存関係が存在しない。従って
ステップa4において、Noと判定され、次の依存関係に
ついて調べる。
【0031】更に、命令2:「mov (_mem1),r1」と命令4:「a
dd r1,r2」の依存関係について調べる。命令2:「mov (_me
m1),r1」と命令4:「add r1,r2」はレジスタr1に関して依存
関係があるので、ステップa4においてYesと判定さ
れ、ステップa5へと移行する。命令2:「mov (_mem1),r
1」は命令4:「add r1,r2」よりも前に実行しなければなら
ないので、ステップa5でYesと判定され、ステップa
6へと処理を移行し、ステップa6において、命令2:「m
ov (_mem1),r1」から命令4:「add r1,r2」への有向辺を設
定する。
【0032】命令2:「mov (_mem1),r1」と命令5:「mov #0,
r3」、命令6:「mov #1,r4」とは資源の依存関係がないの
で、ステップa4でNoと判定され、命令2:「mov (_mem
1),r1」と命令5:「mov #0,r3」、命令6:「mov #1,r4」の間に
有向辺は設定しない。命令3:「mov (_mem2),r2」と命令4:
「add r1,r2」、命令5:「mov #0,r3」、命令6:「mov #1,r4」
との依存関係を調べると、命令3:「mov (_mem2),r2」と命
令4:「add r1,r2」において、レジスタr2に関して依存関
係があるため、ステップa4でYesと判定され、ステッ
プa5へと移行する。命令5:「mov #0,r3」と命令6:「mov
#1,r4」は命令3:「mov (_mem2),r2」と依存関係がないの
で、ステップa4でNoと判定され、依存関係は設定され
ない。
【0033】命令3:「mov (_mem2),r2」は命令4:「add r1,
r2」よりも前に実行しなければならないので、ステップ
a5でYesと判定され、ステップa6へと処理を移行
し、ステップa6において、命令3:「mov (_mem2),r2」か
ら命令4:「add r1,r2」への有向辺を設定する。命令5:「mo
v #0,r3」と命令6:「mov #1,r4」には資源の依存関係がな
いので、ステップa4でNoと判定され、命令5:「mov #0,
r3」と命令6:「mov #1,r4」の間に有向辺は設定しない。
【0034】以上で、基本ブロックB1内の全ての命令
について依存関係を調べたので、ステップa8へと処理
を移行する。基本ブロックB1を解析して得られた依存
DAGは図10(a)の基本ブロックB1に対応するDAGに
なる。DAG内の番号は、図9(a)の命令の右に付加し
てある番号と対応する。ステップa8では、基本ブロッ
クB1について生成された依存DAGを保存する。
【0035】以上で、基本ブロックB1についての処理
を終了する。同様にして、基本ブロックB2、B3、B
4について、依存関係を解析し、依存DAGを生成すると
図10(b)(c)(d)のように得られる。次に第2
コード生成部9によってVLIW命令列が生成される。図8
(b)の命令の右側に配置された括弧記号は、プログラ
ムの行番号と命令との対応を表している。例えば、最初
のsave命令は、プログラムの2行目と対応することを表
し、『mov(_mem2),r2』、『add r1,r2』はプログラム
の6行目に対応することを表している。第2コード生成
部9の入力と、依存関係解析部8の入力とは同じであ
る。また本実施例では、説明の簡単化のため、VLIW命令
に格納する命令は2命令としている。
【0036】まずステップb1において、全ての基本ブ
ロックについて以降の処理を繰り返す。最初に基本ブロ
ックB1について以降の処理を行なう。次にステップb
2において、依存関係解析部8によって生成した基本ブ
ロックB1の依存DAGを取得する。この依存DAGは依存関
係解析部8によって解析され、生成された情報であり、
命令間の依存関係を表している。
【0037】ステップb3において、基本ブロックB1
内の未出力の命令について以降の処理を繰り返す。先ず
ステップb4において、基本ブロックB1の依存DAGの
中から、並列実行可能な命令を選択する。基本ブロック
B1の依存DAGを参照すると、最初に実行できる命令は
命令1:「save」しか存在しないので、命令1:「save」を選択
する。
【0038】次にステップb5において、ステップb4
で選択した命令をVLIW命令にパッケージする。ステップ
b4で選択された命令は命令1:「save」のみであるので、
命令1:「save」をVLIW命令に格納し、残りの領域にnop命
令を格納する。ステップb6において、生成したVLIW命
令を生成コード記憶部2に格納する。ステップb7で
は、ステップb4で並列実行可能な命令が選択され、ス
テップb6でVLIW命令が出力されたことによって、依存
DAGの情報の更新を行なう。ここで命令1:「save」が出力
済みとなったとすると、依存DAGから命令1:「save」を取
り除き、依存DAGの更新を行う。
【0039】次にステップb4に戻り、依存DAGから並
列実行可能な命令を選択する。命令1:「save」が依存DAG
から取り除かれたので、次に出力できる命令は、命令2:
「mov (_mem1),r1」、命令3:「mov (_mem2),r2」、命令5:「m
ov #0,r3」、命令6:「mov #1,r4」となる。これらは全て並
列実行可能な命令である。そこで、ここでは命令2:「mov
(_mem1),r1」と命令3:「mov (_mem2),r2」を選択する。
【0040】ステップb5において、選択した命令2:「m
ov (_mem1),r1」と命令3:「mov (_mem2),r2」をVLIW命令に
格納し、ステップb6において、生成したVLIW命令を生
成コード記憶部2に格納する。命令2:「mov (_mem1),r1」
及び命令3:「mov (_mem2),r2」が出力済みとなったので、
ステップb7において、依存DAGから命令2:「mov (_mem
1),r1」、命令3:「mov (_mem2),r2」を取り除き、依存DAG
の更新を行なう。
【0041】更にステップb4に戻り、依存DAGから並
列実行可能な命令を選択する。命令2:「mov (_mem1),r
1」、命令3:「mov (_mem2),r2」が依存DAGから取り除かれ
たので、次に出力できる命令は、命令4:「add r1,r2」、
命令5:「mov #0,r3」、命令6:「mov #1,r4」となり、これら
は並列実行可能な命令である。そこで、命令4:「add r1,
r2」と命令5:「mov #0,r3」を選択する。
【0042】ステップb5において、選択した命令4:「a
dd r1,r2」、命令5:「mov #0,r3」をVLIW命令に格納し、ス
テップb6において、生成したVLIW命令を生成コード記
憶部2に格納する。命令4:「add r1,r2」及び命令5:「mov
#0,r3」が出力済みとなったので、ステップb7におい
て、依存DAGから命令4:「add r1,r2」及び命令5:「mov #0,
r3」を取り除き、依存DAGの更新を行なう。
【0043】更に、ステップb4に戻り、依存DAGから
並列実行可能な命令を選択する。依存DAGには命令6:「mo
v #1,r4」のみが残っているので、命令6:「mov #1,r4」を
選択する。ステップb5において、選択した命令6:「mov
#1,r4」をVLIW命令に格納し、残りの領域にnop命令を格
納する。そしてステップb6において、生成したVLIW命
令を生成コード記憶部2に格納する。
【0044】ステップb7において、依存DAGから命令
6:「mov #1,r4」を取り除き、依存DAGの更新を行なう。以
上で基本ブロックB1内の全ての命令が出力されたの
で、ループ2の処理を終了し、次の基本ブロックへと処
理を進める。同様にして、基本ブロックB2、B3、B
4について、コード生成処理を行なうと、図13のよう
に生成コード記憶部2にVLIW命令列が格納される。
【0045】次にデバッグ情報生成部によって、プログ
ラム行と実行コードのアドレスとの対応を表す行アドレ
ス情報、及び並列実行可能な命令に対応するプログラム
行と実行コードとの対応を表す並列実行情報を生成す
る。まず生成された実行コードについて、ステップc1
において全てのVLIW命令について以降の処理を繰り返
す。先ずアドレス0x100の命令を選択してくる。
【0046】ステップc2において、VLIW命令内の全て
の命令について繰り返す。まず最初にVLIW命令内のsave
命令について処理を行なう。ステップc3において、命
令に対応するプログラム行を取得し、プログラム行の2
行目であるという情報を得る。ステップc4では、ステ
ップc3で取得したプログラム行が、行アドレス記憶部
4に既に登録されているかどうかを判定する。Yesと判
定された場合はステップc6へと処理を移行し、Noと判
定された場合はステップc5へと処理を移行する。ステ
ップc4により、2行目に対応する行アドレス情報が登
録済みであるかどうかを判定される。この場合、まだ登
録されていないのでNoと判定され、ステップc5へと処
理を移行する。
【0047】ステップc5では、プログラム行とVLIW命
令の実行コードアドレスを行アドレス情報に設定し、行
アドレス記憶部4に格納する。ステップc5により、プ
ログラム行の2行目とVLIW命令のアドレス0x100とが行
アドレス情報として行アドレス記憶部4に格納される
(図11矢印a)。ステップc6では、VLIW命令の実行
コードアドレスに対応する記入欄に、命令に対応するソ
ースプログラム行に関する並列実行行情報を追加する。
【0048】ステップc6により、VLIW命令の実行コー
ドアドレス0x100に対応する記入欄に、プログラム行の
2行目に関する並列実行行情報が追加される。次にステ
ップc7を実行し、ステップc2へと戻り、VLIW命令内の
次の命令であるnop命令について繰り返す。nop命令に
は、対応するプログラム行が関係付けられていないの
で、ステップc3からステップc6で特に処理は行なわれ
ず、ループを終了する。その結果、VLIW命令内の全ての
命令について処理が終るので、ステップc8へと処理が
移行する。
【0049】ステップc8では、ステップc6で生成した
並列実行情報を出力し、並列実行情報記憶部5に格納す
る(図12矢印b)。以上でアドレス0x100のVLIW命令
についての処理を終了し、ステップc1において、次の
アドレス0x108の命令を選択し、同様に処理を行なう。
最初にステップc2において、VLIW命令内のmov(_mem
1),r1の命令を選択する。
【0050】ステップc3において、命令に対応するプ
ログラム行を取得し、プログラム行の5行目であるとい
う情報を得る。ステップc4において、5行目に対応す
る行アドレス情報が登録済みであるかどうかを判定す
る。この場合、まだ登録されていないのでNoと判定さ
れ、ステップc5へと処理を移行する。
【0051】ステップc5において、プログラム行の5
行目とVLIW命令のアドレス0x108とを行アドレス情報と
して行アドレス記憶部4に格納する(図11矢印c)。
次にステップc6において、VLIW命令の実行コードアド
レス0x108に対応する記入欄に、プログラム行の5行目
に関する並列実行行情報を追加する。次にステップc7
を実行し、ステップc2へと戻り、VLIW命令内の次の命
令であるmov (_mem2),r2の命令について繰り返す。
【0052】ステップc3において、命令に対応するプ
ログラム行を取得し、プログラム行の6行目であるとい
う情報を得る。ステップc4において、6行目に対応す
る行アドレス情報が登録済みであるかどうかを判定す
る。この場合、まだ登録されていないのでNoと判定さ
れ、ステップc5へと処理を移行する。
【0053】ステップc5において、プログラム行の6
行目とVLIW命令のアドレス0x108とを行アドレス情報と
して行アドレス記憶部4に格納する(図11矢印d)。
次にステップc6において、VLIW命令の実行コードアド
レス0x108に対応する記入欄に、プログラム行の6行目
に関する並列実行行情報を追加する。以上でVLIW命令内
の全ての命令について処理が終るので、ステップc8へ
と処理を移行する。
【0054】ステップc8では、ステップc6で生成した
並列実行情報を出力し、並列実行情報記憶部5に格納す
る(図12矢印e)。以上でアドレス0x108のVLIW命令
についての処理を終了する。同様に全てのVLIW命令につ
いて処理を行なうと、行アドレス記憶部4の内容は図1
1に示すようになり、並列実行情報記憶部5の内容は図
12に示すようになる。
【0055】続いてデバッグ支援装置の内部構成につい
て説明する。デバッグ支援装置の内部構成を図2に示
す。デバッグ支援装置は、ユーザインターフェィス部1
1と、コマンドインタプリタ14と、コード実行部15
とから構成され、ディスプレィ12及びキーボード13
が接続されている。ユーザインターフェィス部11は、
ディスプレィ12及びキーボード13を介しての操作環
境を操作者に提供する。ここでキーボード13は、デバ
ッグコマンド入力用のキータイプを受け付けるために用
いられ、ディスプレィ12は、各種ウィンドウを表示し
てソースプログラム及びオブジェクトコード側命令を視
覚化するために用いられる。図14は、ディスプレィ1
2に表示されるウィンドウの一例を示す図である。図1
4においてディスプレィ12には、ソースプログラムウ
ィンドゥw1、コマンドラインw2、オブジェクトコードウ
ィンドゥw3が表示される。ここでソースプログラムウィ
ンドゥw1とは、プログラム記憶部1に記憶されているソ
ースプログラムであって、操作者によりリスト表示が指
定された部位を表示するためのウィンドウである。
【0056】コマンドラインw2は、ソースプログラムウ
ィンドゥw1に表示されたソースプログラムの一部分に関
するデバッグコマンドの入力を操作者に促すメッセージ
を表示するのと共に、コマンドインタプリタ14に対し
て操作者によりなされたキータイプをエコーバックし、
またコード実行部15によるデバッグコマンドの実行結
果に関するメッセージを表示する。
【0057】オブジェクトコードウィンドゥw3は、ソー
スプログラムウィンドゥw1に表示されたソースプログラ
ムの一部分に対応するオブジェクトコード側命令列を表
示すると共に、各オブジェクトコード側命令に対応する
ソースコード文の行番号を表示し、生成元のソースコー
ドと、生成されたオブジェクトコードとの対応関係を括
弧記号『}』で表現する。
【0058】コマンドインタプリタ14は、キーボード
13がキータイプされ、デバッグコマンドがユーザイン
ターフェィス部11に入力されると、このデバッグコマ
ンドにおいて用いられているソースコード文の行番号を
取り出し、この行番号がどのアドレスに相当するかを行
アドレス記憶部4を参照して判定する。アドレスが判定
されると、このアドレスに相当するデバッグ動作を生成
コード記憶部2に記憶されているVLIW命令列に行わせる
ようコード実行部15を制御する。
【0059】ここでユーザインターフェィス部11に入
力されるデバッグコマンドには、SetBreakPointコマン
ド、runコマンド、ReadVARコマンド、Stepコマンドの四
種類のものを考える。SetBreakPointコマンドは第1オ
ペランドにソースプログラムにおける何れかの行番号を
指定することができ、当該第1オペランドに指定された
行番号に相当するVLIW命令にブレークポイントを設定す
るコマンドである。
【0060】runコマンドは第1オペランドにソースプ
ログラムにおける何れかの行番号を指定することがで
き、当該第1オペランドに指定された行番号を開始点と
してVLIW命令列を実行させるコマンドである。ReadVAR
コマンドはソースプログラムにおける何れかの変数を第
1オペランドに指定することができ、当該第1オペラン
ドに指定された変数に相当するレジスタ、メモリをアク
セスしてその保持値を読み出すコマンドである。
【0061】Stepコマンドは第1オペランドにソースプ
ログラムにおける何れかの行番号を指定することがで
き、当該第1オペランドに指定された行番号に相当する
VLIW命令のみをワンステップ実行させるコマンドであ
る。コード実行部15は、シミュレータ、インサーキッ
トエミュレータ、モニタのいずれかで構成され、シミュ
レータ、インサーキットエミュレータ、モニタ特有の機
能により、ターゲットマシンのハードウェア環境を再現
し、このハードウェア環境上において生成コード記憶部
2に記憶されたVLIW命令列を動作させる。無論、インサ
ーキットエミュレータ、シミュレータ、モニタにより作
成されるハードウェア環境は互い異なる訳であるが(モ
ニタ、インサーキットエミュレータによるハードウェア
環境は実機のそれとほぼ同一或はそれに近いのに対し
て、シミュレータによるハードウェア環境はホストコン
ピュ−タ上で模擬的に作成されたに過ぎない)、何れも
プログラムカウンタ、レジスタ、メモリを有するターゲ
ットマシンのハードウェア機能を実現できる点は共通し
ている。
【0062】SetBreakPointコマンドからStepコマンド
までのデバッグコマンドの発行時においてコマンドイン
タプリタ14がどのような処理を行うかを図6のフロ−
チャ−トに示す。図6のフロ−チャ−トの処理内容を図
14、図15(a)、(b)、図16(a)〜(c)に
示す表示例を交えながら説明する。ステップS0では、
ソースプログラムウィンドゥw1、コマンドラインw2、及
びオブジェクトコードウィンドゥw3をディスプレィ12
上に表示し、コマンドラインw2にプロムプトを表示し
て、リスト表示させたい部分を表示させる旨のキータイ
プがなされるのを待つ。キータイプがなされると、ソー
スプログラムウィンドゥw1に該当する部分のリスト表示
を行い、ステップS1に移行する。
【0063】ステップS1では、ユーザインターフェィ
ス部11に対してのデバッグコマンドの入力待ちを行
い、もし入力されるとステップS2に移行する。ステッ
プS2では、入力されたデバッグコマンドがrunコマン
ドであるかを判定し、もしrunコマンドであればステッ
プS6に移行し、そうでないならステップS3に移行す
る。
【0064】ステップS3では、入力されたデバッグコ
マンドがReadVARコマンドであるかを判定する。もしRea
dVARコマンドならステップS5に移行し、そうでないな
らステップS4に移行する。ステップS4では、入力さ
れたデバッグコマンドがSetBreakPointコマンドである
かを判定する。もしSetBreakPointコマンドならステッ
プd1に移行し、そうでないならステップS9に移行す
る。
【0065】ステップS9では、入力されたデバッグコ
マンドがStepコマンドであるかを判定する。もしStepコ
マンドならステップS10に移行し、そうでないならス
テップS1に移行する。ステップd1では、SetBreakPoi
ntコマンドのオペランドに記載された行番号に対応する
VLIW命令のアドレスを、行アドレス記憶部4から取得す
る。ここで図14の参照符号m1に示すようにオペランド
にLine:7「result = 0;」を指定したSetBreakPointコマ
ンドが入力されると、VLIW命令のアドレスとして、アド
レス0x110を取得する。
【0066】ステップd2では、得られたVLIW命令のア
ドレスに対して、割り込みを発生させる割込発生命令の
書き込みを行なう。これによりアドレス0x110の先頭に
は、割込発生命令が書き込まれる。ステップd3では、
割り込みが発生した時に、デバッグ支援装置を制御する
プログラムに実行が移るように割り込み処理を設定して
ステップS1に移行する。以上までの処理が済むと、図
14の参照符号m2に示すように、『ブレークポイントを
「Line:7」に設定しました』というメッセージを表示
し、ステップS1に移行する。ステップS1に移行し
て、キー入力待ち状態になった後、操作者がLine:1をオ
ペランドに指定したrunコマンドをキータイプすると、
ステップS1がYesとなり、ステップS2もYesとなって
ステップS6に移行する。
【0067】ステップS6では、オペランドに指定され
た行番号をVLIW命令のアドレスに変換する。ステップS
7では、VLIW命令のアドレスをコード実行部15内のプ
ログラムカウンタに設定する。ステップS8では、コー
ド実行部15における割込発生待ちを行う。ブレークポ
イントによりコード実行部15に割り込みが発生する
と、ステップf1に移行する。
【0068】ステップf1では、ブレークポイントが設
定された行に対応するVLIW命令のアドレスを、行アドレ
ス記憶部4から取得する。ここで前回のSetBreakPoint
コマンドの入力により指定されたブレークポイントはア
ドレス0x110であり、アドレス0x110が行アドレス記憶部
4から取得される。ステップf2では、得られたVLIW命
令のアドレス(ブレークポイントのアドレス)に対応する
並列実行行を、並列実行情報記憶部5から取得する。ブ
レークポイントアドレス0x110が取得されているので、
アドレス0x110の並列実行情報がアクセスされる。アド
レス0x110の並列実行情報には、Line:6「b=a+mem2;」及
びLine:7「result = 0;」が格納されているので、Line:
6「b=a+mem2;」及びLine:7「result = 0;」が行アドレ
ス記憶部4から取得される。
【0069】ステップf3からステップf7では、全て
の並列実行行について、ステップf4からステップf6
までの処理を繰り返す。アドレス0x110に対しての並列
実行行はLine:6「b=a+mem2;」及びLine:7「result =
0;」なのでステップf3からステップf7までの処理は
計2回繰り返されることになる。ステップf4では、並
列実行行はブレークポイントが設定された行であったか
を判定し、もしブレークポイントが設定された並列実行
行ならばステップf5においてその行に第1表示色の矢
印を表示する。そうでないならばステップf6において
その行に第2表示色の矢印を表示する。
【0070】ここで第1表示色を黒色とし、第2表示色
を白色とすると、図15(a)に示すように、ブレーク
ポイントが設定されたLine:7「result = 0;」が黒色矢
印y1で指示され、Line:7「result = 0;」の並列実行行
であるLine:6「b=a+mem2;」は白色矢印y2で指示され
る。ステップg1では、ブレークポイントが設定された
行(停止行という)の行番号を取得する。
【0071】ステップg2では、停止行に対応する実行
アドレスから、そのアドレスに対応する並列実行情報を
取得し、並列実行情報内の並列実行行のうち、停止行以
外の全ての並列実行行の行番号を取得する。ステップg
2により、現在の停止行である7行目に対応するVLIW命
令のアドレスを、行アドレス記憶部4から検索し、アド
レス0x110を得る。次いで実行コードのアドレス0x110に
対応する並列実行行を、並列実行情報記憶部5から検索
し、7行目と6行目を得る。更に、得られた並列実行行
のうち、現在の停止行である7行目以外の並列実行行、
即ち6行目の情報を取得する。
【0072】ステップg3では、停止行のソースコード
文と他の全ての並列実行行のソースコード文がソースプ
ログラムウィンドゥw1の表示範囲内に収まるかどうかを
判定する。Yesと判定された場合は、ステップg8へと
処理を移し、Noと判定された場合はステップg4へと処
理を移す。表示可能な行数が25行であるものとすると、
Line:6「b=a+mem2;」及びLine:7「result = 0;」を表示
させようとしても、現在の停止行である7行目と、それ
以外の全ての並列実行行である6行目とが表示範囲内に
収まるのでYesと判定される。
【0073】ステップg4では、ステップg3がNoであ
る場合、表示範囲内に収まらない停止行あるいは並列実
行行を選択する。ステップg5では、現在表示している
ウィンドウを分割する。ステップg6では、ステップg
4で選択した表示範囲内に収まらない停止行あるいは並
列実行行を、分割したウィンドウに表示する。
【0074】ステップg7では、全ての停止行及び並列
実行行が表示されたかどうかを判定する。Yesと判定さ
れた場合、全ての停止行及び並列実行行の表示が終了し
たので、表示切換を終了し、ステップS1に移行する。
Noと判定された場合はステップg5へと処理を移し、更
にウィンドウの分割を行なう。ステップg8では、不必
要に多数に分割されたウィンドウを統合し、ウィンドウ
の数を減少させる。
【0075】ステップg9では、全ての停止行及び並列
実行行をウィンドウに表示し、ステップS1に移行す
る。ステップS1に移行して、キー入力待ち状態になっ
た後、変数aをオペランドに指定したReadVARコマンドを
キータイプすると、ステップS1がYesとなり、ステッ
プS2はNoとなり、ステップS3はYesとなってステッ
プS5に移行する。
【0076】ステップS5では、変数に相当するレジス
タ或はメモリをアクセスして、その値を表示する。値の
表示後、ステップS1に移行して、キー入力待ち状態に
なった後、Line:8「for(i= 1;i<10;i++);」をオペラン
ドに指定してStepコマンドをキータイプすると、ステッ
プS1がYesとなり、ステップS2もNo、ステップS3
もNo、ステップS4もNoとなってステップS9に移行す
る。ステップS9がYesとなりステップS10に移行す
る。
【0077】ステップS10では、オペランドLineに指
定された行番号の次の行をVLIW命令のアドレスに変換す
る。オペランドで指定された行以降の行でソースコード
文が書かれている行はLine:8「for(i=1;i<10;i++)」で
あり、これを変換すると、アドレス0x118のアドレスが
得られる。ステップS11では、変換されたアドレス0x
118のVLIW命令に割込発生命令を書き込む。その後ステ
ップS6に移行して、runコマンドの場合と同様、ステ
ップS6〜ステップS8、ステップf1〜f7、ステッ
プg1〜ステップg9の処理を行う。
【0078】ステップS6では、オペランドに指定され
た行番号Line:8「for(i= 1;i<10;i++);」をVLIW命令の
アドレス0x118、アドレス0x120、アドレス0x128に変換
し、ステップS7では、これらのアドレスをコード実行
部15内のプログラムカウンタに設定してこれらの命令
分だけ実行する。そうすると、図15(b)のソースプ
ログラムウィンドゥw1に示すように、Line:8「for(i=
1;i<10;i++);」に矢印が表示されると共に、図15
(b)のオブジェクトコードウィンドゥw3に示すよう
に、アドレス0x118、アドレス0x120、アドレス0x128に
格納された命令6:「mov #1,r4」、命令7:「cmp #10,r4」、
命令8:「bge Exit」に矢印が表示される。
【0079】次にステップS1に移行して、キー入力待
ち状態になった後、Line:11「x=InputData();」をオペ
ランドに指定してStepコマンドをキータイプすると、ス
テップS2、S3、S4、S9、S10、S11を辿っ
てステップS6に移行する。ステップS6では、行番号
Line:11「x=InputData();」をVLIW命令のアドレス0x130
に変換し、ステップS7では、これらのアドレスをコー
ド実行部15内のプログラムカウンタに設定してこれら
の命令分だけ実行する。そうすると、図16(a)のソ
ースプログラムウィンドゥw1に示すように、Line:11「x
=InputData();」に矢印が表示されると共に、オブジェ
クトコードウィンドゥw3に示すように、アドレス0x130
に格納された命令9:「call _InputData」に矢印が表示さ
れる。
【0080】次にステップS1に移行して、キー入力待
ち状態になった後、Line:12「x=i*x;」をオペランドに
指定してStepコマンドをキータイプすると、ステップS
1がYesとなり、ステップS2、S3、S4、S9、S
10、S11を辿ってステップS6に移行する。ステッ
プS6では、行番号をVLIW命令のアドレス0x138に変換
し、ステップS7では、これらのアドレスをコード実行
部15内のプログラムカウンタに設定してこれらの命令
分だけ実行する。そうすると、図16(b)のソースプ
ログラムウィンドゥw1に示すように、Line:12「x=i*
x;」に矢印が表示されると共に、図16(b)のオブジ
ェクトコードウィンドゥw3に示すように、アドレス0x13
8に格納された命令10:「mul r4,r1」に矢印が表示され
る。
【0081】次にステップS1に移行して、キー入力待
ち状態になった後、Line:13「result += x;」をオペラ
ンドに指定してStepコマンドをキータイプすると、ステ
ップS1がYesとなり、ステップS2、S3、S4、S
9、S10、S11を辿ってステップS6に移行する。
ステップS6では、並列実行情報を参照して行番号Lin
e:13「result += x;」をVLIW命令のアドレス0x140に変
換する。ステップS7では、これらのアドレスをコード
実行部15内のプログラムカウンタに設定してこれらの
命令分だけ実行する。アドレス0x140のVLIW命令には、
命令11:「add r1,r3」及び命令12:「add #1,r4」が格納され
ているので、オブジェクトコードウィンドゥw3において
命令11:「add r1,r3」及び命令12:「add #1,r4」に矢印を表
示すると共に、ソースプログラムウィンドゥw1に表示さ
れたソースプログラムのうち、Line:8「for(i= 1;i<10;
i++);」及びLine:13「result += x;」のソースコード文
にも矢印を表示する。その結果図16(c)のような表
示画面が得られる。
【0082】以上のように本実施形態によれば、ソース
コード文の組であって、翻訳後の命令が共通の長語命令
に格納されたもの行番号と、格納先の長語命令との対応
づけを示す並列実行情報を並列実行情報記憶部5に記憶
させておき、ソースプログラムにおける何れかのソース
コード文の行番号を用いてのデバッグコマンドを受け付
けて、このデバッグコマンドに基づいたVLIW命令列の実
行をコード実行部15に行わせるので、ソースプログラ
ムのレベルでの操作環境を操作者に提供するのと共に、
ソースコード文のうち何処と何処が並列に動作するかを
操作者に理解させることができる。
【0083】そのため、コンパイラが命令間の並列実行
の可能性をより高度に解析してスケジューリングを行
い、プログラマが記述したソースプログラムと、VLIW命
令列とのギャップが激しくなってもソースコード文のう
ち何処と何処が並列に動作するかを操作者に確実に理解
させることができる。自分が記述したどのソースコード
と、どのソースコードとが並列に動作しているかが理解
し易くなり、動作検証中にVLIW命令列の不具合が発覚し
ても、自分が記述したソースプログラムに含まれている
どのソースコードがその不具合の原因かが究明し易くな
り、デバッグ作業が効率良く行える。
【0084】故に、コンパイラにより生成されたオブジ
ェクトコード側命令がVLIW命令列にパッケージされてい
る場合でも、プログラムのコーディングから実機上での
動作検証までを高級言語で一貫して行える『高級言語指
向の開発環境』を実現することができる。 (応用例)本応用例は、基本ブロックの境界を越えた命
令スケジューリング、いわゆる広域スケジューリングが
ソースコード文に対して行われた場合に、コンパイラ側
の並列実行情報生成装置に広域スケジューリングに関す
る内容を含む並列実行情報を生成させ、デバッグ支援装
置にその並列実行情報に基づいた表示を行わせる。
【0085】具体的な広域スケジューリングの手法とし
ては、「ブックキーピング」と呼ばれる補償コードを挿
入してプログラムの意味を補償しつつも基本ブロック間
で命令の入れ替えを行う「広域命令移動」があり、日経
エレクトロニクス1996.6.3 663号等にその詳細は記述さ
れている。例えば、基準分岐を越えて命令を移動する
『投機的命令移動』を広域スケジューリングの一手法と
して行う場合、本応用例では、投機的に別の基本ブロッ
クに移動されたソースコード文に対して、デバッグ情報
生成部10は投機的に移動されたソースコード文の行番
号に投機的である旨を示し、これとVLIW命令のソースコ
ードとを対応づけた並列実行情報を生成し並列実行情報
記憶部5に記憶させる。
【0086】並列実行情報生成装置のコマンドインタプ
リタ14は、投機的に移動されたソースコード文の行番
号を指定したデバッグコマンドが入力された時、或は、
投機的に移動されていない行と並列に実行される行が投
機的に移動された行である時、並列実行情報記憶部5を
参照してそのソースコード文が投機的に移動されたもの
である旨を示す表示をユーザインターフェィス部11に
行わせる。
【0087】この応用では、いわゆる広域スケジューリ
ングがソースコード文に対して行われ、広域的な最適化
なされたVLIW命令列が生成された場合でも、それに関す
る情報によりデバッグ作業を支援できる。尚、上記実施
形態において、実行コードの一命令語に格納される命令
数は2命令として例示したが、実行コードの一命令語に
格納される命令数は2命令でなくてもよく、4命令や更
に多くの命令を格納する方式でもよい。
【0088】また、矢印によってブレークポイントを表
示しているが、特に矢印である必要はなく、別の記号を
使用して表示してもよい。更に、ブレークポイントと表
示色の異なる矢印によって並列実行行を表しているが、
ブレークポイントと異なる記号によって並列実行行を表
してもよい。加えて、ブレークポイントと並列実行行が
同一表示範囲内で表示できない場合に、表示ウィンドウ
を分割するとしたが、表示ウィンドウを分割せずに、新
たに表示ウィンドウを生成し、ブレークポイントあるい
は並列実行行をそれぞれのウィンドウに表示するように
してもよい。
【0089】最後に、コマンドインタプリタ14の手順
やデバッグ情報生成部10の手順(図3〜図7のフロ−
チャ−トの手順)等を機械語プログラムにより実現し、
これを記録媒体に記録して流通・販売の対象にしても良
い。このような記録媒体には、ICカードや光ディスク、
フロッピーディスク等があるが、これらに記録された機
械語プログラムは汎用のコンピュ−タにインストールさ
れることにより利用に供される。このようなコンピュ−
タは、インストールした機械語プログラムを逐次実行し
て実施形態に示したデバッグ支援装置及び並列実行情報
生成装置の機能を実現するのである。
【0090】
【発明の効果】操作者による長語命令列の検証作業を支
援するデバッグ支援装置は、並列実行性が成立するソー
スコード文を特定する行番号であって、翻訳後の命令が
共通の長語命令に格納されたものの行番号の組みと、格
納先の長語命令との対応づけを示す並列実行情報を記憶
する第1記憶手段と、ソースプログラムにおける何れか
のソースコード文の行番号を用いての検証指示を操作者
から受け付ける受付手段と、検証指示に用いられた行番
号を含む並列実行情報を第1記憶手段から読み出す読出
手段と、読み出された当該並列実行情報内にソースコー
ド文の行番号とは別のソースコード文の行番号が含まれ
ているなら、当該別のソースコード文に関する表示を行
う表示手段とを備えることを特徴としており、ソースコ
ード文の行番号を用いての検証指示を受け付けて、並列
実行情報内にソースコード文の行番号とは別のソースコ
ード文の行番号が含まれているなら当該別のソースコー
ド文に関する表示を行うので、たとえソースプログラム
と、VLIW命令列とのギャップが激しい場合であってもソ
ースコード文のうち何処と何処が並列に動作するかを操
作者に確実に理解させることができる。
【0091】自分が記述したどのソースコードと、どの
ソースコードとが並列に動作しているかが理解し易くな
り、動作検証中にVLIW命令列の不具合が発覚しても、自
分が記述したソースプログラムに含まれているどのソー
スコードがその不具合の原因が究明し易くなり、デバッ
グ作業が効率良く行える。また、デバッグ支援装置にお
ける表示手段は、検証指示に用いられた行番号のソース
コード文を含む部位のプログラムリストを表示する第1
リスト表示部と、当該検証指示においての行番号と同一
の並列実行情報に別のソースコード文の行番号が含まれ
ているなら、当該別のソースコード文を含む部位のプロ
グラムリストを表示する第2リスト表示部と、第1、第
2リスト表示部により表示されたプログラムリストのう
ち、読出手段により読み出された当該並列実行情報内に
含まれているソースコード文を修飾する修飾部とを備え
てもよい。
【0092】この構成によれば、読み出された当該並列
実行情報内に含まれている別のソースコード文に関して
の表示を長語命令のプロセッサの実行に伴って行うの
で、自分が記述したどのソースコードと、どのソースコ
ードとが並列に動作しているかが理解し易くなり、動作
検証中にVLIW命令列の不具合が発覚しても、自分が記述
したソースプログラムに含まれているどのソースコード
がその不具合の原因が究明し易くなり、デバッグ作業が
効率良く行える。
【0093】故に、コンパイラにより生成されたオブジ
ェクトコード側命令がVLIW命令列にパッケージされてい
る場合でも、プログラムのコーディングから実機上での
動作検証までを高級言語で一貫して行える『高級言語指
向の開発環境』を実現することができる。また、デバッ
グ支援装置は、読出手段により読み出された並列実行情
報において対応づけられた長語命令をプロセッサに実行
させる実行制御手段を備え、表示手段は、プロセッサに
よる長語命令列の実行に伴って、修飾部により修飾され
るソースコード文を変更する修飾対象変更部を備えても
よい。
【0094】この構成によれば、検証指示に用いられた
行番号のソースコード文を含む部位及びソースコード文
に並列実行されるソースコード文を含む部位のプログラ
ムリスト表示がなされるので、操作者は長語命令列をプ
ロセッサに動作させながらも自分が記述したソースプロ
グラムに問題点が無かったかをレビューさせることがで
きる。また読み出された並列実行情報に対応づけられた
ソースコード文は修飾手段による修飾がなされるので、
検証指示がなされたソースコード文がその右辺のソース
コード文とどのように係っているかを把握することがで
きる。
【0095】また、デバッグ支援装置における検証指示
には、ソースプログラムにおける何れかのソースコード
文の行番号をスタート行として指定した長語命令列の実
行指示があり、修飾部は、プログラムリストにおいてス
タート行に対応するソースコード文及び当該ソースコー
ド文と並列実行情報により対応づけられているソースコ
ード文に修飾を施し、実行制御手段は、当該並列実行情
報において対応づけられた長語命令のアドレスをスター
トアドレスとして長語命令列をプロセッサに実行させる
ことを特徴としてもよい。
【0096】この構成によれば、長語命令列内のどの長
語命令を実行させるかをソースコード文の行番号で指定
することができるので、VLIW命令についての詳しい知識
の無い操作者であっても容易に長語命令列を動作させる
ことができる。また、デバッグ支援装置における検証指
示には、ソースプログラムにおける何れかのソースコー
ド文の行番号をブレークポイントとして指定したブレー
クポイント設定指示があり、デバッグ支援装置は、並列
実行情報において検証指示に用いられた行番号に対応す
るソースコード文と対応づけられた長語命令のアドレス
にブレークポイントを設定するブレークポイント設定手
段を備え、修飾対象変更部は、プロセッサによる長語命
令列の実行が、ブレークポイント設定手段によって設定
されたブレークポイントにより中断すると、実行が中断
したソースコード文及びその行番号が当該ソースコード
文と同じ並列実行情報に格納されているソースコード文
に修飾対象を変更することを特徴としてもよい。
【0097】この構成によれば、長語命令列の実行をど
の長語命令で停止させるかをソースコード文の行番号で
指定することができるので、不具合原因の可能性が高い
ソースコード文の直前まで長語命令列を実行させること
ができ、不具合原因の追究を徹底して行うことができ
る。
【図面の簡単な説明】
【図1】実施形態におけるコンパイラの構成図。
【図2】実施形態におけるデバッグ支援装置の構成図。
【図3】依存関係解析部8の処理を示すフローチャート
である。
【図4】第2コード生成部9の処理を示すフローチャー
トである。
【図5】デバッグ情報生成部10の処理を示すフローチ
ャートである。
【図6】コマンドインタプリタ14の処理を示すフロ−
チャ−トである。
【図7】コマンドインタプリタ14の処理を示すフロ−
チャ−トである。
【図8】(a)本発明の実施形態におけるプログラム記
憶部の内容を表す図である。 (b)同実施形態における第2コード生成部9に対する
入力コードを表す図である。
【図9】(a)本発明の実施形態における依存関係解析
部8に対する入力コードを表す図である。 (b)(a)の入力コードを基本ブロックに分割した結
果を表す図である。
【図10】(a)基本ブロックB1のDAGを表す図で
ある。 (b)基本ブロックB2のDAGを表す図である。
(c)基本ブロックB3のDAGを表す図である。 (d)基本ブロックB4のDAGを表す図である。
【図11】本発明の実施形態における行アドレス記憶部
4の内容を表す図である。
【図12】本発明の実施形態における並列実行情報記憶
部5の内容を表す図である。
【図13】本発明の実施形態における生成コード記憶部
2の内容を表す図である。
【図14】本発明の実施形態におけるユーザによるブレ
ークポイントの入力時及びユーザによるプログラム実行
命令の入力時の画面を表す図である。
【図15】(a)本発明の実施形態におけるユーザが指
定したブレークポイントにおける、ブレークポイントに
よる実行停止時の表示結果を表す図である。 (b)同実施形態におけるワンステップ動作時の並列実
行行の表示結果を表す図である。
【図16】(a)〜(c)同実施形態におけるワンステ
ップ動作時の並列実行行の表示結果を表す図である。
【符号の説明】
1 プログラム記憶部 2 生成コード記憶部 3 デバッグ情報記憶部 4 行アドレス記憶部 5 並列実行情報記憶部 6 内部表現変換部 7 第1コード生成部 8 依存関係解析部 9 第2コード生成部 10 デバッグ情報生成部 11 ユーザインターフェィス部 12 ディスプレィ 13 キーボード 14 コマンドインタプリタ 15 コード実行部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 田中 旭 大阪府門真市大字門真1006番地 松下電器 産業株式会社内

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 操作者による長語命令列の検証作業を支
    援するデバッグ支援装置であって、 並列実行性が成立するソースコード文を特定する行番号
    であって、翻訳後の命令が共通の長語命令に格納された
    ものの行番号の組みと、格納先の長語命令との対応づけ
    を示す並列実行情報を記憶する第1記憶手段と、 ソースプログラムにおける何れかのソースコード文の行
    番号を用いての検証指示を操作者から受け付ける受付手
    段と、 検証指示に用いられた行番号を含む並列実行情報を第1
    記憶手段から読み出す読出手段と、 読み出された当該並列実行情報内にソースコード文の行
    番号とは別のソースコード文の行番号が含まれているな
    ら、当該別のソースコード文に関する表示を行う表示手
    段とを備えることを特徴とするデバッグ支援装置。
  2. 【請求項2】 前記表示手段は、 検証指示に用いられた行番号のソースコード文を含む部
    位のプログラムリストを表示する第1リスト表示部と、 当該検証指示においての行番号と同一の並列実行情報に
    別のソースコード文の行番号が含まれているなら、当該
    別のソースコード文を含む部位のプログラムリストを表
    示する第2リスト表示部と、 第1、第2リスト表示部により表示されたプログラムリ
    ストのうち、読出手段により読み出された当該並列実行
    情報内に含まれているソースコード文を修飾する修飾部
    とを備えることを特徴とする請求項1記載のデバッグ支
    援装置。
  3. 【請求項3】 前記デバッグ支援装置は、 読出手段により読み出された並列実行情報において対応
    づけられた長語命令をプロセッサに実行させる実行制御
    手段を備え、 前記表示手段は、 プロセッサによる長語命令列の実行に伴って、修飾部に
    より修飾されるソースコード文を変更する修飾対象変更
    部を備えることを特徴とする請求項2記載のデバッグ支
    援装置。
  4. 【請求項4】 前記検証指示には、ソースプログラムに
    おける何れかのソースコード文の行番号をスタート行と
    して指定した長語命令列の実行指示があり、 前記修飾部は、 プログラムリストにおいてスタート行に対応するソース
    コード文及び当該ソースコード文と並列実行情報により
    対応づけられているソースコード文に修飾を施し、 前記実行制御手段は、 当該並列実行情報において対応づけられた長語命令のア
    ドレスをスタートアドレスとして長語命令列をプロセッ
    サに実行させることを特徴とする請求項3記載のデバッ
    グ支援装置。
  5. 【請求項5】 前記検証指示には、ソースプログラムに
    おける何れかのソースコード文の行番号をブレークポイ
    ントとして指定したブレークポイント設定指示があり、 前記デバッグ支援装置は、 並列実行情報において検証指示に用いられた行番号に対
    応するソースコード文と対応づけられた長語命令のアド
    レスにブレークポイントを設定するブレークポイント設
    定手段を備え、 前記修飾対象変更部は、 プロセッサによる長語命令列の実行が、ブレークポイン
    ト設定手段によって設定されたブレークポイントにより
    中断すると、実行が中断したソースコード文及びその行
    番号が当該ソースコード文と同じ並列実行情報に格納さ
    れているソースコード文に修飾対象を変更することを特
    徴とする請求項4記載のデバッグ支援装置。
  6. 【請求項6】 前記表示手段は、 ウィンドウ開閉指示に従って、表示用ウィンドウを開く
    ウィンドウ開閉部を備え、 前記第1、第2リスト表示部は、 ウィンドウ開閉部にウィンドウ開閉指示を発してウィン
    ドウを開かせ、当該ウィンドウ上に行番号のソースコー
    ドを含む部位のプログラムリストを配置することを特徴
    とする請求項5記載のデバッグ支援装置。
  7. 【請求項7】 前記第1表示部は、 ウィンドウ開閉部にウィンドウ開閉指示を発してウィン
    ドウを表示させ、当該ウィンドウ上に行番号のソースコ
    ードを含む部位のプログラムリストを配置し、 前記第2リスト表示部は、 第1表示部によりソースコード文が配置された後のウィ
    ンドウに、所定サイズの余白があるかを判定する判定部
    と、 所定サイズの余白がない場合、ウィンドウ開閉部にウィ
    ンドウ開閉指示を発して別のウィンドウを表示させ、当
    該ウィンドウ上で当該ソースコード文を含む部位のプロ
    グラムリストを表示することを特徴とする請求項6記載
    のデバッグ支援装置。
  8. 【請求項8】 前記ウィンドウ開閉部は、 分割指示に従って、表示用ウィンドウを分割するウィン
    ドウ分割部を備え、前記第1表示部は、 ウィンドウ開閉部にウィンドウ開閉指示を発してウィン
    ドウを表示させ、当該ウィンドウ上に行番号のソースコ
    ードを含む部位のプログラムリストを配置し、 前記第2リスト表示部は、 第1表示部によりソースコード文が配置された後のウィ
    ンドウに、所定サイズの余白があるかを判定する判定部
    と、 所定サイズの余白がない場合、ウィンドウ分割部に分割
    指示を発してウィンドウを分割させ、当該ウィンドウ上
    でソースコードを含む部位のプログラムリストを表示す
    ることを特徴とする請求項6記載のデバッグ支援装置。
  9. 【請求項9】 並列実行情報に含まれている行番号の何
    れかにはスケジューリングに関する情報が付されてお
    り、 前記表示手段は、 第1、第2リスト表示部によりリスト表示されたソース
    コード文の行番号にスケジューリングに関する情報が付
    されている場合、その旨を通知する通知部を備えること
    を特徴とする請求項1〜8の何れかに記載のデバッグ支
    援装置。
  10. 【請求項10】 請求項1〜9の何れかに記載のデバッ
    グ支援装置が用いる並列実行情報を生成する並列実行情
    報生成装置であって、 長語命令列における各長語命令のアドレスを見出欄とし
    て有し、それら長語命令列に対応する記入欄とを有する
    第2記憶手段と、 ソースプログラムにおける各ソースコード文の行番号
    と、それらを翻訳して得られた命令を記憶する第3記憶
    手段と、 長語命令列における長語命令を取り出す取出手段と、 取り出された長語命令列に格納されているそれぞれの命
    令が何れのソースコード文を生成元としているかを判定
    する判定手段と、 取り出された長語命令列のアドレスを見出欄とした前記
    第2記憶手段の記入欄に、生成元として判定されたソー
    スコード文の行番号を書き込む書込手段と、 ソースコード文の行番号が書き込まれると、長語命令列
    における次の長語命令を取り出すよう取出手段を制御す
    る制御手段と取り出手段による取り出しが、長語命令列
    における全ての長語命令について行われると、第2記憶
    手段に得られた記入欄の内容に基づいて並列実行情報を
    生成する生成手段とを備えることを特徴とする並列実行
    情報生成装置。
  11. 【請求項11】 前記並列実行情報生成装置は取り出さ
    れた長語命令列に格納されている命令が何れのソースコ
    ード文を生成元としているかが判定手段により判定され
    ると、当該ソースコード文にスケジューリングに関する
    情報が付されているかを判定する検出手段を有し、 前記書込手段は、 スケジューリングに関する情報が検出された場合、取り
    出された長語命令列のアドレスを見出欄とした記入欄
    に、生成元として判定されたソースコード文の行番号と
    共にスケジューリングに関する情報を書き込むことを特
    徴とする請求項10記載の並列実行情報生成装置。
  12. 【請求項12】 操作者による長語命令列の検証作業を
    支援するデバッグ支援装置に適用されるプログラムを記
    録した記録媒体であって、 デバッグ支援装置は並列実行性が成立するソースコード
    文を特定する行番号であって、翻訳後の命令が共通の長
    語命令に格納されたものの組みと、格納先の長語命令と
    の対応づけを示す並列実行情報を記憶する第1記憶手段
    を有し、 前記プログラムは、 ソースプログラムにおける何れかのソースコード文の行
    番号を用いての検証指示を操作者から受け付ける受付ス
    テップと、 検証指示に用いられた行番号を含む並列実行情報を第1
    記憶手段から読み出す読出ステップと、 読み出された当該並列実行情報内にソースコード文の行
    番号とは別のソースコード文の行番号が含まれているな
    ら、当該別のソースコード文に関する表示を行う表示ス
    テップとを備えることを特徴とする記録媒体。
  13. 【請求項13】 記録媒体に記録されるプログラムにお
    ける表示ステップは、 検証指示に用いられた行番号のソースコード文を含む部
    位のプログラムリストを表示する第1リスト表示サブス
    テップと、 当該検証指示においての行番号と同一の並列実行情報に
    別のソースコード文の行番号が含まれているなら、当該
    別のソースコード文を含む部位のプログラムリストを表
    示する第2リスト表示サブステップと、 第1、第2リスト表示サブステップにより表示されたプ
    ログラムリストのうち、読出ステップにより読み出され
    た当該並列実行情報内に含まれているソースコード文を
    修飾する修飾サブステップとを備えることを特徴とする
    請求項12記載の記録媒体。
  14. 【請求項14】 記録媒体に記録されるプログラムは、 読出ステップにより読み出された並列実行情報において
    対応づけられた長語命令をプロセッサに実行させる実行
    制御ステップを備え、 前記表示ステップは、 プロセッサによる長語命令列の実行に伴って、修飾サブ
    ステップにより修飾されるソースコード文を変更する修
    飾対象変更サブステップを備えることを特徴とする請求
    項13記載の記録媒体。
  15. 【請求項15】 記録媒体に記録されるプログラムにお
    ける検証指示には、ソースプログラムにおける何れかの
    ソースコード文の行番号をスタート行として指定した長
    語命令列の実行指示があり、 前記修飾サブステップは、 プログラムリストにおいてスタート行に対応するソース
    コード文及び当該ソースコード文と並列実行情報により
    対応づけられているソースコード文に修飾を施し、 前記実行制御ステップは、 当該並列実行情報において対応づけられた長語命令のア
    ドレスをスタートアドレスとして長語命令列をプロセッ
    サに実行させることを特徴とする請求項14記載の記録
    媒体。
  16. 【請求項16】 記録媒体に記録されるプログラムにお
    ける検証指示には、ソースプログラムにおける何れかの
    ソースコード文の行番号をブレークポイントとして指定
    したブレークポイント設定指示があり、 前記デバッグ支援装置は、 並列実行情報において検証指示に用いられた行番号に対
    応するソースコード文と対応づけられた長語命令のアド
    レスにブレークポイントを設定するブレークポイント設
    定ステップを備え、 前記修飾対象変更サブステップは、 プロセッサによる長語命令列の実行が、ブレークポイン
    ト設定ステップによって設定されたブレークポイントに
    より中断すると、実行が中断したソースコード文及びそ
    の行番号が当該ソースコード文と同じ並列実行情報に格
    納されているソースコード文に修飾対象を変更すること
    を特徴とする請求項15記載の記録媒体。
  17. 【請求項17】 記録媒体に記録されるプログラムにお
    ける表示ステップは、 ウィンドウ開閉指示に従って、表示用ウィンドウを開く
    ウィンドウ開閉サブステップを備え、 前記第1、第2リスト表示サブステップは、 ウィンドウ開閉サブステップにウィンドウ開閉指示を発
    してウィンドウを開かせ、当該ウィンドウ上に行番号の
    ソースコードを含む部位のプログラムリストを配置する
    ことを特徴とする請求項16記載の記録媒体。
  18. 【請求項18】 記録媒体に記録されるプログラムにお
    ける第1表示サブステップは、 ウィンドウ開閉サブステップにウィンドウ開閉指示を発
    してウィンドウを表示させ、当該ウィンドウ上に行番号
    のソースコードを含む部位のプログラムリストを配置
    し、 前記第2リスト表示サブステップは、 第1表示サブステップによりソースコード文が配置され
    た後のウィンドウに、所定サイズの余白があるかを判定
    する判定サブステップと、 所定サイズの余白がない場合、ウィンドウ開閉サブステ
    ップにウィンドウ開閉指示を発して別のウィンドウを表
    示させ、当該ウィンドウ上で当該ソースコード文を含む
    部位のプログラムリストを表示することを特徴とする請
    求項17記載の記録媒体。
  19. 【請求項19】 記録媒体に記録されるプログラムにお
    けるウィンドウ開閉ステップは、 分割指示に従って、表示用ウィンドウを分割するウィン
    ドウ分割サブステップを備え、 前記第1表示サブステップは、 ウィンドウ開閉サブステップにウィンドウ開閉指示を発
    してウィンドウを表示させ、当該ウィンドウ上に行番号
    のソースコードを含む部位のプログラムリストを配置
    し、 前記第2リスト表示サブステップは、 第1表示サブステップによりソースコード文が配置され
    た後のウィンドウに、所定サイズの余白があるかを判定
    する判定サブステップと、 所定サイズの余白がない場合、ウィンドウ分割サブステ
    ップに分割指示を発してウィンドウを分割させ、当該ウ
    ィンドウ上でソースコードを含む部位のプログラムリス
    トを表示することを特徴とする請求項17記載の記録媒
    体。
  20. 【請求項20】 並列実行情報に含まれている行番号の
    何れかにはスケジューリングに関する情報が付されてお
    り、 デバッグ支援装置における表示ステップは、 第1、第2リスト表示サブステップによりリスト表示さ
    れたソースコード文の行番号にスケジューリングに関す
    る情報が付されている場合、その旨を通知する通知サブ
    ステップを備えることを特徴とする請求項12〜19の
    何れかに記載の記録媒体。
  21. 【請求項21】 何れかに記載のデバッグ支援装置が用
    いる並列実行情報を生成する並列実行情報生成装置に適
    用されるプログラムを記録した記録媒体であって、 前記並列実行情報生成装置は長語命令列における各長語
    命令のアドレスを見出欄として有し、それら長語命令列
    に対応する記入欄とを有する第2記憶手段と、 ソースプログラムにおける各ソースコード文の行番号
    と、それらを翻訳して得られた命令を記憶する第3記憶
    手段とを有し、 前記プログラムは、 長語命令列における長語命令を取り出す取出ステップ
    と、 取り出された長語命令列に格納されている命令が何れの
    ソースコード文を生成元としているかを判定する判定ス
    テップと、 取り出された長語命令列のアドレスを見出欄とした前記
    第2記憶手段の記入欄に、生成元として判定されたソー
    スコード文の行番号を書き込む書込ステップと、 ソースコード文の行番号が書き込まれると、長語命令列
    における次の長語命令を取り出すよう取出ステップを制
    御する制御ステップと、 取り出ステップによる取り出しが、長語命令列における
    全ての長語命令について行われると、第2記憶手段に得
    られた記入欄の内容に基づいて並列実行情報を生成する
    生成ステップとを備えることを特徴とする請求項12〜
    20の何れかに記載の記録媒体。
  22. 【請求項22】 並列実行情報生成装置は取り出された
    長語命令列に格納されている命令が何れのソースコード
    文を生成元としているかが判定ステップにより判定され
    ると、当該ソースコード文にスケジューリングに関する
    情報が付されているかを判定する検出ステップを有し、 前記書込ステップは、 スケジューリングに関する情報が検出された場合、取り
    出された長語命令列のアドレスを見出欄とした記入欄
    に、生成元として判定されたソースコード文の行番号と
    共にスケジューリングに関する情報を書き込むことを特
    徴とする請求項21記載の記録媒体。
JP10001407A 1998-01-07 1998-01-07 デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体 Pending JPH11194957A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP10001407A JPH11194957A (ja) 1998-01-07 1998-01-07 デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体
US09/226,228 US6286132B1 (en) 1998-01-07 1999-01-07 Debugging support apparatus, a parallel execution information generation device, a computer-readable recording medium storing a debugging support program, and a computer-readable recording medium storing a parallel execution information generation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10001407A JPH11194957A (ja) 1998-01-07 1998-01-07 デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体

Publications (1)

Publication Number Publication Date
JPH11194957A true JPH11194957A (ja) 1999-07-21

Family

ID=11500649

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10001407A Pending JPH11194957A (ja) 1998-01-07 1998-01-07 デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体

Country Status (2)

Country Link
US (1) US6286132B1 (ja)
JP (1) JPH11194957A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337837A (ja) * 2000-05-24 2001-12-07 Mitsubishi Electric Corp プログラム編集装置及びプログラム編集方法
WO2006087922A1 (ja) * 2005-02-15 2006-08-24 Matsushita Electric Industrial Co., Ltd. デバッグ装置、デバッグ方法およびプログラム
JP2007058731A (ja) * 2005-08-26 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、及び並列命令実行対応デバッグ装置
JP2010517119A (ja) * 2007-01-18 2010-05-20 パナソニック株式会社 難読化支援装置
JP2011181100A (ja) * 2011-05-19 2011-09-15 Panasonic Corp プロセッサ、及び並列命令実行対応デバッグ装置

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0943996B1 (en) * 1998-03-20 2003-06-11 Texas Instruments Incorporated Processor having real-time execution control for debug functions without a debug monitor
JP4158239B2 (ja) * 1998-09-08 2008-10-01 ソニー株式会社 情報処理装置および方法、並びに記録媒体
US6598221B1 (en) * 2000-04-13 2003-07-22 Koninklijke Philips Electronics N.V. Assembly code performance evaluation apparatus and method
JP2001344127A (ja) * 2000-05-31 2001-12-14 Hitachi Ltd システム開発方法、記憶媒体、情報処理装置、情報端末装置、情報処理システム及び情報処理方法
US7000225B2 (en) * 2000-12-07 2006-02-14 International Business Machines Corporation Method for inserting global breakpoints
US7707546B2 (en) * 2001-09-13 2010-04-27 International Business Machines Corporation Source code interface
US7257805B2 (en) * 2001-11-09 2007-08-14 International Business Machines Corporation Restoring debugging breakpoints subsequent to program code modifications
US7134115B2 (en) * 2002-02-07 2006-11-07 Matsushita Electric Industrial Co., Ltd. Apparatus, method, and program for breakpoint setting
US20040013250A1 (en) * 2002-07-22 2004-01-22 Sreekrishna Kotnur System and method of tracking component object requests
JP3900485B2 (ja) * 2002-07-29 2007-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体
CA2414479A1 (en) * 2002-12-16 2004-06-16 Ibm Canada Limited - Ibm Canada Limitee A visual debugger for stylesheets
TW588238B (en) * 2003-02-13 2004-05-21 Micro Star Int Co Ltd Program debugging method
US20050071611A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for counting data accesses and instruction executions that exceed a threshold
US20050071610A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for debug support for individual instructions and memory locations
US7373637B2 (en) * 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US20050071612A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for generating interrupts upon execution of marked instructions and upon access to marked memory locations
US20050071608A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for selectively counting instructions and data accesses
US20050071609A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically take an exception on specified instructions
US7937691B2 (en) * 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US20050071816A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically count instruction execution for applications
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7421681B2 (en) 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US7225309B2 (en) * 2003-10-09 2007-05-29 International Business Machines Corporation Method and system for autonomic performance improvements in an application via memory relocation
US20050086455A1 (en) * 2003-10-16 2005-04-21 International Business Machines Corporation Method and apparatus for generating interrupts for specific types of instructions
US7257657B2 (en) * 2003-11-06 2007-08-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses for specific types of instructions
US7458078B2 (en) * 2003-11-06 2008-11-25 International Business Machines Corporation Apparatus and method for autonomic hardware assisted thread stack tracking
US7496908B2 (en) * 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7082486B2 (en) * 2004-01-14 2006-07-25 International Business Machines Corporation Method and apparatus for counting interrupts by type
US7197586B2 (en) * 2004-01-14 2007-03-27 International Business Machines Corporation Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
US7290255B2 (en) * 2004-01-14 2007-10-30 International Business Machines Corporation Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
US7293164B2 (en) * 2004-01-14 2007-11-06 International Business Machines Corporation Autonomic method and apparatus for counting branch instructions to generate branch statistics meant to improve branch predictions
US7093081B2 (en) * 2004-01-14 2006-08-15 International Business Machines Corporation Method and apparatus for identifying false cache line sharing
US7392370B2 (en) 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7415705B2 (en) * 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US7181599B2 (en) * 2004-01-14 2007-02-20 International Business Machines Corporation Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
US20050155018A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
US7114036B2 (en) * 2004-01-14 2006-09-26 International Business Machines Corporation Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US7895382B2 (en) * 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7987453B2 (en) * 2004-03-18 2011-07-26 International Business Machines Corporation Method and apparatus for determining computer program flows autonomically using hardware assisted thread stack tracking and cataloged symbolic data
US7299319B2 (en) 2004-03-22 2007-11-20 International Business Machines Corporation Method and apparatus for providing hardware assistance for code coverage
US7526616B2 (en) 2004-03-22 2009-04-28 International Business Machines Corporation Method and apparatus for prefetching data from a data structure
US7296130B2 (en) 2004-03-22 2007-11-13 International Business Machines Corporation Method and apparatus for providing hardware assistance for data access coverage on dynamically allocated data
US8135915B2 (en) 2004-03-22 2012-03-13 International Business Machines Corporation Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator
US7421684B2 (en) 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US7480899B2 (en) * 2004-03-22 2009-01-20 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for code coverage
US7703082B2 (en) * 2004-12-07 2010-04-20 International Business Machines Corporation Controlling user intervention in a multi-processing computer system
US8225286B2 (en) * 2006-05-23 2012-07-17 Microsoft Corporation Debugging interpreted input
CN100464312C (zh) * 2006-08-25 2009-02-25 上海普元信息技术有限责任公司 构件化软件系统中实现非Java构件的调试的方法
JP2008269529A (ja) * 2007-04-25 2008-11-06 Toshiba Corp デバッグ支援装置
US8769506B2 (en) * 2007-09-24 2014-07-01 Microsoft Corporation Using a command interpreter at design time
JP5118562B2 (ja) * 2008-06-20 2013-01-16 株式会社東芝 デバッグ支援装置
US8881106B2 (en) * 2009-12-26 2014-11-04 Intel Corporation Debugging parallel software using speculatively executed code sequences in a multiple core environment
US8527970B1 (en) * 2010-09-09 2013-09-03 The Boeing Company Methods and systems for mapping threads to processor cores

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834171B2 (ja) * 1989-02-06 1998-12-09 株式会社日立製作所 コンパイル方法
US5446838A (en) * 1992-11-13 1995-08-29 International Business Machines Corporation Floating highlights on a computer program code display
JP2692609B2 (ja) * 1994-09-26 1997-12-17 日本電気株式会社 マルチタスクのプログラムデバッグ方法とその装置
US5881288A (en) * 1995-09-29 1999-03-09 Matsushita Electric Industrial Co., Ltd. Debugging information generation system
EP0814404B1 (en) * 1996-06-19 2001-01-31 Matsushita Electric Industrial Co., Ltd. Debugging apparatus for debugging a program
US5946493A (en) * 1997-03-28 1999-08-31 International Business Machines Corporation Method and system in a data processing system for association of source code instructions with an optimized listing of object code instructions

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337837A (ja) * 2000-05-24 2001-12-07 Mitsubishi Electric Corp プログラム編集装置及びプログラム編集方法
WO2006087922A1 (ja) * 2005-02-15 2006-08-24 Matsushita Electric Industrial Co., Ltd. デバッグ装置、デバッグ方法およびプログラム
JP2007058731A (ja) * 2005-08-26 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、及び並列命令実行対応デバッグ装置
JP2010517119A (ja) * 2007-01-18 2010-05-20 パナソニック株式会社 難読化支援装置
US9589115B2 (en) 2007-01-18 2017-03-07 Panasonic Intellectual Property Management Co., Ltd. Obfuscation assisting apparatus
JP2011181100A (ja) * 2011-05-19 2011-09-15 Panasonic Corp プロセッサ、及び並列命令実行対応デバッグ装置

Also Published As

Publication number Publication date
US6286132B1 (en) 2001-09-04

Similar Documents

Publication Publication Date Title
JPH11194957A (ja) デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体
JP2795244B2 (ja) プログラムデバッグシステム
JP4909877B2 (ja) デバッグ装置及びデバッグ方法
US20030033592A1 (en) Software debugger and software development support system
JP4272371B2 (ja) デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。
US11579856B2 (en) Multi-chip compatible compiling method and device
JPH0950389A (ja) コンピュータシステムを使って実装される装置及び方法
JP2003131902A (ja) ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム
KR20100106409A (ko) 다중 언어 소프트웨어 코드 분석
US20030177471A1 (en) System and method for graphically developing a program
KR100417655B1 (ko) 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템
JPH096646A (ja) プログラムシミュレーション装置
US11256479B2 (en) Dynamic updates in an interactive programming environment
Van Put et al. Lancet: A nifty code editing tool
JP3892873B2 (ja) プログラマブルコントローラ
JP3745968B2 (ja) 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体
JPH07295612A (ja) 高級言語シーケンス命令プログラム生成装置および汎用シーケンサ
WO2024069730A1 (ja) デバッグ装置及びデバッグ方法
JPH05250221A (ja) シミュレータ実行方式
KR101548960B1 (ko) 가상 플랫폼을 이용한 프로그램 작성과 디버깅 방법 및 장치
JPH05108372A (ja) コンパイラ最適化処理内容の出力方式
JP2662533B2 (ja) ロジック・アナライザ
JPH06231003A (ja) 実行可能ファイルのデバッガ
JP2002189613A (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法及びソフトウェア開発支援プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3130421B2 (ja) プログラム解析方法および装置