JPH0784797A - Method and device for registering source code row number to load module - Google Patents
Method and device for registering source code row number to load moduleInfo
- Publication number
- JPH0784797A JPH0784797A JP5188856A JP18885693A JPH0784797A JP H0784797 A JPH0784797 A JP H0784797A JP 5188856 A JP5188856 A JP 5188856A JP 18885693 A JP18885693 A JP 18885693A JP H0784797 A JPH0784797 A JP H0784797A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- source code
- load module
- line number
- address
- 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
Links
Landscapes
- Stored Programmes (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
【0001】[0001]
【産業上の利用分野】この発明は、並列実行型の計算機
に適用されるロードモジュールに含まれている命令に対
応するソースコードの行番号を、同ロードモジュール中
に登録するためのロードモジュールへのソースコード行
番号登録方法および装置に関する。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a load module for registering a line number of a source code corresponding to an instruction included in a load module applied to a parallel execution type computer in the load module. Source code line number registration method and device.
【0002】[0002]
【従来の技術】近年、処理の高速化のために、複数の命
令が設定可能な複数のフィールドを持つ、VLIW(Ve
ry Long Instruction Word)と称される並列実行型の命
令語の列からなるロードモジュールを実行するVLIW
型並列処理方式(VLIW方式)のアーキテクチャを適
用した計算機(以下、VLIW方式の計算機と称する)
が開発されている。2. Description of the Related Art In recent years, in order to speed up processing, VLIW (VeW
Vryw that executes a load module consisting of a series of parallel execution type instruction words called "ry Long Instruction Word"
-Type parallel processing system (VLIW system) architecture-based computer (hereinafter referred to as VLIW system computer)
Is being developed.
【0003】このVLIW方式の計算機で適用されるロ
ードモジュールを対象にデバッグを行った場合に、ある
命令に対して、その命令に対応するソースプログラム内
のソースコードの行番号をデバッグ情報として得ること
は、プログラム開発者にとって極めて便利である。そこ
で従来は、VLIW方式のロードモジュール中の各命令
と、その命令に対応するソースプログラム内のソースコ
ードの行番号との対応情報を記録しておくテーブルを作
成して保存しておき、デバッグ時にエラー等を検出して
デバッグ情報を得る必要がある場合には、当該テーブル
を参照して、エラーとなった命令に対応するソースプロ
グラム内のソースコードの行番号を取り出すようにして
いた。When debugging a load module applied in this VLIW computer, for a certain instruction, obtain the line number of the source code in the source program corresponding to the instruction as debug information. Is extremely convenient for program developers. Therefore, conventionally, a table for recording the correspondence information between each instruction in the VLIW type load module and the line number of the source code in the source program corresponding to the instruction is created and saved for debugging. When it is necessary to detect an error or the like and obtain debug information, the table is referred to retrieve the line number of the source code in the source program corresponding to the instruction in error.
【0004】[0004]
【発明が解決しようとする課題】上記したように、ある
命令に対して、その命令に対応するソースプログラム内
のソースコードの行番号をデバッグ情報として得るため
には、命令と行番号との対応情報を記録しておくテーブ
ルが別途必要となり、メモリ、ディスク等の記憶装置使
用量の増加を招くという問題があった。As described above, in order to obtain the line number of the source code in the source program corresponding to the instruction as the debug information for a certain instruction, the correspondence between the instruction and the line number is required. There is a problem in that a table for recording information is separately required, which leads to an increase in the usage amount of a storage device such as a memory or a disk.
【0005】この発明は上記事情を考慮してなされたも
のでその目的は、VLIW方式のロードモジュール中の
命令に対応するソースプログラム内のソースコードの行
番号が、この命令と対応付けて当該ロードモジュール中
に登録できるロードモジュールへのソースコード行番号
登録方法を提供することにある。The present invention has been made in view of the above circumstances, and an object thereof is to load a line code of a source code in a source program corresponding to an instruction in a VLIW type load module in association with the instruction. It is to provide the source code line number registration method to the load module that can be registered in the module.
【0006】[0006]
【課題を解決するための手段】この発明は、ソースプロ
グラムをコンパイルして作成されるVLIW方式のロー
ドモジュールに含まれる各命令語中には、命令が設定さ
れていない空きフィールドが存在する場合が比較的多い
ことに着目し、この空きフィールドに、同フィールドを
持つ命令語中の命令に対応するソースプログラム中のソ
ースコードの行番号を登録することにより、ロードモジ
ュールから、同モジュール中の命令に対応するソースプ
ログラム中のソースコードの行番号を取り出せるように
したことを特徴とするものである。According to the present invention, in each instruction word included in a VLIW type load module created by compiling a source program, an empty field in which an instruction is not set may exist. Paying attention to the relatively large number, register the line number of the source code in the source program corresponding to the instruction in the instruction word that has this field in this empty field so that the load module can change the instruction in the same module. The feature is that the line number of the source code in the corresponding source program can be taken out.
【0007】[0007]
【作用】上記の構成において、ロードモジュールに含ま
れる命令語中に空きフィールドが存在する場合には、そ
の空きフィールドに、同フィールドを持つ命令語中の命
令に対応するソースプログラム中のソースコードの行番
号が登録される。この空きフィールドに設定されたソー
スコード行番号は、同フィールドを持つ命令語中の命令
と対応していることから、命令とその命令に対応するソ
ースコードの行番号との対応情報をロードモジュール中
に記録したのと等価である。In the above structure, when an empty field exists in the instruction word included in the load module, the empty field contains the source code in the source program corresponding to the instruction in the instruction word having the same field. The line number is registered. Since the source code line number set in this empty field corresponds to the instruction in the instruction word that has the same field, the correspondence information between the instruction and the line number of the source code corresponding to that instruction is stored in the load module. Is equivalent to the one recorded in.
【0008】即ち上記の構成においては、VLIW方式
のロードモジュール中の各命令と、その命令に対応する
ソースコードの行番号との対応情報を、ロードモジュー
ル中に登録することができ、メモリの使用量の増加を招
かないで済む。That is, in the above configuration, the correspondence information between each instruction in the VLIW type load module and the line number of the source code corresponding to the instruction can be registered in the load module, and the memory is used. It does not need to increase the quantity.
【0009】[0009]
【実施例】図1はこの発明の一実施例を示すブロック構
成図である。図1において、1は磁気ディスク装置など
の仮想メモリである。仮想メモリ1には、コンパイルの
対象となるソースプログラム11が格納されているもの
とする。FIG. 1 is a block diagram showing an embodiment of the present invention. In FIG. 1, reference numeral 1 is a virtual memory such as a magnetic disk device. It is assumed that the virtual memory 1 stores a source program 11 to be compiled.
【0010】2はソースプログラム11をコンパイルし
てVLIW方式のロードモジュール31を作成するコン
パイラ、3はコンパイラ2により作成されたロードモジ
ュール31の記憶等に用いられる主メモリである。ロー
ドモジュール31は、例えば4つのフィールド(命令フ
ィールド)F0〜F3を持つ命令語の列からなる。フィ
ールドF0〜F3には、同時に実行可能な命令(オブジ
ェクトコード)が設定可能である。但し、各命令間の依
存関係により、同時に実行できる命令が4つ(4フィー
ルド分)揃わない場合には、フィールドF0〜F3の幾
つかは空きフィールドとなる。空きフィールドの先頭か
らの一部領域には、ノーオペレーション命令(nop命
令)が設定される。フィールドF0〜F3は、フィール
ドF0から先に利用される。Reference numeral 2 is a compiler that compiles the source program 11 to create a VLIW type load module 31. Reference numeral 3 is a main memory used for storing the load module 31 created by the compiler 2. The load module 31 is composed of, for example, a string of instruction words having four fields (instruction fields) F0 to F3. Instructions (object codes) that can be executed simultaneously can be set in the fields F0 to F3. However, if four instructions (for four fields) that can be executed at the same time are not available due to the dependency between the instructions, some of the fields F0 to F3 are empty fields. A no-operation instruction (nop instruction) is set in a partial area from the beginning of the empty field. The fields F0 to F3 are used first from the field F0.
【0011】コンパイラ2は、ロードモジュール31の
作成時、第1のテーブル21と第2のテーブル22の2
つのテーブルを作成するようになっている。第1のテー
ブル21は、ソースプログラム11のソースコード列か
ら順次実行型の命令列、即ちVLIW方式の命令語への
再配置前の命令(オブジェクトコード)列を生成する際
に作成されるものである。この第1のテーブル21に
は、図2に示すように、ソースプログラムのソースコー
ドの行番号と、再配置前の命令のアドレス(相対アドレ
ス)との組が登録される。The compiler 2 uses the first table 21 and the second table 22 to create the load module 31.
It is designed to create two tables. The first table 21 is created at the time of generating a sequential execution type instruction sequence from the source code sequence of the source program 11, that is, an instruction (object code) sequence before rearrangement into VLIW method instruction words. is there. In this first table 21, as shown in FIG. 2, a set of the line number of the source code of the source program and the address (relative address) of the instruction before relocation is registered.
【0012】第2のテーブル22は、再配置前の命令列
をVLIW型に最適化、再配置してロードモジュール3
1を作成する際に作成されるものである。この第2のテ
ーブル22には、図3に示すように、再配置前の命令の
アドレス(相対アドレス)と、その命令に対応する再配
置後の命令(を含む命令語)のアドレス(相対アドレ
ス)と、再配置後の命令の命令語内の位置(フィールド
位置)との組が登録される。The second table 22 optimizes the instruction sequence before relocation to the VLIW type and relocates it to load module 3
It is created when creating 1. In this second table 22, as shown in FIG. 3, the address (relative address) of the instruction before relocation and the address (instruction word) including the instruction after relocation corresponding to the instruction (relative address) ) And the position (field position) in the instruction word of the instruction after rearrangement are registered.
【0013】4は行番号登録部である。行番号登録部4
は、第1のテーブル21および第2のテーブル22をも
とに、ロードモジュール31中に空きフィールドを持つ
命令語のアドレスを探して、その命令語中の命令に対応
するソースコードの行番号を当該空きフィールドに登録
する。5はロードモジュール31のデバッグを行うデバ
ッガである。デバッガ5は、エラー検出等により、エラ
ーとなった命令についてのデバッグ結果51を出力する
際には、その命令に対応するロードモジュール31内の
命令語中の空きフィールドに登録されているソースコー
ドの行番号を取り出して、デバッグ結果51の一部とす
るようになっている。Reference numeral 4 is a line number registration unit. Line number registration section 4
Searches the address of an instruction word having an empty field in the load module 31 based on the first table 21 and the second table 22, and determines the line number of the source code corresponding to the instruction in the instruction word. Register in the empty field. Reference numeral 5 is a debugger for debugging the load module 31. When the debugger 5 outputs the debug result 51 for an instruction that has an error due to error detection or the like, the debugger 5 can detect the source code registered in the empty field in the instruction word in the load module 31 corresponding to the instruction. The line number is taken out and used as a part of the debug result 51.
【0014】次に、この発明の一実施例の動作を、図4
のフローチャートを参照して説明する。今、仮想メモリ
1に格納されているソースプログラム11をコンパイル
してロードモジュール31を作成するものとする。この
場合、コンパイラ2は、まずソースプログラム11のソ
ースコード列から、各ソースコード毎に、順次実行型の
命令または命令群、即ちVLIW方式の命令語への再配
置前の命令(オブジェクトコード)または命令群を、主
メモリ3上に作成する(ステップS1)。Next, the operation of one embodiment of the present invention will be described with reference to FIG.
This will be described with reference to the flowchart in FIG. Now, it is assumed that the source program 11 stored in the virtual memory 1 is compiled to create the load module 31. In this case, the compiler 2 firstly, from the source code sequence of the source program 11, for each source code, a sequential execution type instruction or instruction group, that is, an instruction (object code) before relocation to an instruction word of the VLIW method or An instruction group is created on the main memory 3 (step S1).
【0015】この様子を図5(a)に示す。図5(a)
では、ソースプログラム11中の行番号100,10
1,102のソースコードに対応するadd命令(加算
命令)がそれぞれ生成されて、アドレス(相対アドレ
ス)40000,40001,40002に配置され、
また行番号103のソースコードに対応するadd命令
とsub命令(減算命令)が生成されて、アドレス(相
対アドレス)40003と40004に配置されている
様子が示されている。This state is shown in FIG. Figure 5 (a)
Then, the line numbers 100 and 10 in the source program 11
Add instructions (addition instructions) corresponding to the source codes of 1, 102 are respectively generated and arranged at addresses (relative addresses) 40000, 40001, 40002,
Further, it is shown that the add instruction and the sub instruction (subtraction instruction) corresponding to the source code of the line number 103 are generated and are arranged at the addresses (relative addresses) 40003 and 40004.
【0016】コンパイラ2は、ソースコードに対応する
再配置前の命令(オブジェクトコード)または命令群を
主メモリ3上に生成すると、そのソースコードの行番号
と再配置前の対応する命令のアドレス(相対アドレス)
との組を、図6(a)に示すように、第1のテーブル2
1に登録する(ステップS2)。このステップS2での
登録動作は、ステップS1で1つのソースコードに対応
する再配置前の命令または命令群が生成される毎に行わ
れる。但し、図4のフローチャートでは、便宜的に、ス
テップS1,S2が1回だけ行われるように記述されて
いる。When the compiler 2 generates an instruction (object code) or instruction group before relocation corresponding to the source code in the main memory 3, the line number of the source code and the address of the corresponding instruction before relocation ( Relative address)
As shown in FIG. 6A, the first table 2
1 is registered (step S2). The registration operation in step S2 is performed every time an instruction or instruction group before relocation corresponding to one source code is generated in step S1. However, in the flowchart of FIG. 4, for convenience, it is described that steps S1 and S2 are performed only once.
【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命令が設定される。When the compiler 2 executes the processes of steps S1 and S2 for all the source codes in the source program 11, the pre-relocation instruction sequence generated in the process of step S1 is optimized and relocated to the VLIW type. Then, Fig. 5
As shown in (b), the load module 31 is created on the main memory 3 (step S3). In the example of FIG. 5B, as is clear from comparison with FIG. 5A, the two add instructions before relocation having no mutual dependency generated at the relative addresses 40000 and 40001 have the relative addresses. Field F of the VLIW instruction word of 40000
0, F1 relocated to relative address 40002,40
The two add instructions before relocation generated in 003 are
The relative address is relocated to fields F0 and F1 of the instruction word of 40001 (because it is not relocated to the fields F3 and F4 of the instruction word of the VLIW method having the relative address 40000), and It is shown that the pre-relocation sub instruction generated at the relative address 40004 is relocated to the field F0 of the VLIW method instruction word having the relative address 40002. Further, a nop instruction is set in a partial area from the beginning of the empty field in each instruction word of the load module 31, as shown in FIG.
【0018】コンパイラ2は、ステップS3において命
令の再配置を行うと、再配置前の命令のアドレスと、再
配置後の命令(を含む命令語)のアドレスと、同命令の
命令語内の位置(フィールド位置)との組を、図6
(b)に示すように、第2のテーブル22に登録する
(ステップS4)。このステップS4での登録動作は、
ステップS3で1つの命令が再配置される毎に行われ
る。但し、図4のフローチャートでは、便宜的に、ステ
ップS3,S4が1回だけ行われるように記述されてい
る。After relocating the instruction in step S3, the compiler 2 addresses the instruction before the relocation, the address of the instruction (including the instruction word) after the relocation, and the position within the instruction word of the same instruction. Figure 6 shows the combination with (field position).
As shown in (b), it is registered in the second table 22 (step S4). The registration operation in step S4 is
This is performed every time one instruction is rearranged in step S3. However, in the flowchart of FIG. 4, for convenience, it is described that steps S3 and S4 are performed only once.
【0019】コンパイラ2は、再配置前の命令列を対象
とする再配置を実行してロードモジュール31を作成す
ると共に、第2のテーブル22を作成すると、行番号登
録部4に制御を渡す。これにより行番号登録部4は、第
2のテーブル22の再配置後の(命令を含む命令語の)
アドレスと命令語内の位置(フィールド位置)とから、
空きフィールドを持つ命令語のアドレスを探し、その命
令語中の命令の再配置前のアドレスを求める(ステップ
S5)。When the compiler 2 executes the relocation for the instruction sequence before the relocation to create the load module 31 and creates the second table 22, the control is passed to the line number registration unit 4. As a result, the line number registration unit 4 (of the instruction word including the instruction) after the rearrangement of the second table 22 is performed.
From the address and the position (field position) in the command word,
The address of the instruction word having a vacant field is searched for, and the address before the relocation of the instruction in the instruction word is obtained (step S5).
【0020】図6(b)に示す第2のテーブル22の例
では、例えば再配置後のアドレス(相対アドレス)が4
0000の命令語においては、フィールドF0,F1の
2つのフィールドに再配置前のアドレス40000,4
0001の命令が設定されており、したがってフィール
ドF2,F3が空きフィールドとなっていることが分か
る。In the example of the second table 22 shown in FIG. 6B, for example, the rearranged address (relative address) is 4
In the instruction word of 0000, addresses 40000 and 4 before relocation in two fields of fields F0 and F1.
It can be seen that the instruction of 0001 is set and therefore the fields F2 and F3 are empty fields.
【0021】行番号登録部4は、ステップS5で空きフ
ィールドを持つ命令語中の命令の再配置前のアドレスを
求めると、その再配置前のアドレスをキーとして第1の
テーブル21を検索し、その命令に対応するソースコー
ドの行番号を求めて、空きフィールド中のnop命令に
後続する領域(未使用領域)に登録する(ステップS
6)。When the line number registration unit 4 obtains the address before relocation of the instruction in the command word having the empty field in step S5, it searches the first table 21 using the address before relocation as a key, The line number of the source code corresponding to the instruction is obtained and registered in the area (unused area) following the nop instruction in the empty field (step S).
6).
【0022】図6(a)に示す第1のテーブル21と図
6(b)に示す第2のテーブル22の例では、例えば再
配置後のアドレスが40000の命令語については、再
配置前のアドレス40000,40001の命令が、フ
ィールドF0,F1に再配置され、フィールドF2,F
3が空きとなっていることが分かり、その命令に対応す
るソースコードの行番号が100,101であることが
分かる。In the example of the first table 21 shown in FIG. 6A and the second table 22 shown in FIG. 6B, for example, for the instruction word whose address after rearrangement is 40000, The instructions at addresses 40000 and 40001 are relocated to fields F0 and F1 and
It can be seen that 3 is empty, and the line numbers of the source code corresponding to the instruction are 100 and 101.
【0023】この場合、行番号登録部4は、当該命令語
のフィールドF0,F1に再配置されている(再配置前
のアドレスが40000,40001の)命令に対応す
るソースコードの行番号100,101を、当該命令語
の空きフィールドF2,F3中のnop命令に後続する
領域に登録する。同様に行番号登録部4は、再配置後の
アドレスが40001の命令語については、当該命令語
のフィールドF0,F1に再配置されている(再配置前
のアドレスが40002,40003の)命令に対応す
るソースコードの行番号102,103を、当該命令語
の空きフィールドF2,F3中のnop命令に後続する
領域に登録する。In this case, the line number registering unit 4 has the line number 100, 100 of the source code corresponding to the instruction rearranged in the field F0, F1 of the instruction word (the address before rearrangement is 40000, 40001). 101 is registered in the area following the nop instruction in the empty fields F2 and F3 of the instruction word. Similarly, the line number registering unit 4 rearranges the instruction word whose rearranged address is 40001 into the instruction rearranged in the field F0, F1 of the instruction word (the address before rearrangement is 40002, 40003). The line numbers 102 and 103 of the corresponding source code are registered in the areas following the nop instruction in the empty fields F2 and F3 of the instruction word.
【0024】また行番号登録部4は、再配置後のアドレ
スが40002の命令語については、当該命令語のフィ
ールドF0に再配置されている(再配置前のアドレスが
40004の)命令に対応するソースコードの行番号1
03を、当該命令語の空きフィールドF1中のnop命
令に後続する領域に登録する。このように、ロードモジ
ュール31中の空きフィールドに登録されたソースコー
ド行番号は、その登録位置が、空きフィールド中のno
p命令に後続する未使用領域(空き領域)であるため、
ロードモジュール31の実行に対しては何等影響を及ぼ
すことはない。Further, the line number registering unit 4 corresponds to the instruction rearranged in the field F0 of the instruction word (the address before rearrangement is 40004) for the instruction word whose rearranged address is 40002. Source code line number 1
03 is registered in the area following the nop instruction in the empty field F1 of the instruction word. In this way, the source code line number registered in the empty field in the load module 31 has a registration position of no in the empty field.
Since it is an unused area (free area) following the p instruction,
It has no effect on the execution of the load module 31.
【0025】以上の行番号登録後における、主メモリ3
上のロードモジュール31の内容(一部)を図7に示
す。この行番号登録が終了すると、テーブル21,22
は不要となる。この点が、ロードモジュール中の各命令
と、その命令に対応するソースプログラム内のソースコ
ードの行番号との対応情報を記録したテーブルを保存し
ておく必要がある従来例とは大きく異なる。After registering the above line numbers, the main memory 3
The contents (a part) of the upper load module 31 are shown in FIG. When this line number registration is completed, tables 21 and 22
Is unnecessary. This point is significantly different from the conventional example in which it is necessary to store a table in which the correspondence information of each instruction in the load module and the line number of the source code in the source program corresponding to the instruction is stored.
【0026】なお、例えば命令語中のフィールドF0〜
F2に命令が再配置され、フィールドF3だけが空きと
なっている場合には、命令語中の先頭フィールドF0に
再配置されている命令に対応するソースコードの行番号
だけが当該フィールドF3に登録され、後続のフィール
ドF1,F2に再配置されている命令に対応するソース
コード行番号の登録は生じない。同様に、命令語中の全
フィールドF0〜F3に命令が再配置され、空きフィー
ルドが存在しない場合には、その命令群についてのソー
スコード行番号登録は生じない。Note that, for example, fields F0 to 0 in the instruction word
When the instruction is relocated to F2 and only the field F3 is empty, only the line number of the source code corresponding to the instruction relocated to the first field F0 in the instruction word is registered in the field F3. Therefore, registration of the source code line number corresponding to the instruction rearranged in the subsequent fields F1 and F2 does not occur. Similarly, if the instruction is relocated to all fields F0 to F3 in the instruction word and there is no empty field, the source code line number registration for the instruction group does not occur.
【0027】デバッガ5は、以上のようにして命令語の
空きフィールドへのソースコード行番号の登録がなされ
たロードモジュール31を対象に、デバッグ処理を行
う。そしてデバッガ5は、エラーを検出して、そのデバ
ッグ結果51を出力(例えば表示出力)する際には、エ
ラーとなった命令に対応するソースコード行番号を、同
命令を含むロードモジュール31内の命令語の空きフィ
ールドから取り出す。The debugger 5 performs the debugging process on the load module 31 in which the source code line number is registered in the empty field of the instruction word as described above. Then, when the debugger 5 detects an error and outputs the debug result 51 (for example, display output), the source code line number corresponding to the instruction in error is stored in the load module 31 including the instruction. Take out from the empty field of the instruction word.
【0028】この行番号取り出しの対象となるフィール
ド位置は、エラーとなった命令が命令語中のフィールド
Fi(iは0〜3のいずれか)に再配置されているもの
とすると、当該命令中の空きフィールドのうちのi+1
番目のフィールドとなる。もし、空きフィールドの数が
i+1未満である場合には、対応する行番号は登録され
ていないと判断される。If the errored instruction is relocated to the field Fi (i is any of 0 to 3) in the instruction word, the field position from which the line number is to be fetched is I of the empty fields in
It becomes the second field. If the number of empty fields is less than i + 1, it is determined that the corresponding line number is not registered.
【0029】デバッガ5は、ロードモジュール31から
ソースコード行番号を取り出すと、同行番号をデバッグ
結果51の一部とする。このデバッグ結果51中のソー
スコード行番号により、プログラム開発者は、修正した
いソースプログラム11の位置を瞬時に把握することが
できる。以上は、ロードモジュール31の空きフィール
ドに登録されたソースコード行番号をデバッグ結果の一
部に用いる場合について説明したが、これに限るもので
はない。When the debugger 5 fetches the source code line number from the load module 31, the same line number is used as a part of the debug result 51. The source code line number in the debug result 51 allows the program developer to instantly grasp the position of the source program 11 to be modified. The case where the source code line number registered in the empty field of the load module 31 is used as a part of the debug result has been described above, but the present invention is not limited to this.
【0030】例えば、ロードモジュール31の命令語の
実行中に、プログラム開発者等からの要求により、その
命令語に含まれている命令(命令群)に対応するソース
コード行番号(行番号群)を出力する構成とすることも
可能である。この場合、現在ソースプログラム11中の
いずれのソース行(行群)に対応する命令(命令群)を
実行しているかを知ることができる。For example, during execution of an instruction word of the load module 31, a source code line number (line number group) corresponding to an instruction (instruction group) included in the instruction word is requested by a program developer or the like. It is also possible to adopt a configuration for outputting In this case, it is possible to know which source line (line group) in the source program 11 is currently executing the instruction (instruction group).
【0031】また、ロードモジュール31中の所望の命
令語アドレスを指定することにより、そのアドレスの命
令語に対応するソースプログラム11中のソースコード
行番号を取り出せる構成とすることも可能である。Further, by designating a desired instruction word address in the load module 31, it is possible to extract the source code line number in the source program 11 corresponding to the instruction word at that address.
【0032】[0032]
【発明の効果】以上詳述したようにこの発明によれば、
VLIW方式のロードモジュールに含まれる命令語中に
空きフィールドが存在する場合、その空きフィールド
に、同フィールドを持つ命令語中の命令に対応するソー
スプログラム中のソースコードの行番号を登録し、当該
ロードモジュールから、同モジュール中の命令に対応す
るソースプログラム中のソースコードの行番号が取り出
せる構成としたので、空きフィールドが随所に存在する
VLIW方式のロードモジュールを有効に利用でき、ロ
ードモジュール中の各命令と、その命令に対応するソー
スプログラム内のソースコードの行番号との対応情報を
記録したテーブルを保存しておく必要がある従来方式と
比べて、メモリ使用量の増加を招くこともない。As described above in detail, according to the present invention,
If an empty field exists in the instruction word included in the VLIW load module, the line number of the source code in the source program corresponding to the instruction in the instruction word having the same field is registered in the empty field, Since the line number of the source code in the source program corresponding to the instruction in the same module can be extracted from the load module, the VLIW type load module with empty fields everywhere can be effectively used, and the load module There is no increase in memory usage as compared with the conventional method in which a table storing the correspondence information between each instruction and the line number of the source code in the source program corresponding to the instruction needs to be stored. .
【図1】この発明の一実施例を示すブロック構成図。FIG. 1 is a block diagram showing an embodiment of the present invention.
【図2】図1中の第1のテーブル21のデータ構造を示
す模式図。FIG. 2 is a schematic diagram showing a data structure of a first table 21 in FIG.
【図3】図2中の第2のテーブル22のデータ構造を示
す模式図。FIG. 3 is a schematic diagram showing a data structure of a second table 22 in FIG.
【図4】同実施例の動作を説明するためのフローチャー
ト。FIG. 4 is a flowchart for explaining the operation of the embodiment.
【図5】ソースプログラム11のソースコードからVL
IW方式の命令語への再配置前の命令(オブジェクトコ
ード)または命令群を作成する際のソースコード行番号
と命令語アドレスとの対応例と、この再配置前の命令の
列をVLIW型に最適化、再配置して作成されたロード
モジュール31の例とを示す図。FIG. 5: VL from the source code of the source program 11
Example of correspondence between source code line number and instruction word address when creating instruction (object code) or instruction group before relocation to IW method instruction word, and sequence of instruction before relocation to VLIW type The figure which shows the example of the load module 31 created by optimizing and rearranging.
【図6】図5の状態に対応する第1のテーブル21およ
び第2のテーブル22の登録内容例を示す図。FIG. 6 is a diagram showing an example of registered contents of a first table 21 and a second table 22 corresponding to the state of FIG.
【図7】図5に示すロードモジュール31の空きフィー
ルドへのソースコード行番号登録後の様子を示す図。7 is a diagram showing a state after the source code line number is registered in an empty field of the load module 31 shown in FIG.
1…仮想メモリ、2…コンパイラ、3…主メモリ、4…
行番号登録部、5…デバッガ、11…ソースプログラ
ム、21…第1のテーブル、22…第2のテーブル、3
1…ロードモジュール、F0〜F3…フィールド。1 ... Virtual memory, 2 ... Compiler, 3 ... Main memory, 4 ...
Line number registration unit, 5 ... Debugger, 11 ... Source program, 21 ... First table, 22 ... Second table, 3
1 ... load module, F0 to F3 ... field.
Claims (3)
れるロードモジュールであって、複数の命令が設定可能
な複数のフィールドを持つ並列実行型の命令語の列から
なるロードモジュールから、空きの前記フィールドを検
出し、この空きフィールドに、同フィールドを持つ命令
語中の命令に対応する前記ソースプログラム中のソース
コードの行番号を登録することにより、前記ロードモジ
ュールから、同モジュール中の命令に対応する前記ソー
スプログラム中のソースコードの行番号を取り出せるよ
うにしたことを特徴とするロードモジュールへのソース
コード行番号登録方法。1. A load module created by compiling a source program, the load module comprising a parallel execution type instruction word sequence having a plurality of fields in which a plurality of instructions can be set, and the empty field from the load module. Is detected and the line number of the source code in the source program corresponding to the instruction in the instruction word having the same field is registered in this empty field, so that the load module can respond to the instruction in the same module. A source code line number registration method for a load module, wherein the line number of the source code in the source program can be taken out.
次実行型の命令列を生成する際に、ソースコードの行番
号、および対応する前記順次実行型の命令のアドレスの
組が登録された第1のテーブルを作成する第1のステッ
プと、 前記順次実行型の命令列を並列実行型に最適化、再配置
して、並列実行型の命令語列からなるロードモジュール
を生成する際に、再配置前の前記順次実行型の命令のア
ドレス、同命令に対応する再配置後の前記並列実行型の
命令語中の命令のアドレス、および当該再配置後の命令
が置かれる命令語内フィールド位置の組が登録された第
2のテーブルを作成する第2のステップと、 前記第1および第2のテーブルをもとに、前記ロードモ
ジュール中に空きフィールドを持つ命令語のアドレスを
探して、その命令語中の命令に対応するソースコードの
行番号を当該空きフィールドに登録する第3のステップ
とを具備し、前記ロードモジュールから、同モジュール
中の命令に対応する前記ソースプログラム中のソースコ
ードの行番号を取り出せるようにしたことを特徴とする
ロードモジュールへのソースコード行番号登録方法。2. When generating a sequential execution type instruction sequence from a source code sequence of a source program, a first number in which a line number of the source code and a set of corresponding addresses of the sequential execution type instructions are registered. A first step of creating a table, and a step of optimizing and rearranging the sequential execution type instruction sequence into a parallel execution type to generate a load module composed of a parallel execution type instruction word sequence; A set of the address of the sequential execution type instruction, the address of the instruction in the parallel execution type instruction word after rearrangement corresponding to the instruction, and the field position in the instruction word in which the rearranged instruction is placed. A second step of creating a registered second table, searching for an address of an instruction word having an empty field in the load module based on the first and second tables, and executing the instruction word And a third step of registering the line number of the source code corresponding to the instruction in the empty field, the line number of the source code in the source program corresponding to the instruction in the module from the load module. A method for registering source code line numbers in a load module, which is characterized in that it can be taken out.
号、および対応する順次実行型の命令のアドレスの組を
登録するための第1のテーブルと、 この第1のテーブルに登録されている前記順次実行型の
命令のアドレス、同命令に対応する並列実行型の命令語
中の命令のアドレス、および当該命令語中の命令が置か
れる命令語内フィールド位置の組を登録するための第2
のテーブルと、 ソースプログラムのソースコード列から順次実行型の命
令列を生成し、この順次実行型の命令列を並列実行型に
最適化、再配置して並列実行型の命令語列からなるロー
ドモジュールを生成するコンパイル手段であって、前記
順次実行型の命令列を生成する際には、前記第1のテー
ブルに、前記ソースコードの行番号、および対応する順
次実行型の命令のアドレスの組を登録し、前記ロードモ
ジュールを生成する際には、前記第2のテーブルに、再
配置前の前記順次実行型の命令のアドレス、同命令に対
応する再配置後の前記並列実行型の命令語中の命令のア
ドレス、および当該再配置後の命令の命令語内フィール
ド位置の組を登録するコンパイル手段と、 前記第1および第2のテーブルをもとに、前記ロードモ
ジュール中に空きフィールドを持つ命令語のアドレスを
探して、その命令語中の命令に対応するソースコードの
行番号を当該空きフィールドに登録する行番号登録手段
とを具備し、前記ロードモジュールから、同モジュール
中の命令に対応する前記ソースプログラム中のソースコ
ードの行番号を取り出せるようにしたことを特徴とする
ロードモジュールへのソースコード行番号登録装置。3. A first table for registering a line number of a source code of a source program and an address set of a corresponding sequential execution type instruction, and the sequential execution registered in the first table. A second register for registering a set of an address of a type instruction, an address of an instruction in a parallel execution type instruction word corresponding to the same instruction, and a field position in the instruction word in which the instruction of the instruction word is placed
Table and the source code sequence of the source program, the sequential execution type instruction sequence is generated, and the sequential execution type instruction sequence is optimized for parallel execution type and rearranged to load the parallel execution type instruction sequence. Compile means for generating a module, wherein when generating the sequential execution type instruction sequence, the first table includes a set of a line number of the source code and a corresponding sequential execution type instruction address. When registering the load module and generating the load module, the address of the sequential execution type instruction before relocation and the parallel execution type instruction word after relocation corresponding to the same instruction are stored in the second table. And a compiling means for registering a set of an address of an instruction in the instruction and a field position position in the instruction word of the instruction after the relocation, and in the load module based on the first and second tables. A line number registering means for searching the address of an instruction word having a field and registering the line number of the source code corresponding to the instruction in the instruction word in the empty field. The source code line number registering device for the load module, wherein the line number of the source code in the source program corresponding to the instruction is fetched.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18885693A JP3461185B2 (en) | 1993-06-30 | 1993-06-30 | Method and apparatus for registering source code line number to load module |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18885693A JP3461185B2 (en) | 1993-06-30 | 1993-06-30 | Method and apparatus for registering source code line number to load module |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0784797A true JPH0784797A (en) | 1995-03-31 |
JP3461185B2 JP3461185B2 (en) | 2003-10-27 |
Family
ID=16231055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP18885693A Expired - Fee Related JP3461185B2 (en) | 1993-06-30 | 1993-06-30 | Method and apparatus for registering source code line number to load module |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3461185B2 (en) |
Cited By (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 |
GB2375197A (en) * | 2001-02-14 | 2002-11-06 | Systemonic Ag | A method of generating instruction words for driving functional units in a procssor. |
JP2006243838A (en) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | Program development device |
JP2007058731A (en) * | 2005-08-26 | 2007-03-08 | Matsushita Electric Ind Co Ltd | Processor and debugging apparatus corresponding to parallel instruction execution |
-
1993
- 1993-06-30 JP JP18885693A patent/JP3461185B2/en not_active Expired - Fee Related
Cited By (6)
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 |
GB2375197A (en) * | 2001-02-14 | 2002-11-06 | Systemonic Ag | A method of generating instruction words for driving functional units in a procssor. |
GB2375197B (en) * | 2001-02-14 | 2004-02-11 | Systemonic Ag | Method and arrangement for instruction word generation in the driving of functional units in a processor |
JP2006243838A (en) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | Program development device |
US7917899B2 (en) | 2005-02-28 | 2011-03-29 | Kabushiki Kaisha Toshiba | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus |
JP2007058731A (en) * | 2005-08-26 | 2007-03-08 | Matsushita Electric Ind Co Ltd | Processor and debugging apparatus corresponding to parallel instruction execution |
Also Published As
Publication number | Publication date |
---|---|
JP3461185B2 (en) | 2003-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR950006616B1 (en) | System and method for preserving source instruction atomicity in translated program code | |
US4330822A (en) | Recursive system and method for binding compiled routines | |
US4468736A (en) | Mechanism for creating dependency free code for multiple processing elements | |
US5717883A (en) | Method and apparatus for parallel execution of computer programs using information providing for reconstruction of a logical sequential program | |
US6542985B1 (en) | Event counter | |
US4466061A (en) | Concurrent processing elements for using dependency free code | |
US5732234A (en) | System for obtaining parallel execution of existing instructions in a particulr data processing configuration by compounding rules based on instruction categories | |
US5249275A (en) | Apparatus and method enabling a compiled program to exactly recreate its source code | |
US5048018A (en) | Debugging parallel programs by serialization | |
KR950006619B1 (en) | Improved error reporting for translated code execution | |
USRE33706E (en) | Table driven translator | |
US4587632A (en) | Lookahead stack oriented computer | |
US5634023A (en) | Software mechanism for accurately handling exceptions generated by speculatively scheduled instructions | |
US20030154464A1 (en) | Stack unique signatures for program procedures and methods | |
EP0950219B1 (en) | Selective emulation interpretation using transformed instructions | |
JPH08272609A (en) | Method for provision of object code interchangeability of vliw program | |
JPH04225431A (en) | Method for compiling computer instruction for increasing instruction-cache efficiency | |
JPH02217926A (en) | Compiler | |
JPH0695312B2 (en) | Method and system for processing a computer program | |
US6810519B1 (en) | Achieving tight binding for dynamically loaded software modules via intermodule copying | |
US8261251B2 (en) | Modification of array access checking in AIX | |
JP2574985B2 (en) | Digital data processing system and error handling method | |
JP3461185B2 (en) | Method and apparatus for registering source code line number to load module | |
US4456958A (en) | System and method of renaming data items for dependency free code | |
US5819081A (en) | Method of executing a branch instruction of jumping to a subroutine in a pipeline control system |
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 |