JPH09282174A - プログラム実行方法 - Google Patents

プログラム実行方法

Info

Publication number
JPH09282174A
JPH09282174A JP8794396A JP8794396A JPH09282174A JP H09282174 A JPH09282174 A JP H09282174A JP 8794396 A JP8794396 A JP 8794396A JP 8794396 A JP8794396 A JP 8794396A JP H09282174 A JPH09282174 A JP H09282174A
Authority
JP
Japan
Prior art keywords
program
function
code
component
execution
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
JP8794396A
Other languages
English (en)
Inventor
Yuji Mizote
裕二 溝手
Tetsuya Masuishi
哲也 増石
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP8794396A priority Critical patent/JPH09282174A/ja
Publication of JPH09282174A publication Critical patent/JPH09282174A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】プログラムの実行前にプログラムの全ソースコ
ードをコンパイル・リンクするのではなく、プログラム
の実行に必要なソースコードのみを実行時に必要になっ
たときにコンパイル・リンクしプログラムの実行を継続
することを可能とするプログラム実行方法。 【解決手段】プログラムは、プログラム言語の意味単位
であるコンポーネントの集合からなり、コンポーネント
は編集部205により入力され、プログラムデータベー
ス206に格納される。プログラム管理部202が、コ
ンポーネント間の依存関係情報を更新する。プログラム
の実行時に、実行管理部201が、コンパイラ204お
よびリンカ203を用いて、関数コール命令の呼び出し
対象となる関数でまだコンパイル・リンクが行われてい
ない関数を前記関数の呼び出しの際に前記関数を定義す
るコンポーネントをコンパイル・リンクし、動的リンク
可能なコードを生成し、前記コードから前記関数のアド
レスを取得し、プログラムの実行を継続する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムを用いて、プログラム言語によりプログラムを複数
の構成要素の集合として記述し、コンパイラ・リンカに
よりプログラムをコンパイル、リンクしマシンコードを
生成し、前記マシンコードを実行するプログラム実行方
法に関する。さらに詳細には、プログラムの実行時の関
数呼び出し命令の実行時に、前記関数を定義するプログ
ラム構成要素のマシンコードが生成されていない場合、
前記プログラム構成要素を実行時にコンパイル・リンク
することによりプログラムの実行を行なうプログラム実
行方法に関する。
【0002】
【従来の技術】プログラムの実行は、プログラム言語に
より記述されたソースコードを計算機により実行可能な
マシンコードに翻訳し、前記マシンコードを計算機上の
記憶装置に格納し、メモリ上の前記コードを解釈・実行
することによりプログラムの実行を行なう。
【0003】公知の実行方法には、コンパイラ及びイン
タプリタの2つの方法がある。コンパイラによる実行方
法では、プログラムの翻訳処理とプログラムの実行処理
が完全に分離されており、プログラムの翻訳処理が完全
に実行された後、プログラムの実行処理が実行される。
インタプリタによる実行方法では、プログラムの翻訳・
実行処理を交互に処理することによりプログラムが実行
される。
【0004】コンパイラは、コンパイル及びリンクの2
つの処理から構成される。プログラムソースコードはフ
ァイルなどの構成要素からなり、コンパイル処理は前記
構成要素毎にプログラム言語で記述された文字列を解析
し、マシンコード列およびシンボル情報を生成する。前
記構成要素をプログラム構成要素あるいはコンポーネン
トと呼ぶ。
【0005】ソースコードに含まれる関数呼び出し命令
の呼び出し対象となる関数で、他のソースコードで定義
されている関数を外部関数と呼ぶ。コンパイル処理で生
成されたオブジェクトコード中の外部関数のアドレスは
未解決のままになっている。リンク処理は、生成された
オブジェクトコードの連結、外部関数のアドレスの解決
を行い、実行可能なプログラムコードもしくは動的にリ
ンク可能なライブラリ(動的リンクライブラリあるいは
シェアードライブラリと呼ぶ)を生成する。プログラム
コードもしくは動的リンクライブラリをモジュールと呼
ぶ。
【0006】コンパイラ方式のプログラムの実行は、実
行前にプログラムソースコードのコンパイル及びリンク
が完全に終了している必要がある。
【0007】例えば、米国特許5,325,533号は
インクリメンタル(incremental)にプログ
ラムをコンパイル・リンクする手段を開示しいる。この
特許において、プログラム構成要素はファイルでなく、
関数やクラスなどのプログラム言語に依存する意味単位
に対応付けられる。
【0008】米国特許5,325,533号は、編集手
段、プログラムデータベース、コンパイラ、ビルド機
構、リンク機構からなる。プログラムデータベースは、
コンポーネントの集合からなる。コンポーネントは複数
の属性からなるデータであり、プログラム言語の意味単
位に対応する。編集手段は、編集によるコンポーネント
の変更履歴を管理し、その管理情報を利用してビルド機
構がコンポーネントの属性を更新し、再度コンパイルが
必要なコンポーネントを計算する。
【0009】また、コンパイラ方式の言語に対してイン
タプリタを利用したプログラム実行方法として日立製作
所の「C/C++インタプリタ」のマニュアル「C/C
++インタプリタ使用の手引き」のP2からP29に記
載されている方法がある。この実行方法では、インタプ
リタで実行可能なコードで、コンパイラが生成するオブ
ジェクトコードとは異なる中間コードをソースコードか
ら生成し、前記インタプリタが前記中間コードを解釈・
実行する。
【0010】
【発明が解決しようとする課題】従来のコンパイラによ
るプログラムの実行方法では、コンパイル・リンク処理
がプログラムの実行前に完全に終了していなければなら
ないという問題点がある。
【0011】また、コンパイラ方式の言語に対してイン
タプリタを利用して、プログラムを実行する方法では、
前記のような問題点は解消されるが、コンパイラで生成
されるオブジェクトコードとは異なるインタプリタ用の
中間コードを生成しなければならないという問題点があ
る。
【0012】そこで本発明の目的は、コンパイラ方式の
言語で記述されたプログラムの全ソースコードを実行前
にコンパイル・リンクするのではなく、プログラムの実
行時の関数呼び出し命令の実行時に、前記関数のソース
コードに対するマシンコードが生成されていない場合、
前記関数のソースコードからマシンコードを生成し、実
行を継続する方法を提供することである。
【0013】
【課題を解決するための手段】上記目的を達成するた
め、本発明のプログラム実行方法では、プログラム構成
要素間の依存関係を管理するステップ、プログラムのソ
ースコードをコンパイル・リンクしマシンコードを生成
するステップおよび前記コードを実行するステップを有
する計算機システムにおいて、プログラム構成要素のソ
ースコード中に含まれる関数呼び出し命令の呼び出し対
象となる関数で、他のプログラム構成要素で定義される
関数に関する情報を記憶装置に格納し、プログラムの実
行時に、前記関数のマシンコードが生成されていない場
合、前記関数の呼び出し命令の実行時に、前記関数を定
義するプログラム構成要素のマシンコードを生成し、前
記マシンコードと前記関数の対応関係および前記マシン
コードに関する情報を記憶装置に格納し、前記関数の呼
び出し命令を含むコードの実行時に、前記関数のマシン
コードと前記関数の呼び出し命令を含むコードとを動的
にリンクすることによりプログラムの実行を行う。
【0014】
【発明の実施の形態】図1に、本発明を実装できる計算
機システム100の構成を示す。計算機システムは、中
央処理装置101、主記憶装置102、外部記憶装置1
03、入力装置104、出力装置105およびそれらを
結合するバス106からなる。
【0015】ユーザは入力装置104により、プログラ
ムのソースコードであるテキストを入力することができ
る。
【0016】また、プログラムの実行可能コードは外部
記憶装置103に格納しておき、実行する際に、外部記
憶装置103中の前記コードを主記憶装置102に格納
し、格納された前記コードを中央処理装置101が解釈
・実行することにより、プログラムの実行が行われ、実
行結果を出力装置105に表示する。前記コードの主記
憶装置への格納をロードと呼ぶ。
【0017】計算機システムは、オペレーティング・シ
ステム(以降OSと呼ぶ)と呼ばれるソフトウェアによ
り管理される。ユーザが実行可能なコードあるいは動的
にリンク可能なコードのロード命令をOSに対して発行
することにより、前記コードが主記憶装置102にロー
ドされ、OSの管理下におかれ、ロードされた前記コー
ドに対してOSで管理される識別子がOS内で生成され
る。OSの管理下のコードの削除処理をアンロードと呼
ぶ。ユーザはロードされたコードのアンロード命令をO
Sに対して発行することにより主記憶装置102からロ
ードされているコードをアンロードすることができる。
プログラムの実行状態は、中央処理装置101内の複数
のレジスタ1011に設定される。
【0018】主記憶装置102内でのデータの位置を指
定する値をアドレスという。
【0019】関数呼び出しを実現するために、一般にス
タックが利用される。主記憶装置102にスタックのた
めの領域を割り当て、関数呼び出しの際の引数の受け渡
しや関数呼び出しの戻りアドレスの保存を行なうために
利用される。プログラムの実行時に使われるスタックを
システムスタックと呼ぶことにする。関数呼び出し実行
時に利用したスタック中の領域の解放は、呼び出し側で
行なうものとする。また、関数呼び出しの戻り値の受け
渡しは、レジスタ1011を経由して行われるものとす
る。
【0020】本発明の実施の形態の説明において、リス
トデータ型及び定数NULLを用いる。
【0021】定数NULLは、他の任意のデータ値と区
別することができる特別な値である。
【0022】リストは、0個以上のデータを保持するデ
ータオブジェクトで、メソッドCount、Firs
t、Next、Add、Appendにより操作され
る。Countはリストが保持するデータ数を返す。F
irstは、リストの保持するデータ数が0の場合はN
ULLを返し、1以上の場合は先頭のデータを返す。N
extはその次のデータを返し、次のデータが存在しな
い場合はNULLを返す。Addは入力データをリスト
の末尾に加える。Appendは入力としてリストを取
り、入力リストに含まれるすべての要素データを操作対
象のリストの末尾に加える。また、記法としてリストデ
ータListにCountメソッドを適用する場合、L
ist.Countなどのように記述する。
【0023】フローチャート中の変数は、フローチャー
ト毎に局所的な有効範囲を持つ。つまり、フローチャー
トの「始まり」という文字列を含むボックスで示される
ステップから「終わり」という文字列を含むボックスで
示されるステップまでに含まれるステップの処理のなか
でのみ有効である。
【0024】以降において、幾つかのデータ型を定義す
る。データ型はデータ型名称および複数の構成要素から
定義される。構成要素を属性と呼ぶ。たとえば、年、
月、日を構成要素として、データ型名が「日付」である
データ型は、「日付は、年、月、日からなるデータ型で
ある」などのような形式で定義される。
【0025】図2は本発明を構成する機能要素を示して
いる。実行管理部201、プログラム管理部202、リ
ンカ203、コンパイラ204、編集部205、プログ
ラムデータベース206からなる。
【0026】コンパイラ204は、入力としてソースコ
ードを取り、オブジェクトコードを生成する。生成され
るオブジェクトコードは、シンボル情報テーブルおよび
マシンコード列から構成されるものとする。コンパイル
時にエラーとなった場合、NULLを返す。
【0027】コンパイラ204が生成するオブジェクト
コード中のシンボル情報テーブルは、シンボル情報の集
合である。
【0028】本発明の実施の形態で用いるシンボル情報
では、シンボル名、アドレス、種類の情報を取得、設定
できるものとする。
【0029】シンボル名属性は、プログラムのソースコ
ード中に含まれる関数や大域変数に対する文字列による
名称のことである。
【0030】アドレス属性には、シンボル名に対応する
関数や大域変数のオブジェクトコード中のアドレスが設
定される。
【0031】種類属性は、シンボルのプログラミング言
語での意味的な単位の種類で、関数とデータの2種類が
あるものとする。データとは、大域変数のことである。
【0032】コンパイル時にアドレスが解決しているも
のはシンボル情報のアドレス属性にアドレスが設定され
ている。他のコンポーネントで定義されているシンボル
のシンボル情報のアドレス属性にはNULLが設定され
いるものとする。
【0033】また、シンボル情報テーブルは、シンボル
情報のリストのように処理できるものとする。
【0034】リンカ203は、入力としてオブジェクト
コードのリストおよびモジュール種類を取る。モジュー
ル種類には、実行可能モジュールと動的リンクライブラ
リの2種類ある。
【0035】リンカ203が行う処理は、入力オブジェ
クトコードを連結し、モジュール種類で指定された形式
でコードを生成する。生成されたコードをモジュールコ
ードと呼ぶ。内部的にはモジュールコードは、その実体
を参照することができるファイル名などで参照される。
【0036】プログラムデータベース206は、プログ
ラムを構成するコンポーネントの集合である。
【0037】コンポーネントは大域変数、関数などのプ
ログラム言語の意味単位に対応し、識別子、名称、イン
ターフェースソース実装ソース、ビルド、オブジェクト
コード、参照コンポーネントリスト、非参照コンポーネ
ントリスト、モジュール識別子からなるデータ型であ
る。
【0038】識別子属性はプログラムデータベース20
6内でコンポーネントを一意に区別するものである。し
たがって、プログラムデータベース206に対して識別
子を指定することにより、指定した識別子と一致する識
別子を識別子属性に持つコンポーネントを取得すること
ができる。実行開始関数を含むコンポーネントには特別
な識別子が設定されるものとする。ここで実行開始関数
とは、実行可能モジュールを実行するとき最初に実行さ
れる関数のことであり、例えば、C言語ではmain関
数が対応する。
【0039】名称属性には、コンポーネントの名称を示
す文字列が設定される。
【0040】インターフェースソース属性には、コンポ
ーネントの宣言部分に対応するソースコードが設定され
る。コードがない場合は、NULLが設定される。
【0041】実装ソース属性には、コンポーネントの実
装部分に対応するソースコードが設定される。コードが
ない場合は、NULLが設定される。インターフェース
ソース属性と実装ソース属性を合わせてソースと呼ぶ。
【0042】ビルド属性には、定数としてCOMPIL
ED,NEEDTOCOMPILEの2つが定義され
る。定数COMPILEDは、コンポーネントがコンパ
イル済であり、さらに本コンポーネントのソースおよび
参照コンポーネントリストに含まれるコンポーネントの
インターフェースソースがコンパイル後修正されていな
いことを示す。ビルド属性の更新は、プログラム管理部
202により行われる。
【0043】オブジェクトコード属性には、コンパイラ
が生成したコンポーネントのオブジェクトコードが設定
される。
【0044】参照コンポーネントリスト属性は、実装ソ
ース中で参照される他のコンポーネントの識別子のリス
トである。
【0045】非参照コンポーネントリスト属性は、本コ
ンポーネントをソース中で参照している他のコンポーネ
ントの識別子のリストである。
【0046】モジュール識別子属性には、モジュールの
識別子が設定される。初期値にはNULLが設定され
る。
【0047】プログラム管理部202は、編集部205
による編集の変更履歴情報に基づいて、プログラムデー
タベース206中のコンポーネントのビルド属性を更新
する。プログラム管理部によるコンポーネントの属性更
新方法は、米国特許5,325,533号に詳しく記載
されている。
【0048】実行管理部201は、モード2011、カ
レントコンパイルモジュール識別子2012、関数コー
ル情報スタック2013、モジュール管理テーブル20
14、外部関数管理テーブル2015からなる。
【0049】モード2011には、定数COMPIL
E、RUNの2つが設定される。
【0050】実行モード2011がCOMPILEの場
合、カレントコンパイルモジュール識別子2012には
現在コンパイル中のモジュールの識別子が設定される。
以降において、カレントコンパイルモジュール識別子2
012で指定されるモジュールをカレントコンパイルモ
ジュールと呼ぶ。
【0051】関数コール情報スタック2013は、関数
コール情報を要素とするスタックである。関数コール情
報は、外部関数識別子、戻り先アドレスからなるデータ
型である。
【0052】外部関数識別子属性には、外部関数情報の
識別子属性が設定される。
【0053】戻り先アドレス属性には、アドレスが設定
される。
【0054】モジュール管理テーブル2014は、モジ
ュール情報の集合である。
【0055】モジュール情報は、識別子、モジュールコ
ード、モジュールタイプ、所属コンポーネントリスト、
補助コードリスト、OS管理識別子、コールカウンタか
らなるデータ型である。
【0056】識別子属性はモジュール管理テーブル20
14内で一意に区別されるものである。したがって、モ
ジュール管理テーブル2014に対して識別子を指定す
るこにより、指定した識別子と一致する識別子を識別子
属性に持つモジュール情報を取得することができる。
【0057】モジュールコード属性には、実行可能コー
ドもしくは動的リンクライブラリの実体を参照すること
ができる情報、例えば、ファイル名などが設定される。
前記情報が未設定の場合、定数NULLが設定されてい
る。
【0058】モジュールタイプ属性には、モジュールタ
イプ定数としてEXECUTABLEとDLLの2つの
定数が定義される。EXECUTABLEは実行可能コ
ードのことであり、DLLは動的リンクライブラリのこ
とである。この定数はリンカ203への引数として使わ
れる。
【0059】所属コンポーネントリスト属性は、モジュ
ールを構成するコンポーネントのリストである。
【0060】補助コードリスト属性は、処理700(図
7)で生成される補助コードのリストである。
【0061】OS管理識別子属性には、モジュールがロ
ードされているとき、オペレーティング・システムによ
って管理されているモジュールの識別子が設定され、モ
ジュールがロードされていないとき、定数NULLが設
定される。本発明の実施の形態において、OS管理識別
子を指定してオペレーティング・システムに対して命令
を発行することによりメモリ中にロードされているモジ
ュールコードにアクセスすることができるものとする。
【0062】コールカウンタ属性のデータ型は整数型で
あり、モジュールタイプがEXECUTABLEの場
合、前記モジュールがロードされているときには1が、
ロードされていないときには0が設定される。モジュー
ルタイプがDLLの場合、前記モジュール中の関数が呼
び出されたとき、コールカウンタに1を加算し、関数の
呼び出しをぬけるときコールカウンタ属性に1を減算す
る。初期値には0が設定される。
【0063】以降において、モジュールとはモジュール
情報のことを意味する。
【0064】外部関数管理テーブル2015は、外部関
数情報の集合である。
【0065】外部関数情報は、識別子、シンボル名、コ
ンポーネント識別子、補助コード、戻り値型からなるデ
ータ型である。
【0066】識別子属性は外部関数管理テーブル201
5内で一意に区別されるものである。したがって、外部
関数管理テーブル2015に対して識別子を指定するこ
とにより、指定した識別子と一致する識別子を識別子属
性に持つ外部関数情報を取得することができる。
【0067】シンボル名属性には、外部関数のシンボル
情報のシンボル名が設定される。
【0068】コンポーネント識別子属性は、外部関数が
定義されるコンポーネントの識別子が設定される。
【0069】補助コード属性には、処理700(図7)
で生成されるコードが設定される。
【0070】戻り値型属性には、外部関数の戻り型を示
す整数値が設定される。戻り値を持たない場合は、定数
VOIDが設定される。
【0071】以降において、外部関数とは外部関数情報
のことを意味する。
【0072】編集部205は、プログラムデータベース
206中のコンポーネントのソースを編集するためのユ
ーザ・インターフェースを与え、ユーザによる編集履歴
を管理する部分である。プログラム管理部202が前記
編集履歴に基づいてプログラムデータベース206中の
コンポーネントの属性を更新する。
【0073】図3を用いて、本発明の処理300の手順
を説明する。実行管理部201のロードを行う(ステッ
プ301)。コンポーネント変数Cに実行開始関数を含
むコンポーネントを設定する(ステップ302)。変数
Typeにモジュールタイプ定数EXECUTABLE
を設定する(ステップ303)。CとTypeを入力と
してモジュール生成処理400(図4)を実行する(ス
テップ304)。カレントコンパイルモジュールをロー
ドし実行を開始する(ステップ305)。モジュールの
実行が終了したら、実行管理部の終了処理2000(図
20)を実行して(ステップ306)、処理300を終
了する。
【0074】図4を用いてモジュール生成処理400の
手順を説明する。入力としてコンポーネントC(40
1)およびモジュールタイプT(402)を取る。モー
ド2011に定数COMPILEを設定する(ステップ
403)。判断404の条件は、Cのビルド属性が定数
COMPILEDに等しく、更にCのモジュール識別子
がNULL以外であるというものであり、前記条件が真
となる場合はステップ405に移り、前記条件が偽の場
合はステップ406に移る。ステップ405で、カレン
トコンパイルモジュール識別子をCのモジュール識別子
に設定し、ステップ415に移る。ステップ406で、
新規モジュール情報を作成し変数Mに設定する。Mをモ
ジュール管理テーブル2014に登録する(ステップ4
07)。モジュール管理テーブル2014内で一意に識
別できる新しい識別子NewIDを生成し、Mの識別子
に設定する(ステップ408)。Mのモジュールタイプ
に入力モジュールタイプTの値を設定する(ステップ4
09)。カレントコンパイルモジュール識別子2012
にNewIDを設定する(ステップ410)。ステップ
411で、Cを入力としてコンパイル処理500(図
5)、ステップ412でCを入力として補助コード生成
処理600(図6)を行う。カレントコンパイルモジュ
ールに対してリンク処理900(図9)を行い、モジュ
ールコードを生成する(ステップ413)。Cのモジュ
ール識別子にNewIDを設定する(ステップ41
4)。モード2011を定数RUNに設定し(ステップ
415)、処理400を終了する。
【0075】図5を用いてコンパイル処理500の手順
を説明する。入力としてコンポーネントC(501)を
取る。判断502でCのビルド属性がCOMPILED
の場合、コンパイル処理500を終了する。判断502
でCのビルド属性がCOMPILEDでない場合、Cの
参照コンポーネントリスト属性に含まれるすべてのコン
ポーネントのインターフェースソース属性をリスト変数
Listに加える(ステップ503、ステップ504、
ステップ505、ステップ506)。ListにCの実
装ソース属性及びインターフェースソース属性を加える
(ステップ507)。Listをコンパイラ204の入
力としてオブジェクトコードの生成を行い、生成したコ
ードを変数Objに設定する(ステップ508)。判断
509においてObjがNULLに等しくない場合、C
のオブジェクトコード属性にObjを設定する(ステッ
プ511)。Cのビルド属性の値をCOMPILEDに
変更して(ステップ512)、処理500を終了する。
判断509において、ObjがNULLに等しい場合、
ステップ510でCの編集をユーザに要求し、編集作業
が終了後、ステップ503に移る。
【0076】図6を用いて補助コード生成処理600の
説明を行う。入力としてコンポーネントC(601)を
取る。ステップ602で、変数STにCのオブジェクト
コードのシンボル情報テーブルを設定する。Cのオブジ
ェクトコードのシンボル情報テーブルのすべての要素デ
ータであるシンボル情報Sに対して(ステップ603、
ステップ604、ステップ607)、次に述べる処理を
行う。その処理とは、判断605で真となる場合、つま
りSの種類が関数である場合、CとSを入力としてステ
ップ606の処理700(図7)を実行する。判断60
5で偽となる場合、つまりSの種類がデータである場
合、CとSを入力としてステップ608の処理800
(図8)を実行する。シンボル情報テーブルに含まれる
すべての要素データに対して処理700あるいは処理8
00の実行が行われたならば処理600を終了する。
【0077】図7を用いてステップ606で行われる処
理700の説明を行う。入力としてシンボル情報S(7
01)、コンポーネントC(702)を取る。Sのシン
ボル名と一致する外部関数情報が外部関数管理テーブル
2015にまだ登録されていないならば(判断70
3)、ステップ704で、新規に外部関数情報を生成
し、それを変数Fに設定する。外部関数管理テーブル2
015内で一意に区別される新しい識別子NewIDを
生成し、Fの識別子に設定する(ステップ705)。F
のコンポーネント識別子にCの識別子を設定する(ステ
ップ706)。Fのシンボル名にSのシンボル名を設定
する(ステップ707)。外部関数管理テーブル201
5にFを登録する(ステップ708)。Sに対応するC
のオブジェクトコード中の関数に対して、実行制御部2
01に制御を移すコードを生成し、生成したコードを変
数Aに設定し(ステップ709)、Fの補助コードにA
を設定する(ステップ710)。Cのインターフェース
ソース属性からCで定義される関数の戻り値型の情報を
取得し、Fの戻り値型属性に前記戻り値型の情報に対応
する整数値を設定する(ステップ711)。カレントコ
ンパイルモジュールの補助コードリストにコードAを加
え(ステップ712)、処理700を終了する。判断7
03で真となる場合、つまりSのシンボル名と一致する
外部関数情報が外部関数管理テーブル2015に登録さ
れているならば、Sのシンボル名と一致する外部関数情
報を外部関数管理テーブル2015から取得し、変数F
に設定し(ステップ713)、変数AにFの補助コード
を設定し(ステップ714)、ステップ712に移る。
【0078】図8を用いてステップ608で行われる処
理800の説明を行う。入力としてシンボル情報S(8
01)、コンポーネントC(802)を取る。Cの参照
コンポーネントの中から、Sのシンボル名に対応するデ
ータの定義を持つコンポーネントを取得し、C1に設定
する(ステップ803)。カレントコンパイルモジュー
ルのコンポーネントリストにC1を加える(ステップ8
04)。C1に対してコンパイル処理500を実行する
(ステップ805)。C1のモジュール識別子にカレン
トコンパイルモジュール識別子2012を設定し(ステ
ップ806)、処理800を終了する。
【0079】図9を用いてリンク処理900の手順を説
明する。変数Mにカレントコンパイルモジュールを設定
する(ステップ901)。Mのコンポーネントリスト中
のすべてのコンポーネントCに対して、Cのオブジェク
トコードをリスト変数Listに加える(ステップ90
2、ステップ903、ステップ904、ステップ90
5)。Mの補助コードリストのすべての要素をList
に加える(ステップ906)。変数TypeにMのモジ
ュールタイプを設定する(ステップ907)。Lis
t,Typeをリンカ203の入力としてモジュールコ
ードを生成する(ステップ908)。生成した前記モジ
ュールコードをMのモジュールコードに設定し(ステッ
プ909)、本処理900を終了する。
【0080】図10は、処理400で生成されるコード
の例である。コンポーネント1001は処理400の入
力コンポーネントであり、その実装ソース中に他のコン
ポーネントで定義される関数f1(10011)を参照
するコンポーネントである。コンポーネント1001を
コンパイルして生成されるオブジェクトコードのマシン
語列がコード1002である。命令10021は関数f
1(10011)の関数コール命令で、f1のアドレス
が未解決の状態である。コンポーネント1001に対し
て補助コード生成処理600を実行して得られる外部関
数f1(10011)に対する補助コードがコード10
04である。命令10041は、外部関数識別子を実行
制御部201に引数として渡すためにシステムスタック
に関数f1(10011)の外部関数識別子の値を積む
命令である。FuncIDは関数f1(10011)に
対応する外部関数管理テーブル2015中の外部関数情
報識別子である。命令10042は、実行制御部201
に制御を移すためのマシン語命令である。リンク処理9
00において、外部関数をコールする命令10021と
補助コード1004とをリンクし、モジュールコード1
003を生成する。
【0081】処理400で生成されたモジュールコード
1003中の関数コール命令10031の実行時の動作
を図11および図12を用いて説明する。関数コール命
令10031により、関数コール命令10031の次の
命令のアドレスが関数コール命令10031の戻り先ア
ドレスとしてシステムスタックに積まれ、制御が補助コ
ード中の命令10032に移る(矢印1102)。命令
10032により、f1(10011)に対応する外部
関数識別子を示すFuncIDの値がシステムスタック
に積まれる。ジャンプ命令10033により、実行制御
部201のコード1101に制御が移される(矢印11
04)。この時点でのシステムスタック1200には、
図12に示すように、スタック最上位から、外部関数識
別子である関数ID(1201)、戻り先アドレス12
02、関数f1(10011)に対する引数1203が
積まれている。実行制御部201の処理1300(図1
3)の実行により、関数IDに対応する関数を呼び出し
た後(矢印1105)、制御を戻り先アドレス1202
に戻す(矢印1103)。コード1106は、f1(1
0011)の実装コードを含む動的リンクライブラリで
あり、処理1300(図13)で生成される。
【0082】図13を用いて処理1300の手順の説明
を行なう。処理1400(図14)を実行して関数コー
ル情報を生成し、前記関数コール情報を変数FC1に設
定する(ステップ1301)。FC1を関数コール情報
スタックに積む(ステップ1302)。FC1の外部関
数識別子を入力としてアドレス取得処理1500(図1
5)を実行し、取得したアドレスを変数AD1に設定す
る(ステップ1303)。システムスタックを調整し
(ステップ1304)、ステップ1307の関数コール
命令の実行に備える。外部関数管理テーブル2015に
対してFC1の外部関数識別子を指定して外部関数情報
を取得し、前記外部関数情報のコンポーネント識別子か
らコンポーネントを取得し、前記コンポーネントからモ
ジュールを取得し、変数Mに設定する(ステップ130
5)。Mのコールカウンタに1を加算する(ステップ1
306)。変数FにFC1の外部関数識別子に対応する
外部関数情報を設定する(ステップ1307)。判断1
308においてAD1がNULLに等しい場合、判断1
309に移る。判断1308においてAD1がNULL
に等しくない場合、図13のステップ1311に移る。
判断1309において、Fの戻り値型属性が定数VOI
Dの場合、図13のステップ1317に移る。判断13
09において、Fの戻り値型属性が定数VOIDでない
場合、ユーザに戻り値の指定を要求し、指定された値を
変数Rに設定し(ステップ1310)、図13のステッ
プ1317に移る。図13のステップ1311で、AD
1で指定されるアドレスで関数コール命令を実行する。
関数コール情報スタックの先頭データを取得し、取得し
たデータを変数FC2に設定する(ステップ131
2)。関数コール情報スタックの先頭データを削除する
(ステップ1313)。判断1314において、Fの戻
り値型が定数VOIDである場合、ステップ1317に
移る。判断1314において、Fの戻り値型属性が定数
VOIDでない場合、ステップ1315で関数コール命
令により呼び出された関数の戻り値を取得し、変数Rに
設定する。Rを関数の戻り値としてレジスタに設定する
(ステップ1316)。ステップ1317で、Mのコー
ルカウンタに1を減算する。FC2の戻り先アドレスに
制御を戻すマシン命令を実行し(ステップ1318)、
処理1300を終了する。
【0083】図14を用いて処理1400の手順を説明
する。新規に関数コール情報を作成し、変数FC1に設
定する(ステップ1402)。システムスタック120
0上の関数ID(1201)を取得し、変数FIDに設
定する(ステップ1403)。FC1の外部関数識別子
にFIDの値を設定する(ステップ1404)。システ
ムスタック1200上の戻り先アドレス1202を取得
し、変数AD1に設定する(ステップ1405)。FC
1の戻り先アドレスにAD1を設定し(ステップ140
6)、FC1を処理1400の出力として処理1400
を終了する。
【0084】図15を用いてアドレス取得処理1500
の手順を説明する。入力として外部関数識別子である関
数ID(1501)を取る。関数ID(1501)に対
応する外部関数情報を外部関数管理テーブル2015か
ら取得し、取得した外部関数情報のコンポーネント識別
子に対応するコンポーネントをプログラムデータベース
206から取得し、取得したコンポーネントを変数Cに
設定する(ステップ1502)。判断1503におい
て、Cの実装ソースコードがNULLに等しい場合、処
理1513に移る。判断1503において、Cの実装ソ
ースコードがNULLに等しくない場合、判断1504
に移る。判断1504において、Cのビルド属性がCO
MPILEDでない場合、ステップ1505に移る。判
断1504において、Cのビルド属性がCOMPILE
Dである場合、ステップ1506に移る。ステップ15
05で、変数MにCのモジュール識別子に対応するモジ
ュールを設定する。Cのモジュール識別子がNULLな
らば、MにNULLを設定する。判断1507において
MがNULLと等しくない場合、ステップ1509に移
る。判断1507においてMがNULLと等しい場合、
ステップ1510に移る。ステップ1509でMに対し
て削除処理1600(図16)を実行する。ステップ1
510でCとモジュールタイプ定数DLLを入力として
モジュール生成処理400を実行し、カレントコンパイ
ルモジュールを変数Mに設定する。ステップ1511で
Mのモジュールコードのロードを行う命令をOSに発行
し、ロードされたモジュールコードのOSで管理される
識別子を取得し、取得した識別子をMのOS管理識別子
に設定し、ステップ1512に移る。ステップ1506
で、Cのモジュール識別子に対応するモジュールをMに
設定する。判断1508において、MのOS管理識別子
がNULLの場合、ステップ1511に移る。判断15
08において、MのOS管理識別子がNULLでない場
合、ステップ1512に移る。ステップ1512で、関
数ID(1501)に対応する外部関数情報を外部関数
管理テーブル2015から取得し、取得した外部関数情
報のシンボル名とMのOS管理識別子を入力としてOS
に対して関数のアドレスを取得する命令を発行し、アド
レスを取得後、前記アドレスを処理1500の出力と
し、処理1500を終了する。ステップ1513で、N
ULLを処理1500の出力とし、処理1500を終了
する。
【0085】図16を用いてモジュール管理テーブル2
014でのモジュール削除処理1600を説明する。入
力としてモジュールM(1601)をとる。Mのコンポ
ーネントリストに含まれるすべての要素データコンポー
ネントCに対して(ステップ1602、ステップ160
3、ステップ1606)、Cのモジュール識別子属性を
NULLに設定し(1604)、Cを入力として外部関
数管理テーブル2015の更新処理1700(図17)
を実行する(ステップ1605)。判断1607でMの
OS管理識別子がNULLでないならば、Mのモジュー
ルコードをアンロードする命令をOSに発行する(ステ
ップ1608)。モジュール管理テーブルからMを削除
し(ステップ1609)、処理1600を終了する。判
断1607でMのOS管理識別子がNULLならば、ス
テップ1609に移る。
【0086】図17を用いて外部関数管理テーブル20
15の更新処理1700の手順を説明する。入力として
コンポーネントC(1701)をとる。外部関数管理テ
ーブル2015のすべての要素データである外部関数情
報Fに対して(ステップ1702、ステップ1703、
ステップ1706)、判断1704においてFのコンポ
ーネント識別子とCの識別子が一致する場合、外部関数
情報テーブル2015からFを削除する(ステップ17
05)。判断1704においてFのコンポーネント識別
子とCの識別子が異なる場合はFに対してステップ17
05を実行しない。外部関数情報テーブル2015のす
べての要素に対して処理が終了したら、本処理1700
を終了する。
【0087】実行可能モジュールの実行(図3のステッ
プ307)中にエラーが発生した場合、エラーが発生し
たコンポーネントのソースの修正をユーザに要求し、修
正の後に実行を継続する方法を説明する。前記方法の説
明で、関数コール情報のデータ構造の拡張と処理140
0の拡張を行なう。
【0088】関数コール情報を、外部関数識別子、戻り
先アドレス、実行環境からなるデータ型に修正する。
【0089】外部関数識別子属性および戻り先アドレス
属性は修正前と同じである。
【0090】実行環境属性は、レジスタ1011に格納
されている計算機の実行状態を示すデータを保存する領
域である。この属性を関数コール情報に付加することが
本拡張の目的である。
【0091】関数コール情報の拡張に伴う処理1400
の拡張を図18を用いて説明する。ステップ1801
は、処理計算機の現在の実行環境を取得する命令をOS
に発行し、取得した値つまり現在の計算機の実行状態を
示すデータをFC1の実行環境に設定する処理を行な
う。ステップ1801をステップ1406とステップ1
407の間に挿入する。前記挿入により、ステップ14
06以降の実行手順は、次のようになる。ステップ14
06の実行の次に、ステップ1801が実行され、次に
ステップ1407が実行される。
【0092】実行管理部201が実行時に、プログラム
の実行時エラーを検出した場合、制御をエラー処理19
00(図19)に移し、前記エラーの処理を行なう。エ
ラーの検出の手段は、計算機の例外割り込みの機能など
により実現可能される。
【0093】エラー処理1900は、ユーザにエラー発
生しているコンポーネントのソースコードの修正を要求
し、修正が終了後、エラー発生モジュールをロードする
直前の計算機状態に戻し、実行を継続する。
【0094】図19を用いてエラー処理1900の手順
を説明する。関数コール情報変数FC1に関数コール情
報スタックの最上位のデータを設定する(ステップ19
01)。外部関数管理テーブル2015に対してFC1
の外部関数識別子を指定して、外部関数情報を取得し、
取得した外部関数情報のコンポーネント識別子をプログ
ラムデータベース206に対して指定しコンポーネント
を取得し、取得したコンポーネントのモジュール識別子
を変数MID1に設定する(ステップ1902)。変数
FC2に関数コールスタックの最下位のデータを設定す
る(ステップ1903)。外部関数情報テーブル201
5に対してFC2の外部関数識別子を指定して、外部関
数情報を取得し、取得した外部関数情報のコンポーネン
ト識別子をプログラムデータベース206に指定してコ
ンポーネントを取得し、取得したコンポーネントのモジ
ュール識別子を変数MID2に設定する(ステップ19
04)。判断1905において、MID1とMID2が
一致しない場合、関数コール情報スタック上でFCより
一つ上位のデータをFC2に設定し(ステップ190
6)、ステップ1904に戻る。判断1905において
MID1とMID2が一致する場合、ステップ1907
に移り、MID1で指定されるモジュールを入力として
モジュール削除処理1600を行なう。ステップ190
8で、FC2を含むFC2より上位のすべての関数コー
ル情報に対して、前記関数コール情報の外部関数識別子
に対応するモジュールのコールカウンタを1だけ減算し
たのち、関数コール情報スタックから削除する。外部関
数管理テーブル2015に対してFC1の外部関数識別
子を指定して、外部関数情報を取得し、取得した外部関
数情報のコンポーネント識別子で指定されるコンポーネ
ントの修正をユーザに要求する(ステップ1909)。
ユーザは編集部205によりソースを修正する。修正処
理終了後、変数FC3に関数コール情報スタック最上位
の関数コール情報を設定し(ステップ1910)、FC
3の実行環境属性を変数Eに設定する(ステップ191
1)。現在の実行環境をEに変更し、実行を継続する
(ステップ1912)。
【0095】図20を用いて実行終了処理2000の手
順を説明する。ステップ2001で、モジュール管理テ
ーブル2014に含まれるすべてのモジュールMに対し
て、アンロードを実行し、OS管理識別子をNULLに
設定する。ステップ2002で、実行管理部をアンロー
ドし、処理2000を終了する。
【0096】図23は、コンポーネントを編集するため
の、編集画面の例である。領域2302は編集対象とな
っているコンポーネントの名称属性の入力領域であり、
領域2301は領域2302に対するタイトル文字列表
示する領域である。領域2304は編集対象となってい
るコンポーネントのインターフェースソース属性の入力
領域であり、領域2303は領域2304に対するタイ
トル文字列を表示する領域である。領域2306は編集
対象となっているコンポーネントの実装ソース属性の入
力領域であり、領域2305は領域2306に対するタ
イトル文字列を表示する領域である。2307はチェッ
クボックスであり、コンポーネントで定義される関数が
実行開始関数であるかの設定を行なう。コマンド230
9を選択すると、編集画面2300による編集作業を終
了し編集画面2300を閉じる。
【0097】図24は、処理500のステップ510の
入力画面の例である。領域2402は、入力対象となる
関数の名称を示す文字列を表示する領域であり、領域2
401は領域2402に対するタイトル文字列を表示す
る領域である。領域2404は、入力対象となる関数の
戻り値型を示す文字列を表示する領域であり、領域24
03は領域2404に対するタイトル文字列を表示する
領域である。領域2406は、入力対象となる関数の戻
り値をユーザが入力する領域であり、領域2405は領
域2406に対するタイトル文字列を表示する領域であ
る。
【0098】以降において、第2の実施の形態の説明を
第1の実施の形態の拡張として説明する。具体的には、
データ型としてはコンポーネントを、処理としては処理
500を拡張する。
【0099】図21は、第2の実施例を説明するための
ハードウェアの構成図を示す。複数の計算機システム1
00がネットワーク2101により連結され、前記ネッ
トワークおよびネットワークに連結された前記計算機シ
ステム100間でデータを転送する機能を有するネット
ワークソフトウェアにより前記ネットワークが管理さ
れ、前記ソフトウェアに対して計算機システム名および
ファイルパス名を指定することにより、前記計算機シス
テム名を名称として持つ計算機システムから前記ファイ
ルパスのファイルの転送を実行することができる。
【0100】コンポーネントを識別子、インターフェー
スソース実装ソース、ビルド、オブジェクトコード、参
照コンポーネントリスト、非参照コンポーネントリス
ト、モジュール識別子、計算機システム名称、コンポー
ネントデータファイルパス名、インポートフラグからな
るデータ型に拡張する。
【0101】識別子、インターフェース、ビルド、オブ
ジェクトコード、参照コンポーネントリスト、非参照コ
ンポーネントリスト、モジュール識別子は、拡張前と同
じである。
【0102】計算機システム名称属性には、ネットワー
ク2101に連結している計算機システム名称が設定さ
れる。
【0103】コンポーネントデータファイルパス名属性
には、コンポーネントの属性情報を持つファイルのファ
イル名を含むパス名が設定される。前記ファイルをコン
ポーネントデータファイルと呼ぶ。
【0104】インポートフラグには、定数0もしくは定
数1が設定される。インポートフラグが0のときコンポ
ーネントのソースがネットワーク上の他の計算機システ
ム上に存在し、自計算機システム内にはないことを示
す。ソースが存在する計算機システムは、計算機システ
ム名称属性に記述され、計算機システム名称で指定され
る計算機システム内でのコンポーネントデータファイル
の場所は、コンポーネントデータファイル名称属性で指
定される。
【0105】コンポーネントC(501)を入力として
処理2200(図22)を実行するステップを、コンパ
イル処理500のステップ502およびステップ503
の間に挿入することによりコンパイル処理500を拡張
する。
【0106】図22を用いて処理2200の手順を説明
する。入力としてコンポーネントC2201を取り、判
断2202において、Cのインポートフラグが0と等し
いとき、Cの計算機システム名およびCのコンポーネン
トデータファイルパス名をネットワークソフトウェアの
入力としてデータ転送命令を発行し、Cの計算機システ
ム名により指定される計算機システムのCのコンポーネ
ントデータファイルパス名により指定される外部記憶装
置内のファイルを前記命令を発行した計算機システムに
転送する。前記転送されたファイルをFに設定する(ス
テップ2203)。F中のコンポーネントのインターフ
ェースソースをCのインターフェースソースに設定する
(ステップ2204)。F中のコンポーネントの実装ソ
ースをCの実装ソースに設定する(ステップ220
5)。Cのインポートフラグに1を設定して(ステップ
2206)、処理2200を終了する。判断2202に
おいてCのインポートフラグが0と等しくないとき、処
理2200を終了する。
【0107】図25は、コンポーネントの計算機システ
ム名およびコンポーネントデータファイルパス名の設定
を行なう編集画面の例である。この画面はコンポーネン
ト編集画面2300のメニュー中のコマンドであるネッ
トワーク(2307)を選択することにより、画面25
00が表示される。2502は編集対象となっているコ
ンポーネントの計算機システム名称属性の入力領域であ
り、2501は前記領域に対するタイトル文字列であ
る。2504は編集対象となっているコンポーネントの
コンポーネントデータファイルパス名の入力領域であ
り、2503は前記領域に対するタイトル文字列であ
る。前記2つの入力領域が変更された時点で、編集対象
となっているコンポーネントのインポートフラグを0に
変更する。
【0108】
【発明の効果】本発明には以下の効果がある。
【0109】プログラムの実行前にプログラムの全ソー
スコードをコンパイル・リンクするのではなく、プログ
ラムの実行に必要なソースコードのみを実行時に必要に
なったときにコンパイル・リンクすることによりプログ
ラムを実行することができる。
【0110】前記プログラムの実行時に、ソースコード
が修正された関数が呼び出されたとき、前記関数のソー
スコードを再度コンパイル・リンクし実行継続すること
ができる。
【0111】前記プログラムの実行時に、実行時エラー
が発生したら、エラーが発生した関数のソースコードの
修正要求をユーザに出し、修正後実行を継続することが
できる。
【0112】前記プログラムの実行時に、コンパイルエ
ラーが発生したら、エラーが発生した関数のソースコー
ドの修正要求をユーザに出し、修正後実行を継続するこ
とができる。
【0113】前記プログラムの実行時に、関数呼び出し
の対象となる関数がまだ定義されていないとき、前記関
数の戻り値の指定をユーザに要求し、指定された値を前
記関数呼び出しの戻り値としてプログラムの実行を継続
することができる。
【0114】複数計算機システムが計算機ネットワーク
で連結された環境において、前記プログラムの実行時
に、関数呼び出しの対象となる関数を定義するコンポー
ネントの情報が他の計算機システムに存在するとき、前
記関数呼び出しが実行される時に、前記情報をネットワ
ーク経由で取得し、プログラムの実行継続することがで
きる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態のハードウェア構成
図である。
【図2】本発明の第1の実施の形態の機能構成図であ
る。
【図3】本発明の第1の実施の形態の実行処理の手順を
示すフローチャートである。
【図4】本発明の第1の実施の形態のモジュール生成処
理の手順を示すフローチャートである。
【図5】本発明の第1の実施の形態のコンパイル処理の
手順を示すフローチャートである。
【図6】本発明の第1の実施の形態の補助コード生成処
理の手順を示すフローチャートである。
【図7】図6が示す処理のステップ606で実行される
処理の手順を示すフローチャートである。
【図8】図6が示す処理のステップ608で実行される
処理の手順を示すフローチャートである。
【図9】本発明の第1の実施の形態のリンク処理の手順
をを示すフローチャートである。
【図10】本発明の第1の実施の形態を説明するために
用いられるコード生成の例である。
【図11】図10が示すコードの実行時の制御の流れを
説明する図である。
【図12】図10が示すコードの実行時のある時点での
システムスタックの状態を示す図である。
【図13】本発明の第1の実施の形態の実行管理部の実
行制御処理を示すフローチャートである。
【図14】本発明の第1の実施の形態の関数コール情報
生成処理の手順を示すフローチャートである。
【図15】本発明の第1の実施の形態の外部関数のアド
レス解決処理の手順を示すフローチャートである。
【図16】本発明の第1の実施の形態のモジュール管理
テーブル更新処理の手順を示すフローチャートである。
【図17】本発明の第1の実施の形態の外部関数管理テ
ーブルの更新処理の手順を示すフローチャートである。
【図18】図14が示す処理を拡張した処理の手順を示
すフローチャートである。
【図19】本発明の第1の実施の形態のエラー処理の手
順を示すフローチャートである。
【図20】本発明の第1の実施の形態の終了処理の手順
を示すフローチャートである。
【図21】本発明の第2の実施の形態のハードウェア構
成図である。
【図22】本発明の第2の実施の形態のデータ取得処理
の手順を示すフローチャートである。
【図23】本発明の第1の実施の形態のコンポーネント
編集画面例である。
【図24】本発明の第1の実施の形態の戻り値入力画面
の例である。
【図25】本発明の第2の実施の形態のネットワーク情
報設定画面の例である。
【符号の説明】
201…実行管理部、202…プログラム管理部、20
3…リンカ、204…コンパイラ、205…編集部、2
06…プログラムデータベース、2011…モード、
2012…カレントコンパイルモジュール、2013…
関数コール情報スタック、 2014…モジュール管理
テーブル、2015…外部関数管理テーブル。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】入出力装置及び記憶装置を有する計算機シ
    ステム上でプログラム言語によりプログラムを複数の構
    成要素の集合として記述し、プログラム構成要素間の依
    存関係情報を管理し、前記依存関係情報、コンパイラお
    よびリンカを用いて前記プログラムをマシンコードに変
    換し、前記コードを計算機上で実行するプログラム実行
    方法において、(1)プログラム構成要素のソースコード
    中に含まれる関数呼び出し命令の呼び出し対象となる関
    数で、他のプログラム構成要素で定義される関数に関す
    る情報を記憶装置に格納するステップと、(2)プログラ
    ムの実行時に、前記関数のマシンコードが生成されてい
    ないとき、前記関数の呼び出し命令の実行時に、前記関
    数を定義するプログラム構成要素のマシンコードを生成
    するステップと、(3)前記マシンコードと前記関数の対
    応関係および前記マシンコードに関する情報を記憶装置
    に格納するステップと、(4)前記関数の呼び出し命令を
    含むコードの実行時に、前記関数のマシンコードと前記
    関数の呼び出し命令を含むコードとを動的にリンクする
    ステップとを有することを特徴するプログラム実行方
    法。
  2. 【請求項2】前記プログラム実行方法は、さらに、プロ
    グラム構成要素の変更履歴情報を管理し、プログラム構
    成要素の依存関係情報および前記変更履歴情報に基づい
    て再度マシンコードを生成する必要があるプログラム構
    成要素を計算するステップを有するプログラム実行方法
    において、プログラム構成要素のソースコードでマシン
    コードの生成後、更にプログラムに変更が加えられた場
    合、前記プログラム構成要素で定義される関数の呼び出
    し命令の実行時に、前記計算の結果に基づいて前記プロ
    グラム構成要素からマシンコードを生成するステップを
    有することを特徴とする請求項1記載のプログラム実行
    方法。
  3. 【請求項3】前記プログラム実行方法において、プログ
    ラムの実行時に、更に詳細には関数の呼び出し命令の実
    行時に、前記関数の呼び出しに関する情報を記憶装置に
    格納し、前記プログラムの実行時に実行時エラーが発生
    した際に、前記情報に基づいて、エラーが発生したコー
    ドを含む関数のプログラム構成要素の修正をユーザに要
    求し、修正後前記関数の呼び出しの実行を継続するステ
    ップを有することを特徴とする請求項1又は2記載のプ
    ログラム実行方法。
  4. 【請求項4】前記プログラム実行方法は、さらに、複数
    の計算機システムがネットワークにより連結され相互に
    データの転送ができる計算機ネットワーク環境におい
    て、プログラム構成要素のソースコードが存在する計算
    機システム名と前記計算機システム内の場所に関する情
    報を記憶装置に格納しておき、プログラムの実行時に前
    記プログラム構成要素で定義される関数に対する関数呼
    び出し命令を実行する時に、前記関数のソースコードが
    ネットワーク上の別の計算機システムに存在し、自計算
    機システム内に存在しない場合、前記情報および前記デ
    ータ転送機能を利用して前記関数のソースコードを取得
    し、関数の呼び出しの実行を継続するステップを有する
    ことを特徴とする請求項1記載のプログラム実行方法。
  5. 【請求項5】前記プログラム実行方法において、プログ
    ラムの実行時に、更に詳細には関数呼び出し命令の実行
    時に、前記関数を定義するプログラム構成要素の実装ソ
    ースコードが記述されていない場合、ユーザに前記関数
    の戻り値を指定させることにより前記関数呼び出しの実
    行を継続するステップを有することを特徴とする請求項
    1記載のプログラム実行方法。
  6. 【請求項6】前記プログラム実行方法において、プログ
    ラム構成要素のマシンコードを生成するステップで行わ
    れる処理の実行に失敗した場合、ユーザにプログラムの
    修正を要求し、修正後前記マシンコード生成処理を再度
    実行するステップを有することを特徴とする請求項1記
    載のプログラム実行方法。
JP8794396A 1996-04-10 1996-04-10 プログラム実行方法 Pending JPH09282174A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8794396A JPH09282174A (ja) 1996-04-10 1996-04-10 プログラム実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8794396A JPH09282174A (ja) 1996-04-10 1996-04-10 プログラム実行方法

Publications (1)

Publication Number Publication Date
JPH09282174A true JPH09282174A (ja) 1997-10-31

Family

ID=13928984

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8794396A Pending JPH09282174A (ja) 1996-04-10 1996-04-10 プログラム実行方法

Country Status (1)

Country Link
JP (1) JPH09282174A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11327917A (ja) * 1998-05-08 1999-11-30 Nec Corp プログラム処理装置
JP2002504725A (ja) * 1998-02-19 2002-02-12 シグナス・ソリューションズ 最適化先読みコンパイラを使用したジャバ開発環境
JP2002534735A (ja) * 1998-12-30 2002-10-15 マイクロソフト コーポレイション インタプリティブ・ランタイム環境のためのコンパイル・プログラムの生成
WO2003040918A1 (fr) * 2001-11-07 2003-05-15 Fujitsu Limited Ordinateur virtuel equipe d'un compilateur jit, procede de fonctionnement correspondant, et dispositif terminal comprenant cet ordinateur virtuel
GB2483226A (en) * 2010-08-27 2012-03-07 Cnap Me Operations Ltd Compound network application platform

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002504725A (ja) * 1998-02-19 2002-02-12 シグナス・ソリューションズ 最適化先読みコンパイラを使用したジャバ開発環境
JPH11327917A (ja) * 1998-05-08 1999-11-30 Nec Corp プログラム処理装置
JP2002534735A (ja) * 1998-12-30 2002-10-15 マイクロソフト コーポレイション インタプリティブ・ランタイム環境のためのコンパイル・プログラムの生成
WO2003040918A1 (fr) * 2001-11-07 2003-05-15 Fujitsu Limited Ordinateur virtuel equipe d'un compilateur jit, procede de fonctionnement correspondant, et dispositif terminal comprenant cet ordinateur virtuel
GB2483226A (en) * 2010-08-27 2012-03-07 Cnap Me Operations Ltd Compound network application platform

Similar Documents

Publication Publication Date Title
JP2811990B2 (ja) プログラム処理装置及びプログラム処理方法
US5790860A (en) Method and apparatus for patching code residing on a read only memory device
US7263699B2 (en) Preparation of a software configuration using an XML type programming language
US6317870B1 (en) System and method for optimization of inter-module procedure calls
US5546586A (en) Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code
JP2986042B2 (ja) オブジェクト指向プログラミング環境を変更するための方法及び装置
US7299462B2 (en) Relocation format for linking
JPH02272627A (ja) デイジタル・コンピユータ・システムとその手続呼び出し方法
JP2006092544A (ja) プリオペレーティングシステム環境におけるモジュールの動的リンク
JP5147240B2 (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
JP2003233499A (ja) 複数の意味レベルによるアスペクト指向プログラミングのための方法
Fowler ‘The Fourth Generation Make
CN111400256B (zh) 一种应用程序调用资源文件的方法及装置
JPH09282174A (ja) プログラム実行方法
US7155701B1 (en) System for dynamically constructing an executable computer program
CN111984300B (zh) 代码复制方法及装置、电子设备和计算机可读存储介质
JP3266097B2 (ja) 非リエントラントプログラムの自動リエントラント化方法及びシステム
GB2420638A (en) Method of substituting code fragments in Internal Representation
JP3019915B2 (ja) 手続き呼出し方法
CN116107628B (zh) 一种基于node.js的文档整理方法
JPS61147336A (ja) ロ−ドモジユ−ルの世代管理方式
JPH0527951A (ja) プログラム群管理システム
JP3037227B2 (ja) 設計支援システム
JP2003076547A (ja) 制御ソフトウェア自動生成システムおよび方法
CN113535142A (zh) 自动生成Bean拷贝代码的方法及装置