JPH0721014A - プログラムリンク方式 - Google Patents
プログラムリンク方式Info
- Publication number
- JPH0721014A JPH0721014A JP15008093A JP15008093A JPH0721014A JP H0721014 A JPH0721014 A JP H0721014A JP 15008093 A JP15008093 A JP 15008093A JP 15008093 A JP15008093 A JP 15008093A JP H0721014 A JPH0721014 A JP H0721014A
- Authority
- JP
- Japan
- Prior art keywords
- name
- program
- subroutine
- sub
- programs
- 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
Abstract
(57)【要約】
【目的】 独立して実行される複数のプログラムを有す
るシステムにおいて、1回のリンクで実行ファイルが生
成できるプログラムリンク方式を提供することを目的と
する。 【構成】 複数のプログラムをサブルーチンとして扱
い、そのすべてのサブルーチンの先頭アドレスであるポ
インタをひとまとめにしたポインタテーブル17を設け
る。
るシステムにおいて、1回のリンクで実行ファイルが生
成できるプログラムリンク方式を提供することを目的と
する。 【構成】 複数のプログラムをサブルーチンとして扱
い、そのすべてのサブルーチンの先頭アドレスであるポ
インタをひとまとめにしたポインタテーブル17を設け
る。
Description
【0001】
【産業上の利用分野】本発明は、ソースプログラムが多
数存在するシステムにおいて、コンパイル及びリンクを
効率的に行えるようにしたプログラムリンク方式に関す
るものである。
数存在するシステムにおいて、コンパイル及びリンクを
効率的に行えるようにしたプログラムリンク方式に関す
るものである。
【0002】
【従来の技術】図2は、複数のプログラムで構成される
システムにおける、従来のプログラムリンク方式を模式
的に示したものである。
システムにおける、従来のプログラムリンク方式を模式
的に示したものである。
【0003】21、24、27はそれぞれ独立して実行
されるプログラムであって、プログラムの主体となる命
令群であるメインルーチン22、25、28と、複数の
サブルーチン23、26、29とから構成されており、
それらは一つまたは複数のソースファイルに分かれて存
在する。各サブルーチンはそれ自体で独立した機能を持
ち、メインルーチンの一部として組み込むことができる
プログラムの単位である。20は、プログラム21、2
4、27が共通に使用するプログラムを登録したライブ
ラリであり、機械語に翻訳した目的ファイルの集合体で
ある。
されるプログラムであって、プログラムの主体となる命
令群であるメインルーチン22、25、28と、複数の
サブルーチン23、26、29とから構成されており、
それらは一つまたは複数のソースファイルに分かれて存
在する。各サブルーチンはそれ自体で独立した機能を持
ち、メインルーチンの一部として組み込むことができる
プログラムの単位である。20は、プログラム21、2
4、27が共通に使用するプログラムを登録したライブ
ラリであり、機械語に翻訳した目的ファイルの集合体で
ある。
【0004】プログラムの開発時には、開発者が作成し
たソースプログラム21、24、27を実行可能な実行
ファイルにするために、ソースプログラムを機械語に翻
訳した命令群に変換する作業を行う。すなわち、ソース
プログラム21、24、27を目的ファイルに変換する
コンパイルを行って、この目的ファイルとライブラリ2
0をそれぞれリンクする。
たソースプログラム21、24、27を実行可能な実行
ファイルにするために、ソースプログラムを機械語に翻
訳した命令群に変換する作業を行う。すなわち、ソース
プログラム21、24、27を目的ファイルに変換する
コンパイルを行って、この目的ファイルとライブラリ2
0をそれぞれリンクする。
【0005】
【発明が解決しようとする課題】しかしながら上記従来
のプログラムリンク方式においては、コンパイル及びラ
イブラリとのリンクの作業は、個々に独立して存在する
プログラムファイルごとに行わなければならない。すな
わちn個すべてのプログラムを実行可能にするために
は、n回のコンパイル及びリンク作業が必要となり、多
くの時間を必要とする。
のプログラムリンク方式においては、コンパイル及びラ
イブラリとのリンクの作業は、個々に独立して存在する
プログラムファイルごとに行わなければならない。すな
わちn個すべてのプログラムを実行可能にするために
は、n回のコンパイル及びリンク作業が必要となり、多
くの時間を必要とする。
【0006】またライブラリに登録したプログラムに変
更が生じた場合には、このときすべてのプログラムが共
通に使用するものをライブラリに登録してあるので、変
更後の実行ファイルを作成するために、再び各プログラ
ムにリンクの実行の指示を与えなければならず、プログ
ラム数と同数のn回のリンクが必要になる。特に、プロ
グラムの動作確認を行うデバッグ時には、頻繁にプログ
ラムを修正するので、リンクに費やす時間が増大し効率
が悪くなる。
更が生じた場合には、このときすべてのプログラムが共
通に使用するものをライブラリに登録してあるので、変
更後の実行ファイルを作成するために、再び各プログラ
ムにリンクの実行の指示を与えなければならず、プログ
ラム数と同数のn回のリンクが必要になる。特に、プロ
グラムの動作確認を行うデバッグ時には、頻繁にプログ
ラムを修正するので、リンクに費やす時間が増大し効率
が悪くなる。
【0007】本発明は上記問題点を解決するものであ
り、独立して実行される複数のプログラムを有するシス
テムにおいて、1回のリンクで実行ファイルが生成でき
るプログラムリンク方式を提供することを目的とする。
り、独立して実行される複数のプログラムを有するシス
テムにおいて、1回のリンクで実行ファイルが生成でき
るプログラムリンク方式を提供することを目的とする。
【0008】
【課題を解決するための手段】上記課題を解決するため
本発明のプログラムリンク方式は、互いに他のプログラ
ムからコールされることがなく、それぞれ独立して実行
される複数のプログラムをそれぞれサブルーチンとして
扱い、これらを集合したサブルーチン群に対して、一つ
のメインルーチンにより前記各サブルーチンのアドレス
を指定してコールすることで、前記複数のプログラムに
共通して使用するプログラムを登録したライブラリと、
コンパイルされた前記複数のプログラムとを、一度にリ
ンクするようにしたことを特徴とするものである。
本発明のプログラムリンク方式は、互いに他のプログラ
ムからコールされることがなく、それぞれ独立して実行
される複数のプログラムをそれぞれサブルーチンとして
扱い、これらを集合したサブルーチン群に対して、一つ
のメインルーチンにより前記各サブルーチンのアドレス
を指定してコールすることで、前記複数のプログラムに
共通して使用するプログラムを登録したライブラリと、
コンパイルされた前記複数のプログラムとを、一度にリ
ンクするようにしたことを特徴とするものである。
【0009】
【作用】上記方法においては、独立して実行される複数
のプログラムをサブルーチンとして扱い、一つのメイン
ルーチンによって各サブルーチンをコールする構成にし
てある。すなわち従来のように、独立して実行される複
数のプログラムに対して、それぞれ一つのメインルーチ
ンが存在するのではなく、一つのメインルーチンによっ
て、複数の独立したプログラムを実行できる構成にして
ある。このためコンパイルしたプログラムとライブラリ
とのリンクを一度で済ますことができる。
のプログラムをサブルーチンとして扱い、一つのメイン
ルーチンによって各サブルーチンをコールする構成にし
てある。すなわち従来のように、独立して実行される複
数のプログラムに対して、それぞれ一つのメインルーチ
ンが存在するのではなく、一つのメインルーチンによっ
て、複数の独立したプログラムを実行できる構成にして
ある。このためコンパイルしたプログラムとライブラリ
とのリンクを一度で済ますことができる。
【0010】
【実施例】図1は、本発明の一実施例におけるプログラ
ムリンク方式を模式的に示したものである。図におい
て、11はメインルーチンであり、サブルーチン群18
を一括して管理するものである。サブルーチン群18
は、独立して実行される複数のプログラムを、それぞれ
サブルーチン’aa、bb、cc、・・・・・・’として扱っ
たものであり、それ自体で一つの処理体系を持つプログ
ラムであって、他のサブルーチンからコールされること
のないものである。19は、独立した目的ファイルの構
成をとるライブラリであり、すべてのサブルーチンに共
通して使用するものであり、サブルーチン群18の個々
と対応している。
ムリンク方式を模式的に示したものである。図におい
て、11はメインルーチンであり、サブルーチン群18
を一括して管理するものである。サブルーチン群18
は、独立して実行される複数のプログラムを、それぞれ
サブルーチン’aa、bb、cc、・・・・・・’として扱っ
たものであり、それ自体で一つの処理体系を持つプログ
ラムであって、他のサブルーチンからコールされること
のないものである。19は、独立した目的ファイルの構
成をとるライブラリであり、すべてのサブルーチンに共
通して使用するものであり、サブルーチン群18の個々
と対応している。
【0011】以下、ライブラリ19とのリンクを効率的
に行えるようにした、メインルーチン11とサブルーチ
ン群18との関係を、プログラム実行時の動作により説
明する。
に行えるようにした、メインルーチン11とサブルーチ
ン群18との関係を、プログラム実行時の動作により説
明する。
【0012】メインルーチン11において、12は、実
行したいサブルーチンの名称を格納する実行名称格納領
域であり、13は、メインルーチン11からコールする
すべてのサブルーチンの名称をテーブルにしたサブルー
チン名テーブルである。例えば、サブルーチンaaはテ
ーブルの1番目の‘aa’に、サブルーチンbbはテー
ブルの2番目の‘bb’の文字列に対応している。
行したいサブルーチンの名称を格納する実行名称格納領
域であり、13は、メインルーチン11からコールする
すべてのサブルーチンの名称をテーブルにしたサブルー
チン名テーブルである。例えば、サブルーチンaaはテ
ーブルの1番目の‘aa’に、サブルーチンbbはテー
ブルの2番目の‘bb’の文字列に対応している。
【0013】15は、実行名称格納領域12で格納した
サブルーチンの名称とサブルーチン名テーブル13の要
素とを比較する比較プログラムである。比較プログラム
15は、文字列を一文字ずつ同じ文字かどうかを調べる
ものである。14は、比較プログラム15が比較するサ
ブルーチン名テーブル13の1番目からn番目までの要
素を一つずつ指定するカウンタである。16は、実行名
称格納領域12の文字列とサブルーチン名テーブル13
の要素が一致した時にカウンタ14が指しているカウン
タ番号を格納するカウンタ番号格納領域である。
サブルーチンの名称とサブルーチン名テーブル13の要
素とを比較する比較プログラムである。比較プログラム
15は、文字列を一文字ずつ同じ文字かどうかを調べる
ものである。14は、比較プログラム15が比較するサ
ブルーチン名テーブル13の1番目からn番目までの要
素を一つずつ指定するカウンタである。16は、実行名
称格納領域12の文字列とサブルーチン名テーブル13
の要素が一致した時にカウンタ14が指しているカウン
タ番号を格納するカウンタ番号格納領域である。
【0014】17は、メインルーチン11からコールす
るすべてのサブルーチンの先頭アドレスであるポインタ
を格納しているポインタテーブルである。ポインタテー
ブル17のポインタは、サブルーチン名テーブル13の
内容と対応している。例えば、サブルーチン名テーブル
の1番目には、サブルーチンaaの文字列である‘a
a’が格納されているが、ポインタテーブル17の1番
目には、サブルーチンaaのポインタである‘100番
地’が格納されている。
るすべてのサブルーチンの先頭アドレスであるポインタ
を格納しているポインタテーブルである。ポインタテー
ブル17のポインタは、サブルーチン名テーブル13の
内容と対応している。例えば、サブルーチン名テーブル
の1番目には、サブルーチンaaの文字列である‘a
a’が格納されているが、ポインタテーブル17の1番
目には、サブルーチンaaのポインタである‘100番
地’が格納されている。
【0015】ここで実行したいサブルーチンが‘bb’
というサブルーチンの場合を例に具体的に説明する。ま
ず、実行したいサブルーチンの名称である‘bb’の文
字列をコマンドラインからプログラム内へ取り込み、実
行名称格納領域12に文字列‘bb’を格納する。サブ
ルーチンbbがどの番地にあるかを判定するため、実行
名称格納領域12の文字列‘bb’とサブルーチン名テ
ーブル13の要素の文字列を比較する。カウンタ14は
初期値が1なので、サブルーチン名テーブルの1番目を
指定する。このサブルーチン名テーブル13の1番目に
格納している文字列‘aa’と実行名称格納領域12の
文字列‘bb’を比較プログラム15が文字列を比較す
る。文字列が異なるので、比較プログラム15がカウン
タ14を一つ増加し、サブルーチン名テーブル13の2
番目の要素を指定する。サブルーチン名テーブル13の
1番目と同様に文字列を比較する。その結果、文字列が
一致するので、その時のカウンタ14が指していたカウ
ンタ番号‘2’をカウンタ番号格納領域16に格納す
る。
というサブルーチンの場合を例に具体的に説明する。ま
ず、実行したいサブルーチンの名称である‘bb’の文
字列をコマンドラインからプログラム内へ取り込み、実
行名称格納領域12に文字列‘bb’を格納する。サブ
ルーチンbbがどの番地にあるかを判定するため、実行
名称格納領域12の文字列‘bb’とサブルーチン名テ
ーブル13の要素の文字列を比較する。カウンタ14は
初期値が1なので、サブルーチン名テーブルの1番目を
指定する。このサブルーチン名テーブル13の1番目に
格納している文字列‘aa’と実行名称格納領域12の
文字列‘bb’を比較プログラム15が文字列を比較す
る。文字列が異なるので、比較プログラム15がカウン
タ14を一つ増加し、サブルーチン名テーブル13の2
番目の要素を指定する。サブルーチン名テーブル13の
1番目と同様に文字列を比較する。その結果、文字列が
一致するので、その時のカウンタ14が指していたカウ
ンタ番号‘2’をカウンタ番号格納領域16に格納す
る。
【0016】実行名称格納領域12の文字列‘bb’と
サブルーチン名テーブル13の2番目が一致するので、
カウンタ番号格納領域16に格納されたカウンタ番号
‘2’を用いて、ポインタテーブル17の2番目を指定
する。ポインタテーブル17の2番目には‘200番
地’が格納されているので、サブルーチンbbは200
番地に存在することが分かる。この200番地のアドレ
スをコールすると、サブルーチン群18の200番地に
存在するサブルーチンbbが呼び出され、プログラムの
実行がメインルーチンからサブルーチンbbへ移る。
サブルーチン名テーブル13の2番目が一致するので、
カウンタ番号格納領域16に格納されたカウンタ番号
‘2’を用いて、ポインタテーブル17の2番目を指定
する。ポインタテーブル17の2番目には‘200番
地’が格納されているので、サブルーチンbbは200
番地に存在することが分かる。この200番地のアドレ
スをコールすると、サブルーチン群18の200番地に
存在するサブルーチンbbが呼び出され、プログラムの
実行がメインルーチンからサブルーチンbbへ移る。
【0017】サブルーチンbbは、必要に応じてライブ
ラリ19のルーチンをコールしながら、プログラムを実
行する。サブルーチンbbの処理が終了するとメインル
ーチンに戻り、一つのプログラムを実行するときの処理
が終了する。
ラリ19のルーチンをコールしながら、プログラムを実
行する。サブルーチンbbの処理が終了するとメインル
ーチンに戻り、一つのプログラムを実行するときの処理
が終了する。
【0018】このように、複数の独立した個々のプログ
ラムをサブルーチンとして扱い、メインルーチンの中
で、すべてのサブルーチンのアドレスをテーブルで管理
することで、複数の独立したプログラムを一つのメイン
ルーチン11に連結し、一括して管理できるようにして
ある。
ラムをサブルーチンとして扱い、メインルーチンの中
で、すべてのサブルーチンのアドレスをテーブルで管理
することで、複数の独立したプログラムを一つのメイン
ルーチン11に連結し、一括して管理できるようにして
ある。
【0019】このため、プログラムの開発にあたって、
メインルーチン11とサブルーチン群18からなるソー
スプログラムを実行ファイルに変換するため、コンパイ
ルの後に行うライブラリ19とをリンクする作業は、従
来のように個々のプログラムごとに行う必要はなく、1
回の作業で済ますことができ効率的である。また、プロ
グラムを頻繁に修正するデバッグ時においても、リンク
回数が格段に少なくなり、特にライブラリを変更したと
きは、個々のプログラムごとにリンクするのではなく、
一回のリンクで実行ファイルを作成できるので効率的で
ある。
メインルーチン11とサブルーチン群18からなるソー
スプログラムを実行ファイルに変換するため、コンパイ
ルの後に行うライブラリ19とをリンクする作業は、従
来のように個々のプログラムごとに行う必要はなく、1
回の作業で済ますことができ効率的である。また、プロ
グラムを頻繁に修正するデバッグ時においても、リンク
回数が格段に少なくなり、特にライブラリを変更したと
きは、個々のプログラムごとにリンクするのではなく、
一回のリンクで実行ファイルを作成できるので効率的で
ある。
【0020】
【発明の効果】以上のように本実施例によれば、独立し
て実行される複数のソースプログラムをそれぞれサブル
ーチンとし、一つのメインルーチンで管理するようにし
た。このため、複数の異なるプログラムを同時に開発す
る場合において、ソースプログラムを実行可能な実行フ
ァイルに変換するときに、すべての独立して実行される
プログラムを一度にリンクできる。リンク回数の減少に
伴い、リンクの作業に要する時間を大幅に短縮すること
ができ、プログラムの開発を効率的に行うことができ
る。
て実行される複数のソースプログラムをそれぞれサブル
ーチンとし、一つのメインルーチンで管理するようにし
た。このため、複数の異なるプログラムを同時に開発す
る場合において、ソースプログラムを実行可能な実行フ
ァイルに変換するときに、すべての独立して実行される
プログラムを一度にリンクできる。リンク回数の減少に
伴い、リンクの作業に要する時間を大幅に短縮すること
ができ、プログラムの開発を効率的に行うことができ
る。
【図1】本発明の一実施例におけるプログラムリンク方
式を説明するブロック図
式を説明するブロック図
【図2】従来のプログラムリンク方式を説明するブロッ
ク図
ク図
11 メインルーチン 12 実行名称格納領域 13 サブルーチン名テーブル 14 カウンタ 15 比較プログラム 16 カウンタ番号格納領域 17 ポインタテーブル 18 サブルーチン群 19、20 ライブラリ 21、24、27 プログラム 22、25、28 メインルーチン 23、26、29 サブルーチン
Claims (1)
- 【請求項1】 互いに他のプログラムからコールされる
ことがなく、それぞれ独立して実行される複数のプログ
ラムをそれぞれサブルーチンとして扱い、これらを集合
したサブルーチン群に対して、一つのメインルーチンに
より前記各サブルーチンのアドレスを指定してコールす
ることで、前記複数のプログラムに共通して使用するプ
ログラムを登録したライブラリと、コンパイルされた前
記複数のプログラムとを、一度にリンクするようにした
ことを特徴とするプログラムリンク方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15008093A JPH0721014A (ja) | 1993-06-22 | 1993-06-22 | プログラムリンク方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15008093A JPH0721014A (ja) | 1993-06-22 | 1993-06-22 | プログラムリンク方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0721014A true JPH0721014A (ja) | 1995-01-24 |
Family
ID=15489081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP15008093A Pending JPH0721014A (ja) | 1993-06-22 | 1993-06-22 | プログラムリンク方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0721014A (ja) |
-
1993
- 1993-06-22 JP JP15008093A patent/JPH0721014A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5586328A (en) | Module dependency based incremental compiler and method | |
US5325531A (en) | Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines | |
US5170465A (en) | Incremental-scanning compiler for source-code development system | |
US5182806A (en) | Incremental compiler for source-code development system | |
US5193191A (en) | Incremental linking in source-code development system | |
US5313387A (en) | Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers | |
US5201050A (en) | Line-skip compiler for source-code development system | |
US6961931B2 (en) | Dependency specification using target patterns | |
JPH0519173B2 (ja) | ||
JPH02272627A (ja) | デイジタル・コンピユータ・システムとその手続呼び出し方法 | |
KR20020070809A (ko) | 포스트-링크 코드 최적화 | |
US7694289B2 (en) | Method for embedding object codes in source codes | |
JPH04330527A (ja) | プログラムの最適化方法及びコンパイラ・システム | |
US6769126B1 (en) | Apparatus and method for demand load analysis | |
US5889995A (en) | Using constant selectors for method identification | |
US5446899A (en) | Hint generation in smart recompilation | |
EP0406028A2 (en) | Incremental compiler for source code development system | |
Hanson | Event associations in SNOBOL4 for program debugging | |
JPH0766342B2 (ja) | プログラムテスト装置 | |
Zosel | A parallel approach to compilation | |
Dewitt | Extensibility-a new approach for designing machine independent microprogramming languages | |
JPH0721014A (ja) | プログラムリンク方式 | |
US6311227B1 (en) | Procedure calling method | |
JP3461185B2 (ja) | ロードモジュールへのソースコード行番号登録方法および装置 | |
Klassen et al. | S*(QM-1) An instantiation of the high level microprogramming language scheme S* for the nanodata QM-11 |