(57)【特許請求の範囲】
【請求項１】
ソースプログラムの翻訳方法において、
コンピュータが、
前記ソースプログラムの翻訳処理中に、比較処理で検査結果が得られる項目部分に、当該項目自体についての比較条件および比較対象を含む比較命令を、翻訳後の当該比較命令の実行時に当該項目に基づく結果がエラーに該当する場合にのみエラー処理の割り込み処理を行い、検査結果を出力する態様で設定する、
ことを特徴とするソースプログラム翻訳方法。
【請求項２】
ソースプログラムの翻訳装置において、
前記ソースプログラムの翻訳処理中に、比較処理で検査結果が得られる項目部分に、当該項目自体についての比較条件および比較対象を含む比較命令を、翻訳後の当該比較命令の実行時に当該項目に基づく結果がエラーに該当する場合にのみエラー処理の割り込み処理を行い、検査結果を出力する態様で設定する手段を少なくとも備えた、
ことを特徴とするソースプログラム翻訳装置。
【請求項３】
ソースプログラムの翻訳処理をコンピュータに実現させるためのプログラムを格納したコンピュータ読取可能なプログラム記憶媒体であって、
前記ソースプログラムの翻訳処理中に、比較処理で検査結果が得られる項目部分に、当該項目自体についての比較条件および比較対象を含む比較命令を、翻訳後の当該比較命令の実行時に当該項目に基づく結果がエラーに該当する場合にのみエラー処理の割り込み処理を行い、検査結果を出力する態様で設定する、
機能をコンピュータに実現させるためのプログラムを格納したことを特徴とするコンピュータ読取可能なプログラム記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、検査項目の種別を特定する識別子を比較命令に付加したかたちの比較割り込み命令を用いたデバッグ処理や、当該命令を出力するソ−スプログラム翻訳処理に関し、例えば未定義領域の引用検査、配列の添字アクセス検査、組み込み関数の引数エラ−検出などを対象としたものである。
【０００２】
一般に、プログラム作成にともなうデバッグ処理には多大な時間と労力を要しているため、デバッグ作業をより効率的に実行可能とすることが望ましく、本発明はこのような要請に応えるものである。
【０００３】
【従来の技術】
図２０は、従来の添字検査（上限値）に関するデバッグ方式であり、デバッグ対象のソ−スプログラムとして４バイトの配列ａ(i) およびｂ(i) を加算演算するプログラムを用いている。
【０００４】
ここでの検査内容は、ａ(i) およびｂ(i) の各配列の添字(i) が宣言文に基づく上限値(n) を越えることがないかどうかである。
【０００５】
この検査のため、コンパイラは、ソ−スプログラムを中間テキストに展開しながら加算演算のテキストの直前部分にデバッグライブラリの呼び出し命令を挿入している。
【０００６】
デバッグ時には、初期値「１」から終値「ｍ」までの添字(i) ごとにデバッグライブラリを呼び出して走行させ、
・「ｉ＞ｎ」のときはエラ−処理を実行してから呼び出し元のデバッグ対象プログラムに復帰し、
・「ｉ≦ｎ」のときは呼び出し元のデバッグ対象プログラムに復帰する。
【０００７】
エラ−処理の実行により、利用者は、デバッグ対象プログラムのエラー部分についての詳細情報を知ることができる。
【０００８】
【発明が解決しようとする課題】
このように、従来のデバッグ手法は、デバッグ対象プログラムからデバッグライブラリを呼び出してそこで例えば配列の添字などにプログラムミスがないかどうかを検査するため、当然のことながら、プログラムミスがない検査項目についても、デバッグライブラリの呼び出し命令とこれに続くデバッグ対象プログラムへの復帰命令が実行されることになり、デバッグ処理の実行性能を高めることがむずかしいという問題点があった。
【０００９】
そこで、本発明では、未定義領域の引用検査、配列の添字アクセス検査、組み込み関数の引数エラ−検出などのように、比較処理で検査結果が得られる項目の検査を、一般の比較命令に検査項目識別子を付加したかたちの識別子付き比較命令を用いて実行することより、デバッグ処理の効率化および高速化を図ることを目的とする。
【００１０】
さらには、この識別子付き比較命令を用いる高速デバッグ方式と、例えばデバッグ対象プログラムからデバッグ用ライブラリを呼び出して詳細なエラ−情報を求める詳細デバッグ方式とを併用して、デバッグ時の利便性を高めることを目的とする。
【００１１】
【課題を解決するための手段】
これを達成するために、本発明では、デバッグ対象プログラムを検査するに際し、検査要素としての比較条件および比較対象を含む比較命令に検査項目特定用の識別子を付加したかたちの、識別子付き比較命令（図１参照）を実行することにより、この識別子に対応の検査を行なうことを基本的構成とするデバッグ方法やデバッグ装置を用いている。
【００１２】
通常の比較命令としての識別子も用いることにより、この識別子付き比較命令を、
・これまでの比較命令
・デバッグ対象プログラムの検査項目、例えば未定義領域の引用検査、配列の添字アクセス検査、組み込み関数の引数エラ−検出などのデバッグ用命令
のそれぞれに使い分けることができる。
【００１３】
識別子付き比較命令を用いた検査で比較条件が成立した場合、すなわちプログラムミスが検出された場合、
・割り込み処理へと移行してエラ−メッセ−ジを出力したり、
・エラ−フラグをセットしたりする。
【００１４】
また、詳細エラ−情報を出力しない高速デバッグ方式と、詳細エラ−情報を出力する詳細デバッグ方式とを用いて、デバッグ対象プログラムの検査を行なう際の、高速デバッグ方式の動作時には、前記識別子付き比較命令（図１参照）を実行することにより、この識別子に対応の検査を行なうことを基本的構成とするデバッグ方法やデバッグ装置を用いている。
【００１５】
また、本発明では、ソ−スプログラムを翻訳するに際し、ソ−スプログラムの検査対象部分に、検査要素としての比較条件および比較対象を含む比較命令に検査項目特定用の識別子を付加したかたちの、識別子付き比較命令を出力することを基本的構成とするソ−スプログラム翻訳方法やソ−スプログラム翻訳装置を用いている。
【００１６】
このような内容からなる本発明について特許の対象とする部分は次の通りである。
（１）ソースプログラムの翻訳方法において、コンピュータが、前記ソースプログラムの翻訳処理中に、比較処理で検査結果が得られる項目部分に、当該項目自体についての比較条件および比較対象を含む比較命令を、翻訳後の当該比較命令の実行時に当該項目に基づく結果がエラーに該当する場合にのみエラー処理の割り込み処理を行い、検査結果を出力する態様で設定する、ことを特徴とするソースプログラム翻訳方法。
（２）ソースプログラムの翻訳装置において、前記ソースプログラムの翻訳処理中に、比較処理で検査結果が得られる項目部分に、当該項目自体についての比較条件および比較対象を含む比較命令を、翻訳後の当該比較命令の実行時に当該項目に基づく結果がエラーに該当する場合にのみエラー処理の割り込み処理を行い、検査結果を出力する態様で設定する手段を少なくとも備えた、ことを特徴とするソースプログラム翻訳装置。
（３）ソースプログラムの翻訳処理をコンピュータに実現させるためのプログラムを格納したコンピュータ読取可能なプログラム記憶媒体であって、前記ソースプログラムの翻訳処理中に、比較処理で検査結果が得られる項目部分に、当該項目自体についての比較条件および比較対象を含む比較命令を、翻訳後の当該比較命令の実行時に当該項目に基づく結果がエラーに該当する場合にのみエラー処理の割り込み処理を行い、検査結果を出力する態様で設定する、機能をコンピュータに実現させるためのプログラムを格納したことを特徴とするコンピュータ読取可能なプログラム記憶媒体。
【００１７】
【発明の実施の形態】
図１乃至図１９を参照して本発明の実施の形態を説明する。
以下の実施の形態では、説明の便宜上、識別子付き比較命令を用いた検査で比較条件が成立した場合には割り込み処理へと移行してエラ−メッセ−ジを出力することを前提とし、また、識別子付き比較命令を「比較割り込み命令または比較割り込みベクトル命令」と表現する。
【００１８】
図１は、比較割り込み命令（識別子付き比較命令）を示す説明図である。
通常の比較命令（スカラ比較命令およびベクトル比較命令）としての構成要素は、
・ＣＯＭＰ／ＶＣＯＭＰ（命令コ−ド）
・比較条件（等しい、異なる、大きい、小さいなど）
・ＤＥＦ ０Ｐ（比較結果）
・ＲＥＦ ０Ｐ（比較対象オペランド）
などである。
【００１９】
本発明で用いる比較割り込み命令は、これらの構成要素に、例えば８ビットの割り込み種別を示す識別子を付加したものである。
【００２０】
識別子としては、
・割り込みを発生させない通常の比較命令としての動作識別子「０」
・未定義領域の引用の検査を示す識別子「１」
・配列の添字アクセスの検査を示す識別子「２」
・組み込み関数の引数エラ−検出を示す識別子「３」
などを用いている。
【００２１】
図２は、図２０(a) のソ−スプログラムに対応のデバッグ方式を示す説明図であり、デバッグ対象プログラムには、
・添字検査ＩＤ「２」
・比較条件および比較対象としての「ｉ＞ｎ」
の構成要素を含む比較割り込み命令が設定されている。
【００２２】
ここで「ｉ＞ｎ」の条件が成立すれば、すなわち配列ａ(i) ，ｂ(i) の添字が配列宣言文で指定された上限値「ｎ」を越えていれば、エラ−処理用ライブラリへの割り込みが発生する。
【００２３】
図２の比較割り込み命令は、図１の比較条件および比較対象を不等式で表し、また比較結果を省略したかたちになっている。
以下の説明でも、必要に応じて、このように簡略化した比較割り込み命令表現形式を用いる。
【００２４】
図３は、比較割り込み命令に対するハードウェアとしての制御手順を示す説明図であり、その内容は次のようになっている。
(11)比較対象オペランドは条件を満たしているかどうか、例えば比較対象オペランドの０Ｐ１および０Ｐ２は「０Ｐ１＜０Ｐ２」となっているかどうかを判断し、「YES 」の場合は次のステップに進む。
(12)一般の比較命令と同じ操作を実行して、すなわち定義オペランドに条件成立コ−ドを設定して、次のステップに進む。
(13)識別子の値を調べて、「０」以外の場合は次のステップに進む。
(14)識別子を、ソフトウェアが引用可能な専用制御レジスタに格納して、次のステップに進む。
(15)比較割り込み命令によりプログラム割り込み信号を発生する。
【００２５】
図４乃至図６は、比較割り込みベクトル命令としての動作例を示す説明図であり、それぞれの識別子は、
・図４のベクトル命令では「０」以外
・図５のベクトル命令では「０」
・図６のベクトル命令では「０」以外
に設定されている。
【００２６】
各ベクトル命令の識別子以外の部分は、ベクトルレジスタＶＲ１およびＶＲ２の対応する各要素が条件「等しい」を満たしているかどうかをマスクレジスタＭＲに設定する旨の内容となっている。
【００２７】
各ベクトル命令の動作例は、
・図４の場合、要素２について条件が成立するので、専用制御レジスタへ識別子が複写され、エラ−処理用ライブラリへの割り込みが発生し、
・図５の場合、通常の比較命令として動作し、
・図６の場合、各要素について条件が成立しないので、エラ−処理用ライブラリへの割り込みは発生しない、
といった内容である。
【００２８】
図７は、未定義領域の引用に関する検査手順を示す説明図であり、その内容は次のようになっている。なお、未定義領域の引用に関する検査とは、デバッグ対象プログラムの引用対象領域（引用される領域）が引用前に定義されているか否かの検査である。
(21)デバッグ対象プログラムの引用対象領域を、その引用（定義）前に未定義検出用の値  (undef val)で初期化して、次のステップに進む。なお、この初期化の後、プログラム内容に基づいて引用対象領域などへの命令が実行される。
(22)引用対象領域が引用される直前に、比較割り込みベクトル命令ＶＣＯＭＰを用いて引用対象領域の値と undef val との比較を行なって、次のステップに進む。
(23)引用対象領域の値と undef val との間に一致する要素があるかどうかを判断し、「YES 」の場合は次のステップに進み、「NO」の場合はステップ(27)に進む。
(24)エラ−処理用ライブラリへの割り込み信号（図９参照）を発生して、次のステップに進む。
(25)当該検査に対応の割り込み出口を持つエラ−処理用ライブラリでエラ−メッセ−ジ出力処理を行なって、次のステップに進む。
(26)割り込み元のデバッグ対象プログラムに戻って、その処理を続ける。
(27)デバッグ対象プログラムの処理を続ける。
【００２９】
図８は、図７に対応のデバッグ対象プログラム例を示す説明図である。
ソ−スプログラム１１は、
・先ず、それぞれ要素１から要素１００までの領域からなる配列ａ，ｂを宣言し、
・次に、配列要素ｂ(1) 乃至ｂ(50)の値として「１」を定義し、
・次に、配列要素ｂ(1) 乃至ｂ(100) の値を配列要素ａ(1) 乃至ａ(100) に設定する、
内容のものである。
【００３０】
このプログラム内容では、配列要素ｂ(51)乃至ｂ(100) の値が未定義のまま配列要素ａ(51)乃至ａ(100) に設定されてしまい、プログラムの誤動作を引き起こすことがある。
【００３１】
デバッグ対象プログラム１２は、
・先ず、配列要素ｂ(1) 乃至ｂ(100) の値を undef val で初期化し、
・次に、配列要素ｂ(1) 乃至ｂ(50)の値に「１」を定義し、
・次に、識別子「１」を持つ比較割り込みベクトル命令ＶＣＯＭＰを実行することにより、配列要素ｂ(1) 乃至ｂ(100) の中に undef val と等しい値のものがあるかどうかを検査し、
・次に、配列要素ｂ(1) 乃至ｂ(50)の値を配列要素ａ(1) 乃至ａ(100) に保持する、
内容のものである。
【００３２】
図９は、図８のデバッグ対象プログラムの実行時の概念を示す説明図である。この場合、デバッグ対象プログラム１２の走行により比較割り込みベクトル命令ＶＣＯＭＰを実行して、配列要素ｂ(51)乃至ｂ(100) の値が undef val のままであること、すなわち配列ｂの未定義部分が配列ａに引用されることを検出すると、デバッグ対象プログラム１２は割り込み信号を発生する。この割り込みにより、エラ−処理用ライブラリ１３がエラ−メッセ−ジ出力処理を行ない、続いて割り込み元のデバッグ対象プログラム１２が次の命令を実行する。
【００３３】
図１０は、配列の添字アクセスに関する検査態様を示す説明図である。なお、配列の添字アクセスに関する検査とは、配列の添字式の値が、宣言文で宣言した配列の大きさの範囲内にあるか否かを検査することである。添字のアクセス侵害が存在した場合、プログラマの意図しないメモリ位置をアクセスしてプログラムの誤動作を引き起こすことがある。
【００３４】
配列がプログラムのル−プ内で使用されて添字値が陽に昇順の場合は、
・ル−プに入る直前で検査し、
・「配列宣言の下限値≦添字の初期値、かつ、配列宣言の上限値≧添字の終値」のときは、割り込みが発生しない、
ことになる。
【００３５】
配列がプログラムのル−プ内で使用されて添字値が陽に降順の場合は、
・ル−プに入る直前で検査し、
・「配列宣言の下限値≦添字の終値、かつ、配列宣言の上限値≧添字の初期値」のときは、割り込みが発生しない、
ことになる。
【００３６】
配列がプログラムのル−プ内で使用されて添字の振る舞いがランダムの場合は、
・ル−プ内で検査し、
・「配列宣言の下限値≦すべての添字の値≦配列宣言の上限値」のときは、割り込みが発生しない、
ことになる。
【００３７】
配列がプログラムのル−プ外で使用される場合は、
・配列引用の直前で検査し、
「配列宣言の下限値≦添字の初期値、かつ、配列宣言の上限値≧添字の終値」のときは、割り込みが発生しない、
ことになる。
【００３８】
図１１は、図１０の添字アクセス検査に対応のデバッグ対象プログラム例を示す説明図であり、添字値のル−プ中での振る舞いが判定できる場合と、この振る舞いが不明な場合とを示している。
【００３９】
前者の振る舞いが判定できる場合のソ−スプログラム２１は、
・配列宣言の下限値が「１」、上限値が「１００」
・添字値は陽に昇順して、初期値が「ｎ」、終値が「ｍ」、増分値が「１」
の配列ａ(i) およびｂ(i) に関するものである。
【００４０】
また、デバッグ対象プログラム２２は、
・識別子「２」を持ち、初期値「ｎ」が「１未満」であるか否かの下限値検査用の比較割り込み命令ＣＯＭＰ
・識別子「２」を持ち、終値「ｍ」が「１０１以上」であるか否かの上限値検査用の比較割り込み命令ＣＯＭＰ
をル−プ外に含むものである。
【００４１】
後者の振る舞いが不明な場合のソ−スプログラム２３は、
・配列宣言の下限値が「１」、上限値が「１００」
・添字値は配列ｂ(i) の値
の配列ａ(i) に関するものである。
【００４２】
また、デバッグ対象プログラム２４は、
・識別子「２」を持ち、配列ｂ(i) の値を格納したベクトルレジスタＶＲ１のデ−タが「１未満」であるか否かの下限値検査用の比較割り込みベクトル命令ＶＣＯＭＰ
・識別子「２」を持ち、配列ｂ(i) の値を格納したベクトルレジスタＶＲ１のデ−タが「１０１以上」であるか否かの上限値検査用の比較割り込みベクトル命令ＶＣＯＭＰ
を含むものである。
【００４３】
図１２は、図１１のデバッグ対象プログラムの実行時の概念を示す説明図である。
この場合、デバッグ対象プログラム２２または２４の走行により二つの比較割り込み命令ＣＯＭＰまたは二つの比較割り込みベクトル命令ＶＣＯＭＰを実行して、配列ａ(i) または配列ａ(b(i))の添字の値がそれぞれの宣言文で宣言した下限値と上限値との範囲以外となっていることを検出すると、デバッグ対象プログラム２２または２４は割り込み信号を発生する。この割り込みにより、エラ−処理用ライブラリ２５がエラ−メッセ−ジ出力処理を行ない、続いて割り込み元のデバッグ対象プログラム２２または２４が次の命令を実行する。
【００４４】
図１３は、組み込み関数の引数エラ−検査の概要を示す説明図である。
ＩＢＣＬＲ組み込み関数は「Ｉ１−２I2」を計算する機能を有し、その引数Ｉ１，Ｉ２はそれぞれ整数型であり、また、第２引数Ｉ２は「０以上、かつＩ１の型で表現できるビット数」として定義される。
【００４５】
したがって、ＩＢＣＬＲ組み込み関数の第２引数Ｉ２が検査項目であり、その値が前記定義内容を満足しているか否かがデバッグ対象となる。
【００４６】
ソ−スプログラム３１は、
・配列ａの型が４バイト
・第１引数（Ｉ１）が配列ａ
・第２引数（Ｉ２）がｎ
のＩＢＣＬＲ組み込み関数についてのものである。
【００４７】
ＩＢＣＬＲ組み込み関数の第１引数（配列ａ）の型が４バイト（ｉｎｔｅｇｅｒ＊４）に設定されているため、第２引数ｎの値は、０以上３１以下でなければエラ−である。
【００４８】
デバッグ対象プログラム３２は、
・識別子「３」を持ち、第２引数ｎの値が「０未満」であるか否かを検出するための比較割り込みベクトル命令ＶＣＯＭＰ
・識別子「３」を持ち、第２引数ｎの値が「３２以上」であるか否かを検出するための比較割り込みベクトル命令ＶＣＯＭＰ
を含むものである。
【００４９】
図１４は、図１３のデバッグ対象プログラムの実行時の概念を示す説明図である。
この場合、デバッグ対象プログラム３２の走行により二つの比較割り込みベクトル命令ＶＣＯＭＰを実行して、第２引数ｎの値が「１未満」又は「３３以上」になっていることを検出すると、デバッグ対象プログラム３２は割り込み信号を発生する。この割り込みにより、エラ−処理用デバッグライブラリ３３がエラ−メッセ−ジ出力処理を行ない、続いて割り込み元のデバッグ対象プログラム３２が次の命令を実行する。
【００５０】
図１５は、高速デバッグ方式と詳細デバッグ方式（詳細エラ−情報通知デバッグ方式）とを選択的に用いるためのオプションおよび翻訳指示行を示す説明図である。
【００５１】
高速デバッグ方式とは、これまでに述べた、デバッグ対象プログラムに埋め込んだ比較割り込み（ベクトル）命令を用いて、例えば未定義領域の引用検査、配列の添字アクセス検査、組み込み関数の引数エラ−検出などを実行するデバッグ方式のことである。
【００５２】
詳細デバッグ方式とは、従来の、デバッグ対象プログラムに埋め込んだ呼び出し命令でデバッグライブラリを呼び出したり、デバッグ対象プログラムに埋め込んだデバッグ用命令を実行して、未定義領域の引用検査、配列の添字アクセス検査、組み込み関数の引数エラ−検査などを実行することにより詳細エラ−情報を出力するデバッグ方式のことである。
【００５３】
詳細エラ−情報は、
・エラ−検出したプログラム単位名
・エラ−検出したプログラムのライン位置
・エラ−検出した変数／配列の名前
・エラ−検出した配列の要素位置
などである。
【００５４】
図示のオプションは、
・高速デバッグ方式における未定義領域の引用検査を指示する「−Ｄｙｕ」
・高速デバッグ方式における配列の添字アクセス検査を指示する「−Ｄｙｓ」
・高速デバッグ方式における組み込み関数の引数エラ−検査を指示する「−Ｄｙｆ」
・詳細デバッグ方式における未定義領域の引用検査を指示する「−Ｄｕ」
・詳細デバッグ方式における配列の添字アクセス検査を指示する「−Ｄｓ」
・詳細デバッグ方式における組み込み関数の引数エラ−検査を指示する「−Ｄｆ」
などである。
【００５５】
これらのオプションは、コンパイル対象のソ−スプログラム全体に対する指示であり、利用者がコンパイラに設定するかたちで用いられる。
【００５６】
図示の翻訳指示行は、
・高速デバッグ方式における未定義領域の引用検査を指示する「！ocl hundef」・高速デバッグ方式における配列の添字アクセス検査を指示する「！ocl hsubchk 」
・高速デバッグ方式における組み込み関数の引数エラ−検査を指示する「！ocl hilfuncinf」
・詳細デバッグ方式における未定義領域の引用検査を指示する「！ocl undef 」・詳細デバッグ方式における配列の添字アクセス検査を指示する「！ocl subchk」
・詳細デバッグ方式における組み込み関数の引数エラ−検査を指示する「！ocl ilfuncinf 」
などである。
【００５７】
これらの翻訳指示行は、デバッグ対象プログラムの一部（選択領域）に対する指示であり、利用者がソ−スプログラムの選択領域の始まり部分と終わり部分とに記述するかたち、例えば始まり部分に「！ocl undef start 」を記述し、かつ終わり部分に「！ocl undef end 」を記述するかたちで用いられる。
【００５８】
ソ−スプログラムのコンパイルのとき、翻訳指示行の記述はオプションの設定に優先し、翻訳指示行で特定される選択領域の選択検査項目についてはそのデバッグ方式に対応したデバッグ用命令、例えば高速デバッグ方式の場合には前述の比較割り込みベクトル命令ＶＣＯＭＰなどが出力されていく。
【００５９】
図１６は、高速デバッグ方式と詳細デバッグ方式との併用例における処理手順を示す説明図であり、その内容は次のようになっている。
(31)ソ−スプログラム全体を高速デバッグ指示で翻訳し、例えば「−Ｄｙｕ」のオプションを設定したうえで翻訳して、次のステップに進む。
(32)翻訳後のデバッグ対象プログラムを実行して、次のステップに進む。
(33)エラ−メッセ−ジが発生したかどうかを判断し、「YES 」の場合は次のステップに進み、「NO」の場合はデバッグ処理を終了する。
(34)エラ−検出部分（エラ−ル−チンやエラ−ル−プなど）に詳細デバッグ方式の翻訳指示行を記述して、次のステップに進む。
(35)記述後のソ−スプログラムを翻訳して、次のステップに進む。
(36)翻訳後の、詳細デバッグ指示のデバッグ対象プログラムを実行して、次のステップに進む。
(37)デバッグ処理により得られる詳細エラ−情報を参照しながらソ−スプログラムを修正して、ステップ(31)に戻る。
【００６０】
高速デバッグ方式および詳細デバッグ方式の併用形態としては、外にも、
▲１▼先ずソ−スプログラム全体のデバッグ処理を詳細デバッグ方式で実行し、次に修正後のソ−スプログラムのデバッグ処理を高速デバッグ方式で実行する、
▲２▼ソ−スプログラムの選択領域に詳細デバッグ方式の前記翻訳指示行を記述し、かつ、ソ−スプログラム全体を高速デバッグ方式に指示したうえでデバッグ処理を実行する、
▲３▼ソ−スプログラムの選択領域に高速デバッグ方式の前記翻訳指示行を記述し、かつ、ソ−スプログラム全体を詳細デバッグ方式に指示したうえでデバッグ処理を実行する、
などの基本的形態をとりえる。
【００６１】
さらには、
・図１６の場合の、初期のソ−スプログラムに前記▲２▼の手法を、修正後のソ−スプログラムに前記▲３▼の手法をそれぞれ適用し、
・前記▲１▼の場合の、初期のソ−スプログラムに前記▲３▼の手法を、修正後のソ−スプログラムに前記▲２▼の手法をそれぞれ適用する、
などのこともできる。
【００６２】
また、高速デバッグ指示のとき、前記オプションの設定で検査項目も併せて指定する代わりに、検査項目を特定せずにソ−スプログラムの高速デバッグ方式を設定するようにしてもよいことは勿論である。
【００６３】
図１７は、ハ−ドウェアの基本構成を示す説明図であり、４１はＣＰＵ、４２は制御部、４３は整数系演算部、４４は浮動系演算部、４５は割り込み制御部、４６は汎用レジスタ、４７は制御レジスタ、４８はフロ−ティンググレジスタ、４９はベクトルプロセッサ（コプロセッサ）、５０はＣＰＵインタフェ−ス部、５１は命令制御部、５２は制御レジスタ、５３は演算部、５４はベクトルレジスタ／マスクレジスタ、５５は主記憶アクセス部、５６は主記憶部をそれぞれ示している。
【００６４】
ＣＰＵ４１において、
・制御部４２は、命令の解釈や実行の制御を行ない、
・整数系演算部４３は、整数系デ−タの演算（整数系デ−タの比較割り込み命令の実行）を行ない、
・浮動系演算部４４は、浮動少数点系デ−タの演算を行ない、
・割り込み制御部４５は、整数系演算部４３や浮動系演算部４４、ベクトルプロセッサ４９で発生した割り込みの制御を行ない、
・制御レジスタ４７は、ＣＰＵ側で発生した比較割り込み命令の識別子を保持している。
【００６５】
ＣＰＵ４１のコプロセッサであるベクトルプロセッサ４９はベクトル命令の制御だけを実行し、他の制御はＣＰＵインタフェ−ス部５０を介してＣＰＵ側で実行される。
【００６６】
ベクトルプロセッサ４９において、
・命令制御部５１は、各ベクトル命令の制御を行ない、
・演算部５３は、比較割り込みベクトル命令を実行し、割り込みが発生した場合にはＣＰＵインタフェ−ス部５０を通じて割り込み信号をＣＰＵ４１に通知するとともに、識別子を制御レジスタ５２に格納している。
【００６７】
ＣＰＵ４１はベクトルプロセッサ４９にベクトル命令や、スカラレジスタ（汎用レジスタ４６、制御レジスタ４７、フロ−ティンググレジスタ４８）の読み出しデ−タを送り、また、ベクトルプロセッサ４９はＣＰＵ４１にスカラレジスタへの書き込みデ−タや、割り込み信号を送っている。
【００６８】
図１８は、コンパイラの基本構成を示す説明図であり、６１はソ−スプログラム、６２はプログラム入力部、６３はオプション解析部、６４はソ−ス解析部、６５は翻訳制御行解析部、６６はベクトル処理部、６７はベクトル化部、６８は組み込み関数インライン部、６９はデバッグ処理部、７０はコ−ド生成部、７１はオブジェクトプログラム、７２はライブラリ、７３はロ−ドモジュールをそれぞれ示している。
【００６９】
ソ−スプログラム６１は、オプション解析部６３や翻訳制御行解析部６５で中間テキスト列に展開され、デバッグ処理部６９で比較割り込みベクトル命令が挿入される。
【００７０】
オプション解析部６３や翻訳制御行解析部６５において例えば未定義領域の引用検査の「高速デバッグ方式」が指示されているときは、デバッグ処理部６９でデバッグ命令（比較割り込みベクトル命令）を出力する。
【００７１】
また、組み込み関数の引数エラ−検出の「高速デバッグ方式」が指示されているときには、組み込み関数インライン部６８で高速な引数エラ−検出処理を行ない、デバッグ処理部６９でデバッグ命令（比較割り込みベクトル命令）を出力する。
【００７２】
オブジェクトプログラム７１は、結合編集により、前述の初期化用およびチェック用などの各ライブラリ７２と結合してロ−ドモジュール７３となる。
【００７３】
図１９は、コンピュ−タ読み取り可能な記録媒体からプログラムを読み取って実行するコンピュ−タシステムの概要を示す説明図であり、８１はコンピュ−タシステム、８２はＣＰＵやディスクドライブ装置などを内蔵した本体部、８３は本体部８２からの指示により画像を表示するディスプレイ、８４は表示画面、８５はコンピュ−タシステム８１に種々の情報を入力するためのキ−ボ−ド、８６は表示画面８４上の任意の位置を指定するマウス、８７は外部のデ−タベ−ス（ＤＡＳＤなどの回線先メモリ）、８８は外部のデ−タベ−ス８７にアクセスするモデム、８９はＣＤ−ＲＯＭやフロッピ−ディスクなどの可搬型記憶媒体をそれぞれ示している。
【００７４】
プログラムを格納する記憶媒体としては、
・プログラム提供者側のデ−タベ−ス８７（回線先メモリ）
・可搬型記憶媒体８９
・本体部８２側のメモリ
などのいずれでもよく、当該プログラムは本体部８２にロ−デイングされてその主メモリ上で実行される。
【００７５】
【発明の効果】
本発明は、未定義領域の引用検査、配列の添字アクセス検査、組み込み関数の引数エラ−検出などのように、比較処理で検査結果が得られる項目の検査を、一般の比較命令に検査項目識別子を付加したかたちの識別子付き比較命令を用いて実行するので、デバッグ処理の効率化および高速化を図ることができる。
【００７６】
また、この識別子付き比較命令を用いる高速デバッグ方式と、例えばデバッグ対象プログラムからデバッグ用ライブラリを呼び出して詳細なエラ−情報を求める詳細デバッグ方式とを併用しているので、デバッグ時の利便性を高めることができる。
【図面の簡単な説明】
【図１】本発明の、比較割り込み命令（識別子付き比較命令）を示す説明図である。
【図２】本発明の、図２０(a) のソ−スプログラムに対応のデバッグ方式を示す説明図である。
【図３】本発明の、比較割り込み命令に対するハードウェアとしての制御手順を示す説明図である。
【図４】本発明の、比較割り込みベクトル命令としての動作例を示す説明図（その１）である。
【図５】本発明の、比較割り込みベクトル命令としての動作例を示す説明図（その２）である。
【図６】本発明の、比較割り込みベクトル命令としての動作例を示す説明図（その３）である。
【図７】本発明の、未定義領域の引用に関する検査手順を示す説明図である。
【図８】本発明の、図７の検査手順に対応のデバッグ対象プログラム例を示す説明図である。
【図９】本発明の、図８のデバッグ対象プログラムの実行時の概念を示す説明図である。
【図１０】本発明の、配列の添字アクセスに関する検査態様を示す説明図である。
【図１１】本発明の、図１０の添字アクセス検査に対応のデバッグ対象プログラム例を示す説明図である。
【図１２】本発明の、図１１のデバッグ対象プログラムの実行時の概念を示す説明図である。
【図１３】本発明の、組み込み関数の引数エラ−検査の概要を示す説明図であり、(a)はＩＢＣＬＲ組み込み関数の言語仕様を示し、また(b)はＩＢＣＬＲ組み込み関数の第２の引数ｎの検査概要を示している。
【図１４】本発明の、図１３のデバッグ対象プログラムの実行時の概念を示す説明図である。
【図１５】本発明の、高速デバッグ方式と詳細デバッグ方式（詳細エラ−情報通知デバッグ方式）とを使い分けるためのオプションおよび翻訳指示行を示す説明図である。
【図１６】本発明の、高速デバッグ方式と詳細デバッグ方式との併用例における処理手順を示す説明図である。
【図１７】本発明の、ハ−ドウェアの基本構成を示す説明図である。
【図１８】本発明の、コンパイラの基本構成を示す説明図である。
【図１９】本発明の、コンピュ−タ読み取り可能な記録媒体からプログラムを読み取って実行するコンピュ−タシステムの概要を示す説明図である。
【図２０】従来の、添字検査（上限値）に関するデバッグ方式の説明図であり、(a)はデバッグ対象のソースプログラムを示し、また(b)は当該ソースプログラムにライブラリ呼出しの命令を埋め込んでいくデバッグ方式を示している。
【符号の説明】
１１，２１，２３，３１
：ソ−スプログラム
１２，２２，２４，３２
：デバッグ対象プログラム
１３：エラ−処理用ライブラリ（未定義領域の引用検査）
２５：エラ−処理用ライブラリ（配列の添字アクセス検査）
３３：エラ−処理用ライブラリ（組み込み関数の引数エラ−検出）
【図１】
0003992122.tif 000002
【図２】
0003992122.tif 000003
【図３】
0003992122.tif 000004
【図４】
0003992122.tif 000005
【図５】
0003992122.tif 000006
【図６】
0003992122.tif 000007
【図７】
0003992122.tif 000008
【図８】
0003992122.tif 000009
【図９】
0003992122.tif 000010
【図１０】
0003992122.tif 000011
【図１１】
0003992122.tif 000012
【図１２】
0003992122.tif 000013
【図１３】
0003992122.tif 000014
【図１４】
0003992122.tif 000015
【図１５】
0003992122.tif 000016
【図１６】
0003992122.tif 000017
【図１７】
0003992122.tif 000018
【図１８】
0003992122.tif 000019
【図１９】
0003992122.tif 000020
【図２０】
0003992122.tif 000021