JPH04335425A - プログラム作成装置 - Google Patents

プログラム作成装置

Info

Publication number
JPH04335425A
JPH04335425A JP13601691A JP13601691A JPH04335425A JP H04335425 A JPH04335425 A JP H04335425A JP 13601691 A JP13601691 A JP 13601691A JP 13601691 A JP13601691 A JP 13601691A JP H04335425 A JPH04335425 A JP H04335425A
Authority
JP
Japan
Prior art keywords
global symbol
object code
global
symbol
information
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
Application number
JP13601691A
Other languages
English (en)
Inventor
Tomoshi Fukui
知史 福井
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 JP13601691A priority Critical patent/JPH04335425A/ja
Publication of JPH04335425A publication Critical patent/JPH04335425A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、オブジェクトコードモ
ジュールおよびライブラリをリンケージエディタにより
連結してプログラムを作成するプログラム作成装置に利
用され、特に、リンケージエディタのシンボル情報連結
方式に関する。
【0002】
【従来の技術】図8は従来のプログラム作成装置の一例
におけるリンケージエディタのシンボル情報連結方式の
構成を示すHIPO図、および図9はその開発手順の説
明図である。
【0003】まず、従来技術の開発手順を図9に従って
説明する。図9において、601はアセンブリ言語で記
述したソースプログラムソース(ソース)、602はコ
ンパイラ言語で記述したソースプログラム、603、6
04、605および606はオブジェクトコードモジュ
ール(obj)、607はライブラリ(lib)、なら
びに608はロードモジュールである。
【0004】ソフトウェアを含むシステムを開発する場
合、一般にソースプログラムの作成により開始する。そ
れらのソースプログラム601および602をコンパイ
ルあるいはアセンブルし、オブジェクトコードモジュー
ル603および604を生成する。そのための処理系が
コイパイラあるいはアセンブラである。また事前に開発
しておいたプログラムをオブジェクトコードモジュール
605および606の形式から、ライブラリアンを用い
てライブラリ607の形式に変換し、必要なオブジェク
トおよびライブラリをリンケージエディタを用いてロー
ドモジュール608を作成する。よってライブラリは複
数個のオブジェクトコードモジュールの集合体である。
【0005】それぞれのオブジェクトコードモジュール
において、データを参照するため、あるいは、ある命令
コードの位置を一意的に決定するため等に、シンボルを
用いる。さらにシンボルには局所シンボルと大域シンボ
ルの2種類がある。
【0006】局所シンボルとは、一つのモジュール内部
でのみ有効であり、外部のモジュールのシンボルには影
響しない。大域シンボルにはパブリックシンボルおよび
セグメントシンボル等がある。大域シンボルは、モジュ
ール内部はもちろん、外部モジュールにまで影響を及ぼ
し、連結する全てのオブジェクトコードモジュールにお
いて、シンボル同士を解決するための識別子として用い
られる。いわゆる外部参照である。
【0007】このようなオブジェクトコードモジュール
に含まれる大域シンボルを解決し、次にロードモジュー
ルを作成する。そのための処理系がリンケージエディタ
である。
【0008】次に、図8によりオブジェクトコードモジ
ュールおよびライブラリを連結する従来の方式を説明す
る。図8において、501はリンケージエディタ、50
2はオブジェクトコードモジュール(OBJ)、503
はライブラリ(LIB)、および504はロードモジュ
ールを示す。
【0009】オペレータは1個以上のオブジェクトコー
ドモジュール502および0個以上のライブラリ503
を指定し、連結を指示する。オブジェクトコードモジュ
ール502は、オブジェクトを構成する複数のレコード
で構成されている。レコードの種類には、実データレコ
ード、大域シンボル情報レコード、セグメント(セクシ
ョン)情報レコード、および実データ修正情報レコード
等がある。
【0010】リンケージエディタ501は、オペレータ
の指定したオブジェクトコードモジュール502ごとに
、それぞれのセグメントに対し、そのセグメントの大き
さをセグメント情報レコードにより得、さらに大域シン
ボル情報テーブルを大域シンボル情報レコードにより作
成する。各同名セグメントは連続に位置するように連結
する。大域シンボル情報テーブルは、外部参照のシンボ
ル情報を解決するために定義情報の大域シンボル情報レ
コードを、指定したオブジェクトコードモジュール中の
レコードが見つかるまで検索し、もし見つからなければ
指定したライブラリ中のオブジェクトコードモジュール
に対しても検索する。これを繰り返すことにより、1個
の定義情報の大域シンボルと0個以上の外部参照のシン
ボル情報とがすべて解決される。そして解決が完了すれ
ば、ロードモジュール504を出力する。
【0011】そこで、プログラムを作成する際、ある関
数を定義し、別のモジュールでその関数を呼ぶために関
数名としてパブリックシンボルを用いる。ここで、アセ
ンブリ言語で記述したソースプログラムで作成したオブ
ジェクトコードモジュール同士を連結するためには、使
用するソースプログラム上のパブリックシンボルを統一
しておけば、オブジェクトコードモジュール上のパブリ
ックシンボルも統一されるので問題ない。また同一のコ
ンパイラ言語で記述したソースプログラムで作成したオ
ブジェクトコードモジュール同士を連結することも前記
と同様である。これはコンパイラ言語で記述したソース
プログラム上のパブリックシンボルがそのままオブジェ
クトコードモジュール上のパブリックシンボルに翻訳さ
れているとは限らないからである。つまり、ソースプロ
グラム上のパブリックシンボルが、オブジェクトコード
モジュール上のパブリックシンボルに変換する際、無変
換、あるいは同一変換規則のもの同士を連結するのは可
能である。
【0012】例えば、コンパイラ言語で記述したソース
プログラム上のパブリックシンボル「func」が、オ
ブジェクトコードモジュール上で「外1」と変換されて
いるとする。
【外1】
【0013】このソースプログラム上の前記パブリック
シンボル「func」をアセンブリ言語で記述するモジ
ュール内で参照するときは、「外1」と記述しなければ
ならない。もちろんコンパイラ言語によって、その変換
規則は一様でない。また別のコンパイラ言語でソースプ
ログラム上の前記シンボルが、オブジェクトコードモジ
ュール上で「外2」変換されていたならば、もはや解決
ができない。
【外2】
【0014】つまり、同一のソースプログラムを、同じ
コンパイラ言語の異なる処理系によりオブジェクトコー
ドモジュールに変換する場合、出力する大域シンボル形
式が異なる可能性があるので、アセンブリ言語で記述し
たモジュールでの参照をその度に修正しなければならな
いことになる。また同一コンパイラ言語の異なる処理系
では、解決不能になる場合がある。
【0015】
【発明が解決しようとする課題】以上説明したように、
従来のプログラム作成装置におけるリンケージエディタ
のシンボル情報連結方式は、コンパイラ言語の処理系に
より出力される大域シンボル形式が異なるため、前記処
理系により出力したオブジェクトコードモジュールと、
アセンブリ言語で記述したソースプログラムをアセンブ
ルしたオブジェクトコードモジュールとを連結する場合
、コンパイラ言語の大域シンボルの出力形式を理解し、
アセンブリ言語でソースプログラムを記述するときの、
大域シンボル記述に修正が伴う欠点がある。また同一の
コンパイラ言語であっても、異なる処理系では解決不能
になる場合を生じる欠点がある。
【0016】本発明の目的は、前記の欠点を除去するこ
とにより、異なる処理系により作成された同種のオブジ
ェクトコードモジュールの連結が可能で、しかも容易に
行うことができる、リンケージエディタのシンボル情報
連結方式を有するプログラム作成装置を提供することに
ある。
【0017】
【課題を解決するための手段】本発明は、連結するオブ
ジェクトコードモジュールとライブラリとの中に含まれ
る大域シンボル情報を格納した大域シンボル情報テーブ
ルを作成する手段と、前記オブジェクトコードモジュー
ルおよび前記ライブラリ中に含まれる大域シンボル同士
の相互参照を解決する手段とを備えたプログラム作成装
置において、前記オブジェクトコードモジュールと1対
1に対応づけた大域シンボル変換情報を格納する手段を
備え、前記大域シンボル情報テーブルを作成する手段は
、前記大域シンボル情報テーブルを作成する際に、前記
オブジェクトコードモジュール内の大域シンボル情報を
前記大域シンボル変換情報により変換を行う手段を含む
ことを特徴とする。
【0018】
【作用】オブジェクトモジュールと1対1に対応づけた
大域シンボル変換情報をその格納手段に格納しておき、
大域シンボル情報テーブルを作成する際に、オブジェク
トコードモジュール内の大域シンボル情報を大域シンボ
ル変換情報により変換を行い、大域シンボル情報テーブ
ルの更新を行う。
【0019】従って、異なる処理系により作成された同
種のオブジェクトコードモジュールの連結が可能で、し
かも容易に行うことができる。
【0020】
【実施例】以下、本発明の実施例について図面を参照し
て説明する。
【0021】図1は本発明のプログラム作成装置の一実
施例におけるリンケージエディタのシンボル情報連結方
式を示すHIPO図、および図2は本実施例のブロック
構成図である。
【0022】本実施例は、連結を行うオブジェクトコー
ドモジュール(OBJ)102とライブラリ(LIB)
103との中に含まれる大域シンボル情報を格納した大
域シンボル情報テーブルを作成する手段と、オブジェク
トコードモジュール102およびライブラリ103中に
含まれる大域シンボル同士の相互参照を解決する手段と
を含むリンケージエディタ101を備えたプログラム作
成装置において、本発明の特徴とするところの、オブジ
ェクトコードモジュール102と1対1に対応づけた大
域シンボル変換情報105を格納する手段を備え、リン
ケージエディタ101は、前記大域シンボル情報テーブ
ルを作成する際に、オブジェクトコードモジュール10
2内の大域シンボル情報を大域シンボル変換情報105
により変換を行う手段を含んでいる。
【0023】ここで、本実施例のプログラム作成装置は
、CPU202および主記憶装置203を含む開発コン
ピュータ201と、外部記憶装置204と、入出力装置
205とを含んで構成される。そして、図1に示すオブ
ジェクトコードモジュール102、ライブラリ103、
ロードモジュール104および大域シンボル変換情報1
05は、それぞれファイルとして外部記憶装置204に
含まれ、リンケージエディタ101は主記憶装置203
に記憶される。
【0024】次に、本実施例の動作について始めに全体
的な説明を行い、次に、二つの動作モードに分けて詳細
に説明する。
【0025】リンケージエディタ101は、大域シンボ
ル情報を持つオブジェクトコードモジュール102を、
大域シンボル変換情報105により、大域シンボル情報
を変換し、大域シンボル同士を解決する。この際、ライ
ブラリ103中のオブジェクトコードを連結してもよい
。その結果、ロードモジュール104を作成する。大域
シンボルの変換は、当該のオブジェクトコードモジュー
ル102の、規定の型の大域シンボル情報の全てを大域
シンボル変換情報105により変換する。
【0026】〔動作モード1〕動作モード1は、オペレ
ータの指定したオブジェクトコードモジュールに対応す
る大域シンボル変換情報をファイルで持つものである。
【0027】図3はその場合の大域シンボル処理部分の
流れ図である。
【0028】オペレータが指定したオブジェクトコード
(OBJ)モジュールを先頭から順に以下の処理を行う
。始めに、オブジェクトコードモジュールが存在するか
を判定し(ステップS1)、存在する場合、そのオブジ
ェクトコードモジュールに対応する大域シンボル変換情
報ファイルが存在するかを判定し(ステップS2)、存
在する場合その情報を読む(ステップS3)。ここで、
オブジェクトコードモジュールのファイル名が「mai
n.obj」である場合、大域シンボル変換情報ファイ
ルを例えば「main.tr」として持つものとする。 次に、そのオブジェクトコードモジュールにレコードが
存在するかを判定し(ステップS4)、存在する場合そ
のオブジェクトコードモジュールをレコード単位で読む
(ステップS5)。次に、読んだレコードがシンボルレ
コードかを判定し(ステップS6)。読んだレコードが
大域シンボル情報レコードならば、大域シンボルを変換
し(ステップS7)、大域シンボル情報テーブルを更新
しステップS4に戻る(ステップS8)。
【0029】また、ステップS1でオブジェクトコード
モジュールが存在しなければこの処理を終りとし、ステ
ップS2で大域シンボル変換情報ファイルが存在しなけ
れば、ステップS4に飛び、ステップS4でレコードが
存在しなければステップS1に戻り、ステップS6でシ
ンボルレコードでないときはステップS4に戻る。
【0030】なお、大域シンボル情報レコード以外のレ
コードの処理は、従来の処理と同様である。
【0031】以上は前述のように、オペレータが指定し
たオブジェクトコードモジュールを先頭から順に行うが
、それにより未解決の大域シンボルがあれば、指定のラ
イブラリ中の各オブジェクトコード部に対しても同様に
行う。
【0032】図4は図3のステップS7の大域シンボル
変換処理部分の流れ図である。
【0033】以下の処理を大域シンボル変換情報が存在
するまで行う。始めに、シンボル変換情報が存在するか
を判定し(ステップS11)、存在しなければ終りとし
、存在し、文字の追加の場合、文字を追加し(ステップ
S12、S13)、文字の削除の場合、文字を削除する
(ステップS14、S15)。
【0034】
【表1】 表1はその大域シンボル変換処理を記述するための大域
シンボル変換情報とその形式の一例である。これは、パ
ブリックシンボルおよびセグメントシンボルにのみ処理
する例である。 #1:パブリックシンボルの前に〈文字列1〉、後に〈
文字列2〉を追加する。 #2:パブリックシンボルの前の〈文字数1〉分、後の
〈文字数2〉分、文字を削除する。 #3:セグメントシンボルの前に〈文字列1〉、後に〈
文字列2〉を追加する。 #4:セグメントシンボルの前の〈文字数1〉分、後の
〈文字数2〉分、文字を削除する。
【0035】次に、動作モード1について図5に示す具
体例を用いて詳述する。
【0036】ここで図5はファイル構成を示す説明図で
、301はアセンブリ言語で記述したソースプログラム
、302はコンパイラAで翻訳するソースプログラム、
303はコンパイラBで翻訳するソースプログラム、3
04はソースプログラム301をアセンブルして作成し
たオブジェクトコードモジュール、305はソースプロ
グラム302をコンパイルして作成したオブジェクトコ
ードモジュール、306はソースプログラム303をコ
ンパイルして作成したオブジェクトコードモジュール、
307はオブジェクトコードモジュール305の大域シ
ンボルを変換するための大域シンボル変換情報ファイル
、308はオブジェクトコードモジュール306の大域
シンボルを変換するための大域シンボル変換情報ファイ
ル、および309はリンケージエディタが出力するロー
ドモジュールである。
【0037】ここでは、アセンブリ言語で記述したパブ
リックシンボル「func」とC言語で記述したソース
プログラム上のパブリックシンボル「func」がCコ
ンパイラAとBにより、それぞれオブジェクトコードモ
ジュール上のパブリックシンボル「外1」と「外2」に
変換され、これらを解決する例を示す。ここで、オブジ
ェクトコードモジュールのファイル名の終わりに「.O
BJ」、大域シンボル変換情報のファイル名の終わりに
「.TR」、リンケージエディタが作成するロードモジ
ュールファイル名の終わりに「.EXE」がそれぞれ付
加するものとする。さらに、シンボルを統一する手段と
して、コンパイラAにより変換したオブジェクトコード
モジュール「P2.OBJ」305上の「外1」を「f
unc」に、コンパイラBにより変換したオブジェクト
コードモジュール「P3.OBJ」306上の「外2」
を「func」に、それぞれ変更する例を考える。
【0038】本具体例でオブジェクトコードモジュール
「P1.OBJ」304、「P2.OBJ」305およ
び「P3.OBJ」306を連結する際、各オブジェク
トコードモジュールには、前述の実データレコード、大
域シンボル情報レコード、セグメント情報レコードおよ
び実データ修正情報レコードが含まれている。オブジェ
クトコードモジュール「P1.OBJ」304、「P2
.OBJ」305および「P3.OBJ」306は、こ
の順にオペレータが指定したとして連結処理を行う。
【0039】図3に基づいて説明すると、オブジェクト
コードモジュール「P1.OBJ」304が存在し(ス
テップS1)、これを連結する。しかしこれに対応する
大域シンボル変換情報ファイル「P1.TR」は存在し
ない(ステップS2)。次に、オブジェクトコードモジ
ュール「P1.OBJ」304に含まれる各レコード処
理を行う(ステップS4、S5)。大域シンボル情報レ
コード以外のレコード処理は従来と同じである。しかし
大域シンボル情報レコードの場合(ステップS6)、大
域シンボルを変換したうえ(ステップS7)、大域シン
ボル情報テーブルを更新する(ステップS8)。ここで
シンボルの変換処理は、図4のステップS11で、大域
シンボル変換情報が存在しないので何も行わない。
【0040】次に、指定したコンパイラAにより変換し
たオブジェクトコードモジュール「P2.OBJ」30
5が存在し(ステップS1)、これを連結する。しかも
これに対応する大域シンボル変換情報ファイル「P2.
TR」307も存在する(ステップS2)。次にこの大
域シンボル変換情報ファイル「P2.TR」307を読
む(ステップS3)。この場合の大域シンボル変換情報
の内容を、「D1P」にする。次に、オブジェクトコー
ドモジュール「P2.OBJ」105に含まれる各レコ
ード処理を行う(ステップS4、S5)。大域シンボル
情報レコード以外のレコード処理は従来と同じである。 しかし大域シンボル情報レコードの場合(ステップS6
)、大域シンボルを変換したうえ(ステップS7)、大
域シンボル情報テーブルを更新する(ステップS8)。
【0041】ここで、シンボルの変換処理は、図4およ
び表1で説明したように大域シンボル変換情報が存在す
るので(ステップS11)、以下の処理を行う。この場
合、大域シンボル変換情報は「D1P」のみであるので
、先頭の文字「D」により文字削除と判断する(ステッ
プS14)。次に与えた〈文字数1〉が「1」であり、
文字「P」によりパブリックシンボルを指示しているの
で(表1#2)、これにより読み込まれた大域シンボル
情報レコードのうち、パブリックシンボルの先頭1文字
削除を行う。これによりオブジェクトコードモジュール
「P2.OBJ」305上のパブリックシンボル「外1
」の先頭1文字を削除し「func」に変換できる。
【0042】次に指定した、コンパイラBにより変換し
たオブジェクトコードモジュール「P3.OBJ」30
6が存在し(ステップS1)、これを連結する。しかも
これに対応する大域シンボル変換情報ファイル「P3.
TR」308も存在する(ステップS2)。次にこの大
域シンボル変換情報ファイル「P3.TR」308を読
む(ステップS3)。この場合の大域シンボル変換情報
の内容を、「DP1」にする。次にオブジェクトコード
モジュール「P3.OBJ」306に含まれる各レコー
ド処理を行う(ステップS4、S5)。大域シンボル情
報レコード以外のレコード処理は従来と同じである。し
かし大域シンボル情報レコードの場合(ステップS6)
、大域シンボルを変換したうえ(ステップS7)、大域
シンボル情報テーブルを更新する(ステップS8)。
【0043】ここで、シンボルの変換処理は、図4およ
び図5で説明したように大域シンボル変換情報が存在す
るので(ステップS11)、以下の処理を行う。この場
合、大域シンボル変換情報は「DP1」のみであるので
、先頭の文字「D」により文字削除と判断する(ステッ
プS14)。次に、与えた文字「P」によりパブリック
シンボルを指示しており、〈文字数2〉が「1」である
ので(表1#2)、これにより読み込まれた大域シンボ
ル情報レコードのうち、パブリックシンボルの末尾1文
字削除を行う。これによりオブジェクトコードモジュー
ル「P3.OBJ」306上のパブリックシンボル「外
2」の末尾1文字を削除し「func」に変換できる。
【0044】〔動作モード2〕動作モード2は、オペレ
ータが指定するオブジェクトコードモジュール名に、大
域シンボル変換情報を付加する形で指定するものである
【0045】図6はこの場合の大域シンボル処理部分の
流れ図である。
【0046】オペレータが指定したオブジェクトコード
モジュールを先頭から順に以下の処理を行う。始めに、
オブジェクトコードモジュールが存在するかを判定し(
ステップS21)、オブジェクトコードモジュールが存
在し、それに対応する大域シンボル変換情報が存在する
場合(ステップS22)、そのシンボル変換情報を獲得
する(ステップS23)。次に、そのオブジェクトコー
ドモジュールをレコード単位で読み(ステップS25)
、それが終わるまで以下を繰り返す。読んだレコードが
大域シンボル情報レコードならば(ステップS26)、
大域シンボルを変換し(ステップS27)、大域シンボ
ル情報テーブルを更新する(ステップS28)。 大域シンボル情報レコード以外のレコードの処理は従来
の処理と同様である。
【0047】以上は前述のようにオペレータが指定した
オブジェクトコードモジュールを先頭から順に行うが、
それにより未解決の大域シンボルがあれば、指定のライ
ブラリ中の各オブジェクトコード部に対しても同様に行
う。
【0048】
【表2】 表2は図6のステップS27でその大域シンボル処理を
記述するための変換情報とその形式の一例である。これ
らをオペレータの指定するオブジェクトコードモジュー
ルの直後に付加して指定する。ここで〈区切文字〉はオ
ブジェクトコードモジュール名に含まれない文字であり
、しかも文字追加を行うことのない文字をリンケージエ
ディタが規定する。これは、パブリックシンボルおよび
セグメントシンボルにのみ処理する例である。 #1:パブリックシンボルの前に〈文字列1〉、後に〈
文字列2〉を追加する。 #2:パブリックシンボルの前の〈文字数1〉分、後の
〈文字数2〉分、文字を削除する。 #3:セグメントシンボルの前に〈文字列1〉、後に〈
文字列2〉を追加する。 #4:セグメントシンボルの前の〈文字数1〉分、後の
〈文字数2〉分、文字を削除する。
【0049】次に、動作モード2について図7に示す具
体例を用いて詳述する。ここで、図7は、ファイル構成
を示す説明図で、401はリンケージエディタ、402
はオブジェクトコードモジュール名、ライブラリ名、ロ
ードモジュール名を記述するファイル、ならびに403
はロードモジュールである。
【0050】以下、前述の動作モード1の処理例と同じ
例で説明する。リンケージエディタ「LINK.EXE
」401に与えるファイル(以下、リンクファイルとい
う。)「MAKE.LNK」402を以下のように指定
する。LINK.EXE  @MAKE.LNKこれは
、連結するべきオブジェクトコードモジュール、および
ロードモジュール403のファイル名を記述したテキス
トファイル名をコマンドラインから入力することにより
、間接的に複数のオブジェクトコードモジュールを連結
するものとする。
【0051】従来のリンクファイル「MAKE.LNK
」は、 P1.OBJ  & P2.OBJ  & P3.OBJ P.EXE と記述していた。文字「&」は継続行を示すものである
【0052】ここで、大域シンボルを統一する手段とし
て、図5のコンパイラAにより変換したオブジェクトコ
ードモジュール「P2.OBJ」305上の「外1」を
「func」に、コンパイラBにより変換したオブジェ
クトコードモジュール「P3.OBJ」306上の「外
2」を「func」に、それぞれ変更する例を考える。 アセンブラにより変換したオブジェクトコードモジュー
ル「P1.OBJ」304が存在し(ステップS21)
、これを連結する。しかしこれに対応する大域シンボル
変換情報は存在しない(ステップS22)。次にオブジ
ェクトコードモジュール「P1.OBJ」304に含ま
れる各レコード処理を行う(ステップS24、S25)
。大域シンボル情報レコード以外のレコード処理は従来
と同じである。しかし大域シンボル情報レコードの場合
(ステップS26)、大域シンボルを変換したうえ(ス
テップS27)、大域シンボル情報テーブルを更新する
(ステップS28)。ここでシンボルの変換処理は、大
域シンボル変換情報が存在しないので(ステップS22
)、何も行わない。
【0053】次に、指定したコンパイラAにより変換し
たオブジェクトコードモジュール「P2.OBJ」30
5が存在し(ステップS21)、これを連結する。しか
もこれに対応する大域シンボル変換情報が存在し(ステ
ップS22)、この内容を、図7のファイル「MAKE
.LNK」402に示すように、「+D1P」とする。 次に、この大域シンボル変換情報を獲得する(ステップ
S23)。ここで、文字「+」は区切文字であり、オブ
ジェクトコードモジュールファイル名、大域シンボルに
は使用しないものである。次にオブジェクトコードモジ
ュール「P2.OBJ」305に含まれる各レコード処
理を行う(ステップS24、S25)。大域シンボル情
報レコード以外のレコード処理は従来と同じである。し
かし大域シンボル情報レコードの場合(ステップS26
)、大域シンボルを変換したうえ(ステップS27)、
大域シンボル情報テーブルを更新する(ステップS28
)。
【0054】ここで、シンボルの変換処理は、図4およ
び表2で説明したように、大域シンボル変換情報が存在
するので(ステップS11)、以下の処理を行う。この
場合大域シンボル変換情報は「D1P」のみであるので
、先頭の文字「D」により文字削除と判断する(ステッ
プS14)。次に与えた〈文字数1〉が「1」であり、
文字「P」によりパブリックシンボルを指示しているの
で(表2#2)、これにより読み込まれた大域シンボル
情報レコードのうち、パブリックシンボルの先頭1文字
削除を行う。これにより、オブジェクトコードモジュー
ル「P2.OBJ」305上のパブリックシンボル「外
1」の先頭1文字を削除し「func」に変換できる。
【0055】次に、指定したコンパイラBにより変換し
たオブジェクトコードモジュール「P3.OBJ」30
6が存在し(ステップS21)、これを連結する。しか
もこれに対応する大域シンボル変換情報が存在し(ステ
ップS22)、この内容を、図7のファイル「MAKE
.LNK」402に示すように、「+DP1」とする。 次に、この大域シンボル変換情報を獲得する(ステップ
S23)。次に、オブジェクトコードモジュール「P3
.OBJ」306に含まれる各レコード処理を行う(ス
テップS24、S25)。大域シンボル情報レコード以
外のレコード処理は従来と同じである。しかし大域シン
ボル情報レコードの場合(ステップS26)、大域シン
ボルを変換したうえ(ステップS27)、大域シンボル
情報テーブルを更新する(ステップS28)。
【0056】ここで、シンボルの変換処理は、図4およ
び表2で説明したように、大域シンボル変換情報が存在
するので(ステップS11)、以下の処理を行う。この
場合大域シンボル変換情報は「DP1」のみであるので
、先頭の文字「D」により文字削除と判断する(ステッ
プS14)。次に与えた文字「P」によりパブリックシ
ンボルを指示しており、〈文字数2〉が「1」であるの
で(表2#2)、これにより読み込まれた大域シンボル
情報レコードのうち、パブリックシンボルの末尾1文字
削除を行う。これにより、オブジェクトコードモジュー
ル「P3.OBJ」306上のパブリックシンボル「外
2」の末尾1文字を削除し「func」に変換できる。
【0057】
【発明の効果】以上説明したように、本発明は、オブジ
ェクトコードモジュールと1対1に対応づけた大域シン
ボル変換情報により、大域シンボルを変換することによ
り、異なる処理系により作成された同種のオブジェクト
コードモジュールの連結を可能にし、しかも容易に連結
できる効果がある。また、モジュールの変更等に伴って
、セグメントの配置変更が好ましい場合にも対応できる
。よって連結するために、大域シンボル記述の修正が不
要となる効果も得られる。
【図面の簡単な説明】
【図1】本発明の一実施例におけるリンケージエディタ
のシンボル連結方式を示すHIPO図。
【図2】本発明の一実施例を示すブロック構成図。
【図3】本発明の一実施例の動作モード1における大域
シンボル処理部分の流れ図。
【図4】図3の大域シンボルの変換処理部分の流れ図。
【図5】動作モード1についての具体的なファイル構成
例を示す説明図。
【図6】本発明の一実施例の動作モード2における大域
シンボル処理部分の流れ図。
【図7】動作モード2についての具体的なファイル構成
を示す説明図。
【図8】従来例におけるリンケージエディタのシンボル
連結方式を示すHIPO図。
【図9】従来例における開発手順を示す説明図。
【符号の説明】
101、401、501  リンケージエディタ102
、304、305、306、502、603、604、
605、606  オブジェクトコードモジュール10
3、503、607  ライブラリ104、309、4
03、504、608  ロードモジュール 105  大域シンボル変換情報 201  開発用コンピュータ 202  CPU 203  主記憶装置 204  外部記憶装置 205  入出力装置 301、302、303、601、602  ソースプ
ログラム 307、308  大域シンボル変換情報ファイル40
2  リンクファイル S1〜S8、S11〜S15、S21〜S28  ステ
ップ

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】  連結するオブジェクトコードモジュー
    ルとライブラリとの中に含まれる大域シンボル情報を格
    納した大域シンボル情報テーブルを作成する手段と、前
    記オブジェクトコードモジュールおよび前記ライブラリ
    中に含まれる大域シンボル同士の相互参照を解決する手
    段とを備えたプログラム作成装置において、前記オブジ
    ェクトコードモジュールと1対1に対応づけた大域シン
    ボル変換情報を格納する手段を備え、前記大域シンボル
    情報テーブルを作成する手段は、前記大域シンボル情報
    テーブルを作成する際に、前記オブジェクトコードモジ
    ュール内の大域シンボル情報を前記大域シンボル変換情
    報により変換を行う手段を含むことを特徴とするプログ
    ラム作成装置。
JP13601691A 1991-05-10 1991-05-10 プログラム作成装置 Pending JPH04335425A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13601691A JPH04335425A (ja) 1991-05-10 1991-05-10 プログラム作成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13601691A JPH04335425A (ja) 1991-05-10 1991-05-10 プログラム作成装置

Publications (1)

Publication Number Publication Date
JPH04335425A true JPH04335425A (ja) 1992-11-24

Family

ID=15165217

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13601691A Pending JPH04335425A (ja) 1991-05-10 1991-05-10 プログラム作成装置

Country Status (1)

Country Link
JP (1) JPH04335425A (ja)

Similar Documents

Publication Publication Date Title
US4791558A (en) System and method for generating an object module in a first format and then converting the first format into a format which is loadable into a selected computer
US5701487A (en) Method and apparatus for displaying locations of errors detected inside software macro calls
US20040158820A1 (en) System for generating an application framework and components
US6219831B1 (en) Device and method for converting computer programming languages
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
CN103218294A (zh) 一种嵌入式系统的调试方法、调试转换装置和系统
EP0520708B1 (en) Method and apparatus for converting high level form abstract syntaxes into an intermediate form
CN112130952A (zh) 多语言显示方法、装置、设备及产品
US6381736B1 (en) Method for compile-time type-checking of arguments for externally-specified format strings
JP2008226010A (ja) コンパイル方法及びコンパイル装置
US20010039650A1 (en) Method in a software controlled system
JPH04335425A (ja) プログラム作成装置
CN113448591A (zh) 一种基于python快速创建iOS工程的方法
JP2007140845A (ja) プログラム管理方法及びプログラムの移行支援装置
JP3266097B2 (ja) 非リエントラントプログラムの自動リエントラント化方法及びシステム
JP7059757B2 (ja) Api処理方法、端末、api処理プログラム
JPS6349856A (ja) 隣接構成デ−タベ−スを生成する方法
JPH1185536A (ja) 原始プログラムのエラー自動修正装置及び方法
JP2609820B2 (ja) プログラム管理方法
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
JP2722684B2 (ja) ファイルシステムの検索装置
WO1984002022A1 (en) Dynamic data base representation
JP3279706B2 (ja) オンライン・コンパイル方式
CN117827171A (zh) 一种通过jsonSchema文件生成项目源码的方法及装置
CN117369824A (zh) 基于接口文档的代码生成方法、装置、设备及存储介质