JP3461185B2 - ロードモジュールへのソースコード行番号登録方法および装置 - Google Patents
ロードモジュールへのソースコード行番号登録方法および装置Info
- Publication number
- JP3461185B2 JP3461185B2 JP18885693A JP18885693A JP3461185B2 JP 3461185 B2 JP3461185 B2 JP 3461185B2 JP 18885693 A JP18885693 A JP 18885693A JP 18885693 A JP18885693 A JP 18885693A JP 3461185 B2 JP3461185 B2 JP 3461185B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- source code
- line number
- load module
- execution type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Description
【0001】
【産業上の利用分野】この発明は、並列実行型の計算機
に適用されるロードモジュールに含まれている命令に対
応するソースコードの行番号を、同ロードモジュール中
に登録するためのロードモジュールへのソースコード行
番号登録方法および装置に関する。
に適用されるロードモジュールに含まれている命令に対
応するソースコードの行番号を、同ロードモジュール中
に登録するためのロードモジュールへのソースコード行
番号登録方法および装置に関する。
【0002】
【従来の技術】近年、処理の高速化のために、複数の命
令が設定可能な複数のフィールドを持つ、VLIW(Ve
ry Long Instruction Word)と称される並列実行型の命
令語の列からなるロードモジュールを実行するVLIW
型並列処理方式(VLIW方式)のアーキテクチャを適
用した計算機(以下、VLIW方式の計算機と称する)
が開発されている。
令が設定可能な複数のフィールドを持つ、VLIW(Ve
ry Long Instruction Word)と称される並列実行型の命
令語の列からなるロードモジュールを実行するVLIW
型並列処理方式(VLIW方式)のアーキテクチャを適
用した計算機(以下、VLIW方式の計算機と称する)
が開発されている。
【0003】このVLIW方式の計算機で適用されるロ
ードモジュールを対象にデバッグを行った場合に、ある
命令に対して、その命令に対応するソースプログラム内
のソースコードの行番号をデバッグ情報として得ること
は、プログラム開発者にとって極めて便利である。そこ
で従来は、VLIW方式のロードモジュール中の各命令
と、その命令に対応するソースプログラム内のソースコ
ードの行番号との対応情報を記録しておくテーブルを作
成して保存しておき、デバッグ時にエラー等を検出して
デバッグ情報を得る必要がある場合には、当該テーブル
を参照して、エラーとなった命令に対応するソースプロ
グラム内のソースコードの行番号を取り出すようにして
いた。
ードモジュールを対象にデバッグを行った場合に、ある
命令に対して、その命令に対応するソースプログラム内
のソースコードの行番号をデバッグ情報として得ること
は、プログラム開発者にとって極めて便利である。そこ
で従来は、VLIW方式のロードモジュール中の各命令
と、その命令に対応するソースプログラム内のソースコ
ードの行番号との対応情報を記録しておくテーブルを作
成して保存しておき、デバッグ時にエラー等を検出して
デバッグ情報を得る必要がある場合には、当該テーブル
を参照して、エラーとなった命令に対応するソースプロ
グラム内のソースコードの行番号を取り出すようにして
いた。
【0004】
【発明が解決しようとする課題】上記したように、ある
命令に対して、その命令に対応するソースプログラム内
のソースコードの行番号をデバッグ情報として得るため
には、命令と行番号との対応情報を記録しておくテーブ
ルが別途必要となり、メモリ、ディスク等の記憶装置使
用量の増加を招くという問題があった。
命令に対して、その命令に対応するソースプログラム内
のソースコードの行番号をデバッグ情報として得るため
には、命令と行番号との対応情報を記録しておくテーブ
ルが別途必要となり、メモリ、ディスク等の記憶装置使
用量の増加を招くという問題があった。
【0005】この発明は上記事情を考慮してなされたも
のでその目的は、VLIW方式のロードモジュール中の
命令に対応するソースプログラム内のソースコードの行
番号が、この命令と対応付けて当該ロードモジュール中
に登録できるロードモジュールへのソースコード行番号
登録方法を提供することにある。
のでその目的は、VLIW方式のロードモジュール中の
命令に対応するソースプログラム内のソースコードの行
番号が、この命令と対応付けて当該ロードモジュール中
に登録できるロードモジュールへのソースコード行番号
登録方法を提供することにある。
【0006】
【課題を解決するための手段】この発明は、ソースプロ
グラムをコンパイルして作成されるVLIW方式のロー
ドモジュールに含まれる各命令語中には、命令が設定さ
れていない空きフィールドが存在する場合が比較的多い
ことに着目し、この空きフィールドに、同フィールドを
持つ命令語中の命令に対応するソースプログラム中のソ
ースコードの行番号を登録することにより、ロードモジ
ュールから、同モジュール中の命令に対応するソースプ
ログラム中のソースコードの行番号を取り出せるように
したことを特徴とするものである。
グラムをコンパイルして作成されるVLIW方式のロー
ドモジュールに含まれる各命令語中には、命令が設定さ
れていない空きフィールドが存在する場合が比較的多い
ことに着目し、この空きフィールドに、同フィールドを
持つ命令語中の命令に対応するソースプログラム中のソ
ースコードの行番号を登録することにより、ロードモジ
ュールから、同モジュール中の命令に対応するソースプ
ログラム中のソースコードの行番号を取り出せるように
したことを特徴とするものである。
【0007】
【作用】上記の構成において、ロードモジュールに含ま
れる命令語中に空きフィールドが存在する場合には、そ
の空きフィールドに、同フィールドを持つ命令語中の命
令に対応するソースプログラム中のソースコードの行番
号が登録される。この空きフィールドに設定されたソー
スコード行番号は、同フィールドを持つ命令語中の命令
と対応していることから、命令とその命令に対応するソ
ースコードの行番号との対応情報をロードモジュール中
に記録したのと等価である。
れる命令語中に空きフィールドが存在する場合には、そ
の空きフィールドに、同フィールドを持つ命令語中の命
令に対応するソースプログラム中のソースコードの行番
号が登録される。この空きフィールドに設定されたソー
スコード行番号は、同フィールドを持つ命令語中の命令
と対応していることから、命令とその命令に対応するソ
ースコードの行番号との対応情報をロードモジュール中
に記録したのと等価である。
【0008】即ち上記の構成においては、VLIW方式
のロードモジュール中の各命令と、その命令に対応する
ソースコードの行番号との対応情報を、ロードモジュー
ル中に登録することができ、メモリの使用量の増加を招
かないで済む。
のロードモジュール中の各命令と、その命令に対応する
ソースコードの行番号との対応情報を、ロードモジュー
ル中に登録することができ、メモリの使用量の増加を招
かないで済む。
【0009】
【実施例】図1はこの発明の一実施例を示すブロック構
成図である。図1において、1は磁気ディスク装置など
の仮想メモリである。仮想メモリ1には、コンパイルの
対象となるソースプログラム11が格納されているもの
とする。
成図である。図1において、1は磁気ディスク装置など
の仮想メモリである。仮想メモリ1には、コンパイルの
対象となるソースプログラム11が格納されているもの
とする。
【0010】2はソースプログラム11をコンパイルし
てVLIW方式のロードモジュール31を作成するコン
パイラ、3はコンパイラ2により作成されたロードモジ
ュール31の記憶等に用いられる主メモリである。ロー
ドモジュール31は、例えば4つのフィールド(命令フ
ィールド)F0〜F3を持つ命令語の列からなる。フィ
ールドF0〜F3には、同時に実行可能な命令(オブジ
ェクトコード)が設定可能である。但し、各命令間の依
存関係により、同時に実行できる命令が4つ(4フィー
ルド分)揃わない場合には、フィールドF0〜F3の幾
つかは空きフィールドとなる。空きフィールドの先頭か
らの一部領域には、ノーオペレーション命令(nop命
令)が設定される。フィールドF0〜F3は、フィール
ドF0から先に利用される。
てVLIW方式のロードモジュール31を作成するコン
パイラ、3はコンパイラ2により作成されたロードモジ
ュール31の記憶等に用いられる主メモリである。ロー
ドモジュール31は、例えば4つのフィールド(命令フ
ィールド)F0〜F3を持つ命令語の列からなる。フィ
ールドF0〜F3には、同時に実行可能な命令(オブジ
ェクトコード)が設定可能である。但し、各命令間の依
存関係により、同時に実行できる命令が4つ(4フィー
ルド分)揃わない場合には、フィールドF0〜F3の幾
つかは空きフィールドとなる。空きフィールドの先頭か
らの一部領域には、ノーオペレーション命令(nop命
令)が設定される。フィールドF0〜F3は、フィール
ドF0から先に利用される。
【0011】コンパイラ2は、ロードモジュール31の
作成時、第1のテーブル21と第2のテーブル22の2
つのテーブルを作成するようになっている。第1のテー
ブル21は、ソースプログラム11のソースコード列か
ら順次実行型の命令列、即ちVLIW方式の命令語への
再配置前の命令(オブジェクトコード)列を生成する際
に作成されるものである。この第1のテーブル21に
は、図2に示すように、ソースプログラムのソースコー
ドの行番号と、再配置前の命令のアドレス(相対アドレ
ス)との組が登録される。
作成時、第1のテーブル21と第2のテーブル22の2
つのテーブルを作成するようになっている。第1のテー
ブル21は、ソースプログラム11のソースコード列か
ら順次実行型の命令列、即ちVLIW方式の命令語への
再配置前の命令(オブジェクトコード)列を生成する際
に作成されるものである。この第1のテーブル21に
は、図2に示すように、ソースプログラムのソースコー
ドの行番号と、再配置前の命令のアドレス(相対アドレ
ス)との組が登録される。
【0012】第2のテーブル22は、再配置前の命令列
をVLIW型に最適化、再配置してロードモジュール3
1を作成する際に作成されるものである。この第2のテ
ーブル22には、図3に示すように、再配置前の命令の
アドレス(相対アドレス)と、その命令に対応する再配
置後の命令(を含む命令語)のアドレス(相対アドレ
ス)と、再配置後の命令の命令語内の位置(フィールド
位置)との組が登録される。
をVLIW型に最適化、再配置してロードモジュール3
1を作成する際に作成されるものである。この第2のテ
ーブル22には、図3に示すように、再配置前の命令の
アドレス(相対アドレス)と、その命令に対応する再配
置後の命令(を含む命令語)のアドレス(相対アドレ
ス)と、再配置後の命令の命令語内の位置(フィールド
位置)との組が登録される。
【0013】4は行番号登録部である。行番号登録部4
は、第1のテーブル21および第2のテーブル22をも
とに、ロードモジュール31中に空きフィールドを持つ
命令語のアドレスを探して、その命令語中の命令に対応
するソースコードの行番号を当該空きフィールドに登録
する。5はロードモジュール31のデバッグを行うデバ
ッガである。デバッガ5は、エラー検出等により、エラ
ーとなった命令についてのデバッグ結果51を出力する
際には、その命令に対応するロードモジュール31内の
命令語中の空きフィールドに登録されているソースコー
ドの行番号を取り出して、デバッグ結果51の一部とす
るようになっている。
は、第1のテーブル21および第2のテーブル22をも
とに、ロードモジュール31中に空きフィールドを持つ
命令語のアドレスを探して、その命令語中の命令に対応
するソースコードの行番号を当該空きフィールドに登録
する。5はロードモジュール31のデバッグを行うデバ
ッガである。デバッガ5は、エラー検出等により、エラ
ーとなった命令についてのデバッグ結果51を出力する
際には、その命令に対応するロードモジュール31内の
命令語中の空きフィールドに登録されているソースコー
ドの行番号を取り出して、デバッグ結果51の一部とす
るようになっている。
【0014】次に、この発明の一実施例の動作を、図4
のフローチャートを参照して説明する。今、仮想メモリ
1に格納されているソースプログラム11をコンパイル
してロードモジュール31を作成するものとする。この
場合、コンパイラ2は、まずソースプログラム11のソ
ースコード列から、各ソースコード毎に、順次実行型の
命令または命令群、即ちVLIW方式の命令語への再配
置前の命令(オブジェクトコード)または命令群を、主
メモリ3上に作成する(ステップS1)。
のフローチャートを参照して説明する。今、仮想メモリ
1に格納されているソースプログラム11をコンパイル
してロードモジュール31を作成するものとする。この
場合、コンパイラ2は、まずソースプログラム11のソ
ースコード列から、各ソースコード毎に、順次実行型の
命令または命令群、即ちVLIW方式の命令語への再配
置前の命令(オブジェクトコード)または命令群を、主
メモリ3上に作成する(ステップS1)。
【0015】この様子を図5(a)に示す。図5(a)
では、ソースプログラム11中の行番号100,10
1,102のソースコードに対応するadd命令(加算
命令)がそれぞれ生成されて、アドレス(相対アドレ
ス)40000,40001,40002に配置され、
また行番号103のソースコードに対応するadd命令
とsub命令(減算命令)が生成されて、アドレス(相
対アドレス)40003と40004に配置されている
様子が示されている。
では、ソースプログラム11中の行番号100,10
1,102のソースコードに対応するadd命令(加算
命令)がそれぞれ生成されて、アドレス(相対アドレ
ス)40000,40001,40002に配置され、
また行番号103のソースコードに対応するadd命令
とsub命令(減算命令)が生成されて、アドレス(相
対アドレス)40003と40004に配置されている
様子が示されている。
【0016】コンパイラ2は、ソースコードに対応する
再配置前の命令(オブジェクトコード)または命令群を
主メモリ3上に生成すると、そのソースコードの行番号
と再配置前の対応する命令のアドレス(相対アドレス)
との組を、図6(a)に示すように、第1のテーブル2
1に登録する(ステップS2)。このステップS2での
登録動作は、ステップS1で1つのソースコードに対応
する再配置前の命令または命令群が生成される毎に行わ
れる。但し、図4のフローチャートでは、便宜的に、ス
テップS1,S2が1回だけ行われるように記述されて
いる。
再配置前の命令(オブジェクトコード)または命令群を
主メモリ3上に生成すると、そのソースコードの行番号
と再配置前の対応する命令のアドレス(相対アドレス)
との組を、図6(a)に示すように、第1のテーブル2
1に登録する(ステップS2)。このステップS2での
登録動作は、ステップS1で1つのソースコードに対応
する再配置前の命令または命令群が生成される毎に行わ
れる。但し、図4のフローチャートでは、便宜的に、ス
テップS1,S2が1回だけ行われるように記述されて
いる。
【0017】コンパイラ2は、ソースプログラム11中
の全てのソースコードについてステップS1,S2の処
理を実行すると、ステップS1の処理で生成された再配
置前の命令列をVLIW型に最適化、再配置して、図5
(b)に示すように、主メモリ3上にロードモジュール
31を作成する(ステップS3)。この図5(b)の例
では、図5(a)との対比で明らかなように、相対アド
レス40000,40001に生成された互いに依存関
係のない再配置前の2つのadd命令が、相対アドレス
が40000のVLIW方式の命令語のフィールドF
0,F1に再配置され、相対アドレス40002,40
003に生成された再配置前の2つのadd命令が、
(相対アドレス40000のVLIW方式の命令語と依
存関係にあるために同命令語のフィールドF3,F4に
再配置されずに)相対アドレスが40001の命令語の
フィールドF0,F1に再配置され、そして相対アドレ
ス40004に生成された再配置前のsub命令が、相
対アドレスが40002のVLIW方式の命令語のフィ
ールドF0に再配置されている様子が示されている。ま
た、ロードモジュール31の各命令語中の空きフィール
ドの先頭からの一部領域には、図5(b)に示すように
nop命令が設定される。
の全てのソースコードについてステップS1,S2の処
理を実行すると、ステップS1の処理で生成された再配
置前の命令列をVLIW型に最適化、再配置して、図5
(b)に示すように、主メモリ3上にロードモジュール
31を作成する(ステップS3)。この図5(b)の例
では、図5(a)との対比で明らかなように、相対アド
レス40000,40001に生成された互いに依存関
係のない再配置前の2つのadd命令が、相対アドレス
が40000のVLIW方式の命令語のフィールドF
0,F1に再配置され、相対アドレス40002,40
003に生成された再配置前の2つのadd命令が、
(相対アドレス40000のVLIW方式の命令語と依
存関係にあるために同命令語のフィールドF3,F4に
再配置されずに)相対アドレスが40001の命令語の
フィールドF0,F1に再配置され、そして相対アドレ
ス40004に生成された再配置前のsub命令が、相
対アドレスが40002のVLIW方式の命令語のフィ
ールドF0に再配置されている様子が示されている。ま
た、ロードモジュール31の各命令語中の空きフィール
ドの先頭からの一部領域には、図5(b)に示すように
nop命令が設定される。
【0018】コンパイラ2は、ステップS3において命
令の再配置を行うと、再配置前の命令のアドレスと、再
配置後の命令(を含む命令語)のアドレスと、同命令の
命令語内の位置(フィールド位置)との組を、図6
(b)に示すように、第2のテーブル22に登録する
(ステップS4)。このステップS4での登録動作は、
ステップS3で1つの命令が再配置される毎に行われ
る。但し、図4のフローチャートでは、便宜的に、ステ
ップS3,S4が1回だけ行われるように記述されてい
る。
令の再配置を行うと、再配置前の命令のアドレスと、再
配置後の命令(を含む命令語)のアドレスと、同命令の
命令語内の位置(フィールド位置)との組を、図6
(b)に示すように、第2のテーブル22に登録する
(ステップS4)。このステップS4での登録動作は、
ステップS3で1つの命令が再配置される毎に行われ
る。但し、図4のフローチャートでは、便宜的に、ステ
ップS3,S4が1回だけ行われるように記述されてい
る。
【0019】コンパイラ2は、再配置前の命令列を対象
とする再配置を実行してロードモジュール31を作成す
ると共に、第2のテーブル22を作成すると、行番号登
録部4に制御を渡す。これにより行番号登録部4は、第
2のテーブル22の再配置後の(命令を含む命令語の)
アドレスと命令語内の位置(フィールド位置)とから、
空きフィールドを持つ命令語のアドレスを探し、その命
令語中の命令の再配置前のアドレスを求める(ステップ
S5)。
とする再配置を実行してロードモジュール31を作成す
ると共に、第2のテーブル22を作成すると、行番号登
録部4に制御を渡す。これにより行番号登録部4は、第
2のテーブル22の再配置後の(命令を含む命令語の)
アドレスと命令語内の位置(フィールド位置)とから、
空きフィールドを持つ命令語のアドレスを探し、その命
令語中の命令の再配置前のアドレスを求める(ステップ
S5)。
【0020】図6(b)に示す第2のテーブル22の例
では、例えば再配置後のアドレス(相対アドレス)が4
0000の命令語においては、フィールドF0,F1の
2つのフィールドに再配置前のアドレス40000,4
0001の命令が設定されており、したがってフィール
ドF2,F3が空きフィールドとなっていることが分か
る。
では、例えば再配置後のアドレス(相対アドレス)が4
0000の命令語においては、フィールドF0,F1の
2つのフィールドに再配置前のアドレス40000,4
0001の命令が設定されており、したがってフィール
ドF2,F3が空きフィールドとなっていることが分か
る。
【0021】行番号登録部4は、ステップS5で空きフ
ィールドを持つ命令語中の命令の再配置前のアドレスを
求めると、その再配置前のアドレスをキーとして第1の
テーブル21を検索し、その命令に対応するソースコー
ドの行番号を求めて、空きフィールド中のnop命令に
後続する領域(未使用領域)に登録する(ステップS
6)。
ィールドを持つ命令語中の命令の再配置前のアドレスを
求めると、その再配置前のアドレスをキーとして第1の
テーブル21を検索し、その命令に対応するソースコー
ドの行番号を求めて、空きフィールド中のnop命令に
後続する領域(未使用領域)に登録する(ステップS
6)。
【0022】図6(a)に示す第1のテーブル21と図
6(b)に示す第2のテーブル22の例では、例えば再
配置後のアドレスが40000の命令語については、再
配置前のアドレス40000,40001の命令が、フ
ィールドF0,F1に再配置され、フィールドF2,F
3が空きとなっていることが分かり、その命令に対応す
るソースコードの行番号が100,101であることが
分かる。
6(b)に示す第2のテーブル22の例では、例えば再
配置後のアドレスが40000の命令語については、再
配置前のアドレス40000,40001の命令が、フ
ィールドF0,F1に再配置され、フィールドF2,F
3が空きとなっていることが分かり、その命令に対応す
るソースコードの行番号が100,101であることが
分かる。
【0023】この場合、行番号登録部4は、当該命令語
のフィールドF0,F1に再配置されている(再配置前
のアドレスが40000,40001の)命令に対応す
るソースコードの行番号100,101を、当該命令語
の空きフィールドF2,F3中のnop命令に後続する
領域に登録する。同様に行番号登録部4は、再配置後の
アドレスが40001の命令語については、当該命令語
のフィールドF0,F1に再配置されている(再配置前
のアドレスが40002,40003の)命令に対応す
るソースコードの行番号102,103を、当該命令語
の空きフィールドF2,F3中のnop命令に後続する
領域に登録する。
のフィールドF0,F1に再配置されている(再配置前
のアドレスが40000,40001の)命令に対応す
るソースコードの行番号100,101を、当該命令語
の空きフィールドF2,F3中のnop命令に後続する
領域に登録する。同様に行番号登録部4は、再配置後の
アドレスが40001の命令語については、当該命令語
のフィールドF0,F1に再配置されている(再配置前
のアドレスが40002,40003の)命令に対応す
るソースコードの行番号102,103を、当該命令語
の空きフィールドF2,F3中のnop命令に後続する
領域に登録する。
【0024】また行番号登録部4は、再配置後のアドレ
スが40002の命令語については、当該命令語のフィ
ールドF0に再配置されている(再配置前のアドレスが
40004の)命令に対応するソースコードの行番号1
03を、当該命令語の空きフィールドF1中のnop命
令に後続する領域に登録する。このように、ロードモジ
ュール31中の空きフィールドに登録されたソースコー
ド行番号は、その登録位置が、空きフィールド中のno
p命令に後続する未使用領域(空き領域)であるため、
ロードモジュール31の実行に対しては何等影響を及ぼ
すことはない。
スが40002の命令語については、当該命令語のフィ
ールドF0に再配置されている(再配置前のアドレスが
40004の)命令に対応するソースコードの行番号1
03を、当該命令語の空きフィールドF1中のnop命
令に後続する領域に登録する。このように、ロードモジ
ュール31中の空きフィールドに登録されたソースコー
ド行番号は、その登録位置が、空きフィールド中のno
p命令に後続する未使用領域(空き領域)であるため、
ロードモジュール31の実行に対しては何等影響を及ぼ
すことはない。
【0025】以上の行番号登録後における、主メモリ3
上のロードモジュール31の内容(一部)を図7に示
す。この行番号登録が終了すると、テーブル21,22
は不要となる。この点が、ロードモジュール中の各命令
と、その命令に対応するソースプログラム内のソースコ
ードの行番号との対応情報を記録したテーブルを保存し
ておく必要がある従来例とは大きく異なる。
上のロードモジュール31の内容(一部)を図7に示
す。この行番号登録が終了すると、テーブル21,22
は不要となる。この点が、ロードモジュール中の各命令
と、その命令に対応するソースプログラム内のソースコ
ードの行番号との対応情報を記録したテーブルを保存し
ておく必要がある従来例とは大きく異なる。
【0026】なお、例えば命令語中のフィールドF0〜
F2に命令が再配置され、フィールドF3だけが空きと
なっている場合には、命令語中の先頭フィールドF0に
再配置されている命令に対応するソースコードの行番号
だけが当該フィールドF3に登録され、後続のフィール
ドF1,F2に再配置されている命令に対応するソース
コード行番号の登録は生じない。同様に、命令語中の全
フィールドF0〜F3に命令が再配置され、空きフィー
ルドが存在しない場合には、その命令群についてのソー
スコード行番号登録は生じない。
F2に命令が再配置され、フィールドF3だけが空きと
なっている場合には、命令語中の先頭フィールドF0に
再配置されている命令に対応するソースコードの行番号
だけが当該フィールドF3に登録され、後続のフィール
ドF1,F2に再配置されている命令に対応するソース
コード行番号の登録は生じない。同様に、命令語中の全
フィールドF0〜F3に命令が再配置され、空きフィー
ルドが存在しない場合には、その命令群についてのソー
スコード行番号登録は生じない。
【0027】デバッガ5は、以上のようにして命令語の
空きフィールドへのソースコード行番号の登録がなされ
たロードモジュール31を対象に、デバッグ処理を行
う。そしてデバッガ5は、エラーを検出して、そのデバ
ッグ結果51を出力(例えば表示出力)する際には、エ
ラーとなった命令に対応するソースコード行番号を、同
命令を含むロードモジュール31内の命令語の空きフィ
ールドから取り出す。
空きフィールドへのソースコード行番号の登録がなされ
たロードモジュール31を対象に、デバッグ処理を行
う。そしてデバッガ5は、エラーを検出して、そのデバ
ッグ結果51を出力(例えば表示出力)する際には、エ
ラーとなった命令に対応するソースコード行番号を、同
命令を含むロードモジュール31内の命令語の空きフィ
ールドから取り出す。
【0028】この行番号取り出しの対象となるフィール
ド位置は、エラーとなった命令が命令語中のフィールド
Fi(iは0〜3のいずれか)に再配置されているもの
とすると、当該命令中の空きフィールドのうちのi+1
番目のフィールドとなる。もし、空きフィールドの数が
i+1未満である場合には、対応する行番号は登録され
ていないと判断される。
ド位置は、エラーとなった命令が命令語中のフィールド
Fi(iは0〜3のいずれか)に再配置されているもの
とすると、当該命令中の空きフィールドのうちのi+1
番目のフィールドとなる。もし、空きフィールドの数が
i+1未満である場合には、対応する行番号は登録され
ていないと判断される。
【0029】デバッガ5は、ロードモジュール31から
ソースコード行番号を取り出すと、同行番号をデバッグ
結果51の一部とする。このデバッグ結果51中のソー
スコード行番号により、プログラム開発者は、修正した
いソースプログラム11の位置を瞬時に把握することが
できる。以上は、ロードモジュール31の空きフィール
ドに登録されたソースコード行番号をデバッグ結果の一
部に用いる場合について説明したが、これに限るもので
はない。
ソースコード行番号を取り出すと、同行番号をデバッグ
結果51の一部とする。このデバッグ結果51中のソー
スコード行番号により、プログラム開発者は、修正した
いソースプログラム11の位置を瞬時に把握することが
できる。以上は、ロードモジュール31の空きフィール
ドに登録されたソースコード行番号をデバッグ結果の一
部に用いる場合について説明したが、これに限るもので
はない。
【0030】例えば、ロードモジュール31の命令語の
実行中に、プログラム開発者等からの要求により、その
命令語に含まれている命令(命令群)に対応するソース
コード行番号(行番号群)を出力する構成とすることも
可能である。この場合、現在ソースプログラム11中の
いずれのソース行(行群)に対応する命令(命令群)を
実行しているかを知ることができる。
実行中に、プログラム開発者等からの要求により、その
命令語に含まれている命令(命令群)に対応するソース
コード行番号(行番号群)を出力する構成とすることも
可能である。この場合、現在ソースプログラム11中の
いずれのソース行(行群)に対応する命令(命令群)を
実行しているかを知ることができる。
【0031】また、ロードモジュール31中の所望の命
令語アドレスを指定することにより、そのアドレスの命
令語に対応するソースプログラム11中のソースコード
行番号を取り出せる構成とすることも可能である。
令語アドレスを指定することにより、そのアドレスの命
令語に対応するソースプログラム11中のソースコード
行番号を取り出せる構成とすることも可能である。
【0032】
【発明の効果】以上詳述したようにこの発明によれば、
VLIW方式のロードモジュールに含まれる命令語中に
空きフィールドが存在する場合、その空きフィールド
に、同フィールドを持つ命令語中の命令に対応するソー
スプログラム中のソースコードの行番号を登録し、当該
ロードモジュールから、同モジュール中の命令に対応す
るソースプログラム中のソースコードの行番号が取り出
せる構成としたので、空きフィールドが随所に存在する
VLIW方式のロードモジュールを有効に利用でき、ロ
ードモジュール中の各命令と、その命令に対応するソー
スプログラム内のソースコードの行番号との対応情報を
記録したテーブルを保存しておく必要がある従来方式と
比べて、メモリ使用量の増加を招くこともない。
VLIW方式のロードモジュールに含まれる命令語中に
空きフィールドが存在する場合、その空きフィールド
に、同フィールドを持つ命令語中の命令に対応するソー
スプログラム中のソースコードの行番号を登録し、当該
ロードモジュールから、同モジュール中の命令に対応す
るソースプログラム中のソースコードの行番号が取り出
せる構成としたので、空きフィールドが随所に存在する
VLIW方式のロードモジュールを有効に利用でき、ロ
ードモジュール中の各命令と、その命令に対応するソー
スプログラム内のソースコードの行番号との対応情報を
記録したテーブルを保存しておく必要がある従来方式と
比べて、メモリ使用量の増加を招くこともない。
【図1】この発明の一実施例を示すブロック構成図。
【図2】図1中の第1のテーブル21のデータ構造を示
す模式図。
す模式図。
【図3】図2中の第2のテーブル22のデータ構造を示
す模式図。
す模式図。
【図4】同実施例の動作を説明するためのフローチャー
ト。
ト。
【図5】ソースプログラム11のソースコードからVL
IW方式の命令語への再配置前の命令(オブジェクトコ
ード)または命令群を作成する際のソースコード行番号
と命令語アドレスとの対応例と、この再配置前の命令の
列をVLIW型に最適化、再配置して作成されたロード
モジュール31の例とを示す図。
IW方式の命令語への再配置前の命令(オブジェクトコ
ード)または命令群を作成する際のソースコード行番号
と命令語アドレスとの対応例と、この再配置前の命令の
列をVLIW型に最適化、再配置して作成されたロード
モジュール31の例とを示す図。
【図6】図5の状態に対応する第1のテーブル21およ
び第2のテーブル22の登録内容例を示す図。
び第2のテーブル22の登録内容例を示す図。
【図7】図5に示すロードモジュール31の空きフィー
ルドへのソースコード行番号登録後の様子を示す図。
ルドへのソースコード行番号登録後の様子を示す図。
1…仮想メモリ、2…コンパイラ、3…主メモリ、4…
行番号登録部、5…デバッガ、11…ソースプログラ
ム、21…第1のテーブル、22…第2のテーブル、3
1…ロードモジュール、F0〜F3…フィールド。
行番号登録部、5…デバッガ、11…ソースプログラ
ム、21…第1のテーブル、22…第2のテーブル、3
1…ロードモジュール、F0〜F3…フィールド。
─────────────────────────────────────────────────────
フロントページの続き
(58)調査した分野(Int.Cl.7,DB名)
G06F 9/45
G06F 9/06
G06F 11/28
G06F 9/38
G06F 9/30
G06F 9/32
JICSTファイル(JOIS)
CSDB(日本国特許庁)
Claims (2)
- 【請求項1】ソースプログラムのソースコード列から順
次実行型の命令列を生成する際に、ソースコードの行番
号、および対応する前記順次実行型の命令のアドレスの
組が登録された第1のテーブルを作成する第1のステッ
プと、 前記順次実行型の命令列を並列実行型に最適化、再配置
して、並列実行型の命令語列からなるロードモジュール
を生成する際に、再配置前の前記順次実行型の命令のア
ドレス、同命令に対応する再配置後の前記並列実行型の
命令語中の命令のアドレス、および当該再配置後の命令
が置かれる命令語内フィールド位置の組が登録された第
2のテーブルを作成する第2のステップと、 前記第1および第2のテーブルをもとに、前記ロードモ
ジュール中に空きフィールドを持つ命令語のアドレスを
探して、その命令語中の命令に対応するソースコードの
行番号を当該空きフィールドに登録する第3のステップ
とを具備し、前記ロードモジュールから、同モジュール
中の命令に対応する前記ソースプログラム中のソースコ
ードの行番号を取り出せるようにしたことを特徴とする
ロードモジュールへのソースコード行番号登録方法。 - 【請求項2】ソースプログラムのソースコードの行番
号、および対応する順次実行型の命令のアドレスの組を
登録するための第1のテーブルと、 この第1のテーブルに登録されている前記順次実行型の
命令のアドレス、同命令に対応する並列実行型の命令語
中の命令のアドレス、および当該命令語中の命令が置か
れる命令語内フィールド位置の組を登録するための第2
のテーブルと、 ソースプログラムのソースコード列から順次実行型の命
令列を生成し、この順次実行型の命令列を並列実行型に
最適化、再配置して並列実行型の命令語列からなるロー
ドモジュールを生成するコンパイル手段であって、前記
順次実行型の命令列を生成する際には、前記第1のテー
ブルに、前記ソースコードの行番号、および対応する順
次実行型の命令のアドレスの組を登録し、前記ロードモ
ジュールを生成する際には、前記第2のテーブルに、再
配置前の前記順次実行型の命令のアドレス、同命令に対
応する再配置後の前記並列実行型の命令語中の命令のア
ドレス、および当該再配置後の命令の命令語内フィール
ド位置の組を登録するコンパイル手段と、 前記第1および第2のテーブルをもとに、前記ロードモ
ジュール中に空きフィールドを持つ命令語のアドレスを
探して、その命令語中の命令に対応するソースコードの
行番号を当該空きフィールドに登録する行番号登録手段
とを具備し、前記ロードモジュールから、同モジュール
中の命令に対応する前記ソースプログラム中のソースコ
ードの行番号を取り出せるようにしたことを特徴とする
ロードモジュールへのソースコード行番号登録装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18885693A JP3461185B2 (ja) | 1993-06-30 | 1993-06-30 | ロードモジュールへのソースコード行番号登録方法および装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18885693A JP3461185B2 (ja) | 1993-06-30 | 1993-06-30 | ロードモジュールへのソースコード行番号登録方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0784797A JPH0784797A (ja) | 1995-03-31 |
JP3461185B2 true JP3461185B2 (ja) | 2003-10-27 |
Family
ID=16231055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP18885693A Expired - Fee Related JP3461185B2 (ja) | 1993-06-30 | 1993-06-30 | ロードモジュールへのソースコード行番号登録方法および装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3461185B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112299A (en) * | 1997-12-31 | 2000-08-29 | International Business Machines Corporation | Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching |
DE10107102B4 (de) * | 2001-02-14 | 2004-02-26 | Systemonic Ag | Verfahren und Anordnung zur Instruktionswortgenerierung bei der Ansteuerung von Funktionseinheiten in einem Prozessor |
JP2006243838A (ja) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | プログラム開発装置 |
JP2007058731A (ja) * | 2005-08-26 | 2007-03-08 | Matsushita Electric Ind Co Ltd | プロセッサ、及び並列命令実行対応デバッグ装置 |
-
1993
- 1993-06-30 JP JP18885693A patent/JP3461185B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0784797A (ja) | 1995-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4330822A (en) | Recursive system and method for binding compiled routines | |
AU647263B2 (en) | Improved error reporting for translated code execution | |
US6954747B1 (en) | Methods for comparing versions of a program | |
US4587632A (en) | Lookahead stack oriented computer | |
KR950006616B1 (ko) | 변환된 프로그램 코드에서 소스 명령 분자를 보전하기 위한 시스템 및 방법 | |
EP1280056B1 (en) | Generation of debugging information | |
US5634023A (en) | Software mechanism for accurately handling exceptions generated by speculatively scheduled instructions | |
JPH11327916A (ja) | コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術 | |
JPH09506722A (ja) | モデリング・システム | |
JPH02217926A (ja) | コード生成方法 | |
JPH0695312B2 (ja) | コンピュータプログラムを処理する方法およびシステム | |
JP2927180B2 (ja) | 情報処理プログラムのデバッグ方法およびそのためのデバッガ | |
US6810519B1 (en) | Achieving tight binding for dynamically loaded software modules via intermodule copying | |
US8261251B2 (en) | Modification of array access checking in AIX | |
JPH1173326A (ja) | プログラム変換装置とデバッグ装置 | |
Anderson | A computer for direct execution of algorithmic languages | |
Strumpen | Compiler technology for portable checkpoints | |
JP2574985B2 (ja) | ディジタルデータ処理システムとエラー処理方法 | |
JP3461185B2 (ja) | ロードモジュールへのソースコード行番号登録方法および装置 | |
JP2817786B2 (ja) | シミュレーション装置及びシミュレーション方法 | |
JPH06309193A (ja) | 機械語プログラムの動作検証方法および装置 | |
JPH10320212A (ja) | キャッシュ向け最適化方法 | |
JP2000207226A (ja) | コ―ド最適化装置、言語処理装置及びコ―ド最適化方法 | |
Mountjoy et al. | Modular operational semantic specification of transport triggered architectures | |
Wilcox et al. | Mainsail implementation overview |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070815 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080815 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |