(57)【特許請求の範囲】
【請求項１】
第１及び第２プログラムブロックをそれぞれ記憶している読出し専用の第１及び第２半導体メモリを有するプログラムリンク装置であって、前記第１プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第２半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行を指示する実行命令が記憶され、前記第２プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成され、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成手段と、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行手段とを備えることを特徴とするプログラムリンク装置。
【請求項２】
前記プログラムリンク装置は、さらに、参照テーブルと、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込手段と、前記第１プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成手段、参照テーブル書込手段に対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御手段とを備え、前記実行手段は、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項１記載のプログラムリンク装置。
【請求項３】
前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルと、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断手段と、前記判断手段により、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録手段と、前記判断手段により、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出手段とを含み、前記実行手段は、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項１記載のプログラムリンク装置。
【請求項４】
前記第２プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成手段は、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出手段と、前記アドレス抽出手段により、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換手段と、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項１記載のプログラムリンク装置。
【請求項５】
前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断手段と、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込手段と、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項１記載のプログラムリンク装置。
【請求項６】
第１及び第２プログラムブロックをそれぞれ記憶している読出し専用の第１及び第２半導体メモリを有し、前記第１プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第２半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行を指示する実行命令が記憶され、前記第２プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成されるプログラムリンク装置で用いられるプログラムリンク方法であって、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成ステップと、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行ステップとを含むことを特徴とするプログラムリンク方法。
【請求項７】
前記プログラムリンク装置は、さらに、参照テーブルを備え、前記プログラムリンク方法は、さらに、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込ステップと、前記第１プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成ステップ、参照テーブル書込ステップに対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御ステップとを備え、前記実行ステップは、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項６記載のプログラムリンク方法。
【請求項８】
前記プログラムリンク装置は、さらに、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルを備え、前記絶対アドレス生成ステップは、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断ステップと、前記判断ステップにより、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録ステップと、前記判断ステップにより、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出ステップとを含み、前記実行ステップは、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項６記載のプログラムリンク方法。
【請求項９】
前記プログラムリンク装置は、さらに、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルを備え、前記第２プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成ステップは、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出ステップと、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出ステップと、前記アドレス抽出ステップにより、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換ステップと、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込ステップとを含み、前記実行ステップは、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項６記載のプログラムリンク方法。
【請求項１０】
前記プログラムリンク装置は、さらに、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルを備え、前記絶対アドレス生成ステップは、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出ステップと、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断ステップと、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込ステップと、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出ステップとを含み、前記実行ステップは、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項６記載のプログラムリンク方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の読出し専用の半導体メモリに分割されて記録された複数のプログラムを結合して、相互にサブルーチン、データを参照するプログラムリンク装置及び方法に関する。
【０００２】
【従来の技術】
近年、プログラム命令を読出し専用の半導体メモリ（以下、ＲＯＭと称する。）に格納した組込み型マイコン制御システムにおいて、対象システムが複雑化しているので、製品の出荷後においてもソフトウェアの追加や部分的な置き換えが必要となってきている。
【０００３】
この場合、追加し又は置き換えるプログラムのサイズ、又はそのプログラムが利用するデータのサイズが変化するので、そのプログラム内のサブルーチンやそのプログラムが利用するデータのアドレスが変化する。そのため、既存のプログラム部分と追加し又は置き換えたプログラム部分との間でサブルーチンやデータのエクスポートシンボルを相互に参照している場合に、エクスポートシンボルのリンクが必要となる。
【０００４】
従来、このようなＲＯＭに記録されたプログラムのリンク方法として、ＲＯＭやＲＡＭ上に絶対アドレスにより固定的に割り当てられた参照テーブル内に、プログラム間で相互参照するためのエクスポートシンボルの存在する位置を絶対アドレスにより示す事により、スタッティクにエクスポートシンボルのリンクを実現している。
【０００５】
従来のＲＯＭに記録されたプログラムのリンクを行う装置の構成を図４８に示す。この図に示す装置は、ＲＯＭ−Ａ１０１、ＲＯＭ−Ｂ１０２、ＲＡＭ１０３、ＣＰＵバス１０４、ＣＰＵ１０５から構成されており、ＲＯＭ−Ａ１０１とＲＯＭ−Ｂ１０２とＲＡＭ１０３とＣＰＵ１０５は互いにＣＰＵバス１０４で接続されている。
【０００６】
ＲＯＭ−Ａ１０１はメインステップ１１０とプログラムＡ１２０を記憶しており、ＲＯＭ−Ｂ１０２はプログラムＢ１３０を記憶しており、ＲＡＭ１０３は、データＡ１４０とデータＢ１５０とを記憶している。ＣＰＵ１０５は、各ＲＯＭに格納された各プログラムを実行する。
プログラムＡ１２０及びプログラムＡ１２０により使用されるデータＡ１４０のメモリマップ及び内容を図４９に示す。この図に示すように、プログラムＡ１２０は、シンボルテーブルＡ１２１とプログラム命令部Ａ１２２とから構成されている。シンボルテーブルＡ１２１には、コードエクスポートシンボルであるシンボルＡ１２７が存在する位置を示す絶対アドレス１２３と、コードエクスポートシンボルであるシンボルＢ１２８が存在する位置を示す絶対アドレス１２４と、データエクスポートシンボルであるシンボルＣ１４１が存在する位置を示す絶対アドレス１２５と、データエクスポートシンボルであるシンボルＤ１４２が存在する位置を示す絶対アドレス１２６とが格納されている。絶対アドレス１２３、１２４、１２５、１２６が格納されている位置を示す絶対アドレスは、それぞれ、０Ｘ０１００００、０Ｘ０１０００４、０Ｘ０１０００８、０Ｘ０１０００Ｃである。プログラム命令部Ａ１２２には、シンボルＡ１２７で識別されるプログラムブロックと、シンボルＢ１２８で識別されるプログラムブロックとが格納されている。シンボルＡ１２７、シンボルＢ１２８が格納されている位置を示す絶対アドレスは、それぞれ、０Ｘ０１００１０、０Ｘ０１０２００である。データＡ１４０には、シンボルＣ１４１で識別されるデータブロックと、シンボルＤ１４２で識別されるデータブロックとが格納されている。データＡ１４０の先頭データが格納されている位置を示す絶対アドレスは、０Ｘ１１００００であり、シンボルＣ１４１、シンボルＤ１４２が格納されている位置を示す絶対アドレスは、それぞれ、０Ｘ１１０５００、０Ｘ１１０６００である。ここで、０Ｘは、以下に続く文字列が１６進数表示であることを示しており、以下においても同様である。
【０００７】
プログラムＢ１３０及びプログラムＢ１３０により使用されるデータＢ１５０のメモリマップ及び内容を図５０に示す。この図に示すように、プログラムＢ１３０は、シンボルテーブルＢ１３１とプログラム命令部Ｂ１３２とから構成されている。シンボルテーブルＢ１３１には、絶対アドレス１３３、１３４、１３５、１３６が格納されている。プログラム命令部Ｂ１３２には、シンボルＥ１３７とシンボルＦ１３８とにより識別されるプログラムブロックが格納されている。データＢ１５０には、シンボルＧ１５１とシンボルＨ１５２とにより識別されるデータブロックが格納されている。なお、プログラムＢ１３０の構造はプログラムＡ１２０の構造と同様であり、データＢ１５０の構造はデータＡ１４０の構造と同様であるので、詳細の説明は省略する。
【０００８】
メインステップ１１０に格納されているプログラムの動作を図５１のフローチャートを用いて説明する。メインステップ１１０は、シンボルＡ１２７により識別されるプログラムブロックとシンボルＥ１３７により識別されるプログラムブロックをこの順序で実行するように制御することをその主な目的とする。
メインステップ１１０では、変数ｐｔｒａにシンボルＡ１２７の絶対アドレスが格納されている０Ｘ０１００００番地の内容を取り出し代入し（Ｓ４０１）、変数ｐｔｒｅにシンボルＥ１３７の絶対アドレスが格納されている０Ｘ０２００００番地の内容を取り出し代入する（Ｓ４０２）。次に、変数ｐｔｒａの示すアドレスをコールし（Ｓ４０３）、変数ｐｔｒｅの示すアドレスをコールする（Ｓ４０４）。
【０００９】
シンボルＡ１２７で示されるプログラムブロックに格納されているプログラムをＣ言語で表現したものを図５２に示す。このプログラムは、シンボルＦ１３８により識別されるプログラムブロックを実行し、シンボルＧ１５１により識別されるデータブロックに変数ＸＸＸＸＸを代入し、シンボルＨ１５２により識別されるデータブロックに変数ＹＹＹＹＹを代入することをその主な目的とする。
【００１０】
この図において、行５０１では、シンボルＡを定義し、行５０２では、変数ｐｔｒｆにシンボルＦの絶対アドレスが格納されている０Ｘ０２０００４番地の内容を代入し、行５０３では、変数ｐｔｒｇにシンボルＧの絶対アドレスが格納されている０Ｘ０２０００８番地の内容を代入し、行５０４では、変数ｐｔｒｈにシンボルＨの絶対アドレスが格納されている０Ｘ０２０００ｃ番地の内容を代入し、行５０５では、変数ｐｔｒｆの示すアドレスをコールし、行５０６では、変数ｐｔｒｇの示すアドレスに変数ＸＸＸＸＸを代入し、行５０７では、変数ｐｔｒｈの示すアドレスに変数ＹＹＹＹＹを代入し、行５０８では、リターンする。
【００１１】
シンボルＥ１３７で示されるプログラムブロックに格納されているプログラムをＣ言語で表現したものを図５３に示す。このプログラムは、シンボルＢ１２８により識別されるプログラムブロックを実行し、シンボルＣ１４１により識別されるデータブロックに変数ＺＺＺＺＺを代入し、シンボルＤ１４２により識別されるデータブロックに変数ＯＯＯＯＯを代入することをその主な目的とする。
この図に示すＣ言語で表現されたプログラムは、図５２に示されるプログラムと同様の構成であるので、説明を省略する。
【００１２】
以上に説明したように、ＲＯＭやＲＡＭ上に絶対アドレスにより固定的に割り当てられた参照テーブル内に、プログラム間で相互参照するためのエクスポートシンボルの存在する位置を絶対アドレスにより示す事により、各プログラム間でのエクスポートシンボルのリンクが可能となる。
【００１３】
【発明が解決しようとする課題】
しかしながら、上記に示す従来のＲＯＭに記録されたプログラムのリンク方法では、スタッティクにエクスポートシンボルのリンクが行えるものの、ＲＯＭやＲＡＭ上の固定的に割り当てられた参照テーブル内に、プログラム間で相互参照するためのエクスポートシンボルの存在する位置を絶対アドレスにより示しており、インポートする側のプログラムにエクスポートする側のシンボルの絶対アドレスが埋め込まれてしまうので、インポートする側から見て他方のエクスポートする側のプログラムのメモリ空間での配置を固定する必要がある。また、シンボルテーブル内にシンボルに対応するアドレスが絶対アドレスで格納されているためそのプログラム自体のメモリ空間での配置を固定する必要がある。この２点の制約によりＲＯＭに記録されたプログラムが、一つの組込み型マイコン制御システムのメモリマップに依存し、異なるメモリマップのシステムにおいてＲＯＭに記録されたプログラムの共用ができないという問題点がある。
【００１４】
本発明はかかる点に鑑み、ＲＯＭに記録されたプログラムの内容が組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるプログラムリンク装置及び方法を提供することを目的とする。
【００１５】
【課題を解決するための手段】
上記の目的を達成するために、本発明は、第１及び第２プログラムブロックをそれぞれ記憶している読出し専用の第１及び第２半導体メモリを有するプログラムリンク装置であって、前記第１プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第２半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行へのアクセスを指示する実行命令が記憶され、前記第２プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成され、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成手段と、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行手段とを備えることを特徴とする。
【００１６】
ここで、前記プログラムリンク装置は、さらに、参照テーブルと、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込手段と、前記第１プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成手段、参照テーブル書込手段に対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御手段とを備え、前記実行手段は、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【００１７】
ここで、前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルと、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断手段と、前記判断手段により、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録手段と、前記判断手段により、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出手段とを含み、前記実行手段は、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【００１８】
ここで、前記第２プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成手段は、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出手段と、前記アドレス抽出手段により、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換手段と、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【００１９】
ここで、前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断手段と、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込手段と、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【００２０】
【発明の実施の形態】
本発明の実施の形態について説明する。
１  実施の形態１
本発明の一つの実施の形態としてのプログラムリンク装置１０００について説明する。
１．１  プログラムリンク装置１０００の構成
プログラムリンク装置１０００は、図１に示すように、ＣＰＵ１１０５、ＲＯＭ−Ａ１１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ１１０３から構成される。
【００２１】
ＲＯＭ−Ａ１１０１とＲＯＭ−Ｂ１１０２とＲＡＭ１１０３とＣＰＵ１１０５は互いにＣＰＵバス１１０４により接続されている。
ＲＯＭ−Ａ１１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ１１０３がそれぞれ有する記憶領域は、一つのアドレス空間に配置されている。従って、ＣＰＵ１１０５は、一種類のアドレスにより、ＲＯＭ−Ａ１１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ１１０３のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。このアドレスを絶対アドレスと呼ぶ。
１．１．１  ＣＰＵ１１０５
ＣＰＵ１１０５は、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【００２２】
ＣＰＵ１１０５は、ＲＯＭ−Ａ１１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ１１０３に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、ＣＰＵ１１０５は、ＲＯＭ−Ａ１１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ１１０３に記憶されているデータを読み出し、また、ＲＡＭ１１０３へデータを書込む。
１．１．２  ＲＯＭ−Ａ１１０１
ＲＯＭ−Ａ１１０１は、読出し専用の半導体メモリから構成される。ＲＯＭ−Ａ１１０１が有する記憶領域には、メインステップ１１１０、エクスポートシンボルインポートステップ１１６０、プログラムＡ１１２０が記録されている。
１．１．２．１  メインステップ１１１０
メインステップ１１１０は、前記アドレス空間において、絶対アドレス０Ｘ００００００で示される領域から配置されている。
【００２３】
メインステップ１１１０は、図２のフローチャートに示すように、ジャンプテーブル１１７０にエクスポートシンボルインポートステップ１１６０へのジャンプ命令を格納し（Ｓ１２０１）、シンボルＡの識別子であるＩＤ−Ａを引数としてエクスポートシンボルインポートステップ１１６０を呼び出し、変数ｐｔｒａにシンボルＡが記憶されている絶対アドレスを格納し（Ｓ１２０２）、変数ｐｔｒａを使ってシンボルＡを呼び出し（Ｓ１２０３）、シンボルＥの識別子であるＩＤ−Ｅを引数としてエクスポートシンボルインポートステップ１１６０を呼び出し、変数ｐｔｒｅにシンボルＥが記憶されている絶対アドレスを格納し（Ｓ１２０４）、変数ｐｔｒｅを使ってシンボルＥを呼び出す（Ｓ１２０５）手順を含んでいる。
【００２４】
メインステップ１１１０の目的とする処理は、シンボルＡにより識別されるプログラムブロックと、シンボルＥにより識別されるプログラムブロックとの実行である。
なお、シンボルＡ、Ｅ、識別子ＩＤ−Ａ、ＩＤ−Ｅ、シンボルＡにより識別されるプログラムブロックと、シンボルＥにより識別されるプログラムブロックについては、後述する。
１．１．２．２  エクスポートシンボルインポートステップ１１６０
エクスポートシンボルインポートステップ１１６０は、前記アドレス空間において、絶対アドレス０Ｘ００２０００で示される領域から配置されている。
【００２５】
エクスポートシンボルインポートステップ１１６０は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ１１６０が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ１１６０は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボルオフセットテーブルＡ１１２３又はエクスポートシンボルオフセットテーブルＢ１１３３から検索し、検索された識別子に対応するオフセットを取り出し、取り出したオフセットに所定の演算を施して、絶対アドレスを生成し、生成した絶対アドレスを前記他のプログラムに出力する。
【００２６】
なお、エクスポートシンボルオフセットテーブルＡ１１２３及びエクスポートシンボルオフセットテーブルＢ１１３３については、後述する。
シンボルには、命令を識別するコードシンボルとデータを識別するデータシンボルがある。エクスポートシンボルインポートステップ１１６０は、シンボルがコードシンボルである場合には、コードエクスポートシンボルオフセットテーブルＡ１１２８又はコードエクスポートシンボルオフセットテーブルＢ１１３８を用いて、絶対アドレスを生成し、シンボルがデータシンボルである場合には、データエクスポートシンボルオフセットテーブルＡ１１２９又はデータエクスポートシンボルオフセットテーブルＢ１１３９を用いて、絶対アドレスを生成する。
【００２７】
なお、後述するように、コードエクスポートシンボルオフセットテーブルＡ１１２８とデータエクスポートシンボルオフセットテーブルＡ１１２９とは、エクスポートシンボルオフセットテーブルＡ１１２３に含まれる。コードエクスポートシンボルオフセットテーブルＢ１１３８とデータエクスポートシンボルオフセットテーブルＢ１１３９とは、エクスポートシンボルオフセットテーブルＢ１１３３に含まれる。
【００２８】
識別子に対応するオフセットから絶対アドレスを生成する前記所定の演算は、次のとおりである。
シンボルがコードシンボルの場合は、（式１）により絶対アドレスが算出される。
（式１）  絶対アドレス  ＝  取り出したオフセット
＋  ０Ｘ０１００００  ＊  ｋ  ＋  ０Ｘ０１００００
ここで、ｋは、プログラムを識別する番号であり、プログラムＡについて、ｋ＝０であり、プログラムＢについて、ｋ＝１である。
【００２９】
（式１）に示す演算により、絶対アドレスが算出できるのは、プログラムＡは、アドレス空間内において、絶対アドレス０Ｘ０１００００から始まる領域に格納されており、プログラムＢは、アドレス空間内において、絶対アドレス０Ｘ０２００００から始まる領域に格納されているからである。つまり、先頭のプログラムが所定の絶対アドレスに格納されており、次のプログラムが所定の間隔をおいて格納されているからである。
【００３０】
シンボルがデータシンボルの場合は、（式２）により絶対アドレスが算出される。
（式２）  絶対アドレス  ＝  取り出したオフセット
＋  ０Ｘ０１００００  ＊  ｋ  ＋  ０Ｘ１１００００
ここで、（式１）と同様に、ｋは、プログラムを識別する番号であり、プログラムＡについて、ｋ＝０であり、プログラムＢについて、ｋ＝１である。
【００３１】
（式２）に示す演算により、絶対アドレスが算出できるのは、データＡは、アドレス空間内において、絶対アドレス０Ｘ１１００００から始まる領域に格納されており、データＢは、アドレス空間内において、絶対アドレス０Ｘ１２００００から始まる領域に格納されているからである。つまり、先頭のデータが所定の絶対アドレスに格納されており、次のデータが所定の間隔をおいて格納されているからである。
１．１．２．３  プログラムＡ１１２０
プログラムＡ１１２０は、図１に示すように、プログラムヘッダＡ１１２１、プログラム命令部Ａ１１２２、エクスポートシンボルオフセットテーブルＡ１１２３を含んでいる。
【００３２】
プログラムＡ１１２０は、前記アドレス空間において、絶対アドレス０Ｘ０１００００で示される領域から配置されている。
（１）プログラムヘッダＡ４１２１
プログラムヘッダＡ１１２１は、図３に示すように、プログラムＡ１１２０の先頭から配置され、コードエクスポートシンボルオフセットテーブルＡ１１２８の先頭位置を示すオフセット１１２４と、データエクスポートシンボルオフセットテーブルＡ１１２９の先頭位置を示すオフセット１１２５とを含む。ここで、オフセットとは、プログラムＡ１１２０の先頭位置を基準とした場合のアドレスである。
【００３３】
この図に示すように、オフセット１１２４は、「０Ｘ００１０００」であり、「０Ｘ００１０００」は、プログラムＡ１１２０内において、コードエクスポートシンボルオフセットテーブルＡ１１２８の先頭位置を示すアドレスである。また、オフセット１１２５は、「０Ｘ００１０１０」であり、「０Ｘ００１０１０」は、プログラムＡ１１２０内において、データエクスポートシンボルオフセットテーブルＡ１１２９の先頭位置を示すアドレスである。
（２）プログラム命令部Ａ１１２２
プログラム命令部Ａ１１２２は、図３に示すように、プログラムヘッダＡ１１２１に続く領域に配置され、少なくとも１の命令からなる少なくとも１のプログラムブロックを含んでいる。この図においては、プログラム命令部Ａ１１２２は、２つのプログラムブロックを含んでおり、それぞれのプログラムブロックは、シンボルＡ１１２６、シンボルＢ１１２７で識別される。
【００３４】
シンボルＡ１１２６は、絶対アドレス０Ｘ０１０００８で示される領域に格納されており、シンボルＢ１１２７は、絶対アドレス０Ｘ０１０２００で示される領域に格納されている。
（シンボルＡ１１２６により識別されるプログラムブロック）
シンボルＡ１１２６により識別されるプログラムブロックの一例を、図４に示す。この図において、シンボルＡ１１２６により識別されるプログラムブロックをＣ言語により表現している。
【００３５】
このプログラムブロックは、行１３０９、１３０１、１３０２、１３０３、１３０４、１３０５、１３０６、１３０７、１３０８及びその他の図示していない行からなる。
行１３０９には、シンボルＡが記載されている。
行１３０１は、変数ｉｍｐｏｒｔに、絶対アドレス０Ｘ１０００００を代入することを示しており、０Ｘ１０００００は、ジャンプテーブルの絶対アドレスである。
【００３６】
行１３０２は、識別子ＩＤ−Ｆを引数として、関数ｉｍｐｏｒｔを呼び出し、シンボルＦの格納されている絶対アドレスを返値として得て、変数ｐｔｒｆに代入することを示している。
行１３０３は、上記の値の代入された変数ｐｔｒｆの示すアドレスを呼び出すことを示している。
【００３７】
行１３０４は、識別子ＩＤ−Ｇを引数として、関数ｉｍｐｏｒｔを呼び出し、シンボルＧの格納されている絶対アドレスを返値として得て、変数ｐｔｒｆに代入することを示している。
行１３０５は、上記の値の代入された変数ｐｔｒｆの示すアドレスにより示される領域に、変数ＸＸＸＸＸの値を代入することを示している。
【００３８】
行１３０６は、識別子ＩＤ−Ｈを引数として、関数ｉｍｐｏｒｔを呼び出し、シンボルＨの格納されている絶対アドレスを返値として得て、変数ｐｔｒｆに代入することを示している。
行１３０７は、上記の値の代入された変数ｐｔｒｆの示すアドレスにより示される領域に、変数ＹＹＹＹＹの値を代入することを示している。
【００３９】
行１３０８は、このプログラムブロックを呼び出したプログラムブロックに制御が戻ることを示している。
上記に説明したように、シンボルＡ１１２６により識別されるプログラムブロックが実行されると、シンボルＦで識別されるプログラムブロックが呼び出されて実行され、シンボルＧにより識別されるデータブロックに、変数ＸＸＸＸＸの値が代入され、シンボルＨにより識別されるデータブロックに、変数ＹＹＹＹＹの値が代入される。
（シンボルＢ１１２７により識別されるプログラムブロック）
シンボルＢ１１２７により識別されるプログラムブロックは、図示していないが、シンボルＡ１１２６により識別されるプログラムブロックと同様に、複数の命令が記載されている。
（３）エクスポートシンボルオフセットテーブルＡ１１２３
エクスポートシンボルオフセットテーブルＡ１１２３は、コードエクスポートシンボルオフセットテーブルＡ１１２８と、データエクスポートシンボルオフセットテーブルＡ１１２９とを含む。
【００４０】
エクスポートシンボルオフセットテーブルＡ１１２３は、前記アドレス空間において、絶対アドレス０Ｘ０１１０００で示される領域から配置されている。
（コードエクスポートシンボルオフセットテーブルＡ１１２８）
コードエクスポートシンボルオフセットテーブルＡ１１２８は、前記アドレス空間において、絶対アドレス０Ｘ０１１０００で示される領域から配置されている。
【００４１】
コードエクスポートシンボルオフセットテーブルＡ１１２８は、コードシンボルの識別子と、コードシンボルの格納されている領域のオフセットとの組を記憶している。
具体的には、図３に示すように、コードエクスポートシンボルオフセットテーブルＡ１１２８は、シンボルＡの識別子１１８１「ＩＤ−Ａ」とシンボルＡのオフセット１１８６「０Ｘ０００００８」との組と、シンボルＢの識別子１１８２「ＩＤ−Ｂ」とシンボルＢのオフセット１１８７「０Ｘ０００２００」との組とを記憶している。
（データエクスポートシンボルオフセットテーブルＡ１１２９）
データエクスポートシンボルオフセットテーブルＡ１１２９は、前記アドレス空間において、絶対アドレス０Ｘ０１１０１０で示される領域から配置されている。
【００４２】
データエクスポートシンボルオフセットテーブルＡ１１２９は、データシンボルの識別子と、データシンボルの格納されている領域のオフセットとの組を記憶している。
ここで、オフセットとは、データＡの先頭位置を基準とした場合のアドレスである。
【００４３】
具体的には、図３に示すように、データエクスポートシンボルオフセットテーブルＡ１１２９は、シンボルＣの識別子１１８３「ＩＤ−Ｃ」とシンボルＣのオフセット１１８８「０Ｘ０００５００」との組と、シンボルＤの識別子１１８４「ＩＤ−Ｄ」とシンボルＤのオフセット１１８９「０Ｘ０００６００」との組とを記憶している。
１．１．３  ＲＯＭ−Ｂ１１０２
ＲＯＭ−Ｂ１１０２は、読出し専用の半導体メモリから構成される。ＲＯＭ−Ｂ１１０２が有する記憶領域には、プログラムＢ１１３０が記録されている。
１．１．３．１  プログラムＢ１１３０
プログラムＢ１１３０は、図１に示すように、プログラムヘッダＢ１１３１、プログラム命令部Ｂ１１３２、エクスポートシンボルオフセットテーブルＢ１１３３を含んでいる。
【００４４】
プログラムＢ１１３０は、前記アドレス空間において、絶対アドレス０Ｘ０２００００で示される領域から配置されている。
（１）プログラムヘッダＢ１１３１
プログラムヘッダＢ１１３１は、図５に示すように、プログラムＢ１１３０の先頭から配置され、コードエクスポートシンボルオフセットテーブルＢ１１３８の先頭位置を示すオフセット１１３４と、データエクスポートシンボルオフセットテーブルＢ１１３９の先頭位置を示すオフセット１１３５とを含む。ここで、オフセットとは、プログラムＢ１１３０の先頭位置を基準とした場合のアドレスである。
【００４５】
この図に示すように、オフセット１１３４は、「０Ｘ００２０００」であり、「０Ｘ００２０００」は、プログラムＢ１１３０内において、コードエクスポートシンボルオフセットテーブルＢ１１３８の先頭位置を示すアドレスである。また、オフセット１１３５は、「０Ｘ００２０１０」であり、「０Ｘ００２０１０」は、プログラムＢ１１３０内において、データエクスポートシンボルオフセットテーブルＢ１１３９の先頭位置を示すアドレスである。
（２）プログラム命令部Ｂ１１３２
プログラム命令部Ｂ１１３２は、図５に示すように、プログラムヘッダＢ１１３１に続く領域に配置され、少なくとも１の命令からなる少なくとも１のプログラムブロックを含んでいる。この図においては、プログラム命令部Ｂ１１３２は、２つのプログラムブロックを含んでおり、それぞれのプログラムブロックは、シンボルＥ１１３６、シンボルＦ１１３７で識別される。
【００４６】
シンボルＥ１１３６は、絶対アドレス０Ｘ０２０００８で示される領域に格納されており、シンボルＦ１１３７は、絶対アドレス０Ｘ０２０４００で示される領域に格納されている。
（シンボルＥ１１３６により識別されるプログラムブロック）
シンボルＥ１１３６により識別されるプログラムブロックの一例を、図６に示す。この図において、シンボルＥ１１３６により識別されるプログラムブロックをＣ言語により表現している。
【００４７】
このプログラムブロックは、行１４０９、１４０１、１４０２、１４０３、１４０４、１４０５、１４０６、１４０７、１４０８及びその他の図示していない行からなる。
各行の示す内容は、シンボルＡ１１２６により識別されるプログラムブロックの各行と同様であるので、説明を省略する。
【００４８】
シンボルＥ１１３６により識別されるプログラムブロックが実行されると、シンボルＢで識別されるプログラムブロックが呼び出されて実行され、シンボルＣにより識別されるデータブロックに、変数ＺＺＺＺＺの値が代入され、シンボルＤにより識別されるデータブロックに、変数ＯＯＯＯＯの値が代入される。
（シンボルＦ１１３７により識別されるプログラムブロック）
シンボルＦ１１３７により識別されるプログラムブロックは、図示していないが、シンボルＥ１１３６により識別されるプログラムブロックと同様に、複数の命令が記載されている。
（３）エクスポートシンボルオフセットテーブルＢ１１３３
エクスポートシンボルオフセットテーブルＢ１１３３は、コードエクスポートシンボルオフセットテーブルＢ１１３８と、データエクスポートシンボルオフセットテーブルＢ１１３９とを含む。
（コードエクスポートシンボルオフセットテーブルＢ１１３８）
コードエクスポートシンボルオフセットテーブルＢ１１３８は、コードシンボルの識別子と、コードシンボルの格納されている領域のオフセットとの組を記憶している。
【００４９】
具体的には、図５に示すように、コードエクスポートシンボルオフセットテーブルＢ１１３８は、シンボルＥの識別子１１９１「ＩＤ−Ｅ」とシンボルＥのオフセット１１９６「０Ｘ０００００８」との組と、シンボルＦの識別子１１９２「ＩＤ−Ｆ」とシンボルＦのオフセット１１９７「０Ｘ０００４００」との組とを記憶している。
（データエクスポートシンボルオフセットテーブルＢ１１３９）
データエクスポートシンボルオフセットテーブルＢ１１３９は、データシンボルの識別子と、データシンボルの格納されている領域のオフセットとの組を記憶している。
【００５０】
ここで、オフセットとは、データＢの先頭位置を基準とした場合のアドレスである。
具体的には、図５に示すように、データエクスポートシンボルオフセットテーブルＢ１１３９は、シンボルＧの識別子１１９３「ＩＤ−Ｇ」とシンボルＧのオフセット１１９８「０Ｘ０００７００」との組と、シンボルＨの識別子１１９４「ＩＤ−Ｈ」とシンボルＨのオフセット１１９９「０Ｘ０００８００」との組とを記憶している。
１．１．４  ＲＡＭ１１０３
ＲＡＭ１１０３は、読出し及び書込みの可能な半導体メモリから構成される。ＲＡＭ１１０３が有する記憶領域には、ジャンプテーブル１１７０、データＡ１１４０、データＢ１１５０が記憶される。
１．１．４．１  ジャンプテーブル１１７０
ジャンプテーブル１１７０は、前記アドレス空間内で、絶対アドレス０Ｘ１０００００で示される領域から格納されている。
【００５１】
ジャンプテーブル１１７０には、エクスポートシンボルインポートステップ１１６０へのジャンプ命令が格納される。
前記アドレス空間内での、ジャンプテーブル１１７０とエクスポートシンボルインポートステップ１１６０との配置を図７に示す。
この図に示すように、ジャンプテーブル１１７０内には、ジャンプ命令「ＪＭＰ  ０Ｘ００２０００」が格納されている。ここで、０Ｘ００２０００は、エクスポートシンボルインポートステップ１１６０が格納されている領域の絶対アドレスである。
【００５２】
ジャンプテーブル１１７０は、エクスポートシンボルインポートステップ１１６０のアドレス空間内での配置が変わった場合においても、決まった絶対アドレスで呼び出しができるようにするためにある。
１．１．４．２  データＡ１１４０
データＡ１１４０は、前記アドレス空間内で、絶対アドレス０Ｘ１１００００で示される領域から格納されている。
【００５３】
データＡ１１４０は、シンボルＣ１１４１で識別されるデータブロックと、
シンボルＤ１１４２で識別されるデータブロックとを含み、これらのデータブロックは、プログラムＡ１１２０により使用される。
シンボルＣ１１４１は、絶対アドレス０Ｘ１１０５００に格納され、シンボルＤ１１４２は、絶対アドレス０Ｘ１１０６００に格納されている。
１．１．４．３  データＢ１１５０
データＢ１１５０は、前記アドレス空間内で、絶対アドレス０Ｘ１２００００で示される領域から格納されている。
【００５４】
データＢ１１５０は、シンボルＧ１１５１で識別されるデータブロックと、
シンボルＨ１１５２で識別されるデータブロックとを含み、これらのデータブロックは、プログラムＢ１１３０により使用される。
シンボルＧ１１５１は、絶対アドレス０Ｘ１２０７００に格納され、シンボルＨ１１５２は、絶対アドレス０Ｘ１２０８００に格納されている。
１．２  プログラムリンク装置１０００の動作
１．２．１  ＣＰＵ１１０５の動作
ＣＰＵ１１０５の動作について、図８に示すフローチャートを用いて説明する。
【００５５】
ＣＰＵ１１０５は、ＲＯＭ−Ａ１１０１に記録されているメインステップ１１１０、エクスポートシンボルインポートステップ１１６０、プログラム命令部Ａ１１２２、及びＲＯＭ−Ｂ１１０２に記録されているプログラム命令部Ｂ１１３２に記載されている命令を読み出し（ステップＳ１５０１）、命令の読み出しが終了すれば（ステップＳ１５０２）、処理を終了し、命令の読み出しが終了しなければ（ステップＳ１５０２）、読み出した命令を実行し（ステップＳ１５０３）、ステップＳ１５０１へ戻って、再度命令の読み出しが終了するまで、命令の読み出しと命令の実行とを繰り返す。
１．２．２  エクスポートシンボルインポートステップ１１６０の動作
エクスポートシンボルインポートステップ１１６０の動作について、図９に示すフローチャートを用いて説明する。
【００５６】
エクスポートシンボルインポートステップ１１６０では、プログラムを識別する番号ｋに０を代入し（Ｓ１６０１）、番号ｋと全プログラム数とを比較して、番号ｋが全プログラム数よりも大きいか等しければ、識別子が見つからなかったので（Ｓ１６０１）、エラーとして処理を停止する。
番号ｋが全プログラム数よりも小さければ（Ｓ１６０１）、シンボルを識別する番号ｉに０を代入し（Ｓ１１０３）、番号ｉと全コードシンボル数とを比較し、番号ｉが全コードシンボル数よりも大きいか等しければ（ステップＳ１６０４）、ステップＳ１６１１へ制御を移す。
【００５７】
番号ｉが全コードシンボル数よりも小さければ（ステップＳ１６０４）、コードエクスポートシンボルオフセットテーブルのｉ番目の識別子と検索対象の識別子とを比較し、ｉ番目の識別子と検索対象の識別子とが等しければ（ステップＳ１６０５）、コードエクスポートシンボルオフセットテーブルのｉ番目のオフセットと０Ｘ０１００００×ｋと０Ｘ０１００００とを加算して加算結果を変数ｒｅｔに代入し（ステップＳ１６０６）、変数ｒｅｔとともに呼び出し元のプログラムに制御を戻す。
【００５８】
コードエクスポートシンボルオフセットテーブルのｉ番目の識別子と検索対象の識別子とを比較し、ｉ番目の識別子と検索対象の識別子とが等しくなければ（ステップＳ１６０５）、番号ｉに１を加算して、ステップＳ１６０４に制御を戻して、ｉ番目の識別子と検索対象の識別子との比較を繰り返す。
ステップＳ１６０４において、番号ｉが全コードシンボル数よりも大きいか等しい場合に、番号ｉに０を代入し（ステップＳ１６１１）、番号ｉと全データシンボル数とを比較して、番号ｉが全データシンボル数よりも大きいか等しい場合は（ステップＳ１６１２）、番号ｋに１を加算して（ステップＳ１６１６）、ステップＳ１６０２に制御を戻して、次のプログラムの番号について、シンボルの検索を繰り返す。
【００５９】
番号ｉが全データシンボル数よりも小さい場合は（ステップＳ１６１２）、データエクスポートシンボルオフセットテーブルのｉ番目の識別子と検索対象の識別子とを比較して、ｉ番目の識別子と検索対象の識別子とが等しい場合には（ステップＳ１６１３）、データエクスポートシンボルオフセットテーブルのｉ番目のオフセットと０Ｘ０１００００×ｋと０Ｘ０１１０００とを加算して加算結果を変数ｒｅｔに代入し（ステップＳ１６１５）、変数ｒｅｔとともに呼び出し元のプログラムに制御を戻す。
【００６０】
ｉ番目の識別子と検索対象の識別子とを比較して、ｉ番目の識別子と検索対象の識別子とが等しくない場合には（ステップＳ１６１３）、番号ｉに１を加算して（ステップＳ１６１４）、制御をステップＳ１６１２に戻し、ｉ番目の識別子と検索対象の識別子との比較を繰り返す。
１．３  まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、各シンボルが呼び出される都度、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換することにより、各シンボルの絶対アドレスを算出するので、各プログラム間でシンボルのリンクが可能となる。
【００６１】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
２  実施の形態２
本発明の別の一つの実施の形態としてのプログラムリンク装置２０００について説明する。
２．１  プログラムリンク装置２０００の構成
プログラムリンク装置２０００は、図１０に示すように、ＣＰＵ２１０５、ＲＯＭ−Ａ２１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ２１０３から構成される。
【００６２】
ＲＯＭ−Ａ２１０１とＲＯＭ−Ｂ１１０２とＲＡＭ２１０３とＣＰＵ２１０５は互いにＣＰＵバス２１０４により接続されている。
ＲＯＭ−Ａ２１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ２１０３がそれぞれ有する記憶領域は、実施の形態１と同様に、一つのアドレス空間に配置されている。従って、ＣＰＵ２１０５は、一種類のアドレスにより、ＲＯＭ−Ａ２１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ２１０３のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。
【００６３】
以下において、実施の形態１と同じ符号を付した構成要素は、同じ機能を有するので説明を省略し、相違する要素について、相違する点を中心に説明する。
２．１．１  ＣＰＵ２１０５
ＣＰＵ２１０５は、ＣＰＵ１１０５と同様に、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【００６４】
ＣＰＵ２１０５は、ＲＯＭ−Ａ２１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ２１０３に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、ＣＰＵ１１０５は、ＲＯＭ−Ａ２１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ２１０３に記憶されているデータを読み出し、また、ＲＡＭ２１０３へデータを書込む。
２．１．２  ＲＯＭ−Ａ２１０１
ＲＯＭ−Ａ２１０１は、読出し専用の半導体メモリから構成される。ＲＯＭ−Ａ２１０１が有する記憶領域には、メインステップ２１１０、エクスポートシンボル登録ステップ２１２０、エクスポートシンボルインポートステップ２１３０、プログラムＡ１１２０が記録されている。
２．１．２．１  メインステップ２１１０
メインステップ２１１０は、前記アドレス空間において、絶対アドレス０Ｘ００００００で示される領域から配置されている。
【００６５】
メインステップ２１１０は、図１１のフローチャートに示すように、ジャンプテーブル１１７０にエクスポートシンボルインポートステップ２１３０へのジャンプ命令を格納し（Ｓ２１１１）、エクスポートシンボル登録ステップ２１２０を呼び出して実行し（ステップＳ２１１２）、シンボルＡの識別子であるＩＤ−Ａを引数としてエクスポートシンボルインポートステップ２１３０を呼び出し、変数ｐｔｒａにシンボルＡが記憶されている絶対アドレスを格納し（Ｓ２１１３）、変数ｐｔｒａを使ってシンボルＡを呼び出し（Ｓ２１１４）、シンボルＥの識別子であるＩＤ−Ｅを引数としてエクスポートシンボルインポートステップ２１３０を呼び出し、変数ｐｔｒｅにシンボルＥが記憶されている絶対アドレスを格納し（Ｓ２１１５）、変数ｐｔｒｅを使ってシンボルＥを呼び出す（Ｓ２１１６）手順を含んでいる。
【００６６】
メインステップ２１１０の目的とする処理は、実施の形態１と同様に、シンボルＡにより識別されるプログラムブロックと、シンボルＥにより識別されるプログラムブロックとの実行である。
なお、シンボルＡ、Ｅ、識別子ＩＤ−Ａ、ＩＤ−Ｅ、シンボルＡにより識別されるプログラムブロックと、シンボルＥにより識別されるプログラムブロックについては、実施の形態１と同じであるので、説明は省略する。
２．１．２．２  エクスポートシンボル登録ステップ２１２０
エクスポートシンボル登録ステップ２１２０は、前記アドレス空間において、絶対アドレス０Ｘ００１０００で示される領域から配置されている。
【００６７】
エクスポートシンボル登録ステップ２１２０は、メインステップ２１１０から一度だけ呼び出される。
エクスポートシンボル登録ステップ２１２０は、メインステップ２１１０から呼び出されると、エクスポートシンボル登録ステップ２１２０は、各プログラム毎にエクスポートシンボルオフセットテーブルに格納されているシンボルの識別子と、当該識別子に対応するオフセットとの組を取り出し、取り出したオフセットに所定の演算を施して、絶対アドレスを生成する。このようにして、取り出したシンボルの識別子と、生成した絶対アドレスとを後述するエクスポートシンボル参照テーブル２１４０へ書き込む。
【００６８】
エクスポートシンボル登録ステップ２１２０は、各プログラム毎に、各プログラムに含まれているシンボルの識別子と当該識別子に対応するオフセットとの全ての組について、前記アドレスの生成と、エクスポートシンボル参照テーブル２１４０へ書き込みとを繰り返す。
実施の形態１と同様に、シンボルには、命令を識別するコードシンボルとデータを識別するデータシンボルがある。エクスポートシンボル登録ステップ２１２０は、シンボルがコードシンボルである場合には、コードエクスポートシンボルオフセットテーブルＡ１１２８又はコードエクスポートシンボルオフセットテーブルＢ１１３８を用いて、絶対アドレスを生成し、シンボルがデータシンボルである場合には、データエクスポートシンボルオフセットテーブルＡ１１２９又はデータエクスポートシンボルオフセットテーブルＢ１１３９を用いて、絶対アドレスを生成する。なお、実施の形態１と同様に、コードエクスポートシンボルオフセットテーブルＡ１１２８とデータエクスポートシンボルオフセットテーブルＡ１１２９とは、エクスポートシンボルオフセットテーブルＡ１１２３に含まれる。コードエクスポートシンボルオフセットテーブルＢ１１３８とデータエクスポートシンボルオフセットテーブルＢ１１３９とは、エクスポートシンボルオフセットテーブルＢ１１３３に含まれる。
【００６９】
識別子に対応するオフセットから絶対アドレスを生成する前記所定の演算は、次のとおりである。
シンボルがコードシンボルの場合は、実施の形態１と同様に、（式１）により絶対アドレスが算出される。
シンボルがデータシンボルの場合は、実施の形態１と同様に、（式２）により絶対アドレスが算出される。
２．１．２．３  エクスポートシンボルインポートステップ２１３０
エクスポートシンボルインポートステップ２１３０は、前記アドレス空間において、絶対アドレス０Ｘ００２０００で示される領域から配置されている。
【００７０】
エクスポートシンボルインポートステップ２１３０は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ２１３０が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ２１３０は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボル参照テーブル２１４０から検索し、検索された識別子に対応する絶対アドレスを取り出し、取り出した絶対アドレスを前記他のプログラムに出力する。
２．１．２．４  プログラムＡ１１２０
プログラムＡ１１２０は、図１に示すプログラムＡ１１２０と同じであるので、説明を省略する。
２．１．３  ＲＯＭ−Ｂ１１０２
ＲＯＭ−Ｂ１１０２は、図１に示すＲＯＭ−Ｂ１１０２と同じであるので、説明を省略する。
２．１．４  ＲＡＭ２１０３
ＲＡＭ２１０３は、読出し及び書込みの可能な半導体メモリから構成される。ＲＡＭ２１０３が有する記憶領域には、ジャンプテーブル１１７０、エクスポートシンボル参照テーブル２１４０、データＡ１１４０、データＢ１１５０が記憶される。
２．１．４．１  ジャンプテーブル１１７０
ジャンプテーブル１１７０は、図１に示すジャンプテーブル１１７０と同じであるので、説明を省略する。
【００７１】
前記アドレス空間内での、ジャンプテーブル１１７０とエクスポートシンボルインポートステップ２１３０との配置を図１２に示す。
この図に示すように、ジャンプテーブル１１７０内には、ジャンプ命令「ＪＭＰ  ０Ｘ００２０００」が格納されている。ここで、０Ｘ００２０００は、エクスポートシンボルインポートステップ２１３０が格納されている領域の絶対アドレスである。
２．１．４．２  エクスポートシンボル参照テーブル２１４０
エクスポートシンボル参照テーブル２１４０は、前記アドレス空間内で、絶対アドレス０Ｘ１０１０００で示される領域から格納されている。
【００７２】
エクスポートシンボル参照テーブル２１４０は、図１３に示すように、シンボルの識別子２１４１と、当該シンボルの格納されている領域の絶対アドレス２１４２との組を複数個記憶する領域を備えている。
２．１．４．３  データＡ１１４０
データＡ１１４０は、実施の形態１のデータＡ１１４０と同じであるので、説明を省略する。
２．１．４．４  データＢ１１５０
データＢ１１５０は、実施の形態１のデータＡ１１Ｂ０と同じであるので、説明を省略する。
２．２  プログラムリンク装置２０００の動作
２．２．１  ＣＰＵ２１０５の動作
ＣＰＵ２１０５の動作については、ＣＰＵ１１０５と同様であり、図８に示すフローチャートの通りであるので、説明を省略する。
２．２．２  エクスポートシンボル登録ステップ２１２０の動作
エクスポートシンボル登録ステップ２１２０の動作について、図１４に示すフローチャートを用いて説明する。
【００７３】
エクスポートシンボル登録ステップ２１２０では、プログラムを識別する番号ｋに０を代入し（Ｓ２２１１）、番号ｋと全プログラム数とを比較して、番号ｋが全プログラム数よりも大きいか等しければ（Ｓ２２１２）、処理を終了して、エクスポートシンボル登録ステップ２１２０を呼び出したプログラムに復帰する。
【００７４】
番号ｋが全プログラム数よりも小さければ（Ｓ２２１２）、０Ｘ０１００００×ｋと０Ｘ０１００００とを加算して加算結果を変数ｂａｓｅに代入し（ステップＳ２２１３）、シンボルを識別する番号ｉに０を代入しエクスポートシンボル参照テーブルの番号を示す変数ｊに０を代入する（Ｓ２２１４）。
番号ｉと全コードシンボル数とを比較し、番号ｉが全コードシンボル数よりも大きいか等しければ（ステップＳ２２１５）、ステップＳ２２２１へ制御を移す。
【００７５】
番号ｉが全コードシンボル数よりも小さければ（ステップＳ２２１５）、コードエクスポートシンボルオフセットテーブルのｉ番目の識別子をエクスポートシンボル参照テーブルのｊ番目の識別子に代入し（ステップＳ２２１６）、コードエクスポートシンボルオフセットテーブルのｉ番目のオフセットと前記算出された変数ｂａｓｅとを加算し、加算結果をエクスポートシンボル参照テーブルのｊ番目の絶対アドレスに代入し（ステップＳ２２１８）、番号ｉに１を加算し変数ｊに１を加算し（ステップＳ２２１９）、ステップＳ２２１５に制御を戻して、当該プログラム内の全てのコードシンボルについて、エクスポートシンボル参照テーブルへ識別子と絶対アドレスとの代入を繰り返す。
【００７６】
番号ｉが全コードシンボル数よりも大きいか等しければ（ステップＳ２２１５）、０Ｘ０１００００×ｋと０Ｘ１１００００とを加算して加算結果を変数ｂａｓｅに代入し（ステップＳ２２２１）、番号ｉに０を代入する（ステップＳ２２２２）。
番号ｉが全データシンボル数よりも大きいか等しければ（ステップＳ２２２３）、番号ｋに１を加算して、ステップＳ２２１２へ制御を戻し、全プログラムについて、コードシンボルとデータシンボルについてエクスポートシンボル参照テーブルへ識別子と絶対アドレスとの代入を繰り返す。
【００７７】
番号ｉが全データシンボル数よりも小さければ（ステップＳ２２２３）、
データエクスポートシンボルオフセットテーブルのｉ番目の識別子をエクスポートシンボル参照テーブルのｊ番目の識別子に代入し（ステップＳ２２２４）、データエクスポートシンボルオフセットテーブルのｉ番目のオフセットと前記算出された変数ｂａｓｅとを加算し、加算結果をエクスポートシンボル参照テーブルのｊ番目の絶対アドレスに代入し（ステップＳ２２２５）、番号ｉに１を加算し変数ｊに１を加算し（ステップＳ２２２６）、ステップＳ２２２３へ制御を戻し、当該プログラム内の全てのデータシンボルについて、エクスポートシンボル参照テーブルへ識別子と絶対アドレスとの代入を繰り返す。
２．２．３  エクスポートシンボルインポートステップ２１３０の動作
エクスポートシンボルインポートステップ２１３０の動作について、図１５に示すフローチャートを用いて説明する。
【００７８】
エクスポートシンボルインポートステップ２１３０では、エクスポートシンボル参照テーブル内の識別子の番号を示す変数ｊに０を代入し（Ｓ２３１１）、変数ｊと全エクスポートシンボル数とを比較して、番号ｊが全エクスポートシンボル数よりも大きいか等しければ、識別子が見つからなかったので（Ｓ２３１２）、エラーとして処理を停止する。
【００７９】
変数ｊが全エクスポートシンボル数よりも小さければ（Ｓ２３１２）、検索する識別子とエクスポートシンボル参照テーブル内のｊ番目の識別子とを比較して、等しければ（ステップＳ２３１３）、エクスポートシンボル参照テーブル内のｊ番目のアドレスを変数ｒｅｔに代入し（ステップＳ２３１５）、変数ｒｅｔとともにエクスポートシンボルインポートステップ２１３０の呼び出し元のプログラムへ復帰する。
【００８０】
検索する識別子とエクスポートシンボル参照テーブル内のｊ番目の識別子とが等しくなければ（ステップＳ２３１３）、変数ｊに１を加算して（ステップＳ２３１４）、ステップＳ２３１２へ制御を移し、エクスポートシンボル参照テーブルから検索する識別子と一致する識別子が見つかるまで、識別子の検索を繰り返す。
２．３  まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、全シンボルについて、あらかじめ、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換し、変換された絶対アドレスをシンボルの識別子とともに記憶し、シンボルが呼び出される都度、前記記憶されている絶対アドレスを読み出すので、各プログラム間でシンボルのリンクが可能となる。
【００８１】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
また、実施の形態１のようにエクスポートシンボルインポートステップが呼び出される都度、シンボルのオフセットから絶対アドレスへの変換を行う必要が無いので、エクスポートシンボルインポートステップの動作を高速化する事ができる。
３  実施の形態３
本発明の別の一つの実施の形態としてのプログラムリンク装置３０００について説明する。
３．１  プログラムリンク装置３０００の構成
プログラムリンク装置３０００は、図１６に示すように、ＣＰＵ３１０５、ＲＯＭ−Ａ３１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ３１０３から構成される。
【００８２】
ＲＯＭ−Ａ３１０１とＲＯＭ−Ｂ１１０２とＲＡＭ３１０３とＣＰＵ２１０５は互いにＣＰＵバス３１０４により接続されている。
ＲＯＭ−Ａ３１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ３１０３がそれぞれ有する記憶領域は、実施の形態１と同様に、一つのアドレス空間に配置されている。従って、ＣＰＵ２１０５は、一種類のアドレスにより、ＲＯＭ−Ａ３１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ３１０３のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。
【００８３】
以下において、実施の形態１と同じ符号を付した構成要素は、同じ機能を有するので説明を省略し、相違する要素について、相違する点を中心に説明する。
３．１．１  ＣＰＵ３１０５
ＣＰＵ３１０５は、ＣＰＵ１１０５と同様に、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【００８４】
ＣＰＵ３１０５は、ＲＯＭ−Ａ３１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ３１０３に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、ＣＰＵ１１０５は、ＲＯＭ−Ａ３１０１、ＲＯＭ−Ｂ１１０２、ＲＡＭ３１０３に記憶されているデータを読み出し、また、ＲＡＭ３１０３へデータを書込む。
３．１．２  ＲＯＭ−Ａ３１０１
ＲＯＭ−Ａ３１０１は、読出し専用の半導体メモリから構成される。ＲＯＭ−Ａ３１０１が有する記憶領域には、メインステップ３１１０、エクスポートシンボル参照キャッシュ初期化ステップ３１２０、エクスポートシンボルインポートステップ３１３０、プログラムＡ１１２０が記録されている。
３．１．２．１  メインステップ３１１０
メインステップ３１１０は、前記アドレス空間において、絶対アドレス０Ｘ００００００で示される領域から配置されている。
【００８５】
メインステップ３１１０は、図１７のフローチャートに示すように、ジャンプテーブル１１７０にエクスポートシンボルインポートステップ３１３０へのジャンプ命令を格納し（Ｓ３１１１）、エクスポートシンボル参照キャッシュ初期化ステップ３１２０を呼び出して実行し（ステップＳ３１１２）、シンボルＡの識別子であるＩＤ−Ａを引数としてエクスポートシンボルインポートステップ３１３０を呼び出し、変数ｐｔｒａにシンボルＡが記憶されている絶対アドレスを格納し（Ｓ３１１３）、変数ｐｔｒａを使ってシンボルＡを呼び出し（Ｓ３１１４）、シンボルＥの識別子であるＩＤ−Ｅを引数としてエクスポートシンボルインポートステップ３１３０を呼び出し、変数ｐｔｒｅにシンボルＥが記憶されている絶対アドレスを格納し（Ｓ３１１５）、変数ｐｔｒｅを使ってシンボルＥを呼び出す（Ｓ３１１６）手順を含んでいる。
【００８６】
メインステップ３１１０の目的とする処理は、実施の形態１と同様に、シンボルＡにより識別されるプログラムブロックと、シンボルＥにより識別されるプログラムブロックとの実行である。
なお、シンボルＡ、Ｅ、識別子ＩＤ−Ａ、ＩＤ−Ｅ、シンボルＡにより識別されるプログラムブロックと、シンボルＥにより識別されるプログラムブロックについては、実施の形態１と同じであるので、説明は省略する。
３．１．２．２  エクスポートシンボル参照キャッシュ初期化ステップ３１２０エクスポートシンボル参照キャッシュ初期化ステップ３１２０は、後述するエクスポートシンボル参照キャッシュ３１４０を初期する。
【００８７】
具体的には、エクスポートシンボル参照キャッシュ初期化ステップ３１２０は、エクスポートシンボル参照キャッシュ３１４０のシンボルＩＤ格納部の全ての識別子にＮＵＬＬ値を設定する。
３．１．２．３  エクスポートシンボルインポートステップ３１３０
エクスポートシンボルインポートステップ３１３０は、前記アドレス空間において、絶対アドレス０Ｘ００２０００で示される領域から配置されている。
【００８８】
エクスポートシンボルインポートステップ３１３０は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ３１３０が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ３１３０は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボル参照キャッシュ３１４０から検索し、検索された識別子に対応する絶対アドレスを取り出し、取り出した絶対アドレスを前記他のプログラムに出力する。
【００８９】
エクスポートシンボルインポートステップ３１３０は、受け取ったシンボルの識別子がエクスポートシンボル参照キャッシュ３１４０に存在しない場合は、図９に示す実施の形態１のエクスポートシンボルインポートステップ１１６０を実行して受け取ったシンボルの格納されている絶対アドレスを生成し、前記受け取ったシンボルの識別子と生成された絶対アドレスとをエクスポートシンボル参照キャッシュ３１４０に書込み、生成された絶対アドレスをエクスポートシンボルインポートステップ３１３０の呼び出し元のプログラムに返す。
３．１．２．４  プログラムＡ１１２０
プログラムＡ１１２０は、図１に示すプログラムＡ１１２０と同じであるので、説明を省略する。
３．１．３  ＲＯＭ−Ｂ１１０２
ＲＯＭ−Ｂ１１０２は、図１に示すＲＯＭ−Ｂ１１０２と同じであるので、説明を省略する。
３．１．４  ＲＡＭ３１０３
ＲＡＭ３１０３は、読出し及び書込みの可能な半導体メモリから構成される。ＲＡＭ３１０３が有する記憶領域には、ジャンプテーブル１１７０、エクスポートシンボル参照キャッシュ３１４０、データＡ１１４０、データＢ１１５０が記憶される。
３．１．４．１  ジャンプテーブル１１７０
ジャンプテーブル１１７０は、図１に示すジャンプテーブル１１７０と同じであるので、説明を省略する。
【００９０】
前記アドレス空間内での、ジャンプテーブル１１７０とエクスポートシンボルインポートステップ３１３０との配置を図１８に示す。
この図に示すように、ジャンプテーブル１１７０内には、ジャンプ命令「ＪＭＰ  ０Ｘ００２０００」が格納されている。ここで、０Ｘ００２０００は、エクスポートシンボルインポートステップ３１３０が格納されている領域の絶対アドレスである。
３．１．４．２  エクスポートシンボル参照キャッシュ３１４０
エクスポートシンボル参照キャッシュ３１４０は、前記アドレス空間において、絶対アドレス０Ｘ１００１００で示される領域から配置されている。
【００９１】
エクスポートシンボル参照キャッシュ３１４０は、図１９に示すように、シンボルの識別子と絶対アドレスとから構成されるエントリを４個格納する領域を備えている。４個のエントリを最初のエントリから数えて、エントリ０、エントリ１、エントリ２、エントリ３と呼ぶ。この図において、領域３１４２には、エントリ０のシンボルの識別子が格納され、領域３１４１には、エントリ０のシンボルの絶対アドレスが格納される。
【００９２】
この図は、エクスポートシンボル参照キャッシュ初期化ステップ３１２０により、シンボルの識別子を格納する領域が初期化される前の状態を示している。各エントリのシンボルの識別子と絶対アドレスを格納する領域には、不定値が格納されている。
エクスポートシンボル参照キャッシュ初期化ステップ３１２０により、シンボルの識別子を格納する領域が初期化された直後の、エクスポートシンボル参照キャッシュ３１４０の状態を図２０に示す。この図に示すように、各エントリのシンボルの識別子が格納される領域には、ＮＵＬＬ値が格納されており、各エントリのシンボルの絶対アドレス識別子が格納される領域には、不定値が格納されている。なお、この図において、「ＩＤ−ＮＵＬＬ」は、ＮＵＬＬ値を示す。
【００９３】
エクスポートシンボルインポートステップ３１３０によりエクスポートシンボル参照キャッシュ３１４０へシンボルの識別子と絶対アドレスとがいくつか書き込まれた後の、エクスポートシンボル参照キャッシュ３１４０の状態を、図２１に示す。この図では、エントリ０のシンボルの識別子の領域には、シンボルＢの識別子であるＩＤ−Ｂが格納され、エントリ０の絶対アドレスの領域には、シンボルＢが格納されている絶対アドレス０Ｘ０１０２００が格納されている。エントリ１のシンボルの識別子の領域には、シンボルＧの識別子であるＩＤ−Ｇが格納され、エントリ１の絶対アドレスの領域には、シンボルＧが格納されている絶対アドレス０Ｘ１２０７００が格納されている。エントリ２のシンボルの識別子の領域には、シンボルＥの識別子であるＩＤ−Ｅが格納され、エントリ２の絶対アドレスの領域には、シンボルＥが格納されている絶対アドレス０Ｘ０２０００８が格納されている。エントリ３の絶対アドレスの領域には、絶対アドレス０Ｘ０１０００８が格納されているが、エントリ３のシンボルの識別子の領域には、ＮＵＬＬ値が格納されているので、このエントリ３は使用されていないことを示している。
３．１．４．３  データＡ１１４０
データＡ１１４０は、実施の形態１のデータＡ１１４０と同じであるので、説明を省略する。
３．１．４．４  データＢ１１５０
データＢ１１５０は、実施の形態１のデータＡ１１Ｂ０と同じであるので、説明を省略する。
３．２  プログラムリンク装置３０００の動作
３．２．１  ＣＰＵ３１０５の動作
ＣＰＵ３１０５の動作については、ＣＰＵ１１０５と同様であり、図８に示すフローチャートの通りであるので、説明を省略する。
３．２．２  エクスポートシンボル参照キャッシュ初期化ステップ３１２０の動作
エクスポートシンボル参照キャッシュ初期化ステップ３１２０の動作について、図２２に示すフローチャートを用いて説明する。
【００９４】
エクスポートシンボル参照キャッシュ初期化ステップ３１２０では、エクスポートシンボル参照キャッシュ３１４０のエントリ番号を示す変数ｈに０を代入し（ステップＳ３１２１）、変数ｈがエクスポートシンボル参照キャッシュ３１４０の全エントリ数よりも大きいか等しければ（ステップＳ３１２２）、エクスポートシンボル参照キャッシュ初期化ステップ３１２０の呼び出し元のプログラムに制御を戻す。
【００９５】
変数ｈがエクスポートシンボル参照キャッシュ３１４０の全エントリ数よりも小さければ（ステップＳ３１２２）、エクスポートシンボル参照キャッシュ３１４０のｈ番目のエントリのシンボルの識別子の領域にＮＵＬＬ値を格納し（ステップＳ３１２３）、変数ｈに１を加算し（ステップＳ３１２４）、制御をステップＳ３１２２へ戻し、エクスポートシンボル参照キャッシュ３１４０の全てのシンボルの識別子の領域について、ＮＵＬＬ値の格納を繰り返す。
３．２．３  エクスポートシンボルインポートステップ３１３０の動作
エクスポートシンボルインポートステップ３１３０の動作について、図２３に示すフローチャートを用いて説明する。
【００９６】
エクスポートシンボルインポートステップ３１３０では、エクスポートシンボル参照キャッシュ３１４０のエントリ番号を示す変数ｈに０を代入し（ステップＳ３１３１）、変数ｈがエクスポートシンボル参照キャッシュ３１４０の全エントリ数よりも大きいか等しければ（ステップＳ３１３２）、ステップＳ３１３６へ制御を移す。
【００９７】
変数ｈがエクスポートシンボル参照キャッシュ３１４０の全エントリ数よりも小さい場合（ステップＳ３１３２）、検索する識別子とエクスポートシンボル参照キャッシュ３１４０のｈ番目のエントリの識別子とが等しければ（ステップＳ３１３３）、エクスポートシンボル参照キャッシュ３１４０のｈ番目の絶対アドレスをエクスポートシンボルインポートステップ３１３０の呼び出し元のプログラムへ返し処理を終了する（ステップＳ３１３４）。
【００９８】
検索する識別子とエクスポートシンボル参照キャッシュ３１４０のｈ番目のエントリの識別子とが等しくなければ（ステップＳ３１３３）、変数ｈに１を加算し（ステップＳ３１３５）、ステップＳ３１３２へ制御を戻す。
変数ｈがエクスポートシンボル参照キャッシュ３１４０の全エントリ数よりも大きいか等しければ（ステップＳ３１３２）、図９に示す実施の形態１のエクスポートシンボルインポートステップ１１６０を実行して検索するシンボルの格納されている絶対アドレスを生成し（ステップＳ３１３６）、０から３までの数字から、一つの数字をランダムに選択して、選択した数字を変数ｈに代入し（ステップＳ３１３７）、検索するシンボルの識別子をエクスポートシンボル参照キャッシュ３１４０のｈ番目のエントリのシンボルの識別子の領域に格納し（ステップＳ３１３８）、絶対生成された絶対アドレスをエクスポートシンボル参照キャッシュ３１４０のｈ番目のエントリの絶対アドレスの領域に格納する（ステップＳ３１３９）。
３．３  まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むエクスポート参照キャッシュを有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをエクスポート参照キャッシュに書き込むので、以前に参照されたシンボルを再度参照する際に、エクスポート参照キャッシュに記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となる。
【００９９】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
また、実施の形態２のように、すべてのエクスポートシンボルとその絶対アドレスの対をメモリ上に置かないので、必要なメモリの容量を小さく抑えつつ、エクスポートシンボルインポートステップの動作を高速化する事ができる。
４  実施の形態４
本発明の別の一つの実施の形態としてのプログラムリンク装置４０００について説明する。
４．１  プログラムリンク装置４０００の構成
プログラムリンク装置４０００は、図２４に示すように、ＣＰＵ４１９５、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２、キャッシュ装置４４００、ＲＡＭ１１０３から構成される。
【０１００】
ＲＯＭ−Ａ４１０１とＲＯＭ−Ｂ４１９２とキャッシュ装置４４００とＲＡＭ１１０３とＣＰＵ４１９５は互いにＣＰＵバス４１９４により接続されている。ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２、ＲＡＭ１１０３がそれぞれ有する記憶領域は、実施の形態１と同様に、一つのアドレス空間に配置されている。従って、ＣＰＵ４１９５は、一種類のアドレスにより、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２、ＲＡＭ１１０３のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。
【０１０１】
以下において、実施の形態１と同じ符号を付した構成要素は、同じ機能を有するので説明を省略し、相違する要素について、相違する点を中心に説明する。
４．１．１  ＣＰＵ４１９５
ＣＰＵ４１９５は、ＣＰＵ１１０５と同様に、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【０１０２】
ＣＰＵ４１９５は、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２、ＲＡＭ１１０３に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、ＣＰＵ４１９５は、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ５１０２、ＲＡＭ１１０３に記憶されているデータを読み出し、また、ＲＡＭ１１０３へデータを書込む。
４．１．２  ＲＯＭ−Ａ４１０１
ＲＯＭ−Ａ４１０１は、読出し専用の半導体メモリから構成される。ＲＯＭ−Ａ４１０１が有する記憶領域には、メインステップ４１９０、キャッシュ装置初期化ステップ４２００、エクスポートシンボルインポートステップ４３００、プログラムＡ４１２０が記録されている。
４．１．２．１  メインステップ４１９０
メインステップ４１９０は、前記アドレス空間において、絶対アドレス０Ｘ００００００で示される領域から配置されている。
【０１０３】
メインステップ４１９０は、図２５のフローチャートに示すように、キャッシュ装置４４００を初期化し（ステップＳ４１０１）、ジャンプテーブル１１７０にエクスポートシンボルインポートステップ４３００へのジャンプ命令を格納し（Ｓ４１０２）、シンボルＡの識別子であるＩＤ−Ａを引数としてエクスポートシンボルインポートステップ４３００を呼び出し、変数ｐｔｒａにシンボルＡが記憶されている絶対アドレスを格納し（Ｓ４１０３）、変数ｐｔｒａを使ってシンボルＡを呼び出し（Ｓ４１０４）、シンボルＥの識別子であるＩＤ−Ｅを引数としてエクスポートシンボルインポートステップ４３００を呼び出し、変数ｐｔｒｅにシンボルＥが記憶されている絶対アドレスを格納し（Ｓ４１０５）、変数ｐｔｒｅを使ってシンボルＥを呼び出す（Ｓ４１０６）手順を含んでいる。
【０１０４】
メインステップ４１９０の目的とする処理は、実施の形態１と同様に、シンボルＡにより識別されるプログラムブロックと、シンボルＥにより識別されるプログラムブロックとの実行である。
なお、シンボルＡ、Ｅ、識別子ＩＤ−Ａ、ＩＤ−Ｅ、シンボルＡにより識別されるプログラムブロックと、シンボルＥにより識別されるプログラムブロックについては、実施の形態１と同じであるので、説明は省略する。
４．１．２．２  キャッシュ装置初期化ステップ４２００
キャッシュ装置初期化ステップ４２００は、前記アドレス空間において、絶対アドレス０Ｘ００１０００で示される領域から配置されている。
【０１０５】
キャッシュ装置初期化ステップ４２００は、後述するキャッシュ装置４４００を初期する。
具体的には、キャッシュ装置初期化ステップ４２００は、キャッシュ装置４４００のキャッシュタグ部４４１０の全てのキャッシュ有効性フラグ４４０２を「無効」とする。
４．１．２．３  エクスポートシンボルインポートステップ４３００
エクスポートシンボルインポートステップ４３００は、前記アドレス空間において、絶対アドレス０Ｘ００２０００で示される領域から配置されている。
【０１０６】
エクスポートシンボルインポートステップ４３００は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ４３００が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ４３００は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボルＩＤテーブルから検索し、検索された識別子に対応するアドレスフラグを取り出す。
【０１０７】
エクスポートシンボルインポートステップ４３００は、取り出したアドレスフラグが「オフセット」を示す場合には、エクスポートシンボルＩＤテーブルのデータフラグが「コード」示すとき、（式３）により絶対アドレスを算出する。
（式３）  絶対アドレス  ＝
エクスポートシンボルアドレス情報テーブルのデータ
＋  ０Ｘ０１００００  ＊  ｋ  ＋  ０Ｘ０１００００
ここで、ｋは、プログラムを識別する番号であり、プログラムＡについて、ｋ＝０であり、プログラムＢについて、ｋ＝１である。
【０１０８】
エクスポートシンボルＩＤテーブルのデータフラグが「データ」示すとき、（式４）により絶対アドレスを算出する。
（式４）  絶対アドレス  ＝
エクスポートシンボルアドレス情報テーブルのデータ
＋  ０Ｘ０１００００  ＊  ｋ  ＋  ０Ｘ０１１０００
エクスポートシンボルインポートステップ４３００は、算出された絶対アドレスをエクスポートシンボルインポートステップ４３００の呼び出し元のプログラムに返す。
【０１０９】
次に、エクスポートシンボルインポートステップ４３００は、算出した絶対アドレスをエクスポートシンボルアドレス情報テーブルのデータに書込み、エクスポートシンボルアドレス情報テーブルのアドレスフラグを「絶対アドレス」を示すフラグとする。
エクスポートシンボルインポートステップ４３００は、取り出したフラグが「絶対アドレス」を示す場合には、エクスポートシンボルアドレス情報テーブルに格納されているデータを取り出し、取り出したデータを絶対アドレスとしてエクスポートシンボルインポートステップ４３００の呼び出し元のプログラムに返す。
【０１１０】
エクスポートシンボルインポートステップ４３００は、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２及びＲＡＭ１１０３の上に記録されている情報を参照する際に、参照する絶対アドレスがキャッシュ装置４４００のキャッシュタグ部から探し、参照する絶対アドレスがキャッシュ装置４４００のキャッシュタグ部に存在する場合、次に、キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「有効」であれば、対応するエントリの内容をキャッシュデータ部から取り出す。キャッシュ有効性フラグが「無効」であれば、参照する絶対アドレスで示される領域のデータを、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２又はＲＡＭ１１０３から、取り出し、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込む。
【０１１１】
参照する絶対アドレスがキャッシュ装置４４００のキャッシュタグ部に存在しない場合、参照する絶対アドレスで示される領域のデータを、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２又はＲＡＭ１１０３から、取り出す。キャッシュ有効性フラグが「無効」のキャッシュタグについては、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込む。全てのエントリについてキャッシュ有効性フラグが「有効」であるなら、エントリを一つランダムに選択し、選択したエントリについて、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込む。
【０１１２】
エクスポートシンボルインポートステップ４３００は、キャッシュ装置４４００のキャッシュタグ部及びキャッシュデータ部にデータを書き込む際には、データを書き込む絶対アドレスがキャッシュタグ部に存在する場合、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込む。
【０１１３】
データを書き込む絶対アドレスがキャッシュタグ部に存在しない場合、キャッシュ有効性フラグが「無効」のキャッシュタグが存在するとき、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、キャッシュ有効性フラグが「無効」であるキャッシュタグについて、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込む。
【０１１４】
キャッシュ有効性フラグが「無効」のキャッシュタグが存在しないとき、エントリを１つランダムに選択し、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、前記選択したエントリについて、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込む。
４．１．２．４  プログラムＡ４１２０
プログラムＡ４１２０は、図２６に示すように、プログラムヘッダＡ４１２１、プログラム命令部Ａ１１２２、エクスポートシンボルテーブルＡ４１２３を含んでいる。
【０１１５】
プログラムＡ４１２０は、前記アドレス空間において、絶対アドレス０Ｘ０１００００で示される領域から配置されている。
（１）プログラムヘッダＡ４１２１
プログラムヘッダＡ４１２１は、図２６に示すように、プログラムＡ４１２０の先頭から配置され、エクスポートシンボルＩＤテーブルＡ４１００の先頭位置を示すオフセット４１２４と、エクスポートシンボルアドレス情報テーブルＡ４１１０の先頭位置を示すオフセット４１２５とを含む。ここで、オフセットとは、プログラムＡ４１２０の先頭位置を基準とした場合のアドレスである。
【０１１６】
この図に示すように、オフセット４１２４は、「０Ｘ００１０００」であり、「０Ｘ００１０００」は、プログラムＡ４１２０内において、エクスポートシンボルＩＤテーブルＡ４１００の先頭位置を示すアドレスである。また、オフセット４１２５は、「０Ｘ００１０１０」であり、「０Ｘ００１０１０」は、プログラムＡ４１２０内において、エクスポートシンボルアドレス情報テーブルＡ４１１０の先頭位置を示すアドレスである。
（２）プログラム命令部Ａ１１２２
プログラム命令部Ａ１１２２は、図３に示すプログラム命令部Ａ１１２２と同じであるので、説明を省略する。
（３）エクスポートシンボルテーブルＡ４１２３
エクスポートシンボルテーブルＡ４１２３は、エクスポートシンボルＩＤテーブルＡ４１００と、エクスポートシンボルアドレス情報テーブルＡ４１１０とを含む。
【０１１７】
エクスポートシンボルテーブルＡ４１２３は、前記アドレス空間において、絶対アドレス０Ｘ０１１０００で示される領域から配置されている。
（エクスポートシンボルＩＤテーブルＡ４１００）
エクスポートシンボルＩＤテーブルＡ４１００は、前記アドレス空間において、絶対アドレス０Ｘ０１１０００で示される領域から配置されている。
【０１１８】
エクスポートシンボルＩＤテーブルＡ４１００は、シンボルの識別子と、シンボルがコードシンボルであるか、データシンボルであるかを示すコードフラグとの組を記憶している。
具体的には、図２６に示すように、エクスポートシンボルＩＤテーブルＡ４１００は、シンボルＡ１１２６の識別子４１０１「ＩＤ−Ａ」とコードフラグ４１０２「コード」との組と、シンボルＢ１１２７の識別子４１０３「ＩＤ−Ｂ」とコードフラグ４１０４「コード」との組と、シンボルＣ１１４１の識別子４１０５「ＩＤ−Ｃ」とコードフラグ４１０６「データ」との組と、シンボルＤ１１４２の識別子４１０７「ＩＤ−Ｄ」とコードフラグ４１０８「データ」との組とを記憶している。
（エクスポートシンボルアドレス情報テーブルＡ４１１０）
エクスポートシンボルアドレス情報テーブルＡ４１１０は、前記アドレス空間において、絶対アドレス０Ｘ０１１０１０で示される領域から配置されている。
【０１１９】
エクスポートシンボルアドレス情報テーブルＡ４１１０は、シンボルの格納されている領域のプログラムＡ４１２０内でのアドレスと、そのアドレスがオフセットであるか絶対アドレスであるかを示すアドレスフラグとの組を記憶している。
ここで、オフセットとは、プログラムＡ４１２０の先頭位置を基準とした場合のアドレスである。
【０１２０】
具体的には、図２６に示すように、エクスポートシンボルアドレス情報テーブルＡ４１１０は、オフセットを示すアドレスフラグ４１１１とシンボルＡ１１２６の格納されている領域のオフセットを示すアドレス４１１２との組と、オフセットを示すアドレスフラグ４１１３とシンボルＢ１１２７の格納されている領域のオフセットを示すアドレス４１１４との組と、オフセットを示すアドレスフラグ４１１５とシンボルＣ１１４１の格納されている領域のオフセットを示すアドレス４１１６との組と、オフセットを示すアドレスフラグ４１１７とシンボルＤ１１４２の格納されている領域のオフセットを示すアドレス４１１８との組とを記憶している。
４．１．３  ＲＯＭ−Ｂ４１９２
ＲＯＭ−Ｂ４１９２は、読出し専用の半導体メモリから構成される。ＲＯＭ−Ｂ４１９２が有する記憶領域には、プログラムＢ４１３０が記録されている。
４．１．３．１  プログラムＢ４１３０
プログラムＢ４１３０は、図２７に示すように、プログラムヘッダＢ４１３１、プログラム命令部Ｂ１１３２、エクスポートシンボルテーブルＢ４１３３を含んでいる。
【０１２１】
プログラムＢ４１３０は、前記アドレス空間において、絶対アドレス０Ｘ０２００００で示される領域から配置されている。
（１）プログラムヘッダＢ４１３１
プログラムヘッダＢ４１３１は、図２７に示すように、プログラムＢ４１３０の先頭から配置され、エクスポートシンボルＩＤテーブルＢ４１４０の先頭位置を示すオフセット４１３４と、エクスポートシンボルアドレス情報テーブルＢ４１５０の先頭位置を示すオフセット４１３５とを含む。ここで、オフセットとは、プログラムＢ４１３０の先頭位置を基準とした場合のアドレスである。
【０１２２】
この図に示すように、オフセット４１３４は、「０Ｘ００２０００」であり、「０Ｘ００２０００」は、プログラムＢ４１３０内において、エクスポートシンボルＩＤテーブルＢ４１４０の先頭位置を示すアドレスである。また、オフセット４１３５は、「０Ｘ００２０１０」であり、「０Ｘ００２０１０」は、プログラムＢ４１３０内において、エクスポートシンボルアドレス情報テーブルＢ４１５０の先頭位置を示すアドレスである。
（２）プログラム命令部Ｂ１１３２
プログラム命令部Ｂ１１３２は、図３に示すプログラム命令部Ｂ１１３２と同じであるので、説明を省略する。
（３）エクスポートシンボルテーブルＢ４１３３
エクスポートシンボルテーブルＢ４１３３は、エクスポートシンボルＩＤテーブルＢ４１４０と、エクスポートシンボルアドレス情報テーブルＢ４１５０とを含む。
【０１２３】
エクスポートシンボルテーブルＢ４１３３は、前記アドレス空間において、絶対アドレス０Ｘ０２２０００で示される領域から配置されている。
（エクスポートシンボルＩＤテーブルＢ４１４０）
エクスポートシンボルＩＤテーブルＢ４１４０は、前記アドレス空間において、絶対アドレス０Ｘ０２２０００で示される領域から配置されている。
【０１２４】
エクスポートシンボルＩＤテーブルＢ４１４０は、シンボルの識別子と、シンボルがコードシンボルであるか、データシンボルであるかを示すコードフラグとの組を記憶している。
具体的には、図２７に示すように、エクスポートシンボルＩＤテーブルＢ４１４０は、シンボルＥ１１３６の識別子４１４１「ＩＤ−Ｅ」とコードフラグ４１４２「コード」との組と、シンボルＦ１１３７の識別子４１４３「ＩＤ−Ｆ」とコードフラグ４１４４「コード」との組と、シンボルＧ１１５１の識別子４１４５「ＩＤ−Ｇ」とコードフラグ４１４６「データ」との組と、シンボルＨ１１５２の識別子４１４７「ＩＤ−Ｈ」とコードフラグ４１４８「データ」との組とを記憶している。
（エクスポートシンボルアドレス情報テーブルＢ４１５０）
エクスポートシンボルアドレス情報テーブルＢ４１５０は、前記アドレス空間において、絶対アドレス０Ｘ０２２０１０で示される領域から配置されている。
【０１２５】
エクスポートシンボルアドレス情報テーブルＢ４１５０は、シンボルの格納されている領域のプログラムＢ４１３０内でのアドレスと、そのアドレスがオフセットであるか絶対アドレスであるかを示すアドレスフラグとの組を記憶している。
ここで、オフセットとは、プログラムＢ４１３０の先頭位置を基準とした場合のアドレスである。
【０１２６】
具体的には、図２７に示すように、エクスポートシンボルアドレス情報テーブルＢ４１５０は、オフセットを示すアドレスフラグ４１５１とシンボルＥ１１３６の格納されている領域のオフセットを示すアドレス４１５２との組と、オフセットを示すアドレスフラグ４１５３とシンボルＦ１１３７の格納されている領域のオフセットを示すアドレス４１５４との組と、オフセットを示すアドレスフラグ４１５５とシンボルＧ１１５１の格納されている領域のオフセットを示すアドレス４１５６との組と、オフセットを示すアドレスフラグ４１５７とシンボルＨ１１５２の格納されている領域のオフセットを示すアドレス４１５８との組とを記憶している。
４．１．４  キャッシュ装置４４００
キャッシュ装置４４００は、図２８に示すように、キャッシュタグ部４４１０と、キャッシュデータ部４４５０とを含む。
【０１２７】
キャッシュタグ部４４１０は、４個のキャッシュタグ４４０９を記録する領域を有する。各キャッシュタグ４４０９は、アドレス４４０１と、キャッシュ有効性フラグ４４０２と、書込み有無フラグ４４０３とから構成される。
キャッシュデータ部４４５０は、４個のエントリから構成される。４個のエントリは、先頭からエントリ０、エントリ１、エントリ２、エントリ３と称し、この図において、それぞれ参照符号４４０５、４４０６、４４０７、４４０８で示されている。各エントリは、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２及びＲＡＭ１１０３上のデータを記録する。
【０１２８】
４個のエントリは、それぞれ前記４個のキャッシュタグに対応している。
アドレス４４０１には、アドレス４４０１を構成するキャッシュタグに対応するエントリに記録されたＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２及びＲＡＭ１１０３上のデータが格納されている絶対アドレスが格納される。
キャッシュ有効性フラグ４４０２は、キャッシュ有効性フラグ４４０２を構成するキャッシュタグ及び対応するエントリが有効であるか無効であるかを示す。
【０１２９】
書込み有無フラグ４４０３は、書込み有無フラグ４４０３を構成するキャッシュタグに対応するエントリにデータが書き込まれたか否かを示す。
キャッシュ装置初期化ステップ４２００により、キャッシュタグ部４４１０及びキャッシュデータ部４４５０が初期化された直後の、キャッシュタグ部４４１０及びキャッシュデータ部４４５０の状態を図２８に示す。
【０１３０】
この図に示すように、キャッシュタグ部４４１０の全てのアドレス４４０１には、それぞれ０Ｘ００００００が格納され、キャッシュタグ部４４１０の全てのキャッシュ有効性フラグ４４０２には、それぞれ「無効」を示す情報が格納され、キャッシュタグ部４４１０の全ての書込み有無フラグ４４０３には、それぞれ「無」を示す情報が格納されている。また、キャッシュデータ部４４５０の全てのエントリには、不定値が格納されている。
【０１３１】
ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２及びＲＡＭ１１０３上のいくつかのデータが参照され、キャッシュ装置４４００に対して、いくつかのデータが書き込まれた後の、キャッシュタグ部４４１１及びキャッシュデータ部４４５１の状態を図２９に示す。
この図に示すように、０番目のキャッシュタグには、アドレス４４０１として０Ｘ０１１０２０が格納され、キャッシュ有効性フラグ４４０２として「有効」が格納され、書込み有無フラグ４４０３として「有」が格納されている。また、参照符号４４０５で示されるエントリ０には、絶対アドレスを示すアドレスフラグと０Ｘ１１０５００とからなるデータが格納されている。
【０１３２】
１番目のキャッシュタグには、アドレス４４０１として０Ｘ０１１０００が格納され、キャッシュ有効性フラグ４４０２として「有効」が格納され、書込み有無フラグ４４０３として「無」が格納されている。また、参照符号４４０６で示されるエントリ１には、シンボルＡを識別する識別子「ＩＤ−Ａ」と、コードであることを示すコードフラグと、シンボルＢを識別する識別子「ＩＤ−Ｂ」と、コードであることを示すコードフラグとからなるデータが格納されている。
【０１３３】
２番目のキャッシュタグには、アドレス４４０１として０Ｘ０１１０１８が格納され、キャッシュ有効性フラグ４４０２として「有効」が格納され、書込み有無フラグ４４０３として「無」が格納されている。また、参照符号４４０７で示されるエントリ２には、オフセットを示すアドレスフラグと０Ｘ０００２００とからなるデータが格納されている。
【０１３４】
３番目のキャッシュタグには、アドレス４４０１として０Ｘ０２２０１０が格納され、キャッシュ有効性フラグ４４０２として「有効」が格納され、書込み有無フラグ４４０３として「有」が格納されている。また、参照符号４４０８で示されるエントリ３には、絶対アドレスを示すアドレスフラグと０Ｘ０２０００８とからなるデータが格納されている。
【０１３５】
キャッシュタグ部４４１１の２番目のキャッシュタグと、参照符号４４０７で示されるエントリ２とに対して、データの書込みが行われた後の、キャッシュタグ部４４１２及びキャッシュデータ部４４５２の状態を図３０に示す。
この図に示すように、２番目のキャッシュタグの書込み有無フラグに「有」が書き込まれ、参照符号４４０７で示されるエントリ２には、絶対アドレスを示すアドレスフラグと０Ｘ０１０２００とからなるデータが格納されている。
４．１．５  ＲＡＭ１１０３
ＲＡＭ１１０３は、読出し及び書込みの可能な半導体メモリから構成される。ＲＡＭ１１０３が有する記憶領域には、ジャンプテーブル１１７０、データＡ１１４０、データＢ１１５０が記憶される。
【０１３６】
ＲＡＭ１１０３、ジャンプテーブル１１７０、データＡ１１４０、データＢ１１５０については、実施の形態１と同じであるので、説明を省略する。
前記アドレス空間内での、ジャンプテーブル１１７０とエクスポートシンボルインポートステップ４３００との配置を図３１に示す。
この図に示すように、ジャンプテーブル１１７０内には、ジャンプ命令「ＪＭＰ  ０Ｘ００２０００」が格納されている。ここで、０Ｘ００２０００は、エクスポートシンボルインポートステップ４３００が格納されている領域の絶対アドレスである。
４．２  プログラムリンク装置４０００の動作
４．２．１  ＣＰＵ４１９５の動作
ＣＰＵ４１９５の動作については、ＣＰＵ１１０５と同様であり、図８に示すフローチャートの通りであるので、説明を省略する。
４．２．２  キャッシュ装置初期化ステップ４２００の動作
キャッシュ装置初期化ステップ４２００の動作について、図３２に示すフローチャートを用いて説明する。
【０１３７】
キャッシュ装置初期化ステップ４２００では、キャッシュ装置４４００のキャッシュタグ部のキャッシュタグの番号を示す変数ｈに０を代入し（ステップＳ４２０１）、変数ｈがキャッシュ装置４４００の全エントリ数よりも大きいか等しければ（ステップＳ４２０２）、キャッシュ装置初期化ステップ４２００の呼び出し元のプログラムに制御を戻す。
【０１３８】
変数ｈがキャッシュ装置４４００の全エントリ数よりも小さければ（ステップＳ４２０２）、キャッシュ部のｈ番目のキャッシュタグのキャッシュ有効性フラグを「無効」とし（ステップＳ４２０３）、変数ｈに１を加算し（ステップＳ４２０４）、制御をステップＳ４２０２へ戻し、処理を繰り返す。
４．２．３  エクスポートシンボルインポートステップ４３００の動作
エクスポートシンボルインポートステップ４３００の動作について、図３３〜図３４に示すフローチャートを用いて説明する。
【０１３９】
エクスポートシンボルインポートステップ４３００では、プログラムを識別する番号ｋに０を代入し（Ｓ４３０１）、番号ｋと全プログラム数とを比較して、番号ｋが全プログラム数よりも大きいか等しければ（Ｓ４３０２）、処理を終了する。
番号ｋが全プログラム数よりも小さければ（Ｓ４３０２）、シンボルの番号を示す変数ｉに０を代入する（ステップＳ４３０３）。
【０１４０】
番号ｉと全シンボル数とを比較して、変数ｉが全シンボル数よりも大きいか等しければ（Ｓ４３０４）、番号ｋに１を加算し（ステップＳ４３０７）、ステップＳ４３０２へ制御を戻す。
変数ｉが全シンボル数よりも小さい場合（Ｓ４３０４）、検索するシンボルの識別子とエクスポートシンボルＩＤテーブルのｉ番目の識別子とが一致しなければ（ステップＳ４３０５）、変数ｉに１を加算し（ステップＳ４３０６）、ステップＳ４３０４へ制御を戻す。
【０１４１】
検索するシンボルの識別子とエクスポートシンボルＩＤテーブルのｉ番目の識別子とが一致するならば（ステップＳ４３０５）、エクスポートシンボルアドレス情報テーブルのｉ番目のアドレスフラグが「オフセット」である場合（ステップＳ４３１１）、エクスポートシンボルＩＤテーブルのｉ番目のコードフラグが「コード」であるとき（ステップＳ４３１２）、エクスポートシンボルアドレス情報テーブルのｉ番目のデータと０Ｘ０１００００＊ｋと０Ｘ０１００００とを加算して、その加算値を変数ｒｅｔへ代入し（ステップＳ４３１６）、エクスポートシンボルＩＤテーブルのｉ番目のコードフラグが「コード」でないとき（ステップＳ４３１２）、エクスポートシンボルアドレス情報テーブルのｉ番目のデータと０Ｘ０１００００＊ｋと０Ｘ０１１０００とを加算して、その加算値を変数ｒｅｔへ代入し（ステップＳ４３１３）する。次に、変数ｒｅｔをエクスポートシンボルアドレス情報テーブルのｉ番目のデータに書込み（ステップＳ４３１４）、エクスポートシンボルアドレス情報テーブルのｉ番目のアドレスフラグを絶対アドレスとし（ステップＳ４３１５）、処理を終了して、変数ｒｅｔとともに、エクスポートシンボルインポートステップ４３００を呼び出したプログラムに復帰する。
【０１４２】
エクスポートシンボルアドレス情報テーブルのｉ番目のアドレスフラグが「オフセット」でない場合（ステップＳ４３１１）、エクスポートシンボルアドレス情報テーブルのｉ番目のデータを変数ｒｅｔに代入し（ステップＳ４３１７）、処理を終了して、変数ｒｅｔとともに、エクスポートシンボルインポートステップ４３００を呼び出したプログラムに復帰する。
【０１４３】
次に、エクスポートシンボルインポートステップ４３００が、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２及びＲＡＭ１１０３の上に記録されている情報を参照する際の動作について、図３５〜図３６に示すフローチャートを用いて説明する。
エクスポートシンボルインポートステップ４３００は、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２及びＲＡＭ１１０３の上に記録されている情報を参照する際に、参照する絶対アドレスをキャッシュ装置４４００のキャッシュタグ部から探し、参照する絶対アドレスがキャッシュ装置４４００のキャッシュタグ部に存在する場合（ステップＳ４４０１）、次に、キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「有効」であれば（ステップＳ４４１１）、対応するエントリの内容をキャッシュデータ部から取り出し（ステップＳ４４１２）、復帰する。
【０１４４】
キャッシュ有効性フラグが「無効」であれば（ステップＳ４４１１）、参照する絶対アドレスで示される領域のデータを、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２又はＲＡＭ１１０３から、取り出し（ステップＳ４４１３）、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み（ステップＳ４４１４）、復帰する。
【０１４５】
参照する絶対アドレスがキャッシュ装置４４００のキャッシュタグ部に存在しない場合（ステップＳ４４０１）、参照する絶対アドレスで示される領域のデータを、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２又はＲＡＭ１１０３から、取り出す（ステップＳ４４０２）。キャッシュ有効性フラグが「無効」のキャッシュタグについては（ステップＳ４４０３）、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み（ステップＳ４４０６）、復帰する。
【０１４６】
全てのエントリについてキャッシュ有効性フラグが「有効」であるなら（ステップＳ４４０３）、エントリを一つランダムに選択し（ステップＳ４４０４）、選択したエントリについて、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み（ステップＳ４４０５）、復帰する。
【０１４７】
次に、エクスポートシンボルインポートステップ４３００が、ＲＯＭ−Ａ４１０１、ＲＯＭ−Ｂ４１９２及びＲＡＭ１１０３の上に記録されている情報を更新する際の動作について、図３７に示すフローチャートを用いて説明する。
エクスポートシンボルインポートステップ４３００は、キャッシュ装置４４００のキャッシュタグ部及びキャッシュデータ部にデータを書き込む際には、データを書き込む絶対アドレスがキャッシュタグ部に存在する場合（ステップＳ４４５１）、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込み（ステップＳ４４５５）、復帰する。
【０１４８】
データを書き込む絶対アドレスがキャッシュタグ部に存在しない場合（ステップＳ４４５１）、キャッシュ有効性フラグが「無効」のキャッシュタグが存在するとき（ステップＳ４４５２）、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、キャッシュ有効性フラグが「無効」であるキャッシュタグについて、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込み（ステップＳ４４５６）、復帰する。
【０１４９】
キャッシュ有効性フラグが「無効」のキャッシュタグが存在しないとき（ステップＳ４４５２）、エントリを１つランダムに選択し（ステップＳ４４５３）、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、前記選択したエントリについて、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込み（ステップＳ４４５４）、復帰する。
４．３  まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込むので、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となる。
【０１５０】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
また、実施の形態２、３のように、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、２度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができる。
５  実施の形態５
本発明の別の一つの実施の形態としてのプログラムリンク装置５０００について説明する。
５．１  プログラムリンク装置５０００の構成
プログラムリンク装置５０００は、図３８に示すように、ＣＰＵ５１０５、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２、キャッシュ装置５４００、ＲＡＭ１１０３から構成される。
【０１５１】
ＲＯＭ−Ａ５１０１とＲＯＭ−Ｂ５１０２とキャッシュ装置５４００とＲＡＭ１１０３とＣＰＵ５１０５は互いにＣＰＵバス５１０４により接続されている。
ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２、ＲＡＭ１１０３がそれぞれ有する記憶領域は、実施の形態１と同様に、一つのアドレス空間に配置されている。従って、ＣＰＵ５１０５は、一種類のアドレスにより、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２、ＲＡＭ１１０３のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。
【０１５２】
以下において、実施の形態１と同じ符号を付した構成要素は、同じ機能を有するので説明を省略し、相違する要素について、相違する点を中心に説明する。
５．１．１  ＣＰＵ５１０５
ＣＰＵ５１０５は、ＣＰＵ１１０５と同様に、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【０１５３】
ＣＰＵ５１０５は、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２、ＲＡＭ１１０３に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、ＣＰＵ５１０５は、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２、ＲＡＭ１１０３に記憶されているデータを読み出し、また、ＲＡＭ１１０３へデータを書込む。
５．１．２  ＲＯＭ−Ａ５１０１
ＲＯＭ−Ａ５１０１は、読出し専用の半導体メモリから構成される。ＲＯＭ−Ａ５１０１が有する記憶領域には、メインステップ４１９０、キャッシュ装置初期化ステップ４２００、エクスポートシンボルインポートステップ５１００、プログラムＡ５２００が記録されている。
５．１．２．１  メインステップ４１９０
メインステップ４１９０は、前記アドレス空間において、絶対アドレス０Ｘ００００００で示される領域から配置されている。
【０１５４】
メインステップ４１９０は、実施の形態４に示すメインステップ４１９０と同じであるので、説明を省略する。
５．１．２．２  キャッシュ装置初期化ステップ４２００
キャッシュ装置初期化ステップ４２００は、前記アドレス空間において、絶対アドレス０Ｘ００１０００で示される領域から配置されている。
【０１５５】
キャッシュ装置初期化ステップ４２００は、後述するキャッシュ装置５４００を初期する。
キャッシュ装置初期化ステップ４２００は、実施の形態４に示すキャッシュ装置初期化ステップ４２００と同じであるので、説明を省略する。
５．１．２．３  エクスポートシンボルインポートステップ５１００
エクスポートシンボルインポートステップ５１００は、前記アドレス空間において、絶対アドレス０Ｘ００２０００で示される領域から配置されている。
【０１５６】
エクスポートシンボルインポートステップ５１００は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ５１００が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ５１００は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボルＩＤテーブルから検索する。検索する識別子が含まれるデータに対応するキャッシュタグの書込み有無フラグを見て、書込み有無フラグが「有」である場合には、エクスポートシンボルアドレス情報テーブルのデータを取り出し、取り出したデータを絶対アドレスとして、エクスポートシンボルインポートステップ５１００の呼び出し元のプログラムに返す。
【０１５７】
書込み有無フラグが「無」である場合には、エクスポートシンボルＩＤテーブルのデータフラグが「コード」示すとき、（式３）により絶対アドレスを算出する。
エクスポートシンボルＩＤテーブルのデータフラグが「データ」示すとき、（式４）により絶対アドレスを算出する。
【０１５８】
エクスポートシンボルインポートステップ５１００は、算出された絶対アドレスをエクスポートシンボルインポートステップ５１００の呼び出し元のプログラムに返す。
次に、エクスポートシンボルインポートステップ５１００は、算出した絶対アドレスをエクスポートシンボルアドレス情報テーブルのデータに書込む。
（データの参照）
エクスポートシンボルインポートステップ５１００は、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２及びＲＡＭ１１０３の上に記録されている情報を参照する際に、参照する絶対アドレスをキャッシュ装置５４００のキャッシュタグ部から探し、参照する絶対アドレスがキャッシュ装置５４００のキャッシュタグ部に存在する場合、次に、キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「有効」であれば、対応するエントリの内容をキャッシュデータ部から取り出す。キャッシュ有効性フラグが「無効」であれば、参照する絶対アドレスで示される領域のデータを、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２又はＲＡＭ１１０３から、取り出し、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み、「無」を示す書込み有無フラグを、エクスポートシンボルインポートステップ５１００の呼び出し元のプログラムへ返す。
【０１５９】
参照する絶対アドレスがキャッシュ装置４４００のキャッシュタグ部に存在しない場合、参照する絶対アドレスで示される領域のデータを、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２又はＲＡＭ１１０３から、取り出す。キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「無効」のキャッシュタグについては、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み、「無」を示す書込み有無フラグを、エクスポートシンボルインポートステップ５１００の呼び出し元のプログラムへ返す。
【０１６０】
全てのエントリについてキャッシュ有効性フラグが「有効」であるなら、エントリを一つランダムに選択し、選択したエントリについて、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み、「無」を示す書込み有無フラグを、エクスポートシンボルインポートステップ５１００の呼び出し元のプログラムへ返す。
（データの書込み）
エクスポートシンボルインポートステップ５１００は、キャッシュ装置５４００のキャッシュタグ部及びキャッシュデータ部にデータを書き込む際には、実施の形態４のエクスポートシンボルインポートステップ４３００と同じであるので、説明を省略する。
５．１．２．４  プログラムＡ５２００
プログラムＡ５２００は、図３９に示すように、プログラムヘッダＡ５１２１、プログラム命令部Ａ１１２２、エクスポートシンボルテーブルＡ５２１０を含んでいる。
【０１６１】
プログラムＡ５２００は、前記アドレス空間において、絶対アドレス０Ｘ０１００００で示される領域から配置されている。
（１）プログラムヘッダＡ５１２１
プログラムヘッダＡ５１２１は、図３９に示すように、プログラムＡ５２００の先頭から配置され、エクスポートシンボルＩＤテーブルＡ５２２０の先頭位置を示すオフセット５１２４と、エクスポートシンボルアドレス情報テーブルＡ５２３０の先頭位置を示すオフセット５１２５とを含む。ここで、オフセットとは、プログラムＡ４１２０の先頭位置を基準とした場合のアドレスである。
【０１６２】
この図に示すように、オフセット５１２４は、「０Ｘ００１０００」であり、「０Ｘ００１０００」は、プログラムＡ５２００内において、エクスポートシンボルＩＤテーブルＡ５２２０の先頭位置を示すアドレスである。また、オフセット５１２５は、「０Ｘ００１０１０」であり、「０Ｘ００１０１０」は、プログラムＡ５２００内において、エクスポートシンボルアドレス情報テーブルＡ５２３０の先頭位置を示すアドレスである。
（２）プログラム命令部Ａ１１２２
プログラム命令部Ａ１１２２は、図３に示すプログラム命令部Ａ１１２２と同じであるので、説明を省略する。
（３）エクスポートシンボルテーブルＡ５２１０
エクスポートシンボルテーブルＡ５２１０は、エクスポートシンボルＩＤテーブルＡ５２２０と、エクスポートシンボルアドレス情報テーブルＡ５２３０とを含む。
【０１６３】
エクスポートシンボルテーブルＡ５２１０は、前記アドレス空間において、絶対アドレス０Ｘ０１１０００で示される領域から配置されている。
（エクスポートシンボルＩＤテーブルＡ５２２０）
エクスポートシンボルＩＤテーブルＡ５２２０は、前記アドレス空間において、絶対アドレス０Ｘ０１１０００で示される領域から配置されている。
【０１６４】
エクスポートシンボルＩＤテーブルＡ５２２０は、シンボルの識別子と、シンボルがコードシンボルであるか、データシンボルであるかを示すコードフラグとの組を記憶している。
具体的には、図３９に示すように、エクスポートシンボルＩＤテーブルＡ５２２０は、シンボルＡ１１２６の識別子５２２１「ＩＤ−Ａ」とコードフラグ５２２２「コード」との組と、シンボルＢ１１２７の識別子５２２３「ＩＤ−Ｂ」とコードフラグ５２２４「コード」との組と、シンボルＣ１１４１の識別子５２２５「ＩＤ−Ｃ」とコードフラグ５２２６「データ」との組と、シンボルＤ１１４２の識別子５２２７「ＩＤ−Ｄ」とコードフラグ５２２８「データ」との組とを記憶している。
（エクスポートシンボルアドレス情報テーブルＡ５２３０）
エクスポートシンボルアドレス情報テーブルＡ５２３０は、前記アドレス空間において、絶対アドレス０Ｘ０１１０１０で示される領域から配置されている。
【０１６５】
エクスポートシンボルアドレス情報テーブルＡ５２３０は、シンボルの格納されている領域のプログラムＡ５２００内でのアドレスを記憶している。
ここで、プログラムＡ５２００の先頭位置を基準とした場合のアドレスを、オフセットと呼ぶ。
具体的には、図３９に示すように、エクスポートシンボルアドレス情報テーブルＡ５２３０は、シンボルＡ１１２６の格納されている領域のオフセットを示すアドレス５２３１と、シンボルＢ１１２７の格納されている領域のオフセットを示すアドレス５２３２と、シンボルＣ１１４１の格納されている領域のオフセットを示すアドレス５２３３と、シンボルＤ１１４２の格納されている領域のオフセットを示すアドレス５２３４とを記憶している。
５．１．３  ＲＯＭ−Ｂ５１０２
ＲＯＭ−Ｂ５１０２は、読出し専用の半導体メモリから構成される。ＲＯＭ−Ｂ５１０２が有する記憶領域には、プログラムＢ５３００が記録されている。
５．１．３．１  プログラムＢ５３００
プログラムＢ５３００は、図４０に示すように、プログラムヘッダＢ５１３１、プログラム命令部Ｂ１１３２、エクスポートシンボルテーブルＢ５３１０を含んでいる。
【０１６６】
プログラムＢ５３００は、前記アドレス空間において、絶対アドレス０Ｘ０２００００で示される領域から配置されている。
（１）プログラムヘッダＢ５１３１
プログラムヘッダＢ５１３１は、図４０に示すように、プログラムＢ５３００の先頭から配置され、エクスポートシンボルＩＤテーブルＢ５３２０の先頭位置を示すオフセット５１３４と、エクスポートシンボルアドレス情報テーブルＢ５３３０の先頭位置を示すオフセット５１３５とを含む。ここで、オフセットとは、プログラムＢ５３００の先頭位置を基準とした場合のアドレスである。
【０１６７】
この図に示すように、オフセット５１３４は、「０Ｘ００２０００」であり、「０Ｘ００２０００」は、プログラムＢ５３００内において、エクスポートシンボルＩＤテーブルＢ５３２０の先頭位置を示すアドレスである。また、オフセット５１３５は、「０Ｘ００２０１０」であり、「０Ｘ００２０１０」は、プログラムＢ５３００内において、エクスポートシンボルアドレス情報テーブルＢ５３３０の先頭位置を示すアドレスである。
（２）プログラム命令部Ｂ１１３２
プログラム命令部Ｂ１１３２は、図３に示すプログラム命令部Ｂ１１３２と同じであるので、説明を省略する。
（３）エクスポートシンボルテーブルＢ５３１０
エクスポートシンボルテーブルＢ５３１０は、エクスポートシンボルＩＤテーブルＢ５３２０と、エクスポートシンボルアドレス情報テーブルＢ５３３０とを含む。
【０１６８】
エクスポートシンボルテーブルＢ５３１０は、前記アドレス空間において、絶対アドレス０Ｘ０２２０００で示される領域から配置されている。
（エクスポートシンボルＩＤテーブルＢ５３２０）
エクスポートシンボルＩＤテーブルＢ５３２０は、前記アドレス空間において、絶対アドレス０Ｘ０２２０００で示される領域から配置されている。
【０１６９】
エクスポートシンボルＩＤテーブルＢ５３２０は、シンボルの識別子と、シンボルがコードシンボルであるか、データシンボルであるかを示すコードフラグとの組を記憶している。
具体的には、図４０に示すように、エクスポートシンボルＩＤテーブルＢ５３２０は、シンボルＥ１１３６の識別子５３２１「ＩＤ−Ｅ」とコードフラグ５３２２「コード」との組と、シンボルＦ１１３７の識別子５３２３「ＩＤ−Ｆ」とコードフラグ５３２４「コード」との組と、シンボルＧ１１５１の識別子５３２５「ＩＤ−Ｇ」とコードフラグ５３２６「データ」との組と、シンボルＨ１１５２の識別子５３２７「ＩＤ−Ｈ」とコードフラグ５３２８「データ」との組とを記憶している。
（エクスポートシンボルアドレス情報テーブルＢ５３３０）
エクスポートシンボルアドレス情報テーブルＢ５３３０は、前記アドレス空間において、絶対アドレス０Ｘ０２２０１０で示される領域から配置されている。
【０１７０】
エクスポートシンボルアドレス情報テーブルＢ５３３０は、シンボルの格納されている領域のプログラムＢ５３００内でのアドレスを記憶している。
ここで、プログラムＢ４１３０の先頭位置を基準とした場合のアドレスをオフセットと呼ぶ。
具体的には、図４０に示すように、エクスポートシンボルアドレス情報テーブルＢ５３３０は、シンボルＥ１１３６の格納されている領域のオフセットを示すアドレス５３３１と、シンボルＦ１１３７の格納されている領域のオフセットを示すアドレス５３３２と、シンボルＧ１１５１の格納されている領域のオフセットを示すアドレス５３３３と、シンボルＨ１１５２の格納されている領域のオフセットを示すアドレス５３３４とを記憶している。
５．１．４  キャッシュ装置５４００
キャッシュ装置５４００は、図４１に示すように、キャッシュタグ部５４１０と、キャッシュデータ部５４５０とを含む。
【０１７１】
キャッシュタグ部５４１０は、実施の形態４のキャッシュタグ部４４１０と同じであり、キャッシュデータ部５４５０は、実施の形態４のキャッシュデータ部４４５０と同じであるので、説明を省略する。
キャッシュ装置初期化ステップ４２００により、キャッシュタグ部５４１０及びキャッシュデータ部５４５０が初期化された直後の状態は、キャッシュタグ部４４１０及びキャッシュデータ部４４５０と同じであるので、説明を省略する。
【０１７２】
ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２及びＲＡＭ１１０３上のいくつかのデータが参照され、キャッシュ装置４４００に対して、いくつかのデータが書き込まれた後の、キャッシュタグ部５４１０及びキャッシュデータ部５４５０の状態を図４１に示す。
この図に示すように、０番目のキャッシュタグには、アドレス４４０１として０Ｘ０１１０２０が格納され、キャッシュ有効性フラグ４４０２として「有効」が格納され、書込み有無フラグ４４０３として「有」が格納されている。また、参照符号４４０５で示されるエントリ０には、０Ｘ１１０５００からなるデータが格納されている。
【０１７３】
１番目のキャッシュタグには、アドレス４４０１として０Ｘ０１１０００が格納され、キャッシュ有効性フラグ４４０２として「有効」が格納され、書込み有無フラグ４４０３として「無」が格納されている。また、参照符号４４０６で示されるエントリ１には、シンボルＡを識別する識別子「ＩＤ−Ａ」と、コードであることを示すコードフラグと、シンボルＢを識別する識別子「ＩＤ−Ｂ」と、コードであることを示すコードフラグとからなるデータが格納されている。
【０１７４】
２番目のキャッシュタグには、アドレス４４０１として０Ｘ０１１０１８が格納され、キャッシュ有効性フラグ４４０２として「有効」が格納され、書込み有無フラグ４４０３として「無」が格納されている。また、参照符号４４０７で示されるエントリ２には、０Ｘ０００２００からなるデータが格納されている。
３番目のキャッシュタグには、アドレス４４０１として０Ｘ０２２０１０が格納され、キャッシュ有効性フラグ４４０２として「有効」が格納され、書込み有無フラグ４４０３として「有」が格納されている。また、参照符号４４０８で示されるエントリ３には、０Ｘ０２０００８からなるデータが格納されている。
【０１７５】
キャッシュタグ部５４１０の２番目のキャッシュタグと、参照符号４４０７で示されるエントリ２とに対して、データの書込みが行われた後の、キャッシュタグ部５４１１及びキャッシュデータ部５４５１の状態を図４２に示す。
この図に示すように、２番目のキャッシュタグの書込み有無フラグに「有」が書き込まれ、参照符号４４０７で示されるエントリ２には、０Ｘ０１０２００からなるデータが格納されている。
５．１．５  ＲＡＭ１１０３
ＲＡＭ１１０３は、読出し及び書込みの可能な半導体メモリから構成される。ＲＡＭ１１０３が有する記憶領域には、ジャンプテーブル１１７０、データＡ１１４０、データＢ１１５０が記憶される。
【０１７６】
ＲＡＭ１１０３、ジャンプテーブル１１７０、データＡ１１４０、データＢ１１５０については、実施の形態１と同じであるので、説明を省略する。
前記アドレス空間内での、ジャンプテーブル１１７０とエクスポートシンボルインポートステップ５１００との配置を図４３に示す。
この図に示すように、ジャンプテーブル１１７０内には、ジャンプ命令「ＪＭＰ  ０Ｘ００２０００」が格納されている。ここで、０Ｘ００２０００は、エクスポートシンボルインポートステップ４３００が格納されている領域の絶対アドレスである。
５．２  プログラムリンク装置５０００の動作
５．２．１  ＣＰＵ５１０５の動作
ＣＰＵ５１０５の動作については、ＣＰＵ１１０５と同様であり、図８に示すフローチャートの通りであるので、説明を省略する。
５．２．２  キャッシュ装置初期化ステップ４２００の動作
キャッシュ装置初期化ステップ４２００の動作については、実施の形態４のキャッシュ装置初期化ステップ４２００の動作と同じであるので、説明を省略する。
５．２．３  エクスポートシンボルインポートステップ５１００の動作
エクスポートシンボルインポートステップ５１００の動作について、図４４〜図４５に示すフローチャートを用いて説明する。
【０１７７】
エクスポートシンボルインポートステップ５１００では、プログラムを識別する番号ｋに０を代入し（Ｓ５１０１）、番号ｋと全プログラム数とを比較して、番号ｋが全プログラム数よりも大きいか等しければ（Ｓ５１０２）、処理を終了する。
番号ｋが全プログラム数よりも小さければ（Ｓ５１０２）、シンボルの番号を示す変数ｉに０を代入する（ステップＳ５１０３）。
【０１７８】
番号ｉと全シンボル数とを比較して、変数ｉが全シンボル数よりも大きいか等しければ（Ｓ５１０４）、番号ｋに１を加算し（ステップＳ５１０７）、ステップＳ５１０２へ制御を戻す。
変数ｉが全シンボル数よりも小さければ（Ｓ５１０４）、検索するシンボルの識別子とエクスポートシンボルＩＤテーブルのｉ番目の識別子とが一致しなければ（ステップＳ５１０５）、変数ｉに１を加算し（ステップＳ４３０６）、ステップＳ５１０４へ制御を戻す。
【０１７９】
検索するシンボルの識別子とエクスポートシンボルＩＤテーブルのｉ番目の識別子とが一致するならば（ステップＳ５１０５）、エクスポートシンボルアドレス情報テーブルが格納されているデータに対応するキャッシュタグの書込み有無フラグが「無」である場合（ステップＳ５１１１）、エクスポートシンボルＩＤテーブルのｉ番目のコードフラグが「コード」であるとき（ステップＳ５１１３）、エクスポートシンボルアドレス情報テーブルのｉ番目のデータと０Ｘ０１００００＊ｋと０Ｘ０１００００とを加算して、その加算値を変数ｒｅｔへ代入し（ステップＳ５１１４）、エクスポートシンボルＩＤテーブルのｉ番目のコードフラグが「コード」でないとき（ステップＳ５１１３）、エクスポートシンボルアドレス情報テーブルのｉ番目のデータと０Ｘ０１００００＊ｋと０Ｘ０１１０００とを加算して、その加算値を変数ｒｅｔへ代入し（ステップＳ５１１５）する。次に、変数ｒｅｔをエクスポートシンボルアドレス情報テーブルのｉ番目のデータに書込み（ステップＳ５１１６）、処理を終了して、変数ｒｅｔとともに、エクスポートシンボルインポートステップ５１００を呼び出したプログラムに復帰する。
【０１８０】
エクスポートシンボルアドレス情報テーブルが格納されているデータに対応するキャッシュタグの書込み有無フラグが「無」でない場合（ステップＳ５１１１）、エクスポートシンボルアドレス情報テーブルのｉ番目のデータを変数ｒｅｔに代入し（ステップＳ５１１２）、処理を終了して、変数ｒｅｔとともに、エクスポートシンボルインポートステップ５１００を呼び出したプログラムに復帰する。
【０１８１】
次に、エクスポートシンボルインポートステップ５１００が、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２及びＲＡＭ１１０３の上に記録されている情報を参照する際の動作について、図４６〜図４７に示すフローチャートを用いて説明する。
エクスポートシンボルインポートステップ５１００は、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２及びＲＡＭ１１０３の上に記録されている情報を参照する際に、参照する絶対アドレスをキャッシュ装置５４００のキャッシュタグ部から探し、参照する絶対アドレスがキャッシュ装置５４００のキャッシュタグ部に存在する場合（ステップＳ４４０１）、次に、キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「有効」であれば（ステップＳ４４１１）、対応するエントリの内容をキャッシュデータ部から取り出し（ステップＳ４４１２）、復帰する。
【０１８２】
キャッシュ有効性フラグが「無効」であれば（ステップＳ４４１１）、参照する絶対アドレスで示される領域のデータを、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２又はＲＡＭ１１０３から、取り出し（ステップＳ４４１３）、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み（ステップＳ４４１４）、「無」を示す書込み有無フラグを返して（ステップＳ５４０３）、復帰する。
【０１８３】
参照する絶対アドレスがキャッシュ装置４４００のキャッシュタグ部に存在しない場合（ステップＳ４４０１）、参照する絶対アドレスで示される領域のデータを、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２又はＲＡＭ１１０３から、取り出す（ステップＳ４４０２）。キャッシュ有効性フラグが「無効」のキャッシュタグについては（ステップＳ４４０３）、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み（ステップＳ４４０６）、「無」を示す書込み有無フラグを返して（ステップＳ５４０１）、復帰する。
【０１８４】
全てのエントリについてキャッシュ有効性フラグが「有効」であるなら（ステップＳ４４０３）、エントリを一つランダムに選択し（ステップＳ４４０４）、選択したエントリについて、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み（ステップＳ４４０５）、「無」を示す書込み有無フラグを返して（ステップＳ５４０２）、復帰する。
【０１８５】
次に、エクスポートシンボルインポートステップ５１００が、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２及びＲＡＭ１１０３の上に記録されている情報を更新する際の動作については、図３７に示す実施の形態４のエクスポートシンボルインポートステップ４３００が、ＲＯＭ−Ａ５１０１、ＲＯＭ−Ｂ５１０２及びＲＡＭ１１０３の上に記録されている情報を更新する際の動作と同じであるので、説明を省略する。
５．３  まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込むので、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となる。
【０１８６】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
また、実施の形態２、３のように、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、２度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができる。
【０１８７】
さらに、エクスポートシンボルテーブルに格納されているアドレス情報がオフセットであるかアドレスであるかをキャッシュタグの書き込み有無フラグによって示しているので、エクスポートシンボルテーブルを簡素化できると共にキャッシュ装置を備えない実施の形態１のプログラムリンク装置と同じエクスポートシンボルテーブルを利用することができる。このため、キャッシュ装置を備えないシステムとキャッシュ装置を備えるシステムに対して置き換えや追加を行うプログラムを別々に用意する必要が無い。
６．その他の実施の変形例
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は上記実施の形態に限定されないのはもちろんである。すなわち、以下のような場合も本発明に含まれる。
（１）本実施の形態では、先頭のプログラムが所定の絶対アドレスに格納されており、次のプログラムが所定の間隔をおいて格納されているとしている。また、先頭のデータが所定の絶対アドレスに格納されており、次のデータが所定の一定間隔をおいて格納されているとしているが、このような配置方法には、限定されない。一定間隔ではなく、複数のプログラムが予め決められた間隔をおいて、格納されているとしてもよい。また、データについても同様である。
【０１８８】
また、プログラム及びデータが格納されている領域の先頭アドレスを記憶するテーブルを有しているとしてもよい。この場合に、エクスポートシンボルインポートステップ１１６０は、前記テーブルを用いて、オフセットを絶対に変換するとしてもよい。
また、各プログラムヘッダにプログラムサイズとデータサイズの情報を追加するようにしてもよい。これにより、隣接して各プログラムを配置してもプログラムサイズ情報を用いて隣り合わせたプログラムのプログラムヘッダを見つけ出す事ができるので、各プログラム同士もしくは各データ同士を隣接して配置する事も可能である。言い換えれば、プログラムヘッダにリンクリスト構造を導入して、各プログラムと各データの配置を柔軟にする事ができる。
（２）本実施の形態で用いたＲＯＭは２個に限定されるものではなく、いくつでも良い。本実施の形態では、プログラムＡとプログラムＢとがそれぞれ異なる２つのＲＯＭに格納されているとしているが、３つ以上のプログラムが、それぞれことなる３つ以上のＲＯＭに格納されているとしてもよい。この場合には、先頭のプログラムが絶対アドレス０Ｘ０１００００により指定される領域に格納され、２番目のプログラムが０Ｘ０２００００により指定される領域に格納され、3番目のプログラムが０Ｘ０３００００により指定される領域に格納される。以降のプログラムについても同様である。また、この場合には、先頭のデータが絶対アドレス０Ｘ１１００００により指定される領域に格納され、２番目のデータが０Ｘ１２００００により指定される領域に格納され、3番目のデータが０Ｘ１３００００により指定される領域に格納される。以降のデータについても同様である。
（３）プログラムヘッダを見つけるために、あらかじめ定められた値からなるマジックナンバーをプログラムヘッダに付加しておき、このマジックナンバーを用いて、プログラムの有無とプログラムの位置を検出できるようにしてもよい。
（４）本実施の形態においては、プログラムの記録された読み出し専用の半導体メモリ（ＲＯＭ）を使用するとしているが、フラッシュメモリ等の書き換え可能な記憶装置を用いるとしてもよい。
（５）別の実施の形態の一つは、上記手順により示されるプログラムリンク方法をコンピュータに実行させるプログラムリンクプログラムを含むコンピュータ読み取り可能な記録媒体である。さらに、前記プログラムリンクプログラムを通信回線を介して伝送するとしてもよい。
【０１８９】
【発明の効果】
以上説明したように、本発明は、第１及び第２プログラムブロックをそれぞれ記憶している読出し専用の第１及び第２半導体メモリを有するプログラムリンク装置であって、前記第１プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第２半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行へのアクセスを指示する実行命令が記憶され、前記第２プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成され、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成手段と、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行手段とを備える。
【０１９０】
この構成によると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、各シンボルが呼び出される都度、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換することにより、各シンボルの絶対アドレスを算出し、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。
【０１９１】
ここで、前記プログラムリンク装置は、さらに、参照テーブルと、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込手段と、前記第１プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成手段、参照テーブル書込手段に対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御手段とを備え、前記実行手段は、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【０１９２】
この構成によると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、全シンボルについて、あらかじめ、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換し、変換された絶対アドレスをシンボルの識別子とともに記憶し、シンボルが呼び出される都度、前記記憶されている絶対アドレスを読み出し、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、エクスポートシンボルインポートステップが呼び出される都度、シンボルのオフセットから絶対アドレスへの変換を行う必要が無いので、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【０１９３】
ここで、前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルと、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断手段と、前記判断手段により、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録手段と、前記判断手段により、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出手段とを含み、前記実行手段は、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【０１９４】
この構成によると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むエクスポート参照キャッシュを有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをエクスポート参照キャッシュに書き込み、、以前に参照されたシンボルを再度参照する際に、エクスポート参照キャッシュに記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、すべてのエクスポートシンボルとその絶対アドレスの対をメモリ上に置かないので、必要なメモリの容量を小さく抑えつつ、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【０１９５】
ここで、前記第２プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成手段は、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出手段と、前記アドレス抽出手段により、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換手段と、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【０１９６】
この構成によると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込み、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、２度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【０１９７】
ここで、前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断手段と、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込手段と、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【０１９８】
この構成によると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込み、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。また、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、２度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。さらに、エクスポートシンボルテーブルに格納されているアドレス情報がオフセットであるかアドレスであるかをキャッシュタグの書き込み有無フラグによって示しているので、エクスポートシンボルテーブルを簡素化できると共にキャッシュ装置を備えないプログラムリンク装置と同じエクスポートシンボルテーブルを利用することができる。このため、キャッシュ装置を備えないシステムとキャッシュ装置を備えるシステムに対して置き換えや追加を行うプログラムを別々に用意する必要が無いという効果がある。
【０１９９】
また、本発明は、第１及び第２プログラムブロックをそれぞれ記憶している読出し専用の第１及び第２半導体メモリを有し、前記第１プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第２半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行を指示する実行命令が記憶され、前記第２プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成されるプログラムリンク装置で用いられるプログラムリンク方法であって、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成ステップと、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行ステップとを含むように構成してもよい。
【０２００】
この方法を用いると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、各シンボルが呼び出される都度、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換することにより、各シンボルの絶対アドレスを算出し、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。
【０２０１】
ここで、前記プログラムリンク装置は、さらに、参照テーブルを備え、前記プログラムリンク方法は、さらに、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込ステップと、前記第１プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成ステップ、参照テーブル書込ステップに対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御ステップとを備え、前記実行ステップは、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【０２０２】
この方法を用いると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、全シンボルについて、あらかじめ、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換し、変換された絶対アドレスをシンボルの識別子とともに記憶し、シンボルが呼び出される都度、前記記憶されている絶対アドレスを読み出し、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、エクスポートシンボルインポートステップが呼び出される都度、シンボルのオフセットから絶対アドレスへの変換を行う必要が無いので、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【０２０３】
ここで、前記プログラムリンク装置は、さらに、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルを備え、前記絶対アドレス生成ステップは、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断ステップと、前記判断ステップにより、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録ステップと、前記判断ステップにより、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出ステップとを含み、前記実行ステップは、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【０２０４】
この方法を用いると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むエクスポート参照キャッシュを有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをエクスポート参照キャッシュに書き込み、、以前に参照されたシンボルを再度参照する際に、エクスポート参照キャッシュに記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、すべてのエクスポートシンボルとその絶対アドレスの対をメモリ上に置かないので、必要なメモリの容量を小さく抑えつつ、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【０２０５】
ここで、前記プログラムリンク装置は、さらに、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルを備え、前記第２プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第２プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成ステップは、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出ステップと、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出ステップと、前記アドレス抽出ステップにより、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換ステップと、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込ステップとを含み、前記実行ステップは、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【０２０６】
この方法を用いると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込み、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、２度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【０２０７】
ここで、前記プログラムリンク装置は、さらに、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルを備え、前記絶対アドレス生成ステップは、前記第１プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出ステップと、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断ステップと、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込ステップと、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出ステップとを含み、前記実行ステップは、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【０２０８】
この方法を用いると、各プログラムがＲＯＭの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込み、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。また、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、２度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。さらに、エクスポートシンボルテーブルに格納されているアドレス情報がオフセットであるかアドレスであるかをキャッシュタグの書き込み有無フラグによって示しているので、エクスポートシンボルテーブルを簡素化できると共にキャッシュ装置を備えないプログラムリンク装置と同じエクスポートシンボルテーブルを利用することができる。このため、キャッシュ装置を備えないシステムとキャッシュ装置を備えるシステムに対して置き換えや追加を行うプログラムを別々に用意する必要が無いという効果がある。
【０２０９】
また、本発明は、第１プログラムブロックが記録されているコンピュータ読み取り可能な記録媒体であって、命令を識別するシンボル毎に、当該シンボルと前記第１プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルを含む前記第１プログラムブロックを記録している。
【０２１０】
この媒体に記録されているプログラムブロックを用いると、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ＲＯＭに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。
【図面の簡単な説明】
【図１】本発明の実施の形態１のプログラムリンク装置１０００の構成を示すブロック図である。
【図２】プログラムリンク装置１０００のメインステップの動作手順を示すフローチャートである。
【図３】プログラムリンク装置１０００のプログラムＡ及びデータＡの構成を示す。
【図４】プログラムリンク装置１０００のプログラムＡの一部のプログラムブロックを示す。
【図５】プログラムリンク装置１０００のプログラムＢ及びデータＢの構成を示す。
【図６】プログラムリンク装置１０００のプログラムＢの一部のプログラムブロックを示す。
【図７】プログラムリンク装置１０００のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図８】プログラムリンク装置１０００のＣＰＵの動作を示すフローチャートである。
【図９】プログラムリンク装置１０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図１０】本発明の実施の形態２のプログラムリンク装置２０００の構成を示すブロック図である。
【図１１】プログラムリンク装置２０００のメインステップの動作手順を示すフローチャートである。
【図１２】プログラムリンク装置２０００のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図１３】プログラムリンク装置２０００のエクスポートシンボル参照テーブルの構成を示す一例である。
【図１４】プログラムリンク装置２０００のエクスポートシンボル登録ステップの動作を示すフローチャートである。
【図１５】プログラムリンク装置２０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図１６】本発明の実施の形態３のプログラムリンク装置３０００の構成を示すブロック図である。
【図１７】プログラムリンク装置３０００のメインステップの動作手順を示すフローチャートである。
【図１８】プログラムリンク装置３０００のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図１９】プログラムリンク装置３０００のエクスポートシンボル参照キャッシュの構成の一例を示す。
【図２０】プログラムリンク装置３０００のエクスポートシンボル参照キャッシュの構成の一例を示す。
【図２１】プログラムリンク装置３０００のエクスポートシンボル参照キャッシュの構成の一例を示す。
【図２２】プログラムリンク装置３０００のエクスポートシンボル参照キャッシュ初期化ステップの動作を示すフローチャートである。
【図２３】プログラムリンク装置３０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図２４】本発明の実施の形態４のプログラムリンク装置４０００の構成を示すブロック図である。
【図２５】プログラムリンク装置４０００のメインステップの動作手順を示すフローチャートである。
【図２６】プログラムリンク装置４０００のプログラムＡ及びデータＡの構成を示す。
【図２７】プログラムリンク装置４０００のプログラムＢ及びデータＢの構成を示す。
【図２８】プログラムリンク装置４０００のキャッシュ装置の内部状態を示す。
【図２９】プログラムリンク装置４０００のキャッシュ装置の内部状態を示す。
【図３０】プログラムリンク装置４０００のキャッシュ装置の内部状態を示す。
【図３１】プログラムリンク装置４０００のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図３２】プログラムリンク装置４０００のキャッシュ初期化ステップの動作を示すフローチャートである。
【図３３】プログラムリンク装置４０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図３４】プログラムリンク装置４０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。図３３からの続きを示す。
【図３５】プログラムリンク装置４０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図３６】プログラムリンク装置４０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。図３５からの続きを示す。
【図３７】プログラムリンク装置４０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図３８】本発明の実施の形態１のプログラムリンク装置５０００の構成を示すブロック図である。
【図３９】プログラムリンク装置５０００のプログラムＡ及びデータＡの構成を示す。
【図４０】プログラムリンク装置５０００のプログラムＢ及びデータＢの構成を示す。
【図４１】プログラムリンク装置５０００のキャッシュ装置の内部状態を示す。
【図４２】プログラムリンク装置５０００のキャッシュ装置の内部状態を示す。
【図４３】プログラムリンク装置５０００のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図４４】プログラムリンク装置５０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図４５】プログラムリンク装置５０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。図４４からの続きを示す。
【図４６】プログラムリンク装置５０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図４７】プログラムリンク装置５０００のエクスポートシンボルインポートステップの動作を示すフローチャートである。図４６からの続きを示す。
【図４８】従来のプログラムリンク装置の構成を示すブロック図である。
【図４９】従来のプログラムリンク装置のプログラムＡ及びデータＡの構成を示す。
【図５０】従来のプログラムリンク装置のプログラムＢ及びデータＢの構成を示す。
【図５１】従来のプログラムリンク装置のメインステップの動作手順を示すフローチャートである。
【図５２】従来のプログラムリンク装置のプログラムＡの一部のプログラムブロックを示す。
【図５３】従来のプログラムリンク装置のプログラムＢの一部のプログラムブロックを示す。
【符号の説明】
１０１    ＲＯＭ−Ａ
１０２    ＲＯＭ−Ｂ
１０３    ＲＡＭ
１０４    ＣＰＵバス
１０５    ＣＰＵ
１１０    メインステップ
１２０    プログラムＡ
１２１    シンボルテーブルＡ
１２２    プログラム命令部Ａ
１３０    プログラムＢ
１３１    シンボルテーブルＢ
１３２    プログラム命令部Ｂ
１４０    データＡ
１５０    データＢ
１０００    プログラムリンク装置
１１０１    ＲＯＭ−Ａ
１１０２    ＲＯＭ−Ｂ
１１０３    ＲＡＭ
１１０４    ＣＰＵバス
１１０５    ＣＰＵ
１１１０    メインステップ
１１２０    プログラムＡ
１１２１    プログラムヘッダＡ
１１２２    プログラム命令部Ａ
１１２３    エクスポートシンボルオフセットテーブルＡ
１１２８    コードエクスポートシンボルオフセットテーブルＡ
１１２９    データエクスポートシンボルオフセットテーブルＡ
１１３０    プログラムＢ
１１３１    プログラムヘッダＢ
１１３２    プログラム命令部Ｂ
１１３３    エクスポートシンボルオフセットテーブルＢ
１１３８    コードエクスポートシンボルオフセットテーブルＢ
１１３９    データエクスポートシンボルオフセットテーブルＢ
１１４０    データＡ
１１５０    データＢ
１１６０    エクスポートシンボルインポートステップ
１１７０    ジャンプテーブル
２０００    プログラムリンク装置
２１０１    ＲＯＭ−Ａ
２１０３    ＲＡＭ
２１０４    ＣＰＵバス
２１０５    ＣＰＵ
２１１０    メインステップ
２１２０    エクスポートシンボル登録ステップ
２１３０    エクスポートシンボルインポートステップ
２１４０    エクスポートシンボル参照テーブル
３０００    プログラムリンク装置
３１０１    ＲＯＭ−Ａ
３１０３    ＲＡＭ
３１０４    ＣＰＵバス
３１０５    ＣＰＵ
３１１０    メインステップ
３１２０    エクスポートシンボル参照キャッシュ初期化ステップ
３１３０    エクスポートシンボルインポートステップ
３１４０    エクスポートシンボル参照キャッシュ
４０００    プログラムリンク装置
４１００    エクスポートシンボルＩＤテーブルＡ
４１０１    ＲＯＭ−Ａ
４１１０    エクスポートシンボルアドレス情報テーブルＡ
４１２０    プログラムＡ
４１２１    プログラムヘッダＡ
４１２３    エクスポートシンボルテーブルＡ
４１３０    プログラムＢ
４１３１    プログラムヘッダＢ
４１３３    エクスポートシンボルテーブルＢ
４１４０    エクスポートシンボルＩＤテーブルＢ
４１５０    エクスポートシンボルアドレス情報テーブルＢ
４１９０    メインステップ
４１９２    ＲＯＭ−Ｂ
４１９４    ＣＰＵバス
４１９５    ＣＰＵ
４２００    キャッシュ装置初期化ステップ
４３００    エクスポートシンボルインポートステップ
４４００    キャッシュ装置
４４１０、４４１１、４４１２    キャッシュタグ部
４４５０、４４５１、４４５２    キャッシュデータ部
５０００    プログラムリンク装置
５１００    エクスポートシンボルインポートステップ
５１０１    ＲＯＭ−Ａ
５１０２    ＲＯＭ−Ｂ
５１０４    ＣＰＵバス
５１０５    ＣＰＵ
５１２１    プログラムヘッダＡ
５１３１    プログラムヘッダＢ
５２００    プログラムＡ
５２１０    エクスポートシンボルテーブルＡ
５２２０    エクスポートシンボルＩＤテーブルＡ
５２３０    エクスポートシンボルアドレス情報テーブルＡ
５３００    プログラムＢ
５３１０    エクスポートシンボルテーブルＢ
５３２０    エクスポートシンボルＩＤテーブルＢ
５３３０    エクスポートシンボルアドレス情報テーブルＢ
５４００    キャッシュ装置
５４１０、５４１１    キャッシュタグ部
５４５０、５４５１    キャッシュデータ部
【図１】
0003837244.tif 000002
【図２】
0003837244.tif 000003
【図３】
0003837244.tif 000004
【図４】
0003837244.tif 000005
【図５】
0003837244.tif 000006
【図６】
0003837244.tif 000007
【図７】
0003837244.tif 000008
【図８】
0003837244.tif 000009
【図９】
0003837244.tif 000010
【図１０】
0003837244.tif 000011
【図１１】
0003837244.tif 000012
【図１２】
0003837244.tif 000013
【図１３】
0003837244.tif 000014
【図１４】
0003837244.tif 000015
【図１５】
0003837244.tif 000016
【図１６】
0003837244.tif 000017
【図１７】
0003837244.tif 000018
【図１８】
0003837244.tif 000019
【図１９】
0003837244.tif 000020
【図２０】
0003837244.tif 000021
【図２１】
0003837244.tif 000022
【図２２】
0003837244.tif 000023
【図２３】
0003837244.tif 000024
【図２４】
0003837244.tif 000025
【図２５】
0003837244.tif 000026
【図２６】
0003837244.tif 000027
【図２７】
0003837244.tif 000028
【図２８】
0003837244.tif 000029
【図２９】
0003837244.tif 000030
【図３０】
0003837244.tif 000031
【図３１】
0003837244.tif 000032
【図３２】
0003837244.tif 000033
【図３３】
0003837244.tif 000034
【図３４】
0003837244.tif 000035
【図３５】
0003837244.tif 000036
【図３６】
0003837244.tif 000037
【図３７】
0003837244.tif 000038
【図３８】
0003837244.tif 000039
【図３９】
0003837244.tif 000040
【図４０】
0003837244.tif 000041
【図４１】
0003837244.tif 000042
【図４２】
0003837244.tif 000043
【図４３】
0003837244.tif 000044
【図４４】
0003837244.tif 000045
【図４５】
0003837244.tif 000046
【図４６】
0003837244.tif 000047
【図４７】
0003837244.tif 000048
【図４８】
0003837244.tif 000049
【図４９】
0003837244.tif 000050
【図５０】
0003837244.tif 000051
【図５１】
0003837244.tif 000052
【図５２】
0003837244.tif 000053
【図５３】
0003837244.tif 000054