JPH01205331A - 大規模プログラムリンク方式 - Google Patents

大規模プログラムリンク方式

Info

Publication number
JPH01205331A
JPH01205331A JP3035188A JP3035188A JPH01205331A JP H01205331 A JPH01205331 A JP H01205331A JP 3035188 A JP3035188 A JP 3035188A JP 3035188 A JP3035188 A JP 3035188A JP H01205331 A JPH01205331 A JP H01205331A
Authority
JP
Japan
Prior art keywords
symbol
address table
external
scale program
external symbol
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
Application number
JP3035188A
Other languages
English (en)
Other versions
JPH0760381B2 (ja
Inventor
Kazuaki Iwamoto
和昭 岩本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP3035188A priority Critical patent/JPH0760381B2/ja
Publication of JPH01205331A publication Critical patent/JPH01205331A/ja
Publication of JPH0760381B2 publication Critical patent/JPH0760381B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、プログラムのリンク方式に関し、特にオペレ
ーティングシステム等の大規模プログラムのリンク方式
に関する。
〔従来の技術〕
従来、オペレーティングシステム等の大規模プログラム
を構成する複数のコンパイル単位をリンクする場合には
、例えば、コンパイル単位間にまたがる外部シンボルの
大規模プログラム内での実アドレスを確定してコンパイ
ル単位をシンボルにより関連付ける際に、第1のコンパ
イル単位内に実アドレスが未確定の外部シンボルを確認
した時点で、当該外部シンボルが定義された第2のコン
パイル単位を入力し、当該外部シンボルの実アドレスを
確定させ、さらに、第2のコンパイル単位内で実アドレ
スが未確定の外部シンボルを認識すると、当該外部シン
ボルが定性された第3のコンパイル単位を入力し、当該
外部シンボルの実アドレスを確定させ、この操作を実ア
ドレスが未確定の外部シンボルがなくなるまで繰返し、
全ての外部シンボルの実アドレスを決定してコンパイル
単位のリンクを行なっていた。
〔発明が解決しようとする課題〕
上述した従来のリンク方式では、外部シンボルのアドレ
スの確定が終らない間、当該外部シンボルを含んでいる
コンパイル単位を作業用メモリ中に保持しておく必要が
あり、オペレーティングシステムのような大規模プログ
ラムのリンクを行なう場合多量のメモリを必要どすると
いう欠点がある。
〔課題を解決するための手段〕
本発明の大規模プログラムリンク方式は、大規模プログ
ラムを構成する複数のコンパイル単位を記憶しているコ
ンパイル単位格納手段と、前記コンパイル131位毎の
コンパイル単位名と属性を保持するリンクコマンドを記
憶するリンクコマンド格納手段と、 前記コンパイル単位とリンクコマンドを取込んで前記コ
ンパイル単位をリンフタるとともに、コンパイル単位内
に存在する外部シンボルと当該シンボルの大規模プログ
ラム内での実アドレスと外部シンボルに対して実アドレ
スが割当てられたか否かを示すフラグを含む定義シンボ
ルアドレス表および外部シンボルと当該外部シンボルに
対応する大規模プログラム内での実アドレスとを含む外
部シンボルアドレス表を作成するリンク手段と、定義シ
ンボルアドレス表を記憶する定義シンボルアドレス表格
納手段と、 外部シンボルアドレス表を記憶する外部シンボルアドレ
ス表格納手段と、 リンク手段によるリンクの結果出力された大規模プログ
ラムを記憶する大規模プログラム格納手段と、 該大規模プログラムを実行可能な形で保持するメモリと
、 大規模プログラムにおける実アドレスが確定していて、
該実アドレスが対応するコンパイル単位に反映されてい
ない外部シンボルを検出し、その時外部シンボルアドレ
ス表を参照して当該外部シンボルの実アドレスをコンパ
イル単位に書込むとともに、大規模プログラムを前記メ
モリにロードするローディング手段とを有している。
〔作用〕
大規模プログラムを構成する複数のコンパイル単位毎に
リンクコマンドを指定し、当該リンクコマンドで指定さ
れた第1のコンパイル単位を入力し、当該コンパイル単
位で定義された外部シンボルについては実アドレスを確
定して定義シンボルアドレス表に登録しておき、他のコ
ンパイル単位で定義された外部シンボルを参照する場合
については、定義シンボルアドレス表に未解決アドレス
として登録しておき、大規模プログラム内にリンクされ
たコンパイル単位内には、定義シンボルアドレス表内で
の、該当する外部シンボルの登録位置を保持することに
より、第1のコンパイル単位で使用していた作業用メモ
リを解放し、次のコンパイル単位のリンクを行ない、全
てのコンパイル単位の入力が終了した時点で、定義シン
ボルアドレス表の内容を外部シンボルアドレス表として
出力し、大規模ブOグラムローディング時に未解決の外
部シンボルアドレスを確定することができる。
〔実施例〕
次に、本発明の実施例ついて図面を参照して説明する。
第1図は本発明の大規模プログラムリンク方式の一実施
例を示すブロック図、第2図はリンクコマンド21を示
ず描成図、第3図は大規模プログラム31と定義シンボ
ルアドレス表36との関係を示す図、第4図は第1図の
リンク手段3の動作を示ずフローチャートである。
本実施例の大規模プログラムリンク方式は、コンパイル
単位格納手段1とリンクコマンド格納手段2とリンク手
段3と大規模プログラム格納手段4と外部シンボルアド
レス表格納手段5とローディング手段6と定義シンボル
アドレス表格納手段7とメモリ8とで構成されている。
コンパイル単位格納手段1は大規模プログラムを構成す
るコンパイル単位1〜nを記憶している。リンクコマン
ド格納手段2は大規模プログラムを構成するコンパイル
単位毎のコンパイル単位名と属性を保持するリンクコマ
ンド21を記憶する。このリンクコマンド21は、第2
図に示ずように、コンパイル単位1〜n毎に設けられて
おり、それぞれ、コンパイル単位の名前および属性を保
持している。リンク手段3はコンパイル単位とリンクコ
マンド21を順次取込んでコンパイル単位をリンクする
とともに、コンパイル単位内に存在づ゛る外部シンボル
と当該シンボルの大規模プログラム内での実アドレスと
外部シンボルに対して実アドレスが割当てられたか否か
を示すフラグを含む定義シンボルアドレス表36および
外部シンボルと当該外部シンボルに対応する大規模プロ
グラム内での実アドレスとを含む外部シンボルアドレス
表を作成する。第3図において、定義シンボルアドレス
表36は外部シンボル(Sl)、実アドレス(A1)、
フラグ(Fl)の3項目で構成され、コンパイル単位を
リンクしていく際に外部シンボルにアドレスを割当るた
めに作成される。プログラムモジュール32はリンク手
段3によりリンクされたプログラムモジュールである。
外部シンボル参照部33は、プログラムモジュール内で
の外部シンボルのアドレスをシンボルが現れる毎に指示
し、当該プログラムモジュール内の外部シンボルの有無
を調べる際にリンク手段3により参照される。
シンボル変位索引部34は外部シンボル参照部33の内
容の変位を保持する。アドレス表変位索引部35は、シ
ンボル変位索引部34が保持している外部シンボルに対
応さゼて定義シンボルアドレス表36内での該当する外
部シンボルの位置を定義シンボルアドレス表36の変位
として保持する。外部シンボルアドレス表は、表1に示
すように、外部シンボルと実アドレスの2項目で構成さ
れ、記録される内容は前述した定義シンボルアドレス表
の外部シンボルと実アドレスの内容と同じである。
大規模プログラム格納手段4はリンク手段3によるリン
クの結果出力された大規模プログラムを記憶する。外部
シンボルアドレス表格納手段5は外部シンボルアドレス
表を記憶する。定義シンボルアドレス表格納手段7は定
義シンボルアドレス表を記憶する。ローディング手段6
は大規模プログラムのローディング時に大規模プログラ
ム内に含まれる、コンパイル単位間での関連付けが未解
決の外部シンボルアドレスを前記外部シンボルアドレス
表を参照しながら解決し、実行可能な形でプログラムを
メモリ8にロードする。
次に、本実施例の動作について第3図、第4図を参照し
て説明する。
まず、リンクコマンド格納手段2に格納されたリンクコ
マンドで指定されたコンパイル単位をコンパイル単位格
納手段1から順次読込み(ステップ211)、読込まれ
たコンパイル単位に外部シンボルがあるかを外部シンボ
ル参照部33を参照して判断しくステップ212)、外
部シンボルが存在すればその外部シンボルが参照y(で
あるが否か、すなわら当該シンボルが他の部分で定義さ
れてここでは参照するだけか、または、ここで定義され
ているのかを判断する(ステップ213)。
参照型でなければ当該外部シンボルの実アドレスを確定
し、定義シンボルアドレス表36に外部シンボル名(S
l)と確定した実アドレス(A1)を登録し、外部シン
ボルに対応する実アドレスが確定していることを示すフ
ラグ(Fl)をオンにして(ステップ219)、次の外
部シンボルの処理にうつる。ステップ213の判断で外
部シンボルが参照型であれば、定義シンボルアドレス表
36を参照して(ステップ214)、当該外部シンボル
が登録しているかを判断しくステップ215)、登録さ
れていればこの外部シンボルに対応するフラグ(Fl)
がオンであるかを判断する(ステップ216)。フラグ
(Fl)がオンである場合、この外部シンボルについて
は既に実アドレスが確定しており、大規模プログラム3
1内のプログラムモジュール32の外部シンボル参照部
33へ実アドレス(A1)を書込む(ステップ217)
。ステップ216の判断でフラグ(Fl)がオンでない
場合はまだ当該外部シンボル(Sl)の実アドレス(A
1)が確定していないことを意味し、プログラムモジュ
ール32のシンボル変位索引部34に外部シンボル参照
部33の変位を入れ、アドレス表変位索引部35に定義
シンボルアドレス表36の該当する外部シンボルの定義
シンボルアドレス表36内変位を入れ(ステップ221
)、次の外部シンボルの処理に移る。ステップ215の
判断で定義シンボルアドレス表36に、該当する外部シ
ンボルがみつからなかった場合は、定義シンボルアドレ
ス表36に外部シンボル(Sl)を登録して対応するフ
ラグ(Fl)をオフとしくステップ220)、次の外部
シンボルの処理を行なう。ステップ212の判断で1つ
のコンパイル単位内の全外部シンボルの処理を終了した
ら、全てのコンパイル単位の処理を終了したかを判断す
る(ステップ218)。まだ終了してなければ、当該コ
ンパイル単位のリンク処理で使用していた作業用メモリ
を解放しくステップ222)、次のコンパイル単位の処
理を行ない、終了していれば、リンク処理を終了する。
このとき、定義シンボルアドレス表36の外部シンボル
(Sl)と実アドレス(A1)部を前述した外部シンボ
ルアドレス表として出力する。次に、大規模プログラム
31をメモリ8ヘローデイングする際、プログラムモジ
ュール32の外部シンボル参照部33に索引部35で示
す外部シンボルアドレス表36内の実アドレス(A1)
の内容を書込むことによって未解決であった外部シンボ
ル参照が解決される。
(発明の効果〕 以上説明したように本発明は、大規模プロゲラ  。
ム等のリンクを行なう場合に、大規模プログラムを描成
するコンパイル単位毎にリンクコマンドを指定し、当該
リンクコマンドで指定された第1のコンパイル単位を入
力し、当該コンパイル単位で定義された外部シンボルに
ついては実アドレスを確定し、定義シンボルアドレス表
を登録しておき、外部シンボルの参照については、定義
シンボルアドレス表に未解決アドレスとして登録してお
き、大規模プログラム内にリンクされたコンパイル単位
内には、定義シンボルアドレス表内の変位という形で保
持することにより、第1のコンパイル単位で使用してい
た作業用メモリを解放し、次のコンパイル単位のリンク
を行ない、全てのコンパイル単位の入力が終了した時点
で、定義シンボルアドレス表の内容を外部シンボルアド
レス表として出力し、大規模プログラムローディング時
に未解決の外部シンボルアドレスを解決することにより
、リンク時の作業用メモリ量を大幅に削減することがで
きるという効果がある。
【図面の簡単な説明】
第1図は本発明の大規模プログラムリンク方式の一実施
例を示すブロック図、第2図tよりンクコマンド21を
示す構成図、第3図は大規模プログラム31と定義シン
ボルアドレス表36どの関係を示す図、第4図は第1図
のリンク手段3の動作を示すフローチャー1・である。 1・・・コンパイル単位格納手段、 2・・・リンクコマンド格納手段、 3・・・リンク手段、 4・・・大規模プログラム格納手段、 5・・・外部シンボルアドレス表格納手段、6・・・ロ
ーディング手段、 7・・・定義シンボルアドレス表格納手段、8・・・メ
モリ、 21・・・リンクコマンド、 31・・・大規模プログラム、 32・・・プログラムモジュール、 33・・・外部シンボル参照部、 34・・・シンボル変位索引部、 35・・・アドレス表変位索引部、 36・・・定義シンボルアドレス表、 211〜222・・・ステップ。

Claims (1)

  1. 【特許請求の範囲】 オペレーティングシステム等のような大規模プログラム
    をリンクする大規模プログラムリンク方式であって、 大規模プログラムを構成する複数のコンパイル単位を記
    憶しているコンパイル単位格納手段と、前記コンパイル
    単位毎のコンパイル単位名と属性を保持しているリンク
    コマンドを記憶するリンクコマンド格納手段と、 前記コンパイル単位とリンクコマンドを取込んで前記コ
    ンパイル単位をリンクするとともに、コンパイル単位内
    に存在する外部シンボルと当該シンボルの大規模プログ
    ラム内での実アドレスと外部シンボルに対して実アドレ
    スが割当てられたか否かを示すフラグを含む定義シンボ
    ルアドレス表および外部シンボルと当該外部シンボルに
    対応する大規模プログラム内での実アドレスとを含む外
    部シンボルアドレス表を作成するリンク手段と、定義シ
    ンボルアドレス表を記憶する定義シンボルアドレス表格
    納手段と、 外部シンボルアドレス表を記憶する外部シンボルアドレ
    ス表格納手段と、 リンク手段によるリンクの結果、出力された大規模プロ
    グラムを記憶する大規模プログラム格納手段と、 該大規模プログラムを実行可能な形で保持するメモリと
    、 大規模プログラムにおける実アドレスが確定していて、
    該実アドレスが対応するコンパイル単位に反映されてい
    ない外部シンボルを検出し、その時外部シンボルアドレ
    ス表を参照して当該外部シンボルの実アドレスをコンパ
    イル単位に書込むとともに、大規模プログラムを前記メ
    モリにロードするローディング手段とを有する大規模プ
    ログラムリンク方式。
JP3035188A 1988-02-12 1988-02-12 大規模プログラムリンク方式 Expired - Fee Related JPH0760381B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3035188A JPH0760381B2 (ja) 1988-02-12 1988-02-12 大規模プログラムリンク方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3035188A JPH0760381B2 (ja) 1988-02-12 1988-02-12 大規模プログラムリンク方式

Publications (2)

Publication Number Publication Date
JPH01205331A true JPH01205331A (ja) 1989-08-17
JPH0760381B2 JPH0760381B2 (ja) 1995-06-28

Family

ID=12301428

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3035188A Expired - Fee Related JPH0760381B2 (ja) 1988-02-12 1988-02-12 大規模プログラムリンク方式

Country Status (1)

Country Link
JP (1) JPH0760381B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04149732A (ja) * 1990-10-15 1992-05-22 Nec Corp 言語処理プログラムの処理方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04149732A (ja) * 1990-10-15 1992-05-22 Nec Corp 言語処理プログラムの処理方式

Also Published As

Publication number Publication date
JPH0760381B2 (ja) 1995-06-28

Similar Documents

Publication Publication Date Title
JPH01306923A (ja) 異種言語間連絡方式
JPH03266039A (ja) フリーフォーマットデータリンク処理方式
US5379407A (en) Error handling in a state-free system
JPH01205331A (ja) 大規模プログラムリンク方式
JPH05297911A (ja) シーケンスコントローラ用シーケンス制御回路
JPH05113818A (ja) 多重プログラム機能を有する数値制御装置
JP2820184B2 (ja) ロードモジュール単体テスト支援装置
JPH06332749A (ja) レジスタ解析処理装置
JPS62216037A (ja) ソ−スライブラリによるメツセ−ジ管理方式
JPH02162420A (ja) オプション・プログラム取込み処理方式
JPS6144339B2 (ja)
JP2754866B2 (ja) データ駆動形計算機用オブジエクトコード生成装置
JPH03157729A (ja) 多重継承制御方式
JPH02130637A (ja) ソースコード翻訳方式
JPH04117523A (ja) プログラム編集装置
JPH07141189A (ja) オーバレイリンク方式
JPH05189212A (ja) リンキング方法
JPH01142936A (ja) 情報連結方法
JPH01191232A (ja) 外部モジュール獲得方式
JPH04270422A (ja) プリコンパイル処理方式
JPS6344240A (ja) プログラム処理制御方式
JPH02178845A (ja) データベース操作言語のプリコンパイル方式
JPH0423038A (ja) プログラム・ドキュメント自動生成装置
JPH0390931A (ja) Rom化プログラムの生成方法
JPH02148220A (ja) プログラムの選択複写方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees