JPH02310627A - Link method for object program in language processing programming - Google Patents
Link method for object program in language processing programmingInfo
- Publication number
- JPH02310627A JPH02310627A JP13226489A JP13226489A JPH02310627A JP H02310627 A JPH02310627 A JP H02310627A JP 13226489 A JP13226489 A JP 13226489A JP 13226489 A JP13226489 A JP 13226489A JP H02310627 A JPH02310627 A JP H02310627A
- Authority
- JP
- Japan
- Prior art keywords
- branch instruction
- branch
- instruction
- branching
- range
- 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
Links
- 238000000034 method Methods 0.000 title claims description 82
- 230000009191 jumping Effects 0.000 abstract 6
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 102220062244 rs748527030 Human genes 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
Description
【発明の詳細な説明】
産業上の利用分野
本発明は言語処理プログラム用リンカに関し、特にアセ
ンブル時に指定された、リンカの配置単位であるセグメ
ント単位でリロケータブルなオブジェクトの配置を決定
したのち、オブジェクトが配置されたアドレスを参照し
てオブジェクトプログラムの一部を修正することにより
実行可能なオブジェクトプログラムを作成する方式に関
する。DETAILED DESCRIPTION OF THE INVENTION Field of Industrial Application The present invention relates to a linker for language processing programs, and in particular, after determining the placement of relocatable objects in segment units, which are the linker's placement unit specified at the time of assembly, The present invention relates to a method for creating an executable object program by modifying a part of the object program with reference to the located addresses.
従来の技術
言語処理プログラムを使用してプログラムを作成する場
合、リンカと呼ばれるプログラムを使用して複数のオブ
ジェクトプログラムやオブジェクトモジニールを結合し
、最終的に使用できる形式のロードモジュールを完成す
る方法がある。When creating a program using a conventional technical language processing program, there is a way to use a program called a linker to combine multiple object programs or object modules into a final usable load module. be.
このようなオブジェクトの結合において、リロケータブ
ルなオブジェクトをリンクした結果、外部参照を行って
いる分岐命令の飛び先が指定された分岐命令の飛び先範
囲外となった場合には正常なリンクが行えなくなる。こ
の場合、そのまま結合しても結合後のオブジェクトは正
常に動作しなくなるので、リンカはエラーメツセージを
出力してリンク処理の実行を中止する。When linking such objects, if a relocatable object is linked and the jump destination of the branch instruction that is making the external reference falls outside the jump destination range of the specified branch instruction, normal linking will not be possible. . In this case, even if the objects are combined as is, the combined objects will not operate normally, so the linker outputs an error message and stops execution of the link process.
発明が解決しようとする課題
上述したように、従来のリンク方法では、リロケータブ
ルなオブジェクトをリンクした結果、分岐命令の飛び先
が分岐命令の分岐可能な範囲の外に配置されたときには
、処理の実行を中止していた。Problems to be Solved by the Invention As mentioned above, in the conventional linking method, when the jump destination of a branch instruction is located outside the branching range of the branch instruction as a result of linking relocatable objects, the process cannot be executed. had been discontinued.
このような理由でリンク処理の実行が中止された場合、
プログラム開発者は、オブジェクトモジュール内に含ま
れる分岐命令を捜し、ソースプログラム上でその分岐命
令を分岐範囲の広い他の分岐命令に置き換えて再アセン
ブルしなければならない。しかしながら、このようなリ
ンク方法では、リンク処理が中断されるまでの処理時間
が無駄になる上、ソースプログラムを修正し再アセンブ
ルした後改めてリンク処理を行うという非常に手間のか
かる作業を行わなければならない。If the execution of the link process is canceled for such reasons,
A program developer must search for a branch instruction contained in an object module, replace the branch instruction with another branch instruction with a wider branching range, and reassemble the source program. However, with this linking method, processing time until the linking process is interrupted is wasted, and the extremely time-consuming work of re-linking after modifying the source program and reassembling it is not necessary. No.
そこで、本発明は、上記従来技術の問題点を解決し、飛
び先が分岐可能な範囲の外に配置されるような分岐命令
を含むプログラムを、より効率の高い作業でリンクする
ことのできる新規なリンク方法を提供することをその目
的としている。SUMMARY OF THE INVENTION Therefore, the present invention solves the above-mentioned problems of the prior art, and provides a novel method that can link a program including a branch instruction whose jump destination is located outside the branchable range in a more efficient manner. Its purpose is to provide a convenient linking method.
課題を解決するための手段
即ち、本発明に従うと、言語処理プログラムが動作する
電子計算機システム上で、リロケータブルオブジェクト
プログラムをリンクする方法において、外部参照値が自
身の分岐可能な範囲外に指定されている分岐命令を抽出
し、抽出された第1分岐命令の外部参照値に基づいて、
該第1分岐命令によって分岐可能な範囲内に配置され、
前記範囲外の外部参照値へ分岐することのできる第2分
岐命令を生成し、且つ、該第1分岐命令の分岐先を、該
第2分岐命令の配置アドレスに変更するこ−とにより、
リンク処理に係るプログラムに含まれる分岐命令の分岐
先が、該分岐命令の分岐可能な範囲外にあっても、正常
な動作が可能なプログラムを作成するように該プログラ
ムのリンクを行うことを特徴とするオブジェクトプログ
ラムのリンク方法が提供される。Means for Solving the Problems According to the present invention, in a method for linking a relocatable object program on a computer system in which a language processing program operates, an external reference value is specified outside the branchable range of the program. Based on the external reference value of the extracted first branch instruction,
placed within a range that can be branched by the first branch instruction,
By generating a second branch instruction that can branch to an external reference value outside the range, and changing the branch destination of the first branch instruction to the location address of the second branch instruction,
Even if the branch destination of a branch instruction included in the program related to link processing is outside the branchable range of the branch instruction, the program is linked so as to create a program that can operate normally. A method for linking an object program is provided.
作用
本発明に係るオブジェクトプログラムのリンク方法では
、リンク処理を行うリンカプログラムに、特別な機能を
持たせることによって、結合後も正常に動作するような
リンク処理を自動的に行うことを可能としている。Effect: In the object program linking method according to the present invention, the linker program that performs the linking process is provided with a special function, thereby making it possible to automatically perform the linking process so that it operates normally even after linking. .
即ち、本発明に係る方法では、リンクプログラムに、以
下のような3つの機能を与えている。That is, in the method according to the present invention, the following three functions are provided to the link program.
■ 記述された分岐命令の飛び先が記述された分岐命令
によって分岐可能な範囲内に含まれているか否かを検査
する検査機能
■ 分岐先が分岐可能な範囲外であったとき指定された
分岐命令の飛び先へ分岐する分岐命令を生成する生成機
能
■ 記述された分岐命令をこの生成した分岐命令に分岐
するように修正する修正機能
このリンカプログラムによるリンク処理では、まず、検
査機能が分岐命令の飛び先が記述された分岐命令によっ
て分岐可能な範囲に含まれているかどうかを検査し、こ
れが外れていることを検出した場合は、生成機能が指定
された分岐命令の飛び先へ分岐する新たな分岐命令を生
成する。続いて、修正機能により、記述された分岐命令
をこの生成された分岐命令へ分岐するように修正し、か
くして、記述された分岐命令の飛び先が指定された分岐
命令の飛び先範囲外となった場合においても正常にリン
クを行い、正常に動作するオブジェクトを作成すること
を可能としている。■ Inspection function that checks whether the jump destination of the written branch instruction is included in the range that can be branched by the written branch instruction ■ The specified branch when the branch destination is outside the range that can be branched A generation function that generates a branch instruction that branches to the destination of the instruction ■ A modification function that modifies the written branch instruction so that it branches to the generated branch instruction. Checks whether the jump destination is included in the range that can be branched by the specified branch instruction, and if it is detected that it is outside the range, the generation function generates a new branch that branches to the jump destination of the specified branch instruction. Generate branch instructions. Next, the modification function modifies the written branch instruction so that it branches to this generated branch instruction, and thus the jump destination of the written branch instruction is outside the jump destination range of the specified branch instruction. Even in such cases, it is possible to link normally and create objects that operate normally.
即ち、前述した従来のリンク方法に対し、本発明に係る
方法では、記述された分岐命令の飛び先が分岐可能な範
囲外に配置されたとき、リンカが分岐範囲の広い他の分
岐命令を生成することにより外部参照を解決し、正常に
動作するオブジェクトコードを自動的に作成する。従っ
て、リンク処理は、非常に容易なものとなる。That is, in contrast to the conventional linking method described above, in the method according to the present invention, when the jump destination of a written branch instruction is placed outside the branching range, the linker generates another branching instruction with a wider branching range. This automatically resolves external references and creates properly working object code. Therefore, link processing becomes very easy.
以下、図面を参照して本発明をより具体的に説明するが
、以下の開示は本発明の一実施例に過ぎず、本発明の技
術的範囲を何ら限定するものではない。Hereinafter, the present invention will be described in more detail with reference to the drawings, but the following disclosure is only one embodiment of the present invention, and does not limit the technical scope of the present invention in any way.
実施例1
第1図は、本発明に従うオブジェクトプログラムのリン
ク方法を実施する際に使用できるリンカの構成を示すフ
ローチャートである。Embodiment 1 FIG. 1 is a flowchart showing the configuration of a linker that can be used to implement the method for linking object programs according to the present invention.
即ち、このリンカは、第1図に示すように、リンク処理
の対象となるリロケータブルなオブジェクトファイル1
に対して、このファイルのセグメント配置を決定する処
理2と、解決すべき外部参照を抽出する処理3と、抽出
された外部参照が登録された未解決分岐命令テーブルの
残量を検査する処理4と、外部参照を解決するための分
岐命令を生成する処理5と、その他の解決すべき外部参
照が発生した場合にエラー表示をする処理6とを実行す
ることによって、外部参照についての問題が解決された
オブジェクトファイル7を出力するように構成されてい
る。That is, as shown in FIG. 1, this linker creates a relocatable object file 1 to be linked
, a process 2 for determining the segment arrangement of this file, a process 3 for extracting external references to be resolved, and a process 4 for checking the remaining capacity of the unresolved branch instruction table in which the extracted external references are registered. The problem with external references is resolved by executing process 5, which generates a branch instruction to resolve external references, and process 6, which displays an error when other external references to be resolved occur. It is configured to output the object file 7 that has been created.
ここで、解決すべき外部参照を抽出する処理3は、記述
された分岐命令の飛び先が記述された分岐命令により分
岐可能であるか否かをチェックする機能を有しており、
抽出した解決すべき分岐命令を、未解決分岐命令テーブ
ルに登録する。Here, the process 3 for extracting external references to be resolved has a function of checking whether the jump destination of the written branch instruction can be branched by the written branch instruction,
The extracted branch instructions to be resolved are registered in the unresolved branch instruction table.
また、未解決分岐命令テーブルの残量を検査する処理4
は、処理すべき分岐命令の飛び先を、後述する正しい飛
び先への分岐を指示する新しい分岐命令へと変更する機
能を有している。Also, process 4 for checking the remaining amount of the unresolved branch instruction table.
has a function of changing the destination of a branch instruction to be processed to a new branch instruction that instructs a branch to the correct destination, which will be described later.
第2図は、第1図に示したリンカの機能をより具体的に
示したフローチャートであり、特に、解決すべき外部参
照を抽出する処理3と、外部参照を解決するための分岐
命令を生成する処理5とについて、詳細な処理を示して
いる。FIG. 2 is a flowchart that more specifically shows the functions of the linker shown in FIG. Detailed processing is shown for processing 5.
即ち、第2図に示すように、解決すべき外部参照を抽出
する処理3は、検査すべき外部参照があるかどうかを検
査する処理8と、検査した結果、解決すべき外部参照が
あった場合に、この外部参照の整合性を検査する処理9
と、この処理の結果、参照型に応じた外部参照を解決す
る処理10とを、検査すべき外部参照がなくなるまで繰
り返す。ここで、処理9において、参照先アドレスが範
囲外となるような範囲エラーが検出された場合は、この
外部参照が分岐命令によるものかどうかを検査する処理
11と、この外部参照が分岐命令によるものであった場
合に、これを未解決分岐命令テーブルに登録する処理1
2とを実行する。That is, as shown in FIG. 2, a process 3 for extracting external references to be resolved includes a process 8 for inspecting whether there are external references to be inspected, and as a result of the inspection, there are external references to be resolved. Processing 9 to check the integrity of this external reference if
As a result of this processing, processing 10 for resolving external references according to the reference type is repeated until there are no external references to be inspected. Here, in process 9, if a range error such that the reference destination address is outside the range is detected, process 11 is performed to check whether this external reference is due to a branch instruction, and Process 1 to register this in the unresolved branch instruction table if it is
2.
一方、外部参照を解決するための分岐命令を生成する処
理5は、まず、未解決分岐命令テーブルから、処理すべ
き分岐命令を1つずつ取り出す処理13を実行し、続い
て、適切な参照先アドレスへの参照を指示する新しい分
岐命令によって、この分岐命令の問題を解決する処理1
6を実行する。ここで、本実施例においては、既に生成
した分岐命令が利用可能かどうかを検査する処理14と
、利用可能な場合はこれを使用する処理15とを付加し
ている。尚、分岐命令の解決は、記述された分岐命令の
分岐先を、生成した分岐命令に分岐するように修正する
処理によって行われる。On the other hand, the process 5 of generating branch instructions for resolving external references first executes the process 13 of extracting branch instructions to be processed one by one from the unresolved branch instruction table, and then Process 1 to solve the problem of this branch instruction by using a new branch instruction that directs reference to an address
Execute 6. Here, in this embodiment, a process 14 for checking whether an already generated branch instruction can be used or not, and a process 15 for using this if it is available are added. Note that branch instruction resolution is performed by modifying the branch destination of the written branch instruction so that it branches to the generated branch instruction.
第3図は、セグメント配置の決定処理2により配置され
たセグメントの、メモリ空間への配置図である。FIG. 3 is a diagram showing the arrangement of segments arranged in the segment arrangement determination process 2 in the memory space.
このメモリ空間17は、サイズ2000H(ここで、H
は16進数を意味する。以下16進数には数値の後部に
Hを付加して10進数と区別する)であってアドレスO
HからIFFFHが割り当てられている。This memory space 17 has a size of 2000H (here, H
means hexadecimal number. Below, hexadecimal numbers are distinguished from decimal numbers by adding H to the end of the number), and the address is O.
IFFFH is assigned from H.
メモリ空間17にはアドレス1000 Hごとに境界が
あり、この境界をまたがってオブジェクトを配置するこ
とはできないものとする。分岐命令にはBRM分岐命令
とBRL分岐命令があり、BRM分岐命令はアドレス1
000 Hの境界を越えて分岐することはできない。一
方、BRL分岐命令はどのアドレスにも分岐可能である
。It is assumed that there is a boundary in the memory space 17 for each address 1000H, and objects cannot be placed across this boundary. There are two branch instructions: BRM branch instruction and BRL branch instruction.BRM branch instruction starts at address 1.
It is not possible to branch across the 000H boundary. On the other hand, a BRL branch instruction can branch to any address.
第1図に示したように、リンカの一連の処理において、
まず最初の処理2においてセグメントの配置が決定され
る。即ち、メモリ空間17には、セグメントA18、セ
グメントB19およびセグメントC20が配置されてい
る。As shown in Figure 1, in a series of linker processes,
First, in the first process 2, the arrangement of segments is determined. That is, in the memory space 17, a segment A18, a segment B19, and a segment C20 are arranged.
セグメントA18はサイズ400Hであり、セグメント
内部で外部参照されることを宣言するPUBLIC擬似
命令21により、シンボルLBL22−1およびLBL
B22−2が外部参照されることを明示している。Segment A18 has a size of 400H, and the symbols LBL22-1 and LBL are
It clearly indicates that B22-2 is externally referenced.
セグメントB19はサイズC0OHであり、セグメント
内部でLBL22−1およびLBLB22−2を外部参
照することをEXTRN擬似命令23で明示し、BRM
分岐命令24−C24−2,24−3および24−4で
外部参照している。Segment B19 is of size C0OH, and the EXTRN pseudo-instruction 23 specifies that LBL22-1 and LBLB22-2 are to be externally referenced within the segment, and BRM
External references are made by branch instructions 24-C24-2, 24-3, and 24-4.
セグメントC20はサイズC0OHであり、セグメン)
B19と同様にEXTRN擬似命令25によってLBL
22−1およびLBLB22−2を外部参照することを
宣言し、BRM分岐命令26二L26−2.26−3.
26−4および26−5によって外部参照している。Segment C20 is of size C0OH (segment)
Similarly to B19, LBL is set by EXTRN pseudo-instruction 25.
22-1 and LBLB 22-2 are declared as external references, and the BRM branch instruction 262L26-2.26-3.
Externally referenced by 26-4 and 26-5.
第4図は、第1図に示したような処理に従って外部参照
の解決を行った結果を示している。FIG. 4 shows the results of external reference resolution according to the process shown in FIG.
即ち、第3図において、セグメン)C20のBRM分岐
命令26−C26−2,26−3,26−4および26
−5は、アドレス1000 Hの境界の外側に配置され
ているLBL22−1およびL B L B22−2を
外部参照していた。これに対して、第4図のセグメント
配置では、LBL22−1およびL B L B22−
2へ分岐するBRL分岐命令27−1および27−2を
、アドレスTBL28−1およびTBL828−2に生
成し、BRM分岐命令26−C26−2,26−3,2
6−4,26−5の分岐先を、外部参照先に応じてTB
L28−1およびTBLB2g−2にしていることが判
る。That is, in FIG. 3, the BRM branch instructions 26-C26-2, 26-3, 26-4 and 26 of segment C20
-5 externally referenced LBL22-1 and LBL22-2 located outside the boundary of address 1000H. On the other hand, in the segment arrangement shown in FIG. 4, LBL22-1 and L B L B22-
BRL branch instructions 27-1 and 27-2 that branch to 2 are generated at addresses TBL28-1 and TBL828-2, and BRM branch instructions 26-C26-2, 26-3, 2 are generated at addresses TBL28-1 and TBL828-2.
The branch destination of 6-4 and 26-5 is set to TB according to the external reference destination.
It can be seen that L28-1 and TBLB2g-2 are used.
第5図は、第4図に示したような処理結果を得るための
具体的な処理を説明する図である。即ち、第5図は、テ
ーブルへの登録処理12、未解決分岐命令テーブルの残
量検査処理4およびテーブル要素の取り出し処理13で
用いられるテーブル29の内部を示す図である。FIG. 5 is a diagram illustrating specific processing for obtaining the processing results shown in FIG. 4. That is, FIG. 5 is a diagram showing the inside of the table 29 used in the table registration process 12, the remaining amount checking process 4 of the unresolved branch instruction table, and the table element retrieval process 13.
ここで、テーブル29は記述された分岐命令では外部参
照を解決できない分岐命令が配置されているアドレス2
9−1と外部参照を解決できない分岐命令によって分岐
可能な範囲29−2と指定された分岐先29−3によっ
て構成された外部参照を解決できない分岐命令に関する
情報とを格納している。Here, table 29 shows address 2 where a branch instruction whose external reference cannot be resolved by the written branch instruction is located.
9-1, a range 29-2 that can be branched by branch instructions that cannot resolve external references, and information regarding branch instructions that cannot resolve external references constituted by a designated branch destination 29-3.
ここでの処理は、具体的には以下のように実行される。Specifically, the processing here is executed as follows.
■ リロケータブルなオブジェクトファイルを人力し、
セグメントの配置の決定処理2によりセグメントA18
、セグメントB19およびセグメントC20をメモリ空
間17に配置する。このとき外部参照を行っているBR
M分岐命令24−1.24−2.24−3.24−4お
よびBRM分岐命令26−1,26−2.26−3.2
6−4.26−’5のそれぞれの分岐先アドレスは確定
していない。■ Manually create relocatable object files,
Segment A18 is determined by segment placement determination process 2.
, segment B19 and segment C20 are placed in the memory space 17. BR that is performing external reference at this time
M branch instructions 24-1.24-2.24-3.24-4 and BRM branch instructions 26-1, 26-2.26-3.2
The branch destination addresses of 6-4.26-'5 have not been determined.
■ 解決すべき外部参照を抽出する処理3において、ま
ず、外部参照の残量検査処理8により、先頭から外部参
照を行っている箇所の検索を行い、最初にBRM分岐命
令24−1を発見する。■ In the process 3 of extracting external references to be resolved, first, the remaining amount of external references check process 8 searches for locations where external references are made from the beginning, and first discovers the BRM branch instruction 24-1. .
次に、整合性検査処理9により分岐先L B L22=
1がアドレス100OHの境界内に配置されているので
問題はなく、このまま外部参照の解決を行えばよいこと
を判断する。従って、ここでは外部参照の解決10によ
り、LBL22−1の配置アドレスを用いて外部参照の
解決が行われる。Next, by the consistency check process 9, the branch destination L B L22=
Since 1 is located within the boundary of address 100OH, it is determined that there is no problem and that the external reference can be resolved as is. Therefore, in the external reference resolution 10, the external reference is resolved using the location address of the LBL 22-1.
同様に、BRM分岐命令24−2.24−3.24−4
に対する外部参照の解決を行う。Similarly, BRM branch instruction 24-2.24-3.24-4
Resolve external references to .
■ 次に外部参照の残量検査処理8により未解決の外部
参照が検索され、BRM分岐命令26−1が発見される
。(2) Next, unresolved external references are searched by the remaining amount of external references checking process 8, and the BRM branch instruction 26-1 is discovered.
BRM分岐命令26−1は、BRM分岐命令24−1.
24−2.24−3および24−4とは異なり、分岐先
り、BL22−1がBRM分岐命令26−1の分岐範囲
外となっている。従って、このままでは外部参照を解決
できず、整合性チェック9により外部参照の形式検査1
1に入る。The BRM branch instruction 26-1 is the same as the BRM branch instruction 24-1.
24-2. Unlike 24-3 and 24-4, the branch destination BL22-1 is outside the branch range of the BRM branch instruction 26-1. Therefore, the external reference cannot be resolved as it is, and the external reference format check 1 is performed by consistency check 9.
Enter 1.
外部参照の形式検査11によると、この外部参照はBR
M分岐命令による外部参照であるので、処理12により
テーブルへ登録され、BRM分岐命令26−1が配置さ
れているアドレスと分岐可能な範囲および分岐先LBL
22−1をテーブル29に記憶してセグメントの配置の
決定処理部2に戻る。According to external reference format check 11, this external reference is BR
Since this is an external reference by an M branch instruction, it is registered in the table in process 12, and the address where the BRM branch instruction 26-1 is located, the branch possible range, and the branch destination LBL are registered in the table in step 12.
22-1 is stored in the table 29 and the process returns to the segment arrangement determination processing section 2.
同様に、そのままでは配置できないBRM分岐命令26
−2.26−3.26−4および26−5と、その分岐
先LBL22−1およびLBLB22−2とをテーブル
29に記憶する。BRM分岐命令26−5をテーブル2
9に記憶した後は、これ以上外部参照が存在しないので
外部参照の残量検査処理8により未解決分岐命令テーブ
ルの残量検査処理4に入る。Similarly, BRM branch instruction 26 that cannot be placed as is.
-2.26-3.26-4 and 26-5 and their branch destinations LBL22-1 and LBLB22-2 are stored in the table 29. BRM branch instruction 26-5 in Table 2
After the unresolved branch instruction table is stored in the unresolved branch instruction table 9, since there are no more external references, an external reference remaining amount checking process 8 enters the unresolved branch instruction table remaining amount checking process 4.
■ 未解決分岐命令テーブルの残量検査処理4では、テ
ーブルへの登録処理12により記憶された未解決の分岐
命令が存在しているか否かのチェックを行う。ここでは
BRM分岐命令26−1.26−2.26−3.26−
4および26−5が未解決の外部参照を残しているもの
としてテーブル29に記憶されているので、分岐命令の
生成処理5に入る。(2) In the unresolved branch instruction table remaining amount checking process 4, it is checked whether or not there is an unresolved branch instruction stored in the table registration process 12. Here BRM branch instruction 26-1.26-2.26-3.26-
Since 4 and 26-5 are stored in the table 29 as having unresolved external references, branch instruction generation processing 5 is entered.
■ 分岐命令の生成処理5では、まずテーブル要素の取
り出し処理13により、テーブルに格納された順にテー
ブル29から未解決分岐命令が取り出される。(2) In the branch instruction generation process 5, unresolved branch instructions are first extracted from the table 29 in the order in which they were stored in the table by the table element extraction process 13.
この実施例では、まずBRM分岐命令26−1が、配置
されているアドレス29−1と分岐可能な範囲29−2
および分岐先29−3であるLBL22−1を取り出す
。次に、既に生成済の分岐命令が利用可能かどうか検査
する処理14を実行し、既に分岐命令を作成している場
合にはテーブル要素の取り出し13により取り出した分
岐先と同一の分岐先の分岐命令が生成されていないかど
うかを検査する。ここでは分岐命令が生成されていない
ので分岐命令の生成による解決処理16に入る。In this embodiment, first, the BRM branch instruction 26-1 is divided into the address 29-1 where it is placed and the branch possible range 29-2.
Then, the LBL 22-1, which is the branch destination 29-3, is taken out. Next, a process 14 of checking whether an already generated branch instruction is available is executed, and if a branch instruction has already been created, a branch with the same branch destination as the branch destination retrieved by table element retrieval 13 is executed. Check to see if the instruction has been generated. Since no branch instruction has been generated here, the process enters resolution processing 16 by generating a branch instruction.
■ 分岐命令の生成による解決処理16により、分岐先
をLBL22−1とするBRL分岐命令27−1を、B
RM分岐命令24−1の分岐可能な範囲内であるアドレ
スTBL28に生成する。更に、BRM分岐命令26−
1の分岐先を、BRL分岐命令27−1のアドレスTB
L28−1にすることにより、BRM分岐命令26−1
の外部参照は解決される。■ By the resolution process 16 by branch instruction generation, the BRL branch instruction 27-1 whose branch destination is LBL 22-1 is
The address TBL 28 is generated within the branchable range of the RM branch instruction 24-1. Furthermore, the BRM branch instruction 26-
The branch destination of BRL branch instruction 27-1 is set to address TB of BRL branch instruction 27-1.
By setting L28-1, BRM branch instruction 26-1
external references are resolved.
以下、同様にしてBRM分岐命、令26−2の外部参照
を、LBLB22−2を分岐先とするBRL分岐命令2
7−2をアドレスTBL828−2に生成してBRM分
岐命令26−2の分岐先をTBLB28−2にすること
により解決する。Hereinafter, in the same way, the external reference of the BRM branch instruction, instruction 26-2, is changed to the BRL branch instruction 2 whose branch destination is LBLB22-2.
This problem can be solved by generating 7-2 at address TBL 828-2 and setting the branch destination of BRM branch instruction 26-2 to TBLB 28-2.
次にテーブル29からBRM分岐命令24−3が配置さ
れているアドレス29−1と分岐可能な範囲29−2お
よび分岐先29−3であるLBL22−1を取り出し解
決を行う。ここで、BRM分岐命令24−3の分岐先で
あるLBL22−1への分岐命令は既にTBL28−1
に生成している。そこで、既に生成済の分岐命令利用可
否検査処理14から既に生成されている分岐命令を用い
た解決15に入り、新たな分岐命令の生成を行わずBR
M分岐命令24−3の分岐先をTBL28−1にするこ
とにより解決する。Next, the address 29-1 where the BRM branch instruction 24-3 is located, the branchable range 29-2, and the LBL 22-1 which is the branch destination 29-3 are extracted from the table 29 and solved. Here, the branch instruction to LBL22-1, which is the branch destination of the BRM branch instruction 24-3, has already been sent to TBL28-1.
is being generated. Therefore, the solution 15 using the already generated branch instruction is entered from the already generated branch instruction availability check process 14, and the BR is not generated without generating a new branch instruction.
This problem is solved by setting the branch destination of the M branch instruction 24-3 to the TBL 28-1.
同様にBRM分岐命令26−4 、26−5の外部参照
を、それぞれの分岐命令の分岐先をTBL28−1およ
びTBL82g−2とすることにより解決する。Similarly, external references to BRM branch instructions 26-4 and 26-5 are resolved by setting the branch destinations of the respective branch instructions to TBL 28-1 and TBL 82g-2.
リンカが以上のような処理を行うことにより、記述され
た分岐命令の分岐先が、記述された分岐命令の分岐可能
範囲外に配置された場合においても正常にリンクを行う
ことが可能となり、結合の結果、正常に動作するオブジ
ェクトプログラムが得られる。By the linker performing the above processing, even if the branch destination of the written branch instruction is located outside the branching range of the written branch instruction, it is possible to link normally, and the linking As a result, a properly operating object program is obtained.
実施例2
上述の実施例1では、同一の分岐先に分岐する分岐命令
に対しては1つの分岐命令を生成して使用したが、1つ
の外部参照に対し1つの分岐命令を対応して生成するこ
ともできる。Example 2 In Example 1 described above, one branch instruction is generated and used for branch instructions that branch to the same branch destination, but one branch instruction is generated and used for one external reference. You can also.
第6図は、このような方式の処理を説明するフローチャ
ートである。即ち、第2図に詳しく示した実施例1で行
われる処理に対して、本実施例に係る処理では、既に生
成済の分岐命令の利用の可否を検査する処理を行わない
。FIG. 6 is a flowchart illustrating processing of such a method. That is, in contrast to the processing performed in the first embodiment shown in detail in FIG. 2, in the processing according to the present embodiment, processing for checking whether or not an already generated branch instruction can be used is not performed.
この方式では、作成されるオブジェクトのサイズが大き
くなるが、リンカの処理が簡略化され、またリンク終了
後のオブジェクトファイルに修正を行うことにより、特
定の分岐命令の分岐先だけを変更することも可能になる
。Although this method increases the size of the created object, it simplifies linker processing, and by modifying the object file after linking, it is possible to change only the branch destination of a specific branch instruction. It becomes possible.
第7図は、第6図による分岐命令の生成手段を用いて外
部参照の解決を行った結果を、第4図に対照して示す図
である。FIG. 7 is a diagram showing the result of resolving external references using the branch instruction generation means shown in FIG. 6, in comparison with FIG. 4.
ここでは、分岐命令を生成しなければ外部参照を解決で
きないBRM分岐命令26−L26−2.26−3.2
6−4および26−5に対して、それぞれBRL分岐命
令27−L27−2.27−3.27−4および27−
5が生成され、BRM分岐命令26−1゜26−2.2
6−3.26−4および26−5の分岐先も、生成され
たBRL分岐命令27−1.27−2.27−3.27
−4および27−5のそれぞれのアドレスTBL28−
1、TBL828−2、TBLC28−3、TBLD2
8−4暑よびTBLE28−5に変更されている。Here, the BRM branch instruction 26-L26-2.26-3.2 cannot resolve external references without generating a branch instruction.
6-4 and 26-5, respectively, BRL branch instructions 27-L27-2.27-3.27-4 and 27-
5 is generated and the BRM branch instruction 26-1゜26-2.2
The branch destination of 6-3.26-4 and 26-5 is also the generated BRL branch instruction 27-1.27-2.27-3.27
-4 and 27-5 respective addresses TBL28-
1, TBL828-2, TBLC28-3, TBLD2
It has been changed to 8-4 Heat and TBLE28-5.
以下、このような処理結果に至る処理の過程を段階を追
って説明する。Hereinafter, the processing process leading to such a processing result will be explained step by step.
■ リロケータブルなオブジェクトファイルを人力し、
セグメントの配置の決定処理2によりセグメントA18
、セグメントB19およびセグメントC20をメモリ空
間17に配置する。続いて、外部参照抽出処理3によっ
て、解決できない分岐命令をテーブルに格納する処理は
、既に述べた実施例1と同様である。■ Manually create relocatable object files,
Segment A18 is determined by segment placement determination process 2.
, segment B19 and segment C20 are placed in the memory space 17. Subsequently, the process of storing unresolvable branch instructions in a table by external reference extraction process 3 is the same as in the first embodiment described above.
■ 続いて、未解決分岐命令テーブルの残量検査処理4
により、処理すべき分岐命令がテーブルに格納されてい
るかどうかを検査する処理4が行われる。■ Next, unresolved branch instruction table remaining capacity check processing 4
Process 4 is performed to check whether the branch instruction to be processed is stored in the table.
■ テーブルへに未解決の分岐命令が格納されていた場
合は、分岐命令の生成処理5に入る。■ If an unresolved branch instruction is stored in the table, branch instruction generation processing 5 is entered.
本実施例では、分岐命令の生成処理16によって、1つ
の未解決な分岐に対して必ず1つの新しい分岐命令が生
成される。ここで、分岐命令の生成処理5では、テーブ
ルに格納された未解決の分岐命令を1つずつ取り出す処
理13を行い、本実施例では、まず最初に格納されてい
たBRM分岐命令26−1が、配置されているアドレス
29−1と分岐可能な範囲29−2及び分岐先29−3
であるLBL22−1を得て、BRM分岐命令26−1
の分岐可能な範囲内であるアドレスTBL28−1に分
岐先LBL22−1へのBRL分岐命令27−1を生成
し、BRM分岐命令26−1の分岐先をTBL28−1
にする。In this embodiment, the branch instruction generation process 16 always generates one new branch instruction for each unresolved branch. Here, in the branch instruction generation process 5, a process 13 is performed to take out the unresolved branch instructions stored in the table one by one, and in this embodiment, the BRM branch instruction 26-1 stored first is , the located address 29-1, branch possible range 29-2, and branch destination 29-3
Obtaining LBL22-1, BRM branch instruction 26-1
A BRL branch instruction 27-1 to the branch destination LBL 22-1 is generated at the address TBL 28-1 that is within the branchable range of
Make it.
同様に、BRM分岐命令26−2のためにはTB L
828−2にBRL分岐命令27−2を作成してBRM
分岐命令26−2の分岐先をT B L 828−2す
る。以下、BRM分岐命令26−3.26−4.26−
5についても同様にしてBRL分岐命令27−3.27
−4および27−5をアドレスTBLC28−3、TB
LD28−4およびT B L E28−5に作成する
。Similarly, for BRM branch instruction 26-2, TBL
Create BRL branch instruction 27-2 in 828-2 and execute BRM
The branch destination of the branch instruction 26-2 is set to TBL 828-2. Below, BRM branch instruction 26-3.26-4.26-
5, the BRL branch instruction 27-3.27
-4 and 27-5 to address TBLC28-3, TB
Created on LD28-4 and TBL E28-5.
以上の処理により、第7図に示したように、各分岐命令
に対応した分岐命令が同じセグメント内配置されて外部
参照が解決されたオブジェクトプログラムが完成する。Through the above processing, as shown in FIG. 7, an object program is completed in which branch instructions corresponding to each branch instruction are placed in the same segment and external references are resolved.
発明の詳細
な説明したように、本発明に係るリンク方法によれば、
オブジェクトを結合するに先立って分岐命令の分岐範囲
と飛び先を検査し、分岐命令の飛び先が指定された分岐
命令により分岐可能な範囲の外部に配置され、そのまま
では外部参照の解決ができない場合であっても、分岐可
能な範囲内に他の分岐命令を生成することにより、正常
なリンクを行うことが可能となる。As described in detail, according to the linking method of the present invention,
Before joining objects, check the branch range and jump destination of the branch instruction, and if the jump destination of the branch instruction is placed outside the range that can be branched by the specified branch instruction, and external references cannot be resolved as is. However, by generating another branch instruction within the branchable range, it is possible to perform normal linking.
第1図は、本発明に係る方法で実施される処理を示すフ
ローチャートであり、
第2図は、第1美に示した方法を実施するための具体的
な処理を示すフローチャートであり、第3図は、第1図
に示した処理のうち、処理2によってセグメントの配置
が決定し、外部参照を解決する前のセグメントのメモリ
空間への配置を示す図であり、
第4図は、実施例1の処理によって外部参照を解決した
後の、セグメントのメモリ空間への配置を示す図であり
、
第5図は、第1図に示した方法を実施する際に使用され
るテーブルの構成を示す図であり、第6図は、本発明を
実施するための他の具体的な処理を示すフローチャート
であり、
第7図は、第6図に示した処理の結果により外部参照を
解決した後のセグメントのメモリ空間への配置を示す図
である。
〔主な参照番号〕
■・・リロケータブルオブジェクト、
2・・セグメントの配置の決定処理、
3・・外部参照の解決処理、
4・・未解決分岐命令テーブルの残量検査処理、5・・
分岐命令を生成する処理、
6・・エラー処理部、
7・・アドレスの解決したオブジェクト、8・・外部参
照の残量検査処理、
9・・整合性検査処理、
IO・・外部参照の解決、
11・・外部参照の形式検査、
12・・テーブルへの登録、
13・・テーブル要素の取り出し、
14・・生成済分岐命令の利用可否検査処理、15・・
生成済分岐命令を用いた解決、16・・分岐命令の生成
による解決、
17・・メモリ空間 18・・セグメントA19・・
セグメントB 20・・セグメントC2■・・PUB
LIC擬似命令
22−1・・LBL、BRM分岐命令24−1.24−
2.24−4.26−1.26−3.26−4が外部参
照しているアドレス
22−2・・LBLB、BRM分岐命令24−3゜26
−2 、26−5が外部参照しているアドレス
23 ・・EXTRN擬似命令
24−1.24−2.24−3.24−4.24−5・
・BRM分岐命令
25・・EXTRN擬似命令
26−1.26−2.26−3.26−4.26−5・
・BRM分岐命令
27−1.27−2.27−3.27−4.27−5・
・BRL分岐命令
28−1・・TBL、BRL分岐命令27−1が生成さ
れたアドレス
28−2・・TBLB、BRL分岐命令27−2が生成
されたアドレス
28−3・・TBLC,BRL分岐命令27−3が生成
されたアドレス
28−4・・TBLD、BRL分岐命令27−4が生成
されたアドレス
28−5・・TBLE、BRL分岐命令27−5が生成
されたアドレス
29・・テーブル
29−1・・記述された分岐命令が配置されているアド
レス
29−2・・記述された分岐命令により分岐可能な範囲
29−3・・記述された分岐命令の分岐先。FIG. 1 is a flowchart showing the process performed by the method according to the present invention, FIG. 2 is a flowchart showing the specific process for implementing the method shown in the first part, and the third The figure is a diagram showing the arrangement of segments in the memory space before the segment arrangement is determined by process 2 and external references are resolved among the processes shown in Fig. 1. FIG. 5 is a diagram showing the arrangement of segments in memory space after external references are resolved by the process in step 1, and FIG. 5 shows the structure of a table used when implementing the method shown in FIG. 1. FIG. 6 is a flowchart showing other specific processing for carrying out the present invention, and FIG. FIG. 3 is a diagram showing the arrangement of segments in a memory space. [Main reference numbers] ■... Relocatable object, 2... Segment placement determination process, 3... External reference resolution process, 4... Unresolved branch instruction table remaining capacity check process, 5...
Processing to generate a branch instruction, 6... Error processing unit, 7... Address resolved object, 8... Remaining amount of external reference checking processing, 9... Consistency checking processing, IO... External reference resolution, 11... Format check of external reference, 12... Registration in table, 13... Retrieval of table element, 14... Usability check process of generated branch instruction, 15...
Solution using generated branch instructions, 16... Solution by generating branch instructions, 17... Memory space 18... Segment A19...
Segment B 20...Segment C2■...PUB
LIC pseudo-instruction 22-1...LBL, BRM branch instruction 24-1.24-
Address 22-2 externally referenced by 2.24-4.26-1.26-3.26-4...LBLB, BRM branch instruction 24-3゜26
-2, Address 23 externally referenced by 26-5...EXTRN pseudo-instruction 24-1.24-2.24-3.24-4.24-5.
・BRM branch instruction 25・・EXTRN pseudo-instruction 26-1.26-2.26-3.26-4.26-5・
・BRM branch instruction 27-1.27-2.27-3.27-4.27-5・
・BRL branch instruction 28-1...Address 28-2 where TBL, BRL branch instruction 27-1 was generated...Address 28-3 where TBLB, BRL branch instruction 27-2 was generated...TBLC, BRL branch instruction Address 28-4 where 27-3 was generated... Address 28-5 where TBLD, BRL branch instruction 27-4 was generated... Address 29 where TBLE, BRL branch instruction 27-5 was generated... Table 29- 1. Address where the written branch instruction is located 29-2. Range that can be branched by the written branch instruction 29-3. Branch destination of the written branch instruction.
Claims (1)
、リロケータブルオブジェクトプログラムをリンクする
方法において、 外部参照値が自身の分岐可能な範囲外に指定されている
分岐命令を抽出し、 抽出された第1分岐命令の外部参照値に基づいて、該第
1分岐命令によって分岐可能な範囲内に配置され、前記
範囲外の外部参照値へ分岐することのできる第2分岐命
令を生成し、且つ、該第1分岐命令の分岐先を、該第2
分岐命令の配置アドレスに変更することにより、 リンク処理に係るプログラムに含まれる分岐命令の分岐
先が、該分岐命令の分岐可能な範囲外にあっても、正常
な動作が可能なプログラムを作成するように該プログラ
ムのリンクを行うことを特徴とするオブジェクトプログ
ラムのリンク方法。[Scope of Claim] A method for linking a relocatable object program on a computer system in which a language processing program operates, the method comprising: extracting a branch instruction whose external reference value is specified outside its own branchable range; Based on the external reference value of the first branch instruction, the second branch instruction is placed within a range that can be branched by the first branch instruction and is capable of branching to an external reference value outside the range; In addition, the branch destination of the first branch instruction is set to the branch destination of the first branch instruction.
By changing the location address of the branch instruction, create a program that can operate normally even if the branch destination of the branch instruction included in the program related to link processing is outside the branchable range of the branch instruction. A method for linking an object program, characterized in that the program is linked as follows.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13226489A JPH02310627A (en) | 1989-05-25 | 1989-05-25 | Link method for object program in language processing programming |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13226489A JPH02310627A (en) | 1989-05-25 | 1989-05-25 | Link method for object program in language processing programming |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH02310627A true JPH02310627A (en) | 1990-12-26 |
Family
ID=15077216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13226489A Pending JPH02310627A (en) | 1989-05-25 | 1989-05-25 | Link method for object program in language processing programming |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH02310627A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08227363A (en) * | 1995-02-21 | 1996-09-03 | Nec Corp | Method for processing branch instruction |
-
1989
- 1989-05-25 JP JP13226489A patent/JPH02310627A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08227363A (en) * | 1995-02-21 | 1996-09-03 | Nec Corp | Method for processing branch instruction |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5287444A (en) | Message processing system | |
JP2666847B2 (en) | Heterogeneous language communication method | |
US6298479B1 (en) | Method and system for compiling and linking source files | |
US5561802A (en) | Method for managing programs with attribute information and developing loaded programs | |
US6351848B1 (en) | Unitary data structure systems, methods, and computer program products, for global conflict determination | |
US6175935B1 (en) | Software debugging method and recording medium to which debugging program has been recorded | |
JPH0522936B2 (en) | ||
JPH02310627A (en) | Link method for object program in language processing programming | |
KR900006667B1 (en) | Program assembling system | |
JP2000010791A (en) | Method for initializing global register, computer program product, and device | |
JP2000122876A (en) | Information processor | |
JPH04205422A (en) | Automatic program translation connecting and selecting method | |
JP2621898B2 (en) | Dynamic resolution processing method of external reference type address constant | |
JPH02205930A (en) | Interface check processing method | |
JP2000132405A (en) | In-line expansion processing device and method | |
JPS6326730A (en) | Program correction system | |
Hinrichs | PCS+ Tool Chain User’s Guide Version 3.0 | |
JPH0390931A (en) | Generation of rom transformation program | |
JPH02271430A (en) | Program executing device | |
JPH0196735A (en) | Link connection system for object module having symbolic information | |
JPH10312312A (en) | Inspecting method for computer program of c language changing in operation with specifications and program storage medium | |
JPH0239242A (en) | Temporary work area allocation system for electronic computer system | |
JP2014182711A (en) | Build tool | |
JPH02224136A (en) | Inspection system for compile unit | |
JPH0371229A (en) | Program controller |