JPH01237832A - プログラムリンケージ方式 - Google Patents
プログラムリンケージ方式Info
- Publication number
- JPH01237832A JPH01237832A JP6487288A JP6487288A JPH01237832A JP H01237832 A JPH01237832 A JP H01237832A JP 6487288 A JP6487288 A JP 6487288A JP 6487288 A JP6487288 A JP 6487288A JP H01237832 A JPH01237832 A JP H01237832A
- Authority
- JP
- Japan
- Prior art keywords
- instruction code
- external
- variable
- address
- processing
- 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
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概 要〕
ソース・プログラム・ファイルのアセンブル処理におけ
るプログラムリンケージ方式において、ソース・プログ
ラム・ファイルの変更時にリンク処理の時間短縮を可能
にすることを目的とし、コンパイラには、外部変数の参
照あるいは外部関数の呼び出し処理を有するソース・プ
ログラム・ファイルをコンパイルするときに、各命令コ
ードを作成するコード生成処理部に、参照あるいは呼び
出し処理の命令コードを間接アドレッシング命令コード
に展開する間接アドレッシング命令コード処理手段を備
え、リンケージエディタには、コンパイラにより生成さ
れた各オブジェクト・プログラム・ファイルをリンクす
る結合処理部を介して、設定された各アドレスをエント
リする外部シンボル・変数エントリテーブル作成処理手
段と、未定義アドレス設定処理部で間接アドレッシング
命令コードのアドレス部に、この外部シンボル・変数エ
ントリテーブルのエントリ対応のアドレスを設定する間
接アドレス設定処理手段とを備える。
るプログラムリンケージ方式において、ソース・プログ
ラム・ファイルの変更時にリンク処理の時間短縮を可能
にすることを目的とし、コンパイラには、外部変数の参
照あるいは外部関数の呼び出し処理を有するソース・プ
ログラム・ファイルをコンパイルするときに、各命令コ
ードを作成するコード生成処理部に、参照あるいは呼び
出し処理の命令コードを間接アドレッシング命令コード
に展開する間接アドレッシング命令コード処理手段を備
え、リンケージエディタには、コンパイラにより生成さ
れた各オブジェクト・プログラム・ファイルをリンクす
る結合処理部を介して、設定された各アドレスをエント
リする外部シンボル・変数エントリテーブル作成処理手
段と、未定義アドレス設定処理部で間接アドレッシング
命令コードのアドレス部に、この外部シンボル・変数エ
ントリテーブルのエントリ対応のアドレスを設定する間
接アドレス設定処理手段とを備える。
〔産業上の利用分野]
本発明は、ソース・プログラム・ファイルのアセンブル
処理において、その変更時にリンク処理の時間短縮を可
能にするプログラムリンケージ方式に関する。
処理において、その変更時にリンク処理の時間短縮を可
能にするプログラムリンケージ方式に関する。
MS−DO3あるいはUNIXなどのO8(オペレーテ
ィング・システム)のもとで、プログラムの入力から実
行までの手順は次のようになる。
ィング・システム)のもとで、プログラムの入力から実
行までの手順は次のようになる。
■ エディタを使って、プログラムをキーボードから入
力し、ファイル(ソース・プログラム・ファイル)に格
納する。
力し、ファイル(ソース・プログラム・ファイル)に格
納する。
■ アセンブラ(コンパイラ)を使って、ソース・プロ
グラムをアセンブル(コンパイル)し、作り出された機
械語のプログラムをファイル(オブジェクト・プログラ
ム・ファイル)に格納する。
グラムをアセンブル(コンパイル)し、作り出された機
械語のプログラムをファイル(オブジェクト・プログラ
ム・ファイル)に格納する。
■ オブジェクト・プログラム・ファイルを他のプログ
ラムとリンケージエディタ(以下、「リンカ」という。
ラムとリンケージエディタ(以下、「リンカ」という。
)により連結し、すぐに実行できる形のロード・モジュ
ール・ファイルを作る。
ール・ファイルを作る。
■ ロード・モジュールを実行する。
なお、リンカは、アセンブルずみ、あるいはコンパイル
ずみのオブジェクト・プログラムをリンクするためのプ
ログラムであるが、プログラムをつなぐときには、未定
義になっているすべてのアドレスに具体的な番地を割り
当てて、全体のプログラムをロード・モジュールにまと
めている。
ずみのオブジェクト・プログラムをリンクするためのプ
ログラムであるが、プログラムをつなぐときには、未定
義になっているすべてのアドレスに具体的な番地を割り
当てて、全体のプログラムをロード・モジュールにまと
めている。
以下、従来のプログラムリンケージ方式をC言語を使用
した例で説明する。
した例で説明する。
main()、funcH)、func2()の各関数
は、それぞれ別々のファイルに格納されているとして、
個別にコンパイルを実行した場合には、オブジェクト・
プログラム(main obLfuncl obj、f
unc2 obj)は、下記に示すようになる。
は、それぞれ別々のファイルに格納されているとして、
個別にコンパイルを実行した場合には、オブジェクト・
プログラム(main obLfuncl obj、f
unc2 obj)は、下記に示すようになる。
(1) main obj
(2) funcl obj
(3) func2 obj
このとき、関数main()およびfuncl()では
、自ファイル中に存在しない関数funcl()および
func2()を呼び出すために、その部分は外部シン
ボル参照となり、コンパイラはそのアドレス部に未定義
アドレスro000」 (下線部分)を設定する。
、自ファイル中に存在しない関数funcl()および
func2()を呼び出すために、その部分は外部シン
ボル参照となり、コンパイラはそのアドレス部に未定義
アドレスro000」 (下線部分)を設定する。
次に、リンカによりオブジェクト・プログラム・ファイ
ルのリンクを行なう場合には、外部シンボル部のアドレ
ス計算を行ない、未定義アドレス部に計算により得たア
ドレス(例えばr0500.、下記下線部分)を設定し
、ロード・モジュール・ファイルを生成する。
ルのリンクを行なう場合には、外部シンボル部のアドレ
ス計算を行ない、未定義アドレス部に計算により得たア
ドレス(例えばr0500.、下記下線部分)を設定し
、ロード・モジュール・ファイルを生成する。
以下、そのロード・モジュール・ファイル(実行形式フ
ァイル)を示す。
ァイル)を示す。
PGROUP:MAIN:
4891:035755 PIJSII B
P4891:035883ECO2SOB SP、+
024891:035B 88ECMOV BP、5
P4891:0350 E8工とξトリ1コ、
CへLL FUNCI4891:036083C
402ADD SP、+024891:03635D
POP BP4891:0364 C3R
ET U PGROUP:FtlNCl: 4891:036555 PUSHBP489
1:036683ECO2SOB SP、+0248
91:03698BECMOV BP、5P4891
:036B E80互OOCへLL FUNC2
4891:036E 83C402ADD SP、+
024891:037150 pop BP
4891:0372 C3RET U PGROUP:FUNC2: 4891:037355 PUSHBP4
891:037483ECO2SOB SP、+0
24891:03778BEC月0ν BP、5P4
891:0379 FF4600 1NCWord
Ptr [BP+00]4891:037C83C40
2八DD SP、+024891:037F5D
pop BP4891:0380
C3RET 〔発明が解決しようとする課題〕 ところで、このような従来のプログラムリンケージ方式
では、リンクを行なうたびに未定義アドレス部にアドレ
スを設定することになり、オブジェクト・プログラム・
ファイルの数が増え、外部シンボル・変数の参照が増加
するにつれて、リンク処理の時間が長くなり、プログラ
ム開発、特にデバッグの効率低下を招く問題点があった
。
P4891:035883ECO2SOB SP、+
024891:035B 88ECMOV BP、5
P4891:0350 E8工とξトリ1コ、
CへLL FUNCI4891:036083C
402ADD SP、+024891:03635D
POP BP4891:0364 C3R
ET U PGROUP:FtlNCl: 4891:036555 PUSHBP489
1:036683ECO2SOB SP、+0248
91:03698BECMOV BP、5P4891
:036B E80互OOCへLL FUNC2
4891:036E 83C402ADD SP、+
024891:037150 pop BP
4891:0372 C3RET U PGROUP:FUNC2: 4891:037355 PUSHBP4
891:037483ECO2SOB SP、+0
24891:03778BEC月0ν BP、5P4
891:0379 FF4600 1NCWord
Ptr [BP+00]4891:037C83C40
2八DD SP、+024891:037F5D
pop BP4891:0380
C3RET 〔発明が解決しようとする課題〕 ところで、このような従来のプログラムリンケージ方式
では、リンクを行なうたびに未定義アドレス部にアドレ
スを設定することになり、オブジェクト・プログラム・
ファイルの数が増え、外部シンボル・変数の参照が増加
するにつれて、リンク処理の時間が長くなり、プログラ
ム開発、特にデバッグの効率低下を招く問題点があった
。
本発明は、このような従来の問題点を解決するもので、
リンク処理時間の短縮を可能とし、特にソース・プログ
ラムの変更に伴うデバッグ作業効率を向上させることが
できるプログラムリンケージ方式を提供することを目的
とする。
リンク処理時間の短縮を可能とし、特にソース・プログ
ラムの変更に伴うデバッグ作業効率を向上させることが
できるプログラムリンケージ方式を提供することを目的
とする。
第1図は、本発明の原理ブロック図である。
第1図(a)において、コンパイラ110は、ソース・
プログラム・ファイル101を構文解析処理部111お
よび外部シンボル・変数テーブル作成処理部113を経
て各命令コードを作成するコード生成処理部115を備
える。
プログラム・ファイル101を構文解析処理部111お
よび外部シンボル・変数テーブル作成処理部113を経
て各命令コードを作成するコード生成処理部115を備
える。
このコード生成処理部115に備えられた間接アドレッ
シング命令コード処理手段117は、外部変数の参照あ
るいは外部関数の呼び出し処理を有するソース・プログ
ラム・ファイル101をコンパイルするときに、この参
照あるいは呼び出し処理の命令コードを間接アドレッシ
ング命令コードに展開する。
シング命令コード処理手段117は、外部変数の参照あ
るいは外部関数の呼び出し処理を有するソース・プログ
ラム・ファイル101をコンパイルするときに、この参
照あるいは呼び出し処理の命令コードを間接アドレッシ
ング命令コードに展開する。
第1図(1))において、リンケージエディタ(リンカ
)130の結合処理部131は、コンパイラエ10によ
り生成された各オブジェクト・プログラム・ファイル1
21,123をリンクする。
)130の結合処理部131は、コンパイラエ10によ
り生成された各オブジェクト・プログラム・ファイル1
21,123をリンクする。
外部シンボル・変数エントリテーブル作成処理手段13
3は、リンクにより設定された各アドレスをエントリす
る。
3は、リンクにより設定された各アドレスをエントリす
る。
未定義アドレス設定処理部135に備えられた間接アド
レス設定処理手段137は、間接アドレッシング命令コ
ードのアドレス部に、この外部シンボル・変数エントリ
テーブル133のエントリ対応のアドレスを設定する。
レス設定処理手段137は、間接アドレッシング命令コ
ードのアドレス部に、この外部シンボル・変数エントリ
テーブル133のエントリ対応のアドレスを設定する。
本発明は、ソース・プログラム・ファイルをコンパイル
するときに、ソース・プログラム中に外部変数の参照あ
るいは外部関数の呼び出し処理があれば、コンパイラ1
10がこの処理の命令コードを生成する際に、その命令
コードを間接アドレッシング命令コードに展開する。
するときに、ソース・プログラム中に外部変数の参照あ
るいは外部関数の呼び出し処理があれば、コンパイラ1
10がこの処理の命令コードを生成する際に、その命令
コードを間接アドレッシング命令コードに展開する。
リンカ130では、接合処理に続いて外部シンボル・変
数エントリテーブルを生成し、コンパイラが生成した間
接アドレッシング命令コードのアドレス部に、外部シン
ボル・変数エントリテーブル対応のエントリのアドレス
を設定する。
数エントリテーブルを生成し、コンパイラが生成した間
接アドレッシング命令コードのアドレス部に、外部シン
ボル・変数エントリテーブル対応のエントリのアドレス
を設定する。
したがって、リンク処理実行時に前リンク処理により生
成されたロード・モジュール・ファイル(実行形式ファ
イル)があれば、そのテーブルと新しく生成されたテー
ブルの内容を比較し、変更がなければテーブルのエント
リアドレスを更新する処理を実行するだけで、ソース・
プログラム・ファイルの変更に対処することができ、リ
ンク処理の時間短縮を可能にする。
成されたロード・モジュール・ファイル(実行形式ファ
イル)があれば、そのテーブルと新しく生成されたテー
ブルの内容を比較し、変更がなければテーブルのエント
リアドレスを更新する処理を実行するだけで、ソース・
プログラム・ファイルの変更に対処することができ、リ
ンク処理の時間短縮を可能にする。
〔実施例]
以下、図面に基づいて本発明の実施例について詳細に説
明する。
明する。
第2図は、本発明方式によるコンパイラの処理の一例を
示すフローチャートである。
示すフローチャートである。
コンパイラでは、入力されたソース・プログラム・ファ
イルの構文解析処理を行ない、文法などの誤りをチエツ
クする。このソース・プログラムに誤りがなければ、外
部シンボル・変数テーブルが生成され、続いて対応する
命令コード(直接アドレッシング命令コード)が生成さ
れる。
イルの構文解析処理を行ない、文法などの誤りをチエツ
クする。このソース・プログラムに誤りがなければ、外
部シンボル・変数テーブルが生成され、続いて対応する
命令コード(直接アドレッシング命令コード)が生成さ
れる。
このとき、ソース・プログラム中に外部変数の参照や外
部関数(外部サブルーチン)の呼び出し処理がある場合
には、それに対応する命令コードを間接アドレッシング
命令コードに置き換えながら、オブジェクト・プログラ
ム・ファイルが生成されていく。この−点鎖線で囲む処
理は、本発明を実現するために付加された処理である。
部関数(外部サブルーチン)の呼び出し処理がある場合
には、それに対応する命令コードを間接アドレッシング
命令コードに置き換えながら、オブジェクト・プログラ
ム・ファイルが生成されていく。この−点鎖線で囲む処
理は、本発明を実現するために付加された処理である。
第3図は、本発明方式によるリンカの処理の一例を示す
フローチャートである。
フローチャートである。
リンカでは、入力されたオブジェクト・プログラム・フ
ァイル群を結合し、各外部シンボル・変数テーブルから
計算によりそれらのエントリを求め、外部シンボル・変
数エントリテーブルを生成する。
ァイル群を結合し、各外部シンボル・変数テーブルから
計算によりそれらのエントリを求め、外部シンボル・変
数エントリテーブルを生成する。
この外部シンボル・変数エントリテーブル生成処理にお
いて、前リンク処理により生成されたロード・モジュー
ル・ファイルが存在する場合には各テーブルの比較を行
ない、その構成に変化があるか否かを調べる。変化があ
る場合には、外部シンボル・変数エントリテーブルの再
構成を行ない、変化がない場合にはエントリのみを更新
した外部シンボル・変数エントリテーブルを生成する。
いて、前リンク処理により生成されたロード・モジュー
ル・ファイルが存在する場合には各テーブルの比較を行
ない、その構成に変化があるか否かを調べる。変化があ
る場合には、外部シンボル・変数エントリテーブルの再
構成を行ない、変化がない場合にはエントリのみを更新
した外部シンボル・変数エントリテーブルを生成する。
続いて、直接アドレッシング命令コードのアドレス設定
を行なうとともに、外部変数あるいは外部関数に対する
処理を行なわれる命令コードであれば、その未定義アド
レスが設定されている間接アドレッシング命令コードの
アドレス部に、外部シンボル・変数エントリテーブルよ
り対応するエントリのアドレスが設定される。
を行なうとともに、外部変数あるいは外部関数に対する
処理を行なわれる命令コードであれば、その未定義アド
レスが設定されている間接アドレッシング命令コードの
アドレス部に、外部シンボル・変数エントリテーブルよ
り対応するエントリのアドレスが設定される。
なお、このとき外部シンボル・変数エントリテーブルの
再構成が行なわれていない場合には、エントリが更新さ
れているだけであるので、エントリアドレスの変更は不
要である。
再構成が行なわれていない場合には、エントリが更新さ
れているだけであるので、エントリアドレスの変更は不
要である。
この直接アドレス設定および未定義アドレスの設定が完
了し、ロード・モジュールへの変換が終了したら、外部
シンボル・変数エントリテーブルをプログラム部の先頭
に結合したロード・モジュール・ファイルを生成する。
了し、ロード・モジュールへの変換が終了したら、外部
シンボル・変数エントリテーブルをプログラム部の先頭
に結合したロード・モジュール・ファイルを生成する。
なお、−点鎖線で囲む処理は、本発明の特徴的動作を示
す処理である。
す処理である。
第4図は、本発明の実施例方式をC言語を使用した例で
説明する図である。
説明する図である。
図において、関数main()をコンパイルする場合に
は、コンパイラは最初にソース・プログラム・ファイル
(関数main()) 410の構文解析を行ない、誤
りがなければ外部シンボル・変数テーブル431が生成
される。
は、コンパイラは最初にソース・プログラム・ファイル
(関数main()) 410の構文解析を行ない、誤
りがなければ外部シンボル・変数テーブル431が生成
される。
次に、命令コードの生成過程において、ソース・プログ
ラム中に外部変数の参照や外部関数の呼び出し処理■が
ある場合には、コンパイラはそれに対応する命令コード
を間接アドレッシング命令コードに置き換える処理■を
行ない、ソース・プログラム・ファイル410に対応す
るオブジェクト・プログラム・ファイル430を生成し
ていく。なお、この間接アドレッシング命令コードのア
ドレス部には、未定義アドレスro OOOJが設定さ
れる。
ラム中に外部変数の参照や外部関数の呼び出し処理■が
ある場合には、コンパイラはそれに対応する命令コード
を間接アドレッシング命令コードに置き換える処理■を
行ない、ソース・プログラム・ファイル410に対応す
るオブジェクト・プログラム・ファイル430を生成し
ていく。なお、この間接アドレッシング命令コードのア
ドレス部には、未定義アドレスro OOOJが設定さ
れる。
関数main()のコンパイルが完了すると、同様に関
数funcH)をコンパイルする。
数funcH)をコンパイルする。
参照番号420はソース・プログラム・ファイル(関数
funcH))であり、参照番号440はソース・プロ
グラム・ファイル420に対応するオブジェクト・プロ
グラム・ファイル、参照番号441はその外部シンボル
・変数テーブルである。
funcH))であり、参照番号440はソース・プロ
グラム・ファイル420に対応するオブジェクト・プロ
グラム・ファイル、参照番号441はその外部シンボル
・変数テーブルである。
二つのソース・プログラム・ファイル410゜420の
コンパイルが完了したら、リンカによりそれぞれのオブ
ジェクト・プログラム・ファイル430.440を結合
する。
コンパイルが完了したら、リンカによりそれぞれのオブ
ジェクト・プログラム・ファイル430.440を結合
する。
この結合処理において、各オブジェクト・プログラムの
アドレス設定が行なわれ、それに応じて外部シンボル・
変数テーブルのエントリが求められ、外部シンボル・変
数エントリテーブル451が生成される。
アドレス設定が行なわれ、それに応じて外部シンボル・
変数テーブルのエントリが求められ、外部シンボル・変
数エントリテーブル451が生成される。
続いて、間接アドレッシング命令コードのアドレス部に
、外部シンボル・変数エントリテーブル451の対応す
るエントリのアドレスの設定処理■が行なわれる。ここ
では、外部変数iの格納アドレスはr0002J、外部
シンボル・変数エントリテーブル451でそのエントリ
に対応するアドレスはro OOOJであるので、mo
v[0000]、10となる。また、関数main()
で呼び出される関数funcH)の格納アドレスは「0
200ノであり、そのエントリに対応するアドレスは「
0004」であるので、ca 11 [0004]とな
る。
、外部シンボル・変数エントリテーブル451の対応す
るエントリのアドレスの設定処理■が行なわれる。ここ
では、外部変数iの格納アドレスはr0002J、外部
シンボル・変数エントリテーブル451でそのエントリ
に対応するアドレスはro OOOJであるので、mo
v[0000]、10となる。また、関数main()
で呼び出される関数funcH)の格納アドレスは「0
200ノであり、そのエントリに対応するアドレスは「
0004」であるので、ca 11 [0004]とな
る。
このように生成された外部シンボル・変数エントリテー
ブル451がプログラム部の先頭に結合され、ロード・
モジュール・ファイル450が生成される。
ブル451がプログラム部の先頭に結合され、ロード・
モジュール・ファイル450が生成される。
第5図は、本発明方式の特徴的動作を第4図に示すC言
語を使用した例で説明する図である。
語を使用した例で説明する図である。
なお、この動作は第3図で一点鎖線で囲む本発明の特徴
的動作に対応する。
的動作に対応する。
一度ロード・モジュール・ファイル(第4図)が生成さ
れた後に、処理に変更がでた場合でも外部シンボル・変
数テーブルの構成に変更がなければ、外部シンボル・変
数エントリテーブルのエントリに変更ファイルのアドレ
スを設定するだけで対応可能である。
れた後に、処理に変更がでた場合でも外部シンボル・変
数テーブルの構成に変更がなければ、外部シンボル・変
数エントリテーブルのエントリに変更ファイルのアドレ
スを設定するだけで対応可能である。
すなわち、第5図において、ソース・プログラム・ファ
イル410′で、 i ;i+ 1 ; が追加された場合には、オブジェクト・プログラム・フ
ァイル430′では、対応する命令コード(add
[0000]、1)が追加され、ロード・モジュール・
ファイル450′でリンクされた各プログラムのアドレ
スが変更になっても、それに対応して外部シンボル・変
数エントリテーブル451′のエントリを 000c=OO02 020a←0200 のように変更するだけでよい。すなわち、その更新処理
のみを実行するだけでよく、エントリアドレス(roo
oOJ、 ’0002J、 「0004」)は不変
であるので、リンク処理の時間短縮が可能となる。
イル410′で、 i ;i+ 1 ; が追加された場合には、オブジェクト・プログラム・フ
ァイル430′では、対応する命令コード(add
[0000]、1)が追加され、ロード・モジュール・
ファイル450′でリンクされた各プログラムのアドレ
スが変更になっても、それに対応して外部シンボル・変
数エントリテーブル451′のエントリを 000c=OO02 020a←0200 のように変更するだけでよい。すなわち、その更新処理
のみを実行するだけでよく、エントリアドレス(roo
oOJ、 ’0002J、 「0004」)は不変
であるので、リンク処理の時間短縮が可能となる。
上述したように、本発明によれば、−度ロード・モジュ
ール・ファイル(実行形式ファイル)が生成されれば、
ソース・プログラム・ファイルの処理部が変更されても
、外部シンボル・変数に変更(外部変数・関数の追加お
よび削除)がない限り、変更ファイルのみのテーブルア
ドレスの設定およびエントリの変更のみでリンク処理を
行なうことができる。
ール・ファイル(実行形式ファイル)が生成されれば、
ソース・プログラム・ファイルの処理部が変更されても
、外部シンボル・変数に変更(外部変数・関数の追加お
よび削除)がない限り、変更ファイルのみのテーブルア
ドレスの設定およびエントリの変更のみでリンク処理を
行なうことができる。
したがって、ソース・プログラム・ファイルの変更時に
リンク処理の時間短縮が可能となるので、デバッグ作業
の効率を向上させることができ、実用的には極めて有用
である。
リンク処理の時間短縮が可能となるので、デバッグ作業
の効率を向上させることができ、実用的には極めて有用
である。
第1図は本発明の原理ブロック図、
第2図は本発明方式によるコンパイラの処理の一例を示
すフローチャート、 第3図は本発明方式によるリンカの処理の一例を示すフ
ローチャート、 第4回は本発明の実施例方式をC言語を使用した例で説
明する図、 第5図は本発明方式の特徴的動作を第4図に示すC言語
を使用した例で説明する図である。 図において、 101はソース・プログラム・ファイル、110はコン
パイラ、 111は構文解析処理部、 113は外部シンボル・変数テーブル作成処理部、11
5はコード生成処理部、 117は間接アドレッシング命令コード処理手段、12
1.123はオブジェクト・プログラム・ファイル、 130はリンケージエディタ(リンカ)、131は結合
処理部、 133は外部シンボル・変数エントリテーブル作成処理
手段、 135は未定義アドレス設定処理部、 137は間接アドレス設定処理手段、 410.420はソース・プログラム・ファイル、43
0.440はオブジェクト・プログラム・ファイル、 431.441は外部シンボル・変数テーブル、450
はロード・モジュール・ファイル(実行形式ファイル)
、 451は外部シンボル・変数エントリテーブルである。
すフローチャート、 第3図は本発明方式によるリンカの処理の一例を示すフ
ローチャート、 第4回は本発明の実施例方式をC言語を使用した例で説
明する図、 第5図は本発明方式の特徴的動作を第4図に示すC言語
を使用した例で説明する図である。 図において、 101はソース・プログラム・ファイル、110はコン
パイラ、 111は構文解析処理部、 113は外部シンボル・変数テーブル作成処理部、11
5はコード生成処理部、 117は間接アドレッシング命令コード処理手段、12
1.123はオブジェクト・プログラム・ファイル、 130はリンケージエディタ(リンカ)、131は結合
処理部、 133は外部シンボル・変数エントリテーブル作成処理
手段、 135は未定義アドレス設定処理部、 137は間接アドレス設定処理手段、 410.420はソース・プログラム・ファイル、43
0.440はオブジェクト・プログラム・ファイル、 431.441は外部シンボル・変数テーブル、450
はロード・モジュール・ファイル(実行形式ファイル)
、 451は外部シンボル・変数エントリテーブルである。
Claims (1)
- (1)コンパイラ(110)には、外部変数の参照ある
いは外部関数の呼び出し処理を有するソース・プログラ
ム・ファイル(101)をコンパイルするときに、構文
解析処理部(111)および外部シンボル・変数テーブ
ル作成処理部(113)を経て各命令コードを作成する
コード生成処理部(115)に、前記参照あるいは呼び
出し処理の命令コードを間接アドレッシング命令コード
に展開する間接アドレッシング命令コード処理手段(1
17)を備え、 リンケージエディタ(130)には、前記コンパイラ(
110)により生成された各オブジェクト・プログラム
・ファイル(121、123)をリンクする結合処理部
(131)を介して、設定された各アドレスをエントリ
する外部シンボル・変数エントリテーブル作成処理手段
(133)と、未定義アドレス設定処理部(135)で
前記間接アドレッシング命令コードのアドレス部に、こ
の外部シンボル・変数エントリテーブル(133)のエ
ントリ対応のアドレスを設定する間接アドレス設定処理
手段(137)とを備えた ことを特徴とするプログラムリンケージ方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6487288A JPH01237832A (ja) | 1988-03-18 | 1988-03-18 | プログラムリンケージ方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6487288A JPH01237832A (ja) | 1988-03-18 | 1988-03-18 | プログラムリンケージ方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH01237832A true JPH01237832A (ja) | 1989-09-22 |
Family
ID=13270657
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP6487288A Pending JPH01237832A (ja) | 1988-03-18 | 1988-03-18 | プログラムリンケージ方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH01237832A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07110758A (ja) * | 1993-10-12 | 1995-04-25 | Nec Corp | プログラムのコンパイル・リンク方式 |
| JP2009288858A (ja) * | 2008-05-27 | 2009-12-10 | Fuji Xerox Co Ltd | 追加実行可能情報生成装置、情報処理装置、及びプログラム |
-
1988
- 1988-03-18 JP JP6487288A patent/JPH01237832A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07110758A (ja) * | 1993-10-12 | 1995-04-25 | Nec Corp | プログラムのコンパイル・リンク方式 |
| JP2009288858A (ja) * | 2008-05-27 | 2009-12-10 | Fuji Xerox Co Ltd | 追加実行可能情報生成装置、情報処理装置、及びプログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Fauth et al. | Automated generation of DSP program development tools using a machine description formalism | |
| KR20010078692A (ko) | 하이브리드 컴퓨터 프로그래밍 환경 | |
| JPH01237832A (ja) | プログラムリンケージ方式 | |
| JP3196675B2 (ja) | 言語処理方式 | |
| JPS6022373B2 (ja) | プログラマブル制御装置のプログラム変換機構 | |
| JP3064331B2 (ja) | 言語処理プログラムの処理方式 | |
| JPH0414144A (ja) | コンパイル処理方法 | |
| JPH03144832A (ja) | プリコンパイラ言語プログラムのシンボリックデバッグ装置 | |
| JPH0580999A (ja) | 言語処理プログラムの処理方式 | |
| JPH0371229A (ja) | プログラム制御装置 | |
| JPH025131A (ja) | 実行ユニット変更方式 | |
| JPS61169936A (ja) | ジヨブ制御言語自動発生方式 | |
| JP3124000B2 (ja) | 構造型の利用者定義演算のインライン展開装置 | |
| CN121560334A (zh) | 一种面向仓颉编程语言的WebAssembly编译方法 | |
| JPH02211542A (ja) | モジュール管理情報算出方式 | |
| JPH0612259A (ja) | コンパイラ処理方式 | |
| JPS62171036A (ja) | コンパイラのモジユ−ル共用方式 | |
| JPS61198333A (ja) | プログラム結合方式 | |
| JP2807162B2 (ja) | プログラム翻訳装置 | |
| JPS6398045A (ja) | シミユレ−シヨン方式 | |
| JPH02155051A (ja) | プログラムデバツグ方式 | |
| JPH07110758A (ja) | プログラムのコンパイル・リンク方式 | |
| JPH02264333A (ja) | 中間言語展開処理方式 | |
| JP2003208317A (ja) | プログラム開発方法 | |
| JPH04153737A (ja) | コンパイル更新情報出力方式 |