JP3837244B2 - プログラムリンク装置及び方法 - Google Patents

プログラムリンク装置及び方法 Download PDF

Info

Publication number
JP3837244B2
JP3837244B2 JP30299898A JP30299898A JP3837244B2 JP 3837244 B2 JP3837244 B2 JP 3837244B2 JP 30299898 A JP30299898 A JP 30299898A JP 30299898 A JP30299898 A JP 30299898A JP 3837244 B2 JP3837244 B2 JP 3837244B2
Authority
JP
Japan
Prior art keywords
symbol
address
program
absolute address
offset
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.)
Expired - Fee Related
Application number
JP30299898A
Other languages
English (en)
Other versions
JP2000132393A (ja
Inventor
豊治 黒田
清志 大和田
良彦 本橋
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP30299898A priority Critical patent/JP3837244B2/ja
Priority to US09/426,570 priority patent/US6457174B1/en
Publication of JP2000132393A publication Critical patent/JP2000132393A/ja
Application granted granted Critical
Publication of JP3837244B2 publication Critical patent/JP3837244B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、複数の読出し専用の半導体メモリに分割されて記録された複数のプログラムを結合して、相互にサブルーチン、データを参照するプログラムリンク装置及び方法に関する。
【0002】
【従来の技術】
近年、プログラム命令を読出し専用の半導体メモリ(以下、ROMと称する。)に格納した組込み型マイコン制御システムにおいて、対象システムが複雑化しているので、製品の出荷後においてもソフトウェアの追加や部分的な置き換えが必要となってきている。
【0003】
この場合、追加し又は置き換えるプログラムのサイズ、又はそのプログラムが利用するデータのサイズが変化するので、そのプログラム内のサブルーチンやそのプログラムが利用するデータのアドレスが変化する。そのため、既存のプログラム部分と追加し又は置き換えたプログラム部分との間でサブルーチンやデータのエクスポートシンボルを相互に参照している場合に、エクスポートシンボルのリンクが必要となる。
【0004】
従来、このようなROMに記録されたプログラムのリンク方法として、ROMやRAM上に絶対アドレスにより固定的に割り当てられた参照テーブル内に、プログラム間で相互参照するためのエクスポートシンボルの存在する位置を絶対アドレスにより示す事により、スタッティクにエクスポートシンボルのリンクを実現している。
【0005】
従来のROMに記録されたプログラムのリンクを行う装置の構成を図48に示す。この図に示す装置は、ROM−A101、ROM−B102、RAM103、CPUバス104、CPU105から構成されており、ROM−A101とROM−B102とRAM103とCPU105は互いにCPUバス104で接続されている。
【0006】
ROM−A101はメインステップ110とプログラムA120を記憶しており、ROM−B102はプログラムB130を記憶しており、RAM103は、データA140とデータB150とを記憶している。CPU105は、各ROMに格納された各プログラムを実行する。
プログラムA120及びプログラムA120により使用されるデータA140のメモリマップ及び内容を図49に示す。この図に示すように、プログラムA120は、シンボルテーブルA121とプログラム命令部A122とから構成されている。シンボルテーブルA121には、コードエクスポートシンボルであるシンボルA127が存在する位置を示す絶対アドレス123と、コードエクスポートシンボルであるシンボルB128が存在する位置を示す絶対アドレス124と、データエクスポートシンボルであるシンボルC141が存在する位置を示す絶対アドレス125と、データエクスポートシンボルであるシンボルD142が存在する位置を示す絶対アドレス126とが格納されている。絶対アドレス123、124、125、126が格納されている位置を示す絶対アドレスは、それぞれ、0X010000、0X010004、0X010008、0X01000Cである。プログラム命令部A122には、シンボルA127で識別されるプログラムブロックと、シンボルB128で識別されるプログラムブロックとが格納されている。シンボルA127、シンボルB128が格納されている位置を示す絶対アドレスは、それぞれ、0X010010、0X010200である。データA140には、シンボルC141で識別されるデータブロックと、シンボルD142で識別されるデータブロックとが格納されている。データA140の先頭データが格納されている位置を示す絶対アドレスは、0X110000であり、シンボルC141、シンボルD142が格納されている位置を示す絶対アドレスは、それぞれ、0X110500、0X110600である。ここで、0Xは、以下に続く文字列が16進数表示であることを示しており、以下においても同様である。
【0007】
プログラムB130及びプログラムB130により使用されるデータB150のメモリマップ及び内容を図50に示す。この図に示すように、プログラムB130は、シンボルテーブルB131とプログラム命令部B132とから構成されている。シンボルテーブルB131には、絶対アドレス133、134、135、136が格納されている。プログラム命令部B132には、シンボルE137とシンボルF138とにより識別されるプログラムブロックが格納されている。データB150には、シンボルG151とシンボルH152とにより識別されるデータブロックが格納されている。なお、プログラムB130の構造はプログラムA120の構造と同様であり、データB150の構造はデータA140の構造と同様であるので、詳細の説明は省略する。
【0008】
メインステップ110に格納されているプログラムの動作を図51のフローチャートを用いて説明する。メインステップ110は、シンボルA127により識別されるプログラムブロックとシンボルE137により識別されるプログラムブロックをこの順序で実行するように制御することをその主な目的とする。
メインステップ110では、変数ptraにシンボルA127の絶対アドレスが格納されている0X010000番地の内容を取り出し代入し(S401)、変数ptreにシンボルE137の絶対アドレスが格納されている0X020000番地の内容を取り出し代入する(S402)。次に、変数ptraの示すアドレスをコールし(S403)、変数ptreの示すアドレスをコールする(S404)。
【0009】
シンボルA127で示されるプログラムブロックに格納されているプログラムをC言語で表現したものを図52に示す。このプログラムは、シンボルF138により識別されるプログラムブロックを実行し、シンボルG151により識別されるデータブロックに変数XXXXXを代入し、シンボルH152により識別されるデータブロックに変数YYYYYを代入することをその主な目的とする。
【0010】
この図において、行501では、シンボルAを定義し、行502では、変数ptrfにシンボルFの絶対アドレスが格納されている0X020004番地の内容を代入し、行503では、変数ptrgにシンボルGの絶対アドレスが格納されている0X020008番地の内容を代入し、行504では、変数ptrhにシンボルHの絶対アドレスが格納されている0X02000c番地の内容を代入し、行505では、変数ptrfの示すアドレスをコールし、行506では、変数ptrgの示すアドレスに変数XXXXXを代入し、行507では、変数ptrhの示すアドレスに変数YYYYYを代入し、行508では、リターンする。
【0011】
シンボルE137で示されるプログラムブロックに格納されているプログラムをC言語で表現したものを図53に示す。このプログラムは、シンボルB128により識別されるプログラムブロックを実行し、シンボルC141により識別されるデータブロックに変数ZZZZZを代入し、シンボルD142により識別されるデータブロックに変数OOOOOを代入することをその主な目的とする。
この図に示すC言語で表現されたプログラムは、図52に示されるプログラムと同様の構成であるので、説明を省略する。
【0012】
以上に説明したように、ROMやRAM上に絶対アドレスにより固定的に割り当てられた参照テーブル内に、プログラム間で相互参照するためのエクスポートシンボルの存在する位置を絶対アドレスにより示す事により、各プログラム間でのエクスポートシンボルのリンクが可能となる。
【0013】
【発明が解決しようとする課題】
しかしながら、上記に示す従来のROMに記録されたプログラムのリンク方法では、スタッティクにエクスポートシンボルのリンクが行えるものの、ROMやRAM上の固定的に割り当てられた参照テーブル内に、プログラム間で相互参照するためのエクスポートシンボルの存在する位置を絶対アドレスにより示しており、インポートする側のプログラムにエクスポートする側のシンボルの絶対アドレスが埋め込まれてしまうので、インポートする側から見て他方のエクスポートする側のプログラムのメモリ空間での配置を固定する必要がある。また、シンボルテーブル内にシンボルに対応するアドレスが絶対アドレスで格納されているためそのプログラム自体のメモリ空間での配置を固定する必要がある。この2点の制約によりROMに記録されたプログラムが、一つの組込み型マイコン制御システムのメモリマップに依存し、異なるメモリマップのシステムにおいてROMに記録されたプログラムの共用ができないという問題点がある。
【0014】
本発明はかかる点に鑑み、ROMに記録されたプログラムの内容が組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるプログラムリンク装置及び方法を提供することを目的とする。
【0015】
【課題を解決するための手段】
上記の目的を達成するために、本発明は、第1及び第2プログラムブロックをそれぞれ記憶している読出し専用の第1及び第2半導体メモリを有するプログラムリンク装置であって、前記第1プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第2半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行へのアクセスを指示する実行命令が記憶され、前記第2プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成され、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成手段と、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行手段とを備えることを特徴とする。
【0016】
ここで、前記プログラムリンク装置は、さらに、参照テーブルと、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込手段と、前記第1プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成手段、参照テーブル書込手段に対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御手段とを備え、前記実行手段は、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0017】
ここで、前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルと、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断手段と、前記判断手段により、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録手段と、前記判断手段により、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出手段とを含み、前記実行手段は、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0018】
ここで、前記第2プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成手段は、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出手段と、前記アドレス抽出手段により、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換手段と、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0019】
ここで、前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断手段と、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込手段と、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0020】
【発明の実施の形態】
本発明の実施の形態について説明する。
1 実施の形態1
本発明の一つの実施の形態としてのプログラムリンク装置1000について説明する。
1.1 プログラムリンク装置1000の構成
プログラムリンク装置1000は、図1に示すように、CPU1105、ROM−A1101、ROM−B1102、RAM1103から構成される。
【0021】
ROM−A1101とROM−B1102とRAM1103とCPU1105は互いにCPUバス1104により接続されている。
ROM−A1101、ROM−B1102、RAM1103がそれぞれ有する記憶領域は、一つのアドレス空間に配置されている。従って、CPU1105は、一種類のアドレスにより、ROM−A1101、ROM−B1102、RAM1103のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。このアドレスを絶対アドレスと呼ぶ。
1.1.1 CPU1105
CPU1105は、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【0022】
CPU1105は、ROM−A1101、ROM−B1102、RAM1103に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、CPU1105は、ROM−A1101、ROM−B1102、RAM1103に記憶されているデータを読み出し、また、RAM1103へデータを書込む。
1.1.2 ROM−A1101
ROM−A1101は、読出し専用の半導体メモリから構成される。ROM−A1101が有する記憶領域には、メインステップ1110、エクスポートシンボルインポートステップ1160、プログラムA1120が記録されている。
1.1.2.1 メインステップ1110
メインステップ1110は、前記アドレス空間において、絶対アドレス0X000000で示される領域から配置されている。
【0023】
メインステップ1110は、図2のフローチャートに示すように、ジャンプテーブル1170にエクスポートシンボルインポートステップ1160へのジャンプ命令を格納し(S1201)、シンボルAの識別子であるID−Aを引数としてエクスポートシンボルインポートステップ1160を呼び出し、変数ptraにシンボルAが記憶されている絶対アドレスを格納し(S1202)、変数ptraを使ってシンボルAを呼び出し(S1203)、シンボルEの識別子であるID−Eを引数としてエクスポートシンボルインポートステップ1160を呼び出し、変数ptreにシンボルEが記憶されている絶対アドレスを格納し(S1204)、変数ptreを使ってシンボルEを呼び出す(S1205)手順を含んでいる。
【0024】
メインステップ1110の目的とする処理は、シンボルAにより識別されるプログラムブロックと、シンボルEにより識別されるプログラムブロックとの実行である。
なお、シンボルA、E、識別子ID−A、ID−E、シンボルAにより識別されるプログラムブロックと、シンボルEにより識別されるプログラムブロックについては、後述する。
1.1.2.2 エクスポートシンボルインポートステップ1160
エクスポートシンボルインポートステップ1160は、前記アドレス空間において、絶対アドレス0X002000で示される領域から配置されている。
【0025】
エクスポートシンボルインポートステップ1160は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ1160が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ1160は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボルオフセットテーブルA1123又はエクスポートシンボルオフセットテーブルB1133から検索し、検索された識別子に対応するオフセットを取り出し、取り出したオフセットに所定の演算を施して、絶対アドレスを生成し、生成した絶対アドレスを前記他のプログラムに出力する。
【0026】
なお、エクスポートシンボルオフセットテーブルA1123及びエクスポートシンボルオフセットテーブルB1133については、後述する。
シンボルには、命令を識別するコードシンボルとデータを識別するデータシンボルがある。エクスポートシンボルインポートステップ1160は、シンボルがコードシンボルである場合には、コードエクスポートシンボルオフセットテーブルA1128又はコードエクスポートシンボルオフセットテーブルB1138を用いて、絶対アドレスを生成し、シンボルがデータシンボルである場合には、データエクスポートシンボルオフセットテーブルA1129又はデータエクスポートシンボルオフセットテーブルB1139を用いて、絶対アドレスを生成する。
【0027】
なお、後述するように、コードエクスポートシンボルオフセットテーブルA1128とデータエクスポートシンボルオフセットテーブルA1129とは、エクスポートシンボルオフセットテーブルA1123に含まれる。コードエクスポートシンボルオフセットテーブルB1138とデータエクスポートシンボルオフセットテーブルB1139とは、エクスポートシンボルオフセットテーブルB1133に含まれる。
【0028】
識別子に対応するオフセットから絶対アドレスを生成する前記所定の演算は、次のとおりである。
シンボルがコードシンボルの場合は、(式1)により絶対アドレスが算出される。
(式1) 絶対アドレス = 取り出したオフセット
+ 0X010000 * k + 0X010000
ここで、kは、プログラムを識別する番号であり、プログラムAについて、k=0であり、プログラムBについて、k=1である。
【0029】
(式1)に示す演算により、絶対アドレスが算出できるのは、プログラムAは、アドレス空間内において、絶対アドレス0X010000から始まる領域に格納されており、プログラムBは、アドレス空間内において、絶対アドレス0X020000から始まる領域に格納されているからである。つまり、先頭のプログラムが所定の絶対アドレスに格納されており、次のプログラムが所定の間隔をおいて格納されているからである。
【0030】
シンボルがデータシンボルの場合は、(式2)により絶対アドレスが算出される。
(式2) 絶対アドレス = 取り出したオフセット
+ 0X010000 * k + 0X110000
ここで、(式1)と同様に、kは、プログラムを識別する番号であり、プログラムAについて、k=0であり、プログラムBについて、k=1である。
【0031】
(式2)に示す演算により、絶対アドレスが算出できるのは、データAは、アドレス空間内において、絶対アドレス0X110000から始まる領域に格納されており、データBは、アドレス空間内において、絶対アドレス0X120000から始まる領域に格納されているからである。つまり、先頭のデータが所定の絶対アドレスに格納されており、次のデータが所定の間隔をおいて格納されているからである。
1.1.2.3 プログラムA1120
プログラムA1120は、図1に示すように、プログラムヘッダA1121、プログラム命令部A1122、エクスポートシンボルオフセットテーブルA1123を含んでいる。
【0032】
プログラムA1120は、前記アドレス空間において、絶対アドレス0X010000で示される領域から配置されている。
(1)プログラムヘッダA4121
プログラムヘッダA1121は、図3に示すように、プログラムA1120の先頭から配置され、コードエクスポートシンボルオフセットテーブルA1128の先頭位置を示すオフセット1124と、データエクスポートシンボルオフセットテーブルA1129の先頭位置を示すオフセット1125とを含む。ここで、オフセットとは、プログラムA1120の先頭位置を基準とした場合のアドレスである。
【0033】
この図に示すように、オフセット1124は、「0X001000」であり、「0X001000」は、プログラムA1120内において、コードエクスポートシンボルオフセットテーブルA1128の先頭位置を示すアドレスである。また、オフセット1125は、「0X001010」であり、「0X001010」は、プログラムA1120内において、データエクスポートシンボルオフセットテーブルA1129の先頭位置を示すアドレスである。
(2)プログラム命令部A1122
プログラム命令部A1122は、図3に示すように、プログラムヘッダA1121に続く領域に配置され、少なくとも1の命令からなる少なくとも1のプログラムブロックを含んでいる。この図においては、プログラム命令部A1122は、2つのプログラムブロックを含んでおり、それぞれのプログラムブロックは、シンボルA1126、シンボルB1127で識別される。
【0034】
シンボルA1126は、絶対アドレス0X010008で示される領域に格納されており、シンボルB1127は、絶対アドレス0X010200で示される領域に格納されている。
(シンボルA1126により識別されるプログラムブロック)
シンボルA1126により識別されるプログラムブロックの一例を、図4に示す。この図において、シンボルA1126により識別されるプログラムブロックをC言語により表現している。
【0035】
このプログラムブロックは、行1309、1301、1302、1303、1304、1305、1306、1307、1308及びその他の図示していない行からなる。
行1309には、シンボルAが記載されている。
行1301は、変数importに、絶対アドレス0X100000を代入することを示しており、0X100000は、ジャンプテーブルの絶対アドレスである。
【0036】
行1302は、識別子ID−Fを引数として、関数importを呼び出し、シンボルFの格納されている絶対アドレスを返値として得て、変数ptrfに代入することを示している。
行1303は、上記の値の代入された変数ptrfの示すアドレスを呼び出すことを示している。
【0037】
行1304は、識別子ID−Gを引数として、関数importを呼び出し、シンボルGの格納されている絶対アドレスを返値として得て、変数ptrfに代入することを示している。
行1305は、上記の値の代入された変数ptrfの示すアドレスにより示される領域に、変数XXXXXの値を代入することを示している。
【0038】
行1306は、識別子ID−Hを引数として、関数importを呼び出し、シンボルHの格納されている絶対アドレスを返値として得て、変数ptrfに代入することを示している。
行1307は、上記の値の代入された変数ptrfの示すアドレスにより示される領域に、変数YYYYYの値を代入することを示している。
【0039】
行1308は、このプログラムブロックを呼び出したプログラムブロックに制御が戻ることを示している。
上記に説明したように、シンボルA1126により識別されるプログラムブロックが実行されると、シンボルFで識別されるプログラムブロックが呼び出されて実行され、シンボルGにより識別されるデータブロックに、変数XXXXXの値が代入され、シンボルHにより識別されるデータブロックに、変数YYYYYの値が代入される。
(シンボルB1127により識別されるプログラムブロック)
シンボルB1127により識別されるプログラムブロックは、図示していないが、シンボルA1126により識別されるプログラムブロックと同様に、複数の命令が記載されている。
(3)エクスポートシンボルオフセットテーブルA1123
エクスポートシンボルオフセットテーブルA1123は、コードエクスポートシンボルオフセットテーブルA1128と、データエクスポートシンボルオフセットテーブルA1129とを含む。
【0040】
エクスポートシンボルオフセットテーブルA1123は、前記アドレス空間において、絶対アドレス0X011000で示される領域から配置されている。
(コードエクスポートシンボルオフセットテーブルA1128)
コードエクスポートシンボルオフセットテーブルA1128は、前記アドレス空間において、絶対アドレス0X011000で示される領域から配置されている。
【0041】
コードエクスポートシンボルオフセットテーブルA1128は、コードシンボルの識別子と、コードシンボルの格納されている領域のオフセットとの組を記憶している。
具体的には、図3に示すように、コードエクスポートシンボルオフセットテーブルA1128は、シンボルAの識別子1181「ID−A」とシンボルAのオフセット1186「0X000008」との組と、シンボルBの識別子1182「ID−B」とシンボルBのオフセット1187「0X000200」との組とを記憶している。
(データエクスポートシンボルオフセットテーブルA1129)
データエクスポートシンボルオフセットテーブルA1129は、前記アドレス空間において、絶対アドレス0X011010で示される領域から配置されている。
【0042】
データエクスポートシンボルオフセットテーブルA1129は、データシンボルの識別子と、データシンボルの格納されている領域のオフセットとの組を記憶している。
ここで、オフセットとは、データAの先頭位置を基準とした場合のアドレスである。
【0043】
具体的には、図3に示すように、データエクスポートシンボルオフセットテーブルA1129は、シンボルCの識別子1183「ID−C」とシンボルCのオフセット1188「0X000500」との組と、シンボルDの識別子1184「ID−D」とシンボルDのオフセット1189「0X000600」との組とを記憶している。
1.1.3 ROM−B1102
ROM−B1102は、読出し専用の半導体メモリから構成される。ROM−B1102が有する記憶領域には、プログラムB1130が記録されている。
1.1.3.1 プログラムB1130
プログラムB1130は、図1に示すように、プログラムヘッダB1131、プログラム命令部B1132、エクスポートシンボルオフセットテーブルB1133を含んでいる。
【0044】
プログラムB1130は、前記アドレス空間において、絶対アドレス0X020000で示される領域から配置されている。
(1)プログラムヘッダB1131
プログラムヘッダB1131は、図5に示すように、プログラムB1130の先頭から配置され、コードエクスポートシンボルオフセットテーブルB1138の先頭位置を示すオフセット1134と、データエクスポートシンボルオフセットテーブルB1139の先頭位置を示すオフセット1135とを含む。ここで、オフセットとは、プログラムB1130の先頭位置を基準とした場合のアドレスである。
【0045】
この図に示すように、オフセット1134は、「0X002000」であり、「0X002000」は、プログラムB1130内において、コードエクスポートシンボルオフセットテーブルB1138の先頭位置を示すアドレスである。また、オフセット1135は、「0X002010」であり、「0X002010」は、プログラムB1130内において、データエクスポートシンボルオフセットテーブルB1139の先頭位置を示すアドレスである。
(2)プログラム命令部B1132
プログラム命令部B1132は、図5に示すように、プログラムヘッダB1131に続く領域に配置され、少なくとも1の命令からなる少なくとも1のプログラムブロックを含んでいる。この図においては、プログラム命令部B1132は、2つのプログラムブロックを含んでおり、それぞれのプログラムブロックは、シンボルE1136、シンボルF1137で識別される。
【0046】
シンボルE1136は、絶対アドレス0X020008で示される領域に格納されており、シンボルF1137は、絶対アドレス0X020400で示される領域に格納されている。
(シンボルE1136により識別されるプログラムブロック)
シンボルE1136により識別されるプログラムブロックの一例を、図6に示す。この図において、シンボルE1136により識別されるプログラムブロックをC言語により表現している。
【0047】
このプログラムブロックは、行1409、1401、1402、1403、1404、1405、1406、1407、1408及びその他の図示していない行からなる。
各行の示す内容は、シンボルA1126により識別されるプログラムブロックの各行と同様であるので、説明を省略する。
【0048】
シンボルE1136により識別されるプログラムブロックが実行されると、シンボルBで識別されるプログラムブロックが呼び出されて実行され、シンボルCにより識別されるデータブロックに、変数ZZZZZの値が代入され、シンボルDにより識別されるデータブロックに、変数OOOOOの値が代入される。
(シンボルF1137により識別されるプログラムブロック)
シンボルF1137により識別されるプログラムブロックは、図示していないが、シンボルE1136により識別されるプログラムブロックと同様に、複数の命令が記載されている。
(3)エクスポートシンボルオフセットテーブルB1133
エクスポートシンボルオフセットテーブルB1133は、コードエクスポートシンボルオフセットテーブルB1138と、データエクスポートシンボルオフセットテーブルB1139とを含む。
(コードエクスポートシンボルオフセットテーブルB1138)
コードエクスポートシンボルオフセットテーブルB1138は、コードシンボルの識別子と、コードシンボルの格納されている領域のオフセットとの組を記憶している。
【0049】
具体的には、図5に示すように、コードエクスポートシンボルオフセットテーブルB1138は、シンボルEの識別子1191「ID−E」とシンボルEのオフセット1196「0X000008」との組と、シンボルFの識別子1192「ID−F」とシンボルFのオフセット1197「0X000400」との組とを記憶している。
(データエクスポートシンボルオフセットテーブルB1139)
データエクスポートシンボルオフセットテーブルB1139は、データシンボルの識別子と、データシンボルの格納されている領域のオフセットとの組を記憶している。
【0050】
ここで、オフセットとは、データBの先頭位置を基準とした場合のアドレスである。
具体的には、図5に示すように、データエクスポートシンボルオフセットテーブルB1139は、シンボルGの識別子1193「ID−G」とシンボルGのオフセット1198「0X000700」との組と、シンボルHの識別子1194「ID−H」とシンボルHのオフセット1199「0X000800」との組とを記憶している。
1.1.4 RAM1103
RAM1103は、読出し及び書込みの可能な半導体メモリから構成される。RAM1103が有する記憶領域には、ジャンプテーブル1170、データA1140、データB1150が記憶される。
1.1.4.1 ジャンプテーブル1170
ジャンプテーブル1170は、前記アドレス空間内で、絶対アドレス0X100000で示される領域から格納されている。
【0051】
ジャンプテーブル1170には、エクスポートシンボルインポートステップ1160へのジャンプ命令が格納される。
前記アドレス空間内での、ジャンプテーブル1170とエクスポートシンボルインポートステップ1160との配置を図7に示す。
この図に示すように、ジャンプテーブル1170内には、ジャンプ命令「JMP 0X002000」が格納されている。ここで、0X002000は、エクスポートシンボルインポートステップ1160が格納されている領域の絶対アドレスである。
【0052】
ジャンプテーブル1170は、エクスポートシンボルインポートステップ1160のアドレス空間内での配置が変わった場合においても、決まった絶対アドレスで呼び出しができるようにするためにある。
1.1.4.2 データA1140
データA1140は、前記アドレス空間内で、絶対アドレス0X110000で示される領域から格納されている。
【0053】
データA1140は、シンボルC1141で識別されるデータブロックと、
シンボルD1142で識別されるデータブロックとを含み、これらのデータブロックは、プログラムA1120により使用される。
シンボルC1141は、絶対アドレス0X110500に格納され、シンボルD1142は、絶対アドレス0X110600に格納されている。
1.1.4.3 データB1150
データB1150は、前記アドレス空間内で、絶対アドレス0X120000で示される領域から格納されている。
【0054】
データB1150は、シンボルG1151で識別されるデータブロックと、
シンボルH1152で識別されるデータブロックとを含み、これらのデータブロックは、プログラムB1130により使用される。
シンボルG1151は、絶対アドレス0X120700に格納され、シンボルH1152は、絶対アドレス0X120800に格納されている。
1.2 プログラムリンク装置1000の動作
1.2.1 CPU1105の動作
CPU1105の動作について、図8に示すフローチャートを用いて説明する。
【0055】
CPU1105は、ROM−A1101に記録されているメインステップ1110、エクスポートシンボルインポートステップ1160、プログラム命令部A1122、及びROM−B1102に記録されているプログラム命令部B1132に記載されている命令を読み出し(ステップS1501)、命令の読み出しが終了すれば(ステップS1502)、処理を終了し、命令の読み出しが終了しなければ(ステップS1502)、読み出した命令を実行し(ステップS1503)、ステップS1501へ戻って、再度命令の読み出しが終了するまで、命令の読み出しと命令の実行とを繰り返す。
1.2.2 エクスポートシンボルインポートステップ1160の動作
エクスポートシンボルインポートステップ1160の動作について、図9に示すフローチャートを用いて説明する。
【0056】
エクスポートシンボルインポートステップ1160では、プログラムを識別する番号kに0を代入し(S1601)、番号kと全プログラム数とを比較して、番号kが全プログラム数よりも大きいか等しければ、識別子が見つからなかったので(S1601)、エラーとして処理を停止する。
番号kが全プログラム数よりも小さければ(S1601)、シンボルを識別する番号iに0を代入し(S1103)、番号iと全コードシンボル数とを比較し、番号iが全コードシンボル数よりも大きいか等しければ(ステップS1604)、ステップS1611へ制御を移す。
【0057】
番号iが全コードシンボル数よりも小さければ(ステップS1604)、コードエクスポートシンボルオフセットテーブルのi番目の識別子と検索対象の識別子とを比較し、i番目の識別子と検索対象の識別子とが等しければ(ステップS1605)、コードエクスポートシンボルオフセットテーブルのi番目のオフセットと0X010000×kと0X010000とを加算して加算結果を変数retに代入し(ステップS1606)、変数retとともに呼び出し元のプログラムに制御を戻す。
【0058】
コードエクスポートシンボルオフセットテーブルのi番目の識別子と検索対象の識別子とを比較し、i番目の識別子と検索対象の識別子とが等しくなければ(ステップS1605)、番号iに1を加算して、ステップS1604に制御を戻して、i番目の識別子と検索対象の識別子との比較を繰り返す。
ステップS1604において、番号iが全コードシンボル数よりも大きいか等しい場合に、番号iに0を代入し(ステップS1611)、番号iと全データシンボル数とを比較して、番号iが全データシンボル数よりも大きいか等しい場合は(ステップS1612)、番号kに1を加算して(ステップS1616)、ステップS1602に制御を戻して、次のプログラムの番号について、シンボルの検索を繰り返す。
【0059】
番号iが全データシンボル数よりも小さい場合は(ステップS1612)、データエクスポートシンボルオフセットテーブルのi番目の識別子と検索対象の識別子とを比較して、i番目の識別子と検索対象の識別子とが等しい場合には(ステップS1613)、データエクスポートシンボルオフセットテーブルのi番目のオフセットと0X010000×kと0X011000とを加算して加算結果を変数retに代入し(ステップS1615)、変数retとともに呼び出し元のプログラムに制御を戻す。
【0060】
i番目の識別子と検索対象の識別子とを比較して、i番目の識別子と検索対象の識別子とが等しくない場合には(ステップS1613)、番号iに1を加算して(ステップS1614)、制御をステップS1612に戻し、i番目の識別子と検索対象の識別子との比較を繰り返す。
1.3 まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、各シンボルが呼び出される都度、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換することにより、各シンボルの絶対アドレスを算出するので、各プログラム間でシンボルのリンクが可能となる。
【0061】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
2 実施の形態2
本発明の別の一つの実施の形態としてのプログラムリンク装置2000について説明する。
2.1 プログラムリンク装置2000の構成
プログラムリンク装置2000は、図10に示すように、CPU2105、ROM−A2101、ROM−B1102、RAM2103から構成される。
【0062】
ROM−A2101とROM−B1102とRAM2103とCPU2105は互いにCPUバス2104により接続されている。
ROM−A2101、ROM−B1102、RAM2103がそれぞれ有する記憶領域は、実施の形態1と同様に、一つのアドレス空間に配置されている。従って、CPU2105は、一種類のアドレスにより、ROM−A2101、ROM−B1102、RAM2103のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。
【0063】
以下において、実施の形態1と同じ符号を付した構成要素は、同じ機能を有するので説明を省略し、相違する要素について、相違する点を中心に説明する。
2.1.1 CPU2105
CPU2105は、CPU1105と同様に、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【0064】
CPU2105は、ROM−A2101、ROM−B1102、RAM2103に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、CPU1105は、ROM−A2101、ROM−B1102、RAM2103に記憶されているデータを読み出し、また、RAM2103へデータを書込む。
2.1.2 ROM−A2101
ROM−A2101は、読出し専用の半導体メモリから構成される。ROM−A2101が有する記憶領域には、メインステップ2110、エクスポートシンボル登録ステップ2120、エクスポートシンボルインポートステップ2130、プログラムA1120が記録されている。
2.1.2.1 メインステップ2110
メインステップ2110は、前記アドレス空間において、絶対アドレス0X000000で示される領域から配置されている。
【0065】
メインステップ2110は、図11のフローチャートに示すように、ジャンプテーブル1170にエクスポートシンボルインポートステップ2130へのジャンプ命令を格納し(S2111)、エクスポートシンボル登録ステップ2120を呼び出して実行し(ステップS2112)、シンボルAの識別子であるID−Aを引数としてエクスポートシンボルインポートステップ2130を呼び出し、変数ptraにシンボルAが記憶されている絶対アドレスを格納し(S2113)、変数ptraを使ってシンボルAを呼び出し(S2114)、シンボルEの識別子であるID−Eを引数としてエクスポートシンボルインポートステップ2130を呼び出し、変数ptreにシンボルEが記憶されている絶対アドレスを格納し(S2115)、変数ptreを使ってシンボルEを呼び出す(S2116)手順を含んでいる。
【0066】
メインステップ2110の目的とする処理は、実施の形態1と同様に、シンボルAにより識別されるプログラムブロックと、シンボルEにより識別されるプログラムブロックとの実行である。
なお、シンボルA、E、識別子ID−A、ID−E、シンボルAにより識別されるプログラムブロックと、シンボルEにより識別されるプログラムブロックについては、実施の形態1と同じであるので、説明は省略する。
2.1.2.2 エクスポートシンボル登録ステップ2120
エクスポートシンボル登録ステップ2120は、前記アドレス空間において、絶対アドレス0X001000で示される領域から配置されている。
【0067】
エクスポートシンボル登録ステップ2120は、メインステップ2110から一度だけ呼び出される。
エクスポートシンボル登録ステップ2120は、メインステップ2110から呼び出されると、エクスポートシンボル登録ステップ2120は、各プログラム毎にエクスポートシンボルオフセットテーブルに格納されているシンボルの識別子と、当該識別子に対応するオフセットとの組を取り出し、取り出したオフセットに所定の演算を施して、絶対アドレスを生成する。このようにして、取り出したシンボルの識別子と、生成した絶対アドレスとを後述するエクスポートシンボル参照テーブル2140へ書き込む。
【0068】
エクスポートシンボル登録ステップ2120は、各プログラム毎に、各プログラムに含まれているシンボルの識別子と当該識別子に対応するオフセットとの全ての組について、前記アドレスの生成と、エクスポートシンボル参照テーブル2140へ書き込みとを繰り返す。
実施の形態1と同様に、シンボルには、命令を識別するコードシンボルとデータを識別するデータシンボルがある。エクスポートシンボル登録ステップ2120は、シンボルがコードシンボルである場合には、コードエクスポートシンボルオフセットテーブルA1128又はコードエクスポートシンボルオフセットテーブルB1138を用いて、絶対アドレスを生成し、シンボルがデータシンボルである場合には、データエクスポートシンボルオフセットテーブルA1129又はデータエクスポートシンボルオフセットテーブルB1139を用いて、絶対アドレスを生成する。なお、実施の形態1と同様に、コードエクスポートシンボルオフセットテーブルA1128とデータエクスポートシンボルオフセットテーブルA1129とは、エクスポートシンボルオフセットテーブルA1123に含まれる。コードエクスポートシンボルオフセットテーブルB1138とデータエクスポートシンボルオフセットテーブルB1139とは、エクスポートシンボルオフセットテーブルB1133に含まれる。
【0069】
識別子に対応するオフセットから絶対アドレスを生成する前記所定の演算は、次のとおりである。
シンボルがコードシンボルの場合は、実施の形態1と同様に、(式1)により絶対アドレスが算出される。
シンボルがデータシンボルの場合は、実施の形態1と同様に、(式2)により絶対アドレスが算出される。
2.1.2.3 エクスポートシンボルインポートステップ2130
エクスポートシンボルインポートステップ2130は、前記アドレス空間において、絶対アドレス0X002000で示される領域から配置されている。
【0070】
エクスポートシンボルインポートステップ2130は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ2130が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ2130は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボル参照テーブル2140から検索し、検索された識別子に対応する絶対アドレスを取り出し、取り出した絶対アドレスを前記他のプログラムに出力する。
2.1.2.4 プログラムA1120
プログラムA1120は、図1に示すプログラムA1120と同じであるので、説明を省略する。
2.1.3 ROM−B1102
ROM−B1102は、図1に示すROM−B1102と同じであるので、説明を省略する。
2.1.4 RAM2103
RAM2103は、読出し及び書込みの可能な半導体メモリから構成される。RAM2103が有する記憶領域には、ジャンプテーブル1170、エクスポートシンボル参照テーブル2140、データA1140、データB1150が記憶される。
2.1.4.1 ジャンプテーブル1170
ジャンプテーブル1170は、図1に示すジャンプテーブル1170と同じであるので、説明を省略する。
【0071】
前記アドレス空間内での、ジャンプテーブル1170とエクスポートシンボルインポートステップ2130との配置を図12に示す。
この図に示すように、ジャンプテーブル1170内には、ジャンプ命令「JMP 0X002000」が格納されている。ここで、0X002000は、エクスポートシンボルインポートステップ2130が格納されている領域の絶対アドレスである。
2.1.4.2 エクスポートシンボル参照テーブル2140
エクスポートシンボル参照テーブル2140は、前記アドレス空間内で、絶対アドレス0X101000で示される領域から格納されている。
【0072】
エクスポートシンボル参照テーブル2140は、図13に示すように、シンボルの識別子2141と、当該シンボルの格納されている領域の絶対アドレス2142との組を複数個記憶する領域を備えている。
2.1.4.3 データA1140
データA1140は、実施の形態1のデータA1140と同じであるので、説明を省略する。
2.1.4.4 データB1150
データB1150は、実施の形態1のデータA11B0と同じであるので、説明を省略する。
2.2 プログラムリンク装置2000の動作
2.2.1 CPU2105の動作
CPU2105の動作については、CPU1105と同様であり、図8に示すフローチャートの通りであるので、説明を省略する。
2.2.2 エクスポートシンボル登録ステップ2120の動作
エクスポートシンボル登録ステップ2120の動作について、図14に示すフローチャートを用いて説明する。
【0073】
エクスポートシンボル登録ステップ2120では、プログラムを識別する番号kに0を代入し(S2211)、番号kと全プログラム数とを比較して、番号kが全プログラム数よりも大きいか等しければ(S2212)、処理を終了して、エクスポートシンボル登録ステップ2120を呼び出したプログラムに復帰する。
【0074】
番号kが全プログラム数よりも小さければ(S2212)、0X010000×kと0X010000とを加算して加算結果を変数baseに代入し(ステップS2213)、シンボルを識別する番号iに0を代入しエクスポートシンボル参照テーブルの番号を示す変数jに0を代入する(S2214)。
番号iと全コードシンボル数とを比較し、番号iが全コードシンボル数よりも大きいか等しければ(ステップS2215)、ステップS2221へ制御を移す。
【0075】
番号iが全コードシンボル数よりも小さければ(ステップS2215)、コードエクスポートシンボルオフセットテーブルのi番目の識別子をエクスポートシンボル参照テーブルのj番目の識別子に代入し(ステップS2216)、コードエクスポートシンボルオフセットテーブルのi番目のオフセットと前記算出された変数baseとを加算し、加算結果をエクスポートシンボル参照テーブルのj番目の絶対アドレスに代入し(ステップS2218)、番号iに1を加算し変数jに1を加算し(ステップS2219)、ステップS2215に制御を戻して、当該プログラム内の全てのコードシンボルについて、エクスポートシンボル参照テーブルへ識別子と絶対アドレスとの代入を繰り返す。
【0076】
番号iが全コードシンボル数よりも大きいか等しければ(ステップS2215)、0X010000×kと0X110000とを加算して加算結果を変数baseに代入し(ステップS2221)、番号iに0を代入する(ステップS2222)。
番号iが全データシンボル数よりも大きいか等しければ(ステップS2223)、番号kに1を加算して、ステップS2212へ制御を戻し、全プログラムについて、コードシンボルとデータシンボルについてエクスポートシンボル参照テーブルへ識別子と絶対アドレスとの代入を繰り返す。
【0077】
番号iが全データシンボル数よりも小さければ(ステップS2223)、
データエクスポートシンボルオフセットテーブルのi番目の識別子をエクスポートシンボル参照テーブルのj番目の識別子に代入し(ステップS2224)、データエクスポートシンボルオフセットテーブルのi番目のオフセットと前記算出された変数baseとを加算し、加算結果をエクスポートシンボル参照テーブルのj番目の絶対アドレスに代入し(ステップS2225)、番号iに1を加算し変数jに1を加算し(ステップS2226)、ステップS2223へ制御を戻し、当該プログラム内の全てのデータシンボルについて、エクスポートシンボル参照テーブルへ識別子と絶対アドレスとの代入を繰り返す。
2.2.3 エクスポートシンボルインポートステップ2130の動作
エクスポートシンボルインポートステップ2130の動作について、図15に示すフローチャートを用いて説明する。
【0078】
エクスポートシンボルインポートステップ2130では、エクスポートシンボル参照テーブル内の識別子の番号を示す変数jに0を代入し(S2311)、変数jと全エクスポートシンボル数とを比較して、番号jが全エクスポートシンボル数よりも大きいか等しければ、識別子が見つからなかったので(S2312)、エラーとして処理を停止する。
【0079】
変数jが全エクスポートシンボル数よりも小さければ(S2312)、検索する識別子とエクスポートシンボル参照テーブル内のj番目の識別子とを比較して、等しければ(ステップS2313)、エクスポートシンボル参照テーブル内のj番目のアドレスを変数retに代入し(ステップS2315)、変数retとともにエクスポートシンボルインポートステップ2130の呼び出し元のプログラムへ復帰する。
【0080】
検索する識別子とエクスポートシンボル参照テーブル内のj番目の識別子とが等しくなければ(ステップS2313)、変数jに1を加算して(ステップS2314)、ステップS2312へ制御を移し、エクスポートシンボル参照テーブルから検索する識別子と一致する識別子が見つかるまで、識別子の検索を繰り返す。
2.3 まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、全シンボルについて、あらかじめ、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換し、変換された絶対アドレスをシンボルの識別子とともに記憶し、シンボルが呼び出される都度、前記記憶されている絶対アドレスを読み出すので、各プログラム間でシンボルのリンクが可能となる。
【0081】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
また、実施の形態1のようにエクスポートシンボルインポートステップが呼び出される都度、シンボルのオフセットから絶対アドレスへの変換を行う必要が無いので、エクスポートシンボルインポートステップの動作を高速化する事ができる。
3 実施の形態3
本発明の別の一つの実施の形態としてのプログラムリンク装置3000について説明する。
3.1 プログラムリンク装置3000の構成
プログラムリンク装置3000は、図16に示すように、CPU3105、ROM−A3101、ROM−B1102、RAM3103から構成される。
【0082】
ROM−A3101とROM−B1102とRAM3103とCPU2105は互いにCPUバス3104により接続されている。
ROM−A3101、ROM−B1102、RAM3103がそれぞれ有する記憶領域は、実施の形態1と同様に、一つのアドレス空間に配置されている。従って、CPU2105は、一種類のアドレスにより、ROM−A3101、ROM−B1102、RAM3103のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。
【0083】
以下において、実施の形態1と同じ符号を付した構成要素は、同じ機能を有するので説明を省略し、相違する要素について、相違する点を中心に説明する。
3.1.1 CPU3105
CPU3105は、CPU1105と同様に、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【0084】
CPU3105は、ROM−A3101、ROM−B1102、RAM3103に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、CPU1105は、ROM−A3101、ROM−B1102、RAM3103に記憶されているデータを読み出し、また、RAM3103へデータを書込む。
3.1.2 ROM−A3101
ROM−A3101は、読出し専用の半導体メモリから構成される。ROM−A3101が有する記憶領域には、メインステップ3110、エクスポートシンボル参照キャッシュ初期化ステップ3120、エクスポートシンボルインポートステップ3130、プログラムA1120が記録されている。
3.1.2.1 メインステップ3110
メインステップ3110は、前記アドレス空間において、絶対アドレス0X000000で示される領域から配置されている。
【0085】
メインステップ3110は、図17のフローチャートに示すように、ジャンプテーブル1170にエクスポートシンボルインポートステップ3130へのジャンプ命令を格納し(S3111)、エクスポートシンボル参照キャッシュ初期化ステップ3120を呼び出して実行し(ステップS3112)、シンボルAの識別子であるID−Aを引数としてエクスポートシンボルインポートステップ3130を呼び出し、変数ptraにシンボルAが記憶されている絶対アドレスを格納し(S3113)、変数ptraを使ってシンボルAを呼び出し(S3114)、シンボルEの識別子であるID−Eを引数としてエクスポートシンボルインポートステップ3130を呼び出し、変数ptreにシンボルEが記憶されている絶対アドレスを格納し(S3115)、変数ptreを使ってシンボルEを呼び出す(S3116)手順を含んでいる。
【0086】
メインステップ3110の目的とする処理は、実施の形態1と同様に、シンボルAにより識別されるプログラムブロックと、シンボルEにより識別されるプログラムブロックとの実行である。
なお、シンボルA、E、識別子ID−A、ID−E、シンボルAにより識別されるプログラムブロックと、シンボルEにより識別されるプログラムブロックについては、実施の形態1と同じであるので、説明は省略する。
3.1.2.2 エクスポートシンボル参照キャッシュ初期化ステップ3120エクスポートシンボル参照キャッシュ初期化ステップ3120は、後述するエクスポートシンボル参照キャッシュ3140を初期する。
【0087】
具体的には、エクスポートシンボル参照キャッシュ初期化ステップ3120は、エクスポートシンボル参照キャッシュ3140のシンボルID格納部の全ての識別子にNULL値を設定する。
3.1.2.3 エクスポートシンボルインポートステップ3130
エクスポートシンボルインポートステップ3130は、前記アドレス空間において、絶対アドレス0X002000で示される領域から配置されている。
【0088】
エクスポートシンボルインポートステップ3130は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ3130が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ3130は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボル参照キャッシュ3140から検索し、検索された識別子に対応する絶対アドレスを取り出し、取り出した絶対アドレスを前記他のプログラムに出力する。
【0089】
エクスポートシンボルインポートステップ3130は、受け取ったシンボルの識別子がエクスポートシンボル参照キャッシュ3140に存在しない場合は、図9に示す実施の形態1のエクスポートシンボルインポートステップ1160を実行して受け取ったシンボルの格納されている絶対アドレスを生成し、前記受け取ったシンボルの識別子と生成された絶対アドレスとをエクスポートシンボル参照キャッシュ3140に書込み、生成された絶対アドレスをエクスポートシンボルインポートステップ3130の呼び出し元のプログラムに返す。
3.1.2.4 プログラムA1120
プログラムA1120は、図1に示すプログラムA1120と同じであるので、説明を省略する。
3.1.3 ROM−B1102
ROM−B1102は、図1に示すROM−B1102と同じであるので、説明を省略する。
3.1.4 RAM3103
RAM3103は、読出し及び書込みの可能な半導体メモリから構成される。RAM3103が有する記憶領域には、ジャンプテーブル1170、エクスポートシンボル参照キャッシュ3140、データA1140、データB1150が記憶される。
3.1.4.1 ジャンプテーブル1170
ジャンプテーブル1170は、図1に示すジャンプテーブル1170と同じであるので、説明を省略する。
【0090】
前記アドレス空間内での、ジャンプテーブル1170とエクスポートシンボルインポートステップ3130との配置を図18に示す。
この図に示すように、ジャンプテーブル1170内には、ジャンプ命令「JMP 0X002000」が格納されている。ここで、0X002000は、エクスポートシンボルインポートステップ3130が格納されている領域の絶対アドレスである。
3.1.4.2 エクスポートシンボル参照キャッシュ3140
エクスポートシンボル参照キャッシュ3140は、前記アドレス空間において、絶対アドレス0X100100で示される領域から配置されている。
【0091】
エクスポートシンボル参照キャッシュ3140は、図19に示すように、シンボルの識別子と絶対アドレスとから構成されるエントリを4個格納する領域を備えている。4個のエントリを最初のエントリから数えて、エントリ0、エントリ1、エントリ2、エントリ3と呼ぶ。この図において、領域3142には、エントリ0のシンボルの識別子が格納され、領域3141には、エントリ0のシンボルの絶対アドレスが格納される。
【0092】
この図は、エクスポートシンボル参照キャッシュ初期化ステップ3120により、シンボルの識別子を格納する領域が初期化される前の状態を示している。各エントリのシンボルの識別子と絶対アドレスを格納する領域には、不定値が格納されている。
エクスポートシンボル参照キャッシュ初期化ステップ3120により、シンボルの識別子を格納する領域が初期化された直後の、エクスポートシンボル参照キャッシュ3140の状態を図20に示す。この図に示すように、各エントリのシンボルの識別子が格納される領域には、NULL値が格納されており、各エントリのシンボルの絶対アドレス識別子が格納される領域には、不定値が格納されている。なお、この図において、「ID−NULL」は、NULL値を示す。
【0093】
エクスポートシンボルインポートステップ3130によりエクスポートシンボル参照キャッシュ3140へシンボルの識別子と絶対アドレスとがいくつか書き込まれた後の、エクスポートシンボル参照キャッシュ3140の状態を、図21に示す。この図では、エントリ0のシンボルの識別子の領域には、シンボルBの識別子であるID−Bが格納され、エントリ0の絶対アドレスの領域には、シンボルBが格納されている絶対アドレス0X010200が格納されている。エントリ1のシンボルの識別子の領域には、シンボルGの識別子であるID−Gが格納され、エントリ1の絶対アドレスの領域には、シンボルGが格納されている絶対アドレス0X120700が格納されている。エントリ2のシンボルの識別子の領域には、シンボルEの識別子であるID−Eが格納され、エントリ2の絶対アドレスの領域には、シンボルEが格納されている絶対アドレス0X020008が格納されている。エントリ3の絶対アドレスの領域には、絶対アドレス0X010008が格納されているが、エントリ3のシンボルの識別子の領域には、NULL値が格納されているので、このエントリ3は使用されていないことを示している。
3.1.4.3 データA1140
データA1140は、実施の形態1のデータA1140と同じであるので、説明を省略する。
3.1.4.4 データB1150
データB1150は、実施の形態1のデータA11B0と同じであるので、説明を省略する。
3.2 プログラムリンク装置3000の動作
3.2.1 CPU3105の動作
CPU3105の動作については、CPU1105と同様であり、図8に示すフローチャートの通りであるので、説明を省略する。
3.2.2 エクスポートシンボル参照キャッシュ初期化ステップ3120の動作
エクスポートシンボル参照キャッシュ初期化ステップ3120の動作について、図22に示すフローチャートを用いて説明する。
【0094】
エクスポートシンボル参照キャッシュ初期化ステップ3120では、エクスポートシンボル参照キャッシュ3140のエントリ番号を示す変数hに0を代入し(ステップS3121)、変数hがエクスポートシンボル参照キャッシュ3140の全エントリ数よりも大きいか等しければ(ステップS3122)、エクスポートシンボル参照キャッシュ初期化ステップ3120の呼び出し元のプログラムに制御を戻す。
【0095】
変数hがエクスポートシンボル参照キャッシュ3140の全エントリ数よりも小さければ(ステップS3122)、エクスポートシンボル参照キャッシュ3140のh番目のエントリのシンボルの識別子の領域にNULL値を格納し(ステップS3123)、変数hに1を加算し(ステップS3124)、制御をステップS3122へ戻し、エクスポートシンボル参照キャッシュ3140の全てのシンボルの識別子の領域について、NULL値の格納を繰り返す。
3.2.3 エクスポートシンボルインポートステップ3130の動作
エクスポートシンボルインポートステップ3130の動作について、図23に示すフローチャートを用いて説明する。
【0096】
エクスポートシンボルインポートステップ3130では、エクスポートシンボル参照キャッシュ3140のエントリ番号を示す変数hに0を代入し(ステップS3131)、変数hがエクスポートシンボル参照キャッシュ3140の全エントリ数よりも大きいか等しければ(ステップS3132)、ステップS3136へ制御を移す。
【0097】
変数hがエクスポートシンボル参照キャッシュ3140の全エントリ数よりも小さい場合(ステップS3132)、検索する識別子とエクスポートシンボル参照キャッシュ3140のh番目のエントリの識別子とが等しければ(ステップS3133)、エクスポートシンボル参照キャッシュ3140のh番目の絶対アドレスをエクスポートシンボルインポートステップ3130の呼び出し元のプログラムへ返し処理を終了する(ステップS3134)。
【0098】
検索する識別子とエクスポートシンボル参照キャッシュ3140のh番目のエントリの識別子とが等しくなければ(ステップS3133)、変数hに1を加算し(ステップS3135)、ステップS3132へ制御を戻す。
変数hがエクスポートシンボル参照キャッシュ3140の全エントリ数よりも大きいか等しければ(ステップS3132)、図9に示す実施の形態1のエクスポートシンボルインポートステップ1160を実行して検索するシンボルの格納されている絶対アドレスを生成し(ステップS3136)、0から3までの数字から、一つの数字をランダムに選択して、選択した数字を変数hに代入し(ステップS3137)、検索するシンボルの識別子をエクスポートシンボル参照キャッシュ3140のh番目のエントリのシンボルの識別子の領域に格納し(ステップS3138)、絶対生成された絶対アドレスをエクスポートシンボル参照キャッシュ3140のh番目のエントリの絶対アドレスの領域に格納する(ステップS3139)。
3.3 まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むエクスポート参照キャッシュを有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをエクスポート参照キャッシュに書き込むので、以前に参照されたシンボルを再度参照する際に、エクスポート参照キャッシュに記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となる。
【0099】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
また、実施の形態2のように、すべてのエクスポートシンボルとその絶対アドレスの対をメモリ上に置かないので、必要なメモリの容量を小さく抑えつつ、エクスポートシンボルインポートステップの動作を高速化する事ができる。
4 実施の形態4
本発明の別の一つの実施の形態としてのプログラムリンク装置4000について説明する。
4.1 プログラムリンク装置4000の構成
プログラムリンク装置4000は、図24に示すように、CPU4195、ROM−A4101、ROM−B4192、キャッシュ装置4400、RAM1103から構成される。
【0100】
ROM−A4101とROM−B4192とキャッシュ装置4400とRAM1103とCPU4195は互いにCPUバス4194により接続されている。ROM−A4101、ROM−B4192、RAM1103がそれぞれ有する記憶領域は、実施の形態1と同様に、一つのアドレス空間に配置されている。従って、CPU4195は、一種類のアドレスにより、ROM−A4101、ROM−B4192、RAM1103のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。
【0101】
以下において、実施の形態1と同じ符号を付した構成要素は、同じ機能を有するので説明を省略し、相違する要素について、相違する点を中心に説明する。
4.1.1 CPU4195
CPU4195は、CPU1105と同様に、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【0102】
CPU4195は、ROM−A4101、ROM−B4192、RAM1103に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、CPU4195は、ROM−A4101、ROM−B5102、RAM1103に記憶されているデータを読み出し、また、RAM1103へデータを書込む。
4.1.2 ROM−A4101
ROM−A4101は、読出し専用の半導体メモリから構成される。ROM−A4101が有する記憶領域には、メインステップ4190、キャッシュ装置初期化ステップ4200、エクスポートシンボルインポートステップ4300、プログラムA4120が記録されている。
4.1.2.1 メインステップ4190
メインステップ4190は、前記アドレス空間において、絶対アドレス0X000000で示される領域から配置されている。
【0103】
メインステップ4190は、図25のフローチャートに示すように、キャッシュ装置4400を初期化し(ステップS4101)、ジャンプテーブル1170にエクスポートシンボルインポートステップ4300へのジャンプ命令を格納し(S4102)、シンボルAの識別子であるID−Aを引数としてエクスポートシンボルインポートステップ4300を呼び出し、変数ptraにシンボルAが記憶されている絶対アドレスを格納し(S4103)、変数ptraを使ってシンボルAを呼び出し(S4104)、シンボルEの識別子であるID−Eを引数としてエクスポートシンボルインポートステップ4300を呼び出し、変数ptreにシンボルEが記憶されている絶対アドレスを格納し(S4105)、変数ptreを使ってシンボルEを呼び出す(S4106)手順を含んでいる。
【0104】
メインステップ4190の目的とする処理は、実施の形態1と同様に、シンボルAにより識別されるプログラムブロックと、シンボルEにより識別されるプログラムブロックとの実行である。
なお、シンボルA、E、識別子ID−A、ID−E、シンボルAにより識別されるプログラムブロックと、シンボルEにより識別されるプログラムブロックについては、実施の形態1と同じであるので、説明は省略する。
4.1.2.2 キャッシュ装置初期化ステップ4200
キャッシュ装置初期化ステップ4200は、前記アドレス空間において、絶対アドレス0X001000で示される領域から配置されている。
【0105】
キャッシュ装置初期化ステップ4200は、後述するキャッシュ装置4400を初期する。
具体的には、キャッシュ装置初期化ステップ4200は、キャッシュ装置4400のキャッシュタグ部4410の全てのキャッシュ有効性フラグ4402を「無効」とする。
4.1.2.3 エクスポートシンボルインポートステップ4300
エクスポートシンボルインポートステップ4300は、前記アドレス空間において、絶対アドレス0X002000で示される領域から配置されている。
【0106】
エクスポートシンボルインポートステップ4300は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ4300が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ4300は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボルIDテーブルから検索し、検索された識別子に対応するアドレスフラグを取り出す。
【0107】
エクスポートシンボルインポートステップ4300は、取り出したアドレスフラグが「オフセット」を示す場合には、エクスポートシンボルIDテーブルのデータフラグが「コード」示すとき、(式3)により絶対アドレスを算出する。
(式3) 絶対アドレス =
エクスポートシンボルアドレス情報テーブルのデータ
+ 0X010000 * k + 0X010000
ここで、kは、プログラムを識別する番号であり、プログラムAについて、k=0であり、プログラムBについて、k=1である。
【0108】
エクスポートシンボルIDテーブルのデータフラグが「データ」示すとき、(式4)により絶対アドレスを算出する。
(式4) 絶対アドレス =
エクスポートシンボルアドレス情報テーブルのデータ
+ 0X010000 * k + 0X011000
エクスポートシンボルインポートステップ4300は、算出された絶対アドレスをエクスポートシンボルインポートステップ4300の呼び出し元のプログラムに返す。
【0109】
次に、エクスポートシンボルインポートステップ4300は、算出した絶対アドレスをエクスポートシンボルアドレス情報テーブルのデータに書込み、エクスポートシンボルアドレス情報テーブルのアドレスフラグを「絶対アドレス」を示すフラグとする。
エクスポートシンボルインポートステップ4300は、取り出したフラグが「絶対アドレス」を示す場合には、エクスポートシンボルアドレス情報テーブルに格納されているデータを取り出し、取り出したデータを絶対アドレスとしてエクスポートシンボルインポートステップ4300の呼び出し元のプログラムに返す。
【0110】
エクスポートシンボルインポートステップ4300は、ROM−A4101、ROM−B4192及びRAM1103の上に記録されている情報を参照する際に、参照する絶対アドレスがキャッシュ装置4400のキャッシュタグ部から探し、参照する絶対アドレスがキャッシュ装置4400のキャッシュタグ部に存在する場合、次に、キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「有効」であれば、対応するエントリの内容をキャッシュデータ部から取り出す。キャッシュ有効性フラグが「無効」であれば、参照する絶対アドレスで示される領域のデータを、ROM−A4101、ROM−B4192又はRAM1103から、取り出し、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込む。
【0111】
参照する絶対アドレスがキャッシュ装置4400のキャッシュタグ部に存在しない場合、参照する絶対アドレスで示される領域のデータを、ROM−A4101、ROM−B4192又はRAM1103から、取り出す。キャッシュ有効性フラグが「無効」のキャッシュタグについては、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込む。全てのエントリについてキャッシュ有効性フラグが「有効」であるなら、エントリを一つランダムに選択し、選択したエントリについて、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込む。
【0112】
エクスポートシンボルインポートステップ4300は、キャッシュ装置4400のキャッシュタグ部及びキャッシュデータ部にデータを書き込む際には、データを書き込む絶対アドレスがキャッシュタグ部に存在する場合、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込む。
【0113】
データを書き込む絶対アドレスがキャッシュタグ部に存在しない場合、キャッシュ有効性フラグが「無効」のキャッシュタグが存在するとき、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、キャッシュ有効性フラグが「無効」であるキャッシュタグについて、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込む。
【0114】
キャッシュ有効性フラグが「無効」のキャッシュタグが存在しないとき、エントリを1つランダムに選択し、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、前記選択したエントリについて、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込む。
4.1.2.4 プログラムA4120
プログラムA4120は、図26に示すように、プログラムヘッダA4121、プログラム命令部A1122、エクスポートシンボルテーブルA4123を含んでいる。
【0115】
プログラムA4120は、前記アドレス空間において、絶対アドレス0X010000で示される領域から配置されている。
(1)プログラムヘッダA4121
プログラムヘッダA4121は、図26に示すように、プログラムA4120の先頭から配置され、エクスポートシンボルIDテーブルA4100の先頭位置を示すオフセット4124と、エクスポートシンボルアドレス情報テーブルA4110の先頭位置を示すオフセット4125とを含む。ここで、オフセットとは、プログラムA4120の先頭位置を基準とした場合のアドレスである。
【0116】
この図に示すように、オフセット4124は、「0X001000」であり、「0X001000」は、プログラムA4120内において、エクスポートシンボルIDテーブルA4100の先頭位置を示すアドレスである。また、オフセット4125は、「0X001010」であり、「0X001010」は、プログラムA4120内において、エクスポートシンボルアドレス情報テーブルA4110の先頭位置を示すアドレスである。
(2)プログラム命令部A1122
プログラム命令部A1122は、図3に示すプログラム命令部A1122と同じであるので、説明を省略する。
(3)エクスポートシンボルテーブルA4123
エクスポートシンボルテーブルA4123は、エクスポートシンボルIDテーブルA4100と、エクスポートシンボルアドレス情報テーブルA4110とを含む。
【0117】
エクスポートシンボルテーブルA4123は、前記アドレス空間において、絶対アドレス0X011000で示される領域から配置されている。
(エクスポートシンボルIDテーブルA4100)
エクスポートシンボルIDテーブルA4100は、前記アドレス空間において、絶対アドレス0X011000で示される領域から配置されている。
【0118】
エクスポートシンボルIDテーブルA4100は、シンボルの識別子と、シンボルがコードシンボルであるか、データシンボルであるかを示すコードフラグとの組を記憶している。
具体的には、図26に示すように、エクスポートシンボルIDテーブルA4100は、シンボルA1126の識別子4101「ID−A」とコードフラグ4102「コード」との組と、シンボルB1127の識別子4103「ID−B」とコードフラグ4104「コード」との組と、シンボルC1141の識別子4105「ID−C」とコードフラグ4106「データ」との組と、シンボルD1142の識別子4107「ID−D」とコードフラグ4108「データ」との組とを記憶している。
(エクスポートシンボルアドレス情報テーブルA4110)
エクスポートシンボルアドレス情報テーブルA4110は、前記アドレス空間において、絶対アドレス0X011010で示される領域から配置されている。
【0119】
エクスポートシンボルアドレス情報テーブルA4110は、シンボルの格納されている領域のプログラムA4120内でのアドレスと、そのアドレスがオフセットであるか絶対アドレスであるかを示すアドレスフラグとの組を記憶している。
ここで、オフセットとは、プログラムA4120の先頭位置を基準とした場合のアドレスである。
【0120】
具体的には、図26に示すように、エクスポートシンボルアドレス情報テーブルA4110は、オフセットを示すアドレスフラグ4111とシンボルA1126の格納されている領域のオフセットを示すアドレス4112との組と、オフセットを示すアドレスフラグ4113とシンボルB1127の格納されている領域のオフセットを示すアドレス4114との組と、オフセットを示すアドレスフラグ4115とシンボルC1141の格納されている領域のオフセットを示すアドレス4116との組と、オフセットを示すアドレスフラグ4117とシンボルD1142の格納されている領域のオフセットを示すアドレス4118との組とを記憶している。
4.1.3 ROM−B4192
ROM−B4192は、読出し専用の半導体メモリから構成される。ROM−B4192が有する記憶領域には、プログラムB4130が記録されている。
4.1.3.1 プログラムB4130
プログラムB4130は、図27に示すように、プログラムヘッダB4131、プログラム命令部B1132、エクスポートシンボルテーブルB4133を含んでいる。
【0121】
プログラムB4130は、前記アドレス空間において、絶対アドレス0X020000で示される領域から配置されている。
(1)プログラムヘッダB4131
プログラムヘッダB4131は、図27に示すように、プログラムB4130の先頭から配置され、エクスポートシンボルIDテーブルB4140の先頭位置を示すオフセット4134と、エクスポートシンボルアドレス情報テーブルB4150の先頭位置を示すオフセット4135とを含む。ここで、オフセットとは、プログラムB4130の先頭位置を基準とした場合のアドレスである。
【0122】
この図に示すように、オフセット4134は、「0X002000」であり、「0X002000」は、プログラムB4130内において、エクスポートシンボルIDテーブルB4140の先頭位置を示すアドレスである。また、オフセット4135は、「0X002010」であり、「0X002010」は、プログラムB4130内において、エクスポートシンボルアドレス情報テーブルB4150の先頭位置を示すアドレスである。
(2)プログラム命令部B1132
プログラム命令部B1132は、図3に示すプログラム命令部B1132と同じであるので、説明を省略する。
(3)エクスポートシンボルテーブルB4133
エクスポートシンボルテーブルB4133は、エクスポートシンボルIDテーブルB4140と、エクスポートシンボルアドレス情報テーブルB4150とを含む。
【0123】
エクスポートシンボルテーブルB4133は、前記アドレス空間において、絶対アドレス0X022000で示される領域から配置されている。
(エクスポートシンボルIDテーブルB4140)
エクスポートシンボルIDテーブルB4140は、前記アドレス空間において、絶対アドレス0X022000で示される領域から配置されている。
【0124】
エクスポートシンボルIDテーブルB4140は、シンボルの識別子と、シンボルがコードシンボルであるか、データシンボルであるかを示すコードフラグとの組を記憶している。
具体的には、図27に示すように、エクスポートシンボルIDテーブルB4140は、シンボルE1136の識別子4141「ID−E」とコードフラグ4142「コード」との組と、シンボルF1137の識別子4143「ID−F」とコードフラグ4144「コード」との組と、シンボルG1151の識別子4145「ID−G」とコードフラグ4146「データ」との組と、シンボルH1152の識別子4147「ID−H」とコードフラグ4148「データ」との組とを記憶している。
(エクスポートシンボルアドレス情報テーブルB4150)
エクスポートシンボルアドレス情報テーブルB4150は、前記アドレス空間において、絶対アドレス0X022010で示される領域から配置されている。
【0125】
エクスポートシンボルアドレス情報テーブルB4150は、シンボルの格納されている領域のプログラムB4130内でのアドレスと、そのアドレスがオフセットであるか絶対アドレスであるかを示すアドレスフラグとの組を記憶している。
ここで、オフセットとは、プログラムB4130の先頭位置を基準とした場合のアドレスである。
【0126】
具体的には、図27に示すように、エクスポートシンボルアドレス情報テーブルB4150は、オフセットを示すアドレスフラグ4151とシンボルE1136の格納されている領域のオフセットを示すアドレス4152との組と、オフセットを示すアドレスフラグ4153とシンボルF1137の格納されている領域のオフセットを示すアドレス4154との組と、オフセットを示すアドレスフラグ4155とシンボルG1151の格納されている領域のオフセットを示すアドレス4156との組と、オフセットを示すアドレスフラグ4157とシンボルH1152の格納されている領域のオフセットを示すアドレス4158との組とを記憶している。
4.1.4 キャッシュ装置4400
キャッシュ装置4400は、図28に示すように、キャッシュタグ部4410と、キャッシュデータ部4450とを含む。
【0127】
キャッシュタグ部4410は、4個のキャッシュタグ4409を記録する領域を有する。各キャッシュタグ4409は、アドレス4401と、キャッシュ有効性フラグ4402と、書込み有無フラグ4403とから構成される。
キャッシュデータ部4450は、4個のエントリから構成される。4個のエントリは、先頭からエントリ0、エントリ1、エントリ2、エントリ3と称し、この図において、それぞれ参照符号4405、4406、4407、4408で示されている。各エントリは、ROM−A4101、ROM−B4192及びRAM1103上のデータを記録する。
【0128】
4個のエントリは、それぞれ前記4個のキャッシュタグに対応している。
アドレス4401には、アドレス4401を構成するキャッシュタグに対応するエントリに記録されたROM−A4101、ROM−B4192及びRAM1103上のデータが格納されている絶対アドレスが格納される。
キャッシュ有効性フラグ4402は、キャッシュ有効性フラグ4402を構成するキャッシュタグ及び対応するエントリが有効であるか無効であるかを示す。
【0129】
書込み有無フラグ4403は、書込み有無フラグ4403を構成するキャッシュタグに対応するエントリにデータが書き込まれたか否かを示す。
キャッシュ装置初期化ステップ4200により、キャッシュタグ部4410及びキャッシュデータ部4450が初期化された直後の、キャッシュタグ部4410及びキャッシュデータ部4450の状態を図28に示す。
【0130】
この図に示すように、キャッシュタグ部4410の全てのアドレス4401には、それぞれ0X000000が格納され、キャッシュタグ部4410の全てのキャッシュ有効性フラグ4402には、それぞれ「無効」を示す情報が格納され、キャッシュタグ部4410の全ての書込み有無フラグ4403には、それぞれ「無」を示す情報が格納されている。また、キャッシュデータ部4450の全てのエントリには、不定値が格納されている。
【0131】
ROM−A4101、ROM−B4192及びRAM1103上のいくつかのデータが参照され、キャッシュ装置4400に対して、いくつかのデータが書き込まれた後の、キャッシュタグ部4411及びキャッシュデータ部4451の状態を図29に示す。
この図に示すように、0番目のキャッシュタグには、アドレス4401として0X011020が格納され、キャッシュ有効性フラグ4402として「有効」が格納され、書込み有無フラグ4403として「有」が格納されている。また、参照符号4405で示されるエントリ0には、絶対アドレスを示すアドレスフラグと0X110500とからなるデータが格納されている。
【0132】
1番目のキャッシュタグには、アドレス4401として0X011000が格納され、キャッシュ有効性フラグ4402として「有効」が格納され、書込み有無フラグ4403として「無」が格納されている。また、参照符号4406で示されるエントリ1には、シンボルAを識別する識別子「ID−A」と、コードであることを示すコードフラグと、シンボルBを識別する識別子「ID−B」と、コードであることを示すコードフラグとからなるデータが格納されている。
【0133】
2番目のキャッシュタグには、アドレス4401として0X011018が格納され、キャッシュ有効性フラグ4402として「有効」が格納され、書込み有無フラグ4403として「無」が格納されている。また、参照符号4407で示されるエントリ2には、オフセットを示すアドレスフラグと0X000200とからなるデータが格納されている。
【0134】
3番目のキャッシュタグには、アドレス4401として0X022010が格納され、キャッシュ有効性フラグ4402として「有効」が格納され、書込み有無フラグ4403として「有」が格納されている。また、参照符号4408で示されるエントリ3には、絶対アドレスを示すアドレスフラグと0X020008とからなるデータが格納されている。
【0135】
キャッシュタグ部4411の2番目のキャッシュタグと、参照符号4407で示されるエントリ2とに対して、データの書込みが行われた後の、キャッシュタグ部4412及びキャッシュデータ部4452の状態を図30に示す。
この図に示すように、2番目のキャッシュタグの書込み有無フラグに「有」が書き込まれ、参照符号4407で示されるエントリ2には、絶対アドレスを示すアドレスフラグと0X010200とからなるデータが格納されている。
4.1.5 RAM1103
RAM1103は、読出し及び書込みの可能な半導体メモリから構成される。RAM1103が有する記憶領域には、ジャンプテーブル1170、データA1140、データB1150が記憶される。
【0136】
RAM1103、ジャンプテーブル1170、データA1140、データB1150については、実施の形態1と同じであるので、説明を省略する。
前記アドレス空間内での、ジャンプテーブル1170とエクスポートシンボルインポートステップ4300との配置を図31に示す。
この図に示すように、ジャンプテーブル1170内には、ジャンプ命令「JMP 0X002000」が格納されている。ここで、0X002000は、エクスポートシンボルインポートステップ4300が格納されている領域の絶対アドレスである。
4.2 プログラムリンク装置4000の動作
4.2.1 CPU4195の動作
CPU4195の動作については、CPU1105と同様であり、図8に示すフローチャートの通りであるので、説明を省略する。
4.2.2 キャッシュ装置初期化ステップ4200の動作
キャッシュ装置初期化ステップ4200の動作について、図32に示すフローチャートを用いて説明する。
【0137】
キャッシュ装置初期化ステップ4200では、キャッシュ装置4400のキャッシュタグ部のキャッシュタグの番号を示す変数hに0を代入し(ステップS4201)、変数hがキャッシュ装置4400の全エントリ数よりも大きいか等しければ(ステップS4202)、キャッシュ装置初期化ステップ4200の呼び出し元のプログラムに制御を戻す。
【0138】
変数hがキャッシュ装置4400の全エントリ数よりも小さければ(ステップS4202)、キャッシュ部のh番目のキャッシュタグのキャッシュ有効性フラグを「無効」とし(ステップS4203)、変数hに1を加算し(ステップS4204)、制御をステップS4202へ戻し、処理を繰り返す。
4.2.3 エクスポートシンボルインポートステップ4300の動作
エクスポートシンボルインポートステップ4300の動作について、図33〜図34に示すフローチャートを用いて説明する。
【0139】
エクスポートシンボルインポートステップ4300では、プログラムを識別する番号kに0を代入し(S4301)、番号kと全プログラム数とを比較して、番号kが全プログラム数よりも大きいか等しければ(S4302)、処理を終了する。
番号kが全プログラム数よりも小さければ(S4302)、シンボルの番号を示す変数iに0を代入する(ステップS4303)。
【0140】
番号iと全シンボル数とを比較して、変数iが全シンボル数よりも大きいか等しければ(S4304)、番号kに1を加算し(ステップS4307)、ステップS4302へ制御を戻す。
変数iが全シンボル数よりも小さい場合(S4304)、検索するシンボルの識別子とエクスポートシンボルIDテーブルのi番目の識別子とが一致しなければ(ステップS4305)、変数iに1を加算し(ステップS4306)、ステップS4304へ制御を戻す。
【0141】
検索するシンボルの識別子とエクスポートシンボルIDテーブルのi番目の識別子とが一致するならば(ステップS4305)、エクスポートシンボルアドレス情報テーブルのi番目のアドレスフラグが「オフセット」である場合(ステップS4311)、エクスポートシンボルIDテーブルのi番目のコードフラグが「コード」であるとき(ステップS4312)、エクスポートシンボルアドレス情報テーブルのi番目のデータと0X010000*kと0X010000とを加算して、その加算値を変数retへ代入し(ステップS4316)、エクスポートシンボルIDテーブルのi番目のコードフラグが「コード」でないとき(ステップS4312)、エクスポートシンボルアドレス情報テーブルのi番目のデータと0X010000*kと0X011000とを加算して、その加算値を変数retへ代入し(ステップS4313)する。次に、変数retをエクスポートシンボルアドレス情報テーブルのi番目のデータに書込み(ステップS4314)、エクスポートシンボルアドレス情報テーブルのi番目のアドレスフラグを絶対アドレスとし(ステップS4315)、処理を終了して、変数retとともに、エクスポートシンボルインポートステップ4300を呼び出したプログラムに復帰する。
【0142】
エクスポートシンボルアドレス情報テーブルのi番目のアドレスフラグが「オフセット」でない場合(ステップS4311)、エクスポートシンボルアドレス情報テーブルのi番目のデータを変数retに代入し(ステップS4317)、処理を終了して、変数retとともに、エクスポートシンボルインポートステップ4300を呼び出したプログラムに復帰する。
【0143】
次に、エクスポートシンボルインポートステップ4300が、ROM−A4101、ROM−B4192及びRAM1103の上に記録されている情報を参照する際の動作について、図35〜図36に示すフローチャートを用いて説明する。
エクスポートシンボルインポートステップ4300は、ROM−A4101、ROM−B4192及びRAM1103の上に記録されている情報を参照する際に、参照する絶対アドレスをキャッシュ装置4400のキャッシュタグ部から探し、参照する絶対アドレスがキャッシュ装置4400のキャッシュタグ部に存在する場合(ステップS4401)、次に、キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「有効」であれば(ステップS4411)、対応するエントリの内容をキャッシュデータ部から取り出し(ステップS4412)、復帰する。
【0144】
キャッシュ有効性フラグが「無効」であれば(ステップS4411)、参照する絶対アドレスで示される領域のデータを、ROM−A4101、ROM−B4192又はRAM1103から、取り出し(ステップS4413)、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み(ステップS4414)、復帰する。
【0145】
参照する絶対アドレスがキャッシュ装置4400のキャッシュタグ部に存在しない場合(ステップS4401)、参照する絶対アドレスで示される領域のデータを、ROM−A4101、ROM−B4192又はRAM1103から、取り出す(ステップS4402)。キャッシュ有効性フラグが「無効」のキャッシュタグについては(ステップS4403)、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み(ステップS4406)、復帰する。
【0146】
全てのエントリについてキャッシュ有効性フラグが「有効」であるなら(ステップS4403)、エントリを一つランダムに選択し(ステップS4404)、選択したエントリについて、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み(ステップS4405)、復帰する。
【0147】
次に、エクスポートシンボルインポートステップ4300が、ROM−A4101、ROM−B4192及びRAM1103の上に記録されている情報を更新する際の動作について、図37に示すフローチャートを用いて説明する。
エクスポートシンボルインポートステップ4300は、キャッシュ装置4400のキャッシュタグ部及びキャッシュデータ部にデータを書き込む際には、データを書き込む絶対アドレスがキャッシュタグ部に存在する場合(ステップS4451)、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込み(ステップS4455)、復帰する。
【0148】
データを書き込む絶対アドレスがキャッシュタグ部に存在しない場合(ステップS4451)、キャッシュ有効性フラグが「無効」のキャッシュタグが存在するとき(ステップS4452)、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、キャッシュ有効性フラグが「無効」であるキャッシュタグについて、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込み(ステップS4456)、復帰する。
【0149】
キャッシュ有効性フラグが「無効」のキャッシュタグが存在しないとき(ステップS4452)、エントリを1つランダムに選択し(ステップS4453)、更新する絶対アドレス、「有効」、「有」、更新するデータを、それぞれ、前記選択したエントリについて、更新する絶対アドレスが存在するキャッシュタグのアドレス、キャッシュ有効性フラグ、書込み有無フラグ、キャッシュデータの領域へ書き込み(ステップS4454)、復帰する。
4.3 まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込むので、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となる。
【0150】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
また、実施の形態2、3のように、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、2度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができる。
5 実施の形態5
本発明の別の一つの実施の形態としてのプログラムリンク装置5000について説明する。
5.1 プログラムリンク装置5000の構成
プログラムリンク装置5000は、図38に示すように、CPU5105、ROM−A5101、ROM−B5102、キャッシュ装置5400、RAM1103から構成される。
【0151】
ROM−A5101とROM−B5102とキャッシュ装置5400とRAM1103とCPU5105は互いにCPUバス5104により接続されている。
ROM−A5101、ROM−B5102、RAM1103がそれぞれ有する記憶領域は、実施の形態1と同様に、一つのアドレス空間に配置されている。従って、CPU5105は、一種類のアドレスにより、ROM−A5101、ROM−B5102、RAM1103のそれぞれの記憶領域に記憶されているデータにアクセスすることができる。
【0152】
以下において、実施の形態1と同じ符号を付した構成要素は、同じ機能を有するので説明を省略し、相違する要素について、相違する点を中心に説明する。
5.1.1 CPU5105
CPU5105は、CPU1105と同様に、レジスタ、演算回路、制御回路を有し、命令を解読して演算、記憶装置との間のデータの授受、制御動作などを行う半導体装置である。
【0153】
CPU5105は、ROM−A5101、ROM−B5102、RAM1103に記憶されている命令を読み出し、読み出した命令を解読し、解読した命令を実行する。また、CPU5105は、ROM−A5101、ROM−B5102、RAM1103に記憶されているデータを読み出し、また、RAM1103へデータを書込む。
5.1.2 ROM−A5101
ROM−A5101は、読出し専用の半導体メモリから構成される。ROM−A5101が有する記憶領域には、メインステップ4190、キャッシュ装置初期化ステップ4200、エクスポートシンボルインポートステップ5100、プログラムA5200が記録されている。
5.1.2.1 メインステップ4190
メインステップ4190は、前記アドレス空間において、絶対アドレス0X000000で示される領域から配置されている。
【0154】
メインステップ4190は、実施の形態4に示すメインステップ4190と同じであるので、説明を省略する。
5.1.2.2 キャッシュ装置初期化ステップ4200
キャッシュ装置初期化ステップ4200は、前記アドレス空間において、絶対アドレス0X001000で示される領域から配置されている。
【0155】
キャッシュ装置初期化ステップ4200は、後述するキャッシュ装置5400を初期する。
キャッシュ装置初期化ステップ4200は、実施の形態4に示すキャッシュ装置初期化ステップ4200と同じであるので、説明を省略する。
5.1.2.3 エクスポートシンボルインポートステップ5100
エクスポートシンボルインポートステップ5100は、前記アドレス空間において、絶対アドレス0X002000で示される領域から配置されている。
【0156】
エクスポートシンボルインポートステップ5100は、シンボルの識別子とともに、他のプログラムから呼ばれる。エクスポートシンボルインポートステップ5100が、シンボルの識別子とともに、他のプログラムから呼ばれると、エクスポートシンボルインポートステップ5100は、シンボルの識別子を他のプログラムから受け取り、受け取ったシンボルの識別子に一致する識別子をエクスポートシンボルIDテーブルから検索する。検索する識別子が含まれるデータに対応するキャッシュタグの書込み有無フラグを見て、書込み有無フラグが「有」である場合には、エクスポートシンボルアドレス情報テーブルのデータを取り出し、取り出したデータを絶対アドレスとして、エクスポートシンボルインポートステップ5100の呼び出し元のプログラムに返す。
【0157】
書込み有無フラグが「無」である場合には、エクスポートシンボルIDテーブルのデータフラグが「コード」示すとき、(式3)により絶対アドレスを算出する。
エクスポートシンボルIDテーブルのデータフラグが「データ」示すとき、(式4)により絶対アドレスを算出する。
【0158】
エクスポートシンボルインポートステップ5100は、算出された絶対アドレスをエクスポートシンボルインポートステップ5100の呼び出し元のプログラムに返す。
次に、エクスポートシンボルインポートステップ5100は、算出した絶対アドレスをエクスポートシンボルアドレス情報テーブルのデータに書込む。
(データの参照)
エクスポートシンボルインポートステップ5100は、ROM−A5101、ROM−B5102及びRAM1103の上に記録されている情報を参照する際に、参照する絶対アドレスをキャッシュ装置5400のキャッシュタグ部から探し、参照する絶対アドレスがキャッシュ装置5400のキャッシュタグ部に存在する場合、次に、キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「有効」であれば、対応するエントリの内容をキャッシュデータ部から取り出す。キャッシュ有効性フラグが「無効」であれば、参照する絶対アドレスで示される領域のデータを、ROM−A5101、ROM−B5102又はRAM1103から、取り出し、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み、「無」を示す書込み有無フラグを、エクスポートシンボルインポートステップ5100の呼び出し元のプログラムへ返す。
【0159】
参照する絶対アドレスがキャッシュ装置4400のキャッシュタグ部に存在しない場合、参照する絶対アドレスで示される領域のデータを、ROM−A5101、ROM−B5102又はRAM1103から、取り出す。キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「無効」のキャッシュタグについては、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み、「無」を示す書込み有無フラグを、エクスポートシンボルインポートステップ5100の呼び出し元のプログラムへ返す。
【0160】
全てのエントリについてキャッシュ有効性フラグが「有効」であるなら、エントリを一つランダムに選択し、選択したエントリについて、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み、「無」を示す書込み有無フラグを、エクスポートシンボルインポートステップ5100の呼び出し元のプログラムへ返す。
(データの書込み)
エクスポートシンボルインポートステップ5100は、キャッシュ装置5400のキャッシュタグ部及びキャッシュデータ部にデータを書き込む際には、実施の形態4のエクスポートシンボルインポートステップ4300と同じであるので、説明を省略する。
5.1.2.4 プログラムA5200
プログラムA5200は、図39に示すように、プログラムヘッダA5121、プログラム命令部A1122、エクスポートシンボルテーブルA5210を含んでいる。
【0161】
プログラムA5200は、前記アドレス空間において、絶対アドレス0X010000で示される領域から配置されている。
(1)プログラムヘッダA5121
プログラムヘッダA5121は、図39に示すように、プログラムA5200の先頭から配置され、エクスポートシンボルIDテーブルA5220の先頭位置を示すオフセット5124と、エクスポートシンボルアドレス情報テーブルA5230の先頭位置を示すオフセット5125とを含む。ここで、オフセットとは、プログラムA4120の先頭位置を基準とした場合のアドレスである。
【0162】
この図に示すように、オフセット5124は、「0X001000」であり、「0X001000」は、プログラムA5200内において、エクスポートシンボルIDテーブルA5220の先頭位置を示すアドレスである。また、オフセット5125は、「0X001010」であり、「0X001010」は、プログラムA5200内において、エクスポートシンボルアドレス情報テーブルA5230の先頭位置を示すアドレスである。
(2)プログラム命令部A1122
プログラム命令部A1122は、図3に示すプログラム命令部A1122と同じであるので、説明を省略する。
(3)エクスポートシンボルテーブルA5210
エクスポートシンボルテーブルA5210は、エクスポートシンボルIDテーブルA5220と、エクスポートシンボルアドレス情報テーブルA5230とを含む。
【0163】
エクスポートシンボルテーブルA5210は、前記アドレス空間において、絶対アドレス0X011000で示される領域から配置されている。
(エクスポートシンボルIDテーブルA5220)
エクスポートシンボルIDテーブルA5220は、前記アドレス空間において、絶対アドレス0X011000で示される領域から配置されている。
【0164】
エクスポートシンボルIDテーブルA5220は、シンボルの識別子と、シンボルがコードシンボルであるか、データシンボルであるかを示すコードフラグとの組を記憶している。
具体的には、図39に示すように、エクスポートシンボルIDテーブルA5220は、シンボルA1126の識別子5221「ID−A」とコードフラグ5222「コード」との組と、シンボルB1127の識別子5223「ID−B」とコードフラグ5224「コード」との組と、シンボルC1141の識別子5225「ID−C」とコードフラグ5226「データ」との組と、シンボルD1142の識別子5227「ID−D」とコードフラグ5228「データ」との組とを記憶している。
(エクスポートシンボルアドレス情報テーブルA5230)
エクスポートシンボルアドレス情報テーブルA5230は、前記アドレス空間において、絶対アドレス0X011010で示される領域から配置されている。
【0165】
エクスポートシンボルアドレス情報テーブルA5230は、シンボルの格納されている領域のプログラムA5200内でのアドレスを記憶している。
ここで、プログラムA5200の先頭位置を基準とした場合のアドレスを、オフセットと呼ぶ。
具体的には、図39に示すように、エクスポートシンボルアドレス情報テーブルA5230は、シンボルA1126の格納されている領域のオフセットを示すアドレス5231と、シンボルB1127の格納されている領域のオフセットを示すアドレス5232と、シンボルC1141の格納されている領域のオフセットを示すアドレス5233と、シンボルD1142の格納されている領域のオフセットを示すアドレス5234とを記憶している。
5.1.3 ROM−B5102
ROM−B5102は、読出し専用の半導体メモリから構成される。ROM−B5102が有する記憶領域には、プログラムB5300が記録されている。
5.1.3.1 プログラムB5300
プログラムB5300は、図40に示すように、プログラムヘッダB5131、プログラム命令部B1132、エクスポートシンボルテーブルB5310を含んでいる。
【0166】
プログラムB5300は、前記アドレス空間において、絶対アドレス0X020000で示される領域から配置されている。
(1)プログラムヘッダB5131
プログラムヘッダB5131は、図40に示すように、プログラムB5300の先頭から配置され、エクスポートシンボルIDテーブルB5320の先頭位置を示すオフセット5134と、エクスポートシンボルアドレス情報テーブルB5330の先頭位置を示すオフセット5135とを含む。ここで、オフセットとは、プログラムB5300の先頭位置を基準とした場合のアドレスである。
【0167】
この図に示すように、オフセット5134は、「0X002000」であり、「0X002000」は、プログラムB5300内において、エクスポートシンボルIDテーブルB5320の先頭位置を示すアドレスである。また、オフセット5135は、「0X002010」であり、「0X002010」は、プログラムB5300内において、エクスポートシンボルアドレス情報テーブルB5330の先頭位置を示すアドレスである。
(2)プログラム命令部B1132
プログラム命令部B1132は、図3に示すプログラム命令部B1132と同じであるので、説明を省略する。
(3)エクスポートシンボルテーブルB5310
エクスポートシンボルテーブルB5310は、エクスポートシンボルIDテーブルB5320と、エクスポートシンボルアドレス情報テーブルB5330とを含む。
【0168】
エクスポートシンボルテーブルB5310は、前記アドレス空間において、絶対アドレス0X022000で示される領域から配置されている。
(エクスポートシンボルIDテーブルB5320)
エクスポートシンボルIDテーブルB5320は、前記アドレス空間において、絶対アドレス0X022000で示される領域から配置されている。
【0169】
エクスポートシンボルIDテーブルB5320は、シンボルの識別子と、シンボルがコードシンボルであるか、データシンボルであるかを示すコードフラグとの組を記憶している。
具体的には、図40に示すように、エクスポートシンボルIDテーブルB5320は、シンボルE1136の識別子5321「ID−E」とコードフラグ5322「コード」との組と、シンボルF1137の識別子5323「ID−F」とコードフラグ5324「コード」との組と、シンボルG1151の識別子5325「ID−G」とコードフラグ5326「データ」との組と、シンボルH1152の識別子5327「ID−H」とコードフラグ5328「データ」との組とを記憶している。
(エクスポートシンボルアドレス情報テーブルB5330)
エクスポートシンボルアドレス情報テーブルB5330は、前記アドレス空間において、絶対アドレス0X022010で示される領域から配置されている。
【0170】
エクスポートシンボルアドレス情報テーブルB5330は、シンボルの格納されている領域のプログラムB5300内でのアドレスを記憶している。
ここで、プログラムB4130の先頭位置を基準とした場合のアドレスをオフセットと呼ぶ。
具体的には、図40に示すように、エクスポートシンボルアドレス情報テーブルB5330は、シンボルE1136の格納されている領域のオフセットを示すアドレス5331と、シンボルF1137の格納されている領域のオフセットを示すアドレス5332と、シンボルG1151の格納されている領域のオフセットを示すアドレス5333と、シンボルH1152の格納されている領域のオフセットを示すアドレス5334とを記憶している。
5.1.4 キャッシュ装置5400
キャッシュ装置5400は、図41に示すように、キャッシュタグ部5410と、キャッシュデータ部5450とを含む。
【0171】
キャッシュタグ部5410は、実施の形態4のキャッシュタグ部4410と同じであり、キャッシュデータ部5450は、実施の形態4のキャッシュデータ部4450と同じであるので、説明を省略する。
キャッシュ装置初期化ステップ4200により、キャッシュタグ部5410及びキャッシュデータ部5450が初期化された直後の状態は、キャッシュタグ部4410及びキャッシュデータ部4450と同じであるので、説明を省略する。
【0172】
ROM−A5101、ROM−B5102及びRAM1103上のいくつかのデータが参照され、キャッシュ装置4400に対して、いくつかのデータが書き込まれた後の、キャッシュタグ部5410及びキャッシュデータ部5450の状態を図41に示す。
この図に示すように、0番目のキャッシュタグには、アドレス4401として0X011020が格納され、キャッシュ有効性フラグ4402として「有効」が格納され、書込み有無フラグ4403として「有」が格納されている。また、参照符号4405で示されるエントリ0には、0X110500からなるデータが格納されている。
【0173】
1番目のキャッシュタグには、アドレス4401として0X011000が格納され、キャッシュ有効性フラグ4402として「有効」が格納され、書込み有無フラグ4403として「無」が格納されている。また、参照符号4406で示されるエントリ1には、シンボルAを識別する識別子「ID−A」と、コードであることを示すコードフラグと、シンボルBを識別する識別子「ID−B」と、コードであることを示すコードフラグとからなるデータが格納されている。
【0174】
2番目のキャッシュタグには、アドレス4401として0X011018が格納され、キャッシュ有効性フラグ4402として「有効」が格納され、書込み有無フラグ4403として「無」が格納されている。また、参照符号4407で示されるエントリ2には、0X000200からなるデータが格納されている。
3番目のキャッシュタグには、アドレス4401として0X022010が格納され、キャッシュ有効性フラグ4402として「有効」が格納され、書込み有無フラグ4403として「有」が格納されている。また、参照符号4408で示されるエントリ3には、0X020008からなるデータが格納されている。
【0175】
キャッシュタグ部5410の2番目のキャッシュタグと、参照符号4407で示されるエントリ2とに対して、データの書込みが行われた後の、キャッシュタグ部5411及びキャッシュデータ部5451の状態を図42に示す。
この図に示すように、2番目のキャッシュタグの書込み有無フラグに「有」が書き込まれ、参照符号4407で示されるエントリ2には、0X010200からなるデータが格納されている。
5.1.5 RAM1103
RAM1103は、読出し及び書込みの可能な半導体メモリから構成される。RAM1103が有する記憶領域には、ジャンプテーブル1170、データA1140、データB1150が記憶される。
【0176】
RAM1103、ジャンプテーブル1170、データA1140、データB1150については、実施の形態1と同じであるので、説明を省略する。
前記アドレス空間内での、ジャンプテーブル1170とエクスポートシンボルインポートステップ5100との配置を図43に示す。
この図に示すように、ジャンプテーブル1170内には、ジャンプ命令「JMP 0X002000」が格納されている。ここで、0X002000は、エクスポートシンボルインポートステップ4300が格納されている領域の絶対アドレスである。
5.2 プログラムリンク装置5000の動作
5.2.1 CPU5105の動作
CPU5105の動作については、CPU1105と同様であり、図8に示すフローチャートの通りであるので、説明を省略する。
5.2.2 キャッシュ装置初期化ステップ4200の動作
キャッシュ装置初期化ステップ4200の動作については、実施の形態4のキャッシュ装置初期化ステップ4200の動作と同じであるので、説明を省略する。
5.2.3 エクスポートシンボルインポートステップ5100の動作
エクスポートシンボルインポートステップ5100の動作について、図44〜図45に示すフローチャートを用いて説明する。
【0177】
エクスポートシンボルインポートステップ5100では、プログラムを識別する番号kに0を代入し(S5101)、番号kと全プログラム数とを比較して、番号kが全プログラム数よりも大きいか等しければ(S5102)、処理を終了する。
番号kが全プログラム数よりも小さければ(S5102)、シンボルの番号を示す変数iに0を代入する(ステップS5103)。
【0178】
番号iと全シンボル数とを比較して、変数iが全シンボル数よりも大きいか等しければ(S5104)、番号kに1を加算し(ステップS5107)、ステップS5102へ制御を戻す。
変数iが全シンボル数よりも小さければ(S5104)、検索するシンボルの識別子とエクスポートシンボルIDテーブルのi番目の識別子とが一致しなければ(ステップS5105)、変数iに1を加算し(ステップS4306)、ステップS5104へ制御を戻す。
【0179】
検索するシンボルの識別子とエクスポートシンボルIDテーブルのi番目の識別子とが一致するならば(ステップS5105)、エクスポートシンボルアドレス情報テーブルが格納されているデータに対応するキャッシュタグの書込み有無フラグが「無」である場合(ステップS5111)、エクスポートシンボルIDテーブルのi番目のコードフラグが「コード」であるとき(ステップS5113)、エクスポートシンボルアドレス情報テーブルのi番目のデータと0X010000*kと0X010000とを加算して、その加算値を変数retへ代入し(ステップS5114)、エクスポートシンボルIDテーブルのi番目のコードフラグが「コード」でないとき(ステップS5113)、エクスポートシンボルアドレス情報テーブルのi番目のデータと0X010000*kと0X011000とを加算して、その加算値を変数retへ代入し(ステップS5115)する。次に、変数retをエクスポートシンボルアドレス情報テーブルのi番目のデータに書込み(ステップS5116)、処理を終了して、変数retとともに、エクスポートシンボルインポートステップ5100を呼び出したプログラムに復帰する。
【0180】
エクスポートシンボルアドレス情報テーブルが格納されているデータに対応するキャッシュタグの書込み有無フラグが「無」でない場合(ステップS5111)、エクスポートシンボルアドレス情報テーブルのi番目のデータを変数retに代入し(ステップS5112)、処理を終了して、変数retとともに、エクスポートシンボルインポートステップ5100を呼び出したプログラムに復帰する。
【0181】
次に、エクスポートシンボルインポートステップ5100が、ROM−A5101、ROM−B5102及びRAM1103の上に記録されている情報を参照する際の動作について、図46〜図47に示すフローチャートを用いて説明する。
エクスポートシンボルインポートステップ5100は、ROM−A5101、ROM−B5102及びRAM1103の上に記録されている情報を参照する際に、参照する絶対アドレスをキャッシュ装置5400のキャッシュタグ部から探し、参照する絶対アドレスがキャッシュ装置5400のキャッシュタグ部に存在する場合(ステップS4401)、次に、キャッシュ有効性フラグを見て、キャッシュ有効性フラグが「有効」であれば(ステップS4411)、対応するエントリの内容をキャッシュデータ部から取り出し(ステップS4412)、復帰する。
【0182】
キャッシュ有効性フラグが「無効」であれば(ステップS4411)、参照する絶対アドレスで示される領域のデータを、ROM−A5101、ROM−B5102又はRAM1103から、取り出し(ステップS4413)、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み(ステップS4414)、「無」を示す書込み有無フラグを返して(ステップS5403)、復帰する。
【0183】
参照する絶対アドレスがキャッシュ装置4400のキャッシュタグ部に存在しない場合(ステップS4401)、参照する絶対アドレスで示される領域のデータを、ROM−A5101、ROM−B5102又はRAM1103から、取り出す(ステップS4402)。キャッシュ有効性フラグが「無効」のキャッシュタグについては(ステップS4403)、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み(ステップS4406)、「無」を示す書込み有無フラグを返して(ステップS5401)、復帰する。
【0184】
全てのエントリについてキャッシュ有効性フラグが「有効」であるなら(ステップS4403)、エントリを一つランダムに選択し(ステップS4404)、選択したエントリについて、キャッシュタグにアドレスとして参照する絶対アドレスと、キャッシュ有効性フラグとして「有効」と、書込み有無フラグとして「有」とを書き込み、前記取り出したデータをキャッシュデータ部に書き込み(ステップS4405)、「無」を示す書込み有無フラグを返して(ステップS5402)、復帰する。
【0185】
次に、エクスポートシンボルインポートステップ5100が、ROM−A5101、ROM−B5102及びRAM1103の上に記録されている情報を更新する際の動作については、図37に示す実施の形態4のエクスポートシンボルインポートステップ4300が、ROM−A5101、ROM−B5102及びRAM1103の上に記録されている情報を更新する際の動作と同じであるので、説明を省略する。
5.3 まとめ
以上に説明したように、本実施の形態によれば、各プログラムと各データとがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込むので、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となる。
【0186】
これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。
また、実施の形態2、3のように、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、2度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができる。
【0187】
さらに、エクスポートシンボルテーブルに格納されているアドレス情報がオフセットであるかアドレスであるかをキャッシュタグの書き込み有無フラグによって示しているので、エクスポートシンボルテーブルを簡素化できると共にキャッシュ装置を備えない実施の形態1のプログラムリンク装置と同じエクスポートシンボルテーブルを利用することができる。このため、キャッシュ装置を備えないシステムとキャッシュ装置を備えるシステムに対して置き換えや追加を行うプログラムを別々に用意する必要が無い。
6.その他の実施の変形例
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は上記実施の形態に限定されないのはもちろんである。すなわち、以下のような場合も本発明に含まれる。
(1)本実施の形態では、先頭のプログラムが所定の絶対アドレスに格納されており、次のプログラムが所定の間隔をおいて格納されているとしている。また、先頭のデータが所定の絶対アドレスに格納されており、次のデータが所定の一定間隔をおいて格納されているとしているが、このような配置方法には、限定されない。一定間隔ではなく、複数のプログラムが予め決められた間隔をおいて、格納されているとしてもよい。また、データについても同様である。
【0188】
また、プログラム及びデータが格納されている領域の先頭アドレスを記憶するテーブルを有しているとしてもよい。この場合に、エクスポートシンボルインポートステップ1160は、前記テーブルを用いて、オフセットを絶対に変換するとしてもよい。
また、各プログラムヘッダにプログラムサイズとデータサイズの情報を追加するようにしてもよい。これにより、隣接して各プログラムを配置してもプログラムサイズ情報を用いて隣り合わせたプログラムのプログラムヘッダを見つけ出す事ができるので、各プログラム同士もしくは各データ同士を隣接して配置する事も可能である。言い換えれば、プログラムヘッダにリンクリスト構造を導入して、各プログラムと各データの配置を柔軟にする事ができる。
(2)本実施の形態で用いたROMは2個に限定されるものではなく、いくつでも良い。本実施の形態では、プログラムAとプログラムBとがそれぞれ異なる2つのROMに格納されているとしているが、3つ以上のプログラムが、それぞれことなる3つ以上のROMに格納されているとしてもよい。この場合には、先頭のプログラムが絶対アドレス0X010000により指定される領域に格納され、2番目のプログラムが0X020000により指定される領域に格納され、3番目のプログラムが0X030000により指定される領域に格納される。以降のプログラムについても同様である。また、この場合には、先頭のデータが絶対アドレス0X110000により指定される領域に格納され、2番目のデータが0X120000により指定される領域に格納され、3番目のデータが0X130000により指定される領域に格納される。以降のデータについても同様である。
(3)プログラムヘッダを見つけるために、あらかじめ定められた値からなるマジックナンバーをプログラムヘッダに付加しておき、このマジックナンバーを用いて、プログラムの有無とプログラムの位置を検出できるようにしてもよい。
(4)本実施の形態においては、プログラムの記録された読み出し専用の半導体メモリ(ROM)を使用するとしているが、フラッシュメモリ等の書き換え可能な記憶装置を用いるとしてもよい。
(5)別の実施の形態の一つは、上記手順により示されるプログラムリンク方法をコンピュータに実行させるプログラムリンクプログラムを含むコンピュータ読み取り可能な記録媒体である。さらに、前記プログラムリンクプログラムを通信回線を介して伝送するとしてもよい。
【0189】
【発明の効果】
以上説明したように、本発明は、第1及び第2プログラムブロックをそれぞれ記憶している読出し専用の第1及び第2半導体メモリを有するプログラムリンク装置であって、前記第1プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第2半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行へのアクセスを指示する実行命令が記憶され、前記第2プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成され、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成手段と、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行手段とを備える。
【0190】
この構成によると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、各シンボルが呼び出される都度、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換することにより、各シンボルの絶対アドレスを算出し、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。
【0191】
ここで、前記プログラムリンク装置は、さらに、参照テーブルと、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込手段と、前記第1プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成手段、参照テーブル書込手段に対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御手段とを備え、前記実行手段は、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0192】
この構成によると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、全シンボルについて、あらかじめ、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換し、変換された絶対アドレスをシンボルの識別子とともに記憶し、シンボルが呼び出される都度、前記記憶されている絶対アドレスを読み出し、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、エクスポートシンボルインポートステップが呼び出される都度、シンボルのオフセットから絶対アドレスへの変換を行う必要が無いので、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【0193】
ここで、前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルと、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断手段と、前記判断手段により、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録手段と、前記判断手段により、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出手段とを含み、前記実行手段は、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0194】
この構成によると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むエクスポート参照キャッシュを有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをエクスポート参照キャッシュに書き込み、、以前に参照されたシンボルを再度参照する際に、エクスポート参照キャッシュに記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、すべてのエクスポートシンボルとその絶対アドレスの対をメモリ上に置かないので、必要なメモリの容量を小さく抑えつつ、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【0195】
ここで、前記第2プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成手段は、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出手段と、前記アドレス抽出手段により、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換手段と、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0196】
この構成によると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込み、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、2度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【0197】
ここで、前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断手段と、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込手段と、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0198】
この構成によると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込み、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。また、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、2度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。さらに、エクスポートシンボルテーブルに格納されているアドレス情報がオフセットであるかアドレスであるかをキャッシュタグの書き込み有無フラグによって示しているので、エクスポートシンボルテーブルを簡素化できると共にキャッシュ装置を備えないプログラムリンク装置と同じエクスポートシンボルテーブルを利用することができる。このため、キャッシュ装置を備えないシステムとキャッシュ装置を備えるシステムに対して置き換えや追加を行うプログラムを別々に用意する必要が無いという効果がある。
【0199】
また、本発明は、第1及び第2プログラムブロックをそれぞれ記憶している読出し専用の第1及び第2半導体メモリを有し、前記第1プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第2半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行を指示する実行命令が記憶され、前記第2プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成されるプログラムリンク装置で用いられるプログラムリンク方法であって、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成ステップと、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行ステップとを含むように構成してもよい。
【0200】
この方法を用いると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、各シンボルが呼び出される都度、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換することにより、各シンボルの絶対アドレスを算出し、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。
【0201】
ここで、前記プログラムリンク装置は、さらに、参照テーブルを備え、前記プログラムリンク方法は、さらに、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込ステップと、前記第1プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成ステップ、参照テーブル書込ステップに対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御ステップとを備え、前記実行ステップは、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0202】
この方法を用いると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、全シンボルについて、あらかじめ、記憶されたオフセットを所定の基準を用いて絶対アドレスに変換し、変換された絶対アドレスをシンボルの識別子とともに記憶し、シンボルが呼び出される都度、前記記憶されている絶対アドレスを読み出し、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、エクスポートシンボルインポートステップが呼び出される都度、シンボルのオフセットから絶対アドレスへの変換を行う必要が無いので、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【0203】
ここで、前記プログラムリンク装置は、さらに、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルを備え、前記絶対アドレス生成ステップは、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断ステップと、前記判断ステップにより、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録ステップと、前記判断ステップにより、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出ステップとを含み、前記実行ステップは、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0204】
この方法を用いると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むエクスポート参照キャッシュを有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをエクスポート参照キャッシュに書き込み、、以前に参照されたシンボルを再度参照する際に、エクスポート参照キャッシュに記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、すべてのエクスポートシンボルとその絶対アドレスの対をメモリ上に置かないので、必要なメモリの容量を小さく抑えつつ、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【0205】
ここで、前記プログラムリンク装置は、さらに、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルを備え、前記第2プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成ステップは、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出ステップと、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出ステップと、前記アドレス抽出ステップにより、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換ステップと、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込ステップとを含み、前記実行ステップは、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0206】
この方法を用いると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込み、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。また、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、2度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。
【0207】
ここで、前記プログラムリンク装置は、さらに、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルを備え、前記絶対アドレス生成ステップは、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出ステップと、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断ステップと、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込ステップと、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出ステップとを含み、前記実行ステップは、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うように構成してもよい。
【0208】
この方法を用いると、各プログラムがROMの所定の位置に格納されており、各プログラム内にシンボルのオフセットを記憶し、所定数のエントリを含むキャッシュ装置を有し、シンボルが呼び出される都度、所定の基準を用いて、前記シンボルの格納されている絶対アドレスを生成し、前記シンボルの識別子と生成された絶対アドレスとをキャッシュ装置に書き込み、以前に参照されたシンボルを再度参照する際に、キャッシュ装置に記憶されている絶対アドレスを利用して、各プログラム間でシンボルのリンクが可能となるので、これにより、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになる。また、エクスポートシンボルとその絶対アドレスの対を全くメモリ上に置く必要が無いにもかかわらず、2度目以降に同じエクスポートシンボルを参照した場合に、以前の参照時に変換したエクスポートシンボルの絶対アドレスがキャッシュに残っている可能性が有り、エクスポートシンボルインポートステップの動作を高速化する事ができるという効果がある。さらに、エクスポートシンボルテーブルに格納されているアドレス情報がオフセットであるかアドレスであるかをキャッシュタグの書き込み有無フラグによって示しているので、エクスポートシンボルテーブルを簡素化できると共にキャッシュ装置を備えないプログラムリンク装置と同じエクスポートシンボルテーブルを利用することができる。このため、キャッシュ装置を備えないシステムとキャッシュ装置を備えるシステムに対して置き換えや追加を行うプログラムを別々に用意する必要が無いという効果がある。
【0209】
また、本発明は、第1プログラムブロックが記録されているコンピュータ読み取り可能な記録媒体であって、命令を識別するシンボル毎に、当該シンボルと前記第1プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルを含む前記第1プログラムブロックを記録している。
【0210】
この媒体に記録されているプログラムブロックを用いると、各プログラムは、その内部に絶対アドレスを格納する必要がなく、ROMに記録されたプログラムが組み込みマイコン制御システムのメモリマップに依存せず、異なるメモリマップのシステムにおいてもプログラムを共用できるようになるという効果がある。
【図面の簡単な説明】
【図1】本発明の実施の形態1のプログラムリンク装置1000の構成を示すブロック図である。
【図2】プログラムリンク装置1000のメインステップの動作手順を示すフローチャートである。
【図3】プログラムリンク装置1000のプログラムA及びデータAの構成を示す。
【図4】プログラムリンク装置1000のプログラムAの一部のプログラムブロックを示す。
【図5】プログラムリンク装置1000のプログラムB及びデータBの構成を示す。
【図6】プログラムリンク装置1000のプログラムBの一部のプログラムブロックを示す。
【図7】プログラムリンク装置1000のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図8】プログラムリンク装置1000のCPUの動作を示すフローチャートである。
【図9】プログラムリンク装置1000のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図10】本発明の実施の形態2のプログラムリンク装置2000の構成を示すブロック図である。
【図11】プログラムリンク装置2000のメインステップの動作手順を示すフローチャートである。
【図12】プログラムリンク装置2000のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図13】プログラムリンク装置2000のエクスポートシンボル参照テーブルの構成を示す一例である。
【図14】プログラムリンク装置2000のエクスポートシンボル登録ステップの動作を示すフローチャートである。
【図15】プログラムリンク装置2000のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図16】本発明の実施の形態3のプログラムリンク装置3000の構成を示すブロック図である。
【図17】プログラムリンク装置3000のメインステップの動作手順を示すフローチャートである。
【図18】プログラムリンク装置3000のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図19】プログラムリンク装置3000のエクスポートシンボル参照キャッシュの構成の一例を示す。
【図20】プログラムリンク装置3000のエクスポートシンボル参照キャッシュの構成の一例を示す。
【図21】プログラムリンク装置3000のエクスポートシンボル参照キャッシュの構成の一例を示す。
【図22】プログラムリンク装置3000のエクスポートシンボル参照キャッシュ初期化ステップの動作を示すフローチャートである。
【図23】プログラムリンク装置3000のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図24】本発明の実施の形態4のプログラムリンク装置4000の構成を示すブロック図である。
【図25】プログラムリンク装置4000のメインステップの動作手順を示すフローチャートである。
【図26】プログラムリンク装置4000のプログラムA及びデータAの構成を示す。
【図27】プログラムリンク装置4000のプログラムB及びデータBの構成を示す。
【図28】プログラムリンク装置4000のキャッシュ装置の内部状態を示す。
【図29】プログラムリンク装置4000のキャッシュ装置の内部状態を示す。
【図30】プログラムリンク装置4000のキャッシュ装置の内部状態を示す。
【図31】プログラムリンク装置4000のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図32】プログラムリンク装置4000のキャッシュ初期化ステップの動作を示すフローチャートである。
【図33】プログラムリンク装置4000のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図34】プログラムリンク装置4000のエクスポートシンボルインポートステップの動作を示すフローチャートである。図33からの続きを示す。
【図35】プログラムリンク装置4000のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図36】プログラムリンク装置4000のエクスポートシンボルインポートステップの動作を示すフローチャートである。図35からの続きを示す。
【図37】プログラムリンク装置4000のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図38】本発明の実施の形態1のプログラムリンク装置5000の構成を示すブロック図である。
【図39】プログラムリンク装置5000のプログラムA及びデータAの構成を示す。
【図40】プログラムリンク装置5000のプログラムB及びデータBの構成を示す。
【図41】プログラムリンク装置5000のキャッシュ装置の内部状態を示す。
【図42】プログラムリンク装置5000のキャッシュ装置の内部状態を示す。
【図43】プログラムリンク装置5000のジャンプテーブル及びエクスポートシンボルインポートステップの配置を示す。
【図44】プログラムリンク装置5000のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図45】プログラムリンク装置5000のエクスポートシンボルインポートステップの動作を示すフローチャートである。図44からの続きを示す。
【図46】プログラムリンク装置5000のエクスポートシンボルインポートステップの動作を示すフローチャートである。
【図47】プログラムリンク装置5000のエクスポートシンボルインポートステップの動作を示すフローチャートである。図46からの続きを示す。
【図48】従来のプログラムリンク装置の構成を示すブロック図である。
【図49】従来のプログラムリンク装置のプログラムA及びデータAの構成を示す。
【図50】従来のプログラムリンク装置のプログラムB及びデータBの構成を示す。
【図51】従来のプログラムリンク装置のメインステップの動作手順を示すフローチャートである。
【図52】従来のプログラムリンク装置のプログラムAの一部のプログラムブロックを示す。
【図53】従来のプログラムリンク装置のプログラムBの一部のプログラムブロックを示す。
【符号の説明】
101 ROM−A
102 ROM−B
103 RAM
104 CPUバス
105 CPU
110 メインステップ
120 プログラムA
121 シンボルテーブルA
122 プログラム命令部A
130 プログラムB
131 シンボルテーブルB
132 プログラム命令部B
140 データA
150 データB
1000 プログラムリンク装置
1101 ROM−A
1102 ROM−B
1103 RAM
1104 CPUバス
1105 CPU
1110 メインステップ
1120 プログラムA
1121 プログラムヘッダA
1122 プログラム命令部A
1123 エクスポートシンボルオフセットテーブルA
1128 コードエクスポートシンボルオフセットテーブルA
1129 データエクスポートシンボルオフセットテーブルA
1130 プログラムB
1131 プログラムヘッダB
1132 プログラム命令部B
1133 エクスポートシンボルオフセットテーブルB
1138 コードエクスポートシンボルオフセットテーブルB
1139 データエクスポートシンボルオフセットテーブルB
1140 データA
1150 データB
1160 エクスポートシンボルインポートステップ
1170 ジャンプテーブル
2000 プログラムリンク装置
2101 ROM−A
2103 RAM
2104 CPUバス
2105 CPU
2110 メインステップ
2120 エクスポートシンボル登録ステップ
2130 エクスポートシンボルインポートステップ
2140 エクスポートシンボル参照テーブル
3000 プログラムリンク装置
3101 ROM−A
3103 RAM
3104 CPUバス
3105 CPU
3110 メインステップ
3120 エクスポートシンボル参照キャッシュ初期化ステップ
3130 エクスポートシンボルインポートステップ
3140 エクスポートシンボル参照キャッシュ
4000 プログラムリンク装置
4100 エクスポートシンボルIDテーブルA
4101 ROM−A
4110 エクスポートシンボルアドレス情報テーブルA
4120 プログラムA
4121 プログラムヘッダA
4123 エクスポートシンボルテーブルA
4130 プログラムB
4131 プログラムヘッダB
4133 エクスポートシンボルテーブルB
4140 エクスポートシンボルIDテーブルB
4150 エクスポートシンボルアドレス情報テーブルB
4190 メインステップ
4192 ROM−B
4194 CPUバス
4195 CPU
4200 キャッシュ装置初期化ステップ
4300 エクスポートシンボルインポートステップ
4400 キャッシュ装置
4410、4411、4412 キャッシュタグ部
4450、4451、4452 キャッシュデータ部
5000 プログラムリンク装置
5100 エクスポートシンボルインポートステップ
5101 ROM−A
5102 ROM−B
5104 CPUバス
5105 CPU
5121 プログラムヘッダA
5131 プログラムヘッダB
5200 プログラムA
5210 エクスポートシンボルテーブルA
5220 エクスポートシンボルIDテーブルA
5230 エクスポートシンボルアドレス情報テーブルA
5300 プログラムB
5310 エクスポートシンボルテーブルB
5320 エクスポートシンボルIDテーブルB
5330 エクスポートシンボルアドレス情報テーブルB
5400 キャッシュ装置
5410、5411 キャッシュタグ部
5450、5451 キャッシュデータ部

Claims (10)

  1. 第1及び第2プログラムブロックをそれぞれ記憶している読出し専用の第1及び第2半導体メモリを有するプログラムリンク装置であって、前記第1プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第2半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行を指示する実行命令が記憶され、前記第2プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成され、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成手段と、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行手段とを備えることを特徴とするプログラムリンク装置。
  2. 前記プログラムリンク装置は、さらに、参照テーブルと、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込手段と、前記第1プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成手段、参照テーブル書込手段に対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御手段とを備え、前記実行手段は、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項1記載のプログラムリンク装置。
  3. 前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルと、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断手段と、前記判断手段により、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録手段と、前記判断手段により、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出手段とを含み、前記実行手段は、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項1記載のプログラムリンク装置。
  4. 前記第2プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成手段は、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出手段と、前記アドレス抽出手段により、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換手段と、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項1記載のプログラムリンク装置。
  5. 前記絶対アドレス生成手段は、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルと、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出手段と、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断手段と、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込手段と、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出手段とを含み、前記実行手段は、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項1記載のプログラムリンク装置。
  6. 第1及び第2プログラムブロックをそれぞれ記憶している読出し専用の第1及び第2半導体メモリを有し、前記第1プログラムブロックには、命令を識別するシンボルを含み、前記シンボルにより識別される命令が記憶されている前記第2半導体メモリ上の領域の絶対アドレスの生成を指示し、前記シンボルにより識別される命令の実行を指示する実行命令が記憶され、前記第2プログラムブロックは、命令とシンボルとが記憶されたプログラム部と、当該シンボル毎に、シンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含むシンボルオフセットテーブルとから構成されるプログラムリンク装置で用いられるプログラムリンク方法であって、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成する絶対アドレス生成ステップと、前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行う実行ステップとを含むことを特徴とするプログラムリンク方法。
  7. 前記プログラムリンク装置は、さらに、参照テーブルを備え、前記プログラムリンク方法は、さらに、前記抽出されたシンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む参照テーブル書込ステップと、前記第1プログラムブロックからシンボルの抽出が完了するまで、絶対アドレス生成ステップ、参照テーブル書込ステップに対して、それぞれオフセットアドレスの抽出及び絶対アドレスの生成と、参照テーブルへの書込みとを繰り返すように制御する繰返制御ステップとを備え、前記実行ステップは、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルに対応する絶対アドレスを前記参照テーブルから抽出し、抽出した絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項6記載のプログラムリンク方法。
  8. 前記プログラムリンク装置は、さらに、所定数の組のシンボルと絶対アドレスとを登録するための領域を備える参照テーブルを備え、前記絶対アドレス生成ステップは、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出し、抽出したシンボルが前記参照テーブルに存在するか否かを判断する判断ステップと、前記判断ステップにより、抽出したシンボルが存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、前記シンボルと前記生成された絶対アドレスとの組を前記参照テーブルに書き込む変換登録ステップと、前記判断ステップにより、抽出したシンボルが存在すると判断された場合に、前記参照テーブルから、前記抽出したシンボルに対応する絶対アドレスを読み出す読出ステップとを含み、前記実行ステップは、前記読み出された絶対アドレス又は前記生成された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項6記載のプログラムリンク方法。
  9. 前記プログラムリンク装置は、さらに、所定数の組のオフセットアドレス又は絶対アドレスであることを示すアドレスフラグとシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルを備え、前記第2プログラムブロックを構成するシンボルオフセットテーブルは、当該シンボル毎に、オフセットアドレスであることを示すオフセットフラグとシンボルと前記第2プログラムブロック内でのシンボルの相対位置を示すオフセットアドレスとの組を含み、前記絶対アドレス生成ステップは、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出ステップと、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断し、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットフラグとオフセットアドレスとを抽出し、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応するアドレスフラグと絶対アドレスとを抽出するアドレス抽出ステップと、前記アドレス抽出ステップにより、オフセットフラグが抽出された場合に、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成するシンボル変換ステップと、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込むキャッシュテーブル書込ステップとを含み、前記実行ステップは、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項6記載のプログラムリンク方法。
  10. 前記プログラムリンク装置は、さらに、所定数の組のシンボルと絶対アドレス又はオフセットアドレスとを登録するための領域を備えるキャッシュテーブルを備え、前記絶対アドレス生成ステップは、前記第1プログラムブロックから、実行命令を読み出してシンボルを抽出するシンボル抽出ステップと、抽出されたシンボルが前記キャッシュテーブルに存在するか否かを判断する判断ステップと、抽出されたシンボルが前記キャッシュテーブルに存在しないと判断された場合に、前記シンボルオフセットテーブルから前記抽出されたシンボルに対応するオフセットアドレスとを抽出し、所定の基準を用いて、抽出されたオフセットアドレスを変換して絶対アドレスを生成し、絶対アドレスであることを示す絶対アドレスフラグと前記抽出されたシンボルと前記生成された絶対アドレスとを前記キャッシュテーブルへ書き込む生成書込ステップと、抽出されたシンボルが前記キャッシュテーブルに存在すると判断された場合に、前記キャッシュテーブルから前記抽出されたシンボルに対応する絶対アドレスを抽出する絶対アドレス抽出ステップとを含み、前記実行ステップは、前記生成された絶対アドレス又は前記抽出された絶対アドレスにより特定される領域に記録されている命令の実行を行うことを特徴とする請求項6記載のプログラムリンク方法。
JP30299898A 1998-10-23 1998-10-23 プログラムリンク装置及び方法 Expired - Fee Related JP3837244B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP30299898A JP3837244B2 (ja) 1998-10-23 1998-10-23 プログラムリンク装置及び方法
US09/426,570 US6457174B1 (en) 1998-10-23 1999-10-22 Program linking apparatus for linking and executing one program and another program using a microprocessor and a program linking method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30299898A JP3837244B2 (ja) 1998-10-23 1998-10-23 プログラムリンク装置及び方法

Publications (2)

Publication Number Publication Date
JP2000132393A JP2000132393A (ja) 2000-05-12
JP3837244B2 true JP3837244B2 (ja) 2006-10-25

Family

ID=17915715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30299898A Expired - Fee Related JP3837244B2 (ja) 1998-10-23 1998-10-23 プログラムリンク装置及び方法

Country Status (2)

Country Link
US (1) US6457174B1 (ja)
JP (1) JP3837244B2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7184793B2 (en) * 2001-07-26 2007-02-27 Kyocera Wireless Corp. System and method for over the air area code update
US9554268B2 (en) * 2001-07-26 2017-01-24 Kyocera Corporation System and method for updating persistent data in a wireless communications device
US7159214B2 (en) 2001-07-26 2007-01-02 Kyocera Wireless Corp. System and method for compacting field upgradeable wireless communication device software code sections
US7184759B2 (en) * 2001-07-26 2007-02-27 Kyocera Wireless Corp. Modular software components for wireless communication devices
US7027806B2 (en) * 2001-07-26 2006-04-11 Kyocera Wireless, Corp. System and method for field downloading a wireless communications device software code section
US7197302B2 (en) * 2001-07-26 2007-03-27 Kyocera Wireless Corp. System and method for interchangeable modular hardware components for wireless communication devices
US7386846B2 (en) * 2001-07-26 2008-06-10 Kyocera Wireless Corp. System and method for the management of wireless communications device system software downloads in the field
US7328007B2 (en) * 2001-07-26 2008-02-05 Kyocera Wireless Corp. System and method for organizing wireless communication device system software
US7200389B2 (en) * 2001-07-26 2007-04-03 Kyocera Wireless Corp. Dynamic interface software for wireless communication devices
US7143407B2 (en) * 2001-07-26 2006-11-28 Kyocera Wireless Corp. System and method for executing wireless communications device dynamic instruction sets
US6961537B2 (en) * 2001-08-10 2005-11-01 Kyocera Wireless Corp. System and method for peer-to-peer handset communication
US7254386B2 (en) * 2001-08-10 2007-08-07 Kyocera Wireless Corp. System and method for improved security in handset reprovisioning and reprogramming
US7117494B2 (en) * 2001-08-10 2006-10-03 Kyocera Wireless Corp. System and method for bi-directional communication and execution of dynamic instruction sets
US7024663B2 (en) 2002-07-10 2006-04-04 Micron Technology, Inc. Method and system for generating object code to facilitate predictive memory retrieval
US6954836B2 (en) * 2002-07-11 2005-10-11 Micron Technology, Inc. System and method for processor with predictive memory retrieval assist
US7480683B2 (en) * 2004-10-01 2009-01-20 Webroot Software, Inc. System and method for heuristic analysis to identify pestware
US7571476B2 (en) * 2005-04-14 2009-08-04 Webroot Software, Inc. System and method for scanning memory for pestware
US7591016B2 (en) * 2005-04-14 2009-09-15 Webroot Software, Inc. System and method for scanning memory for pestware offset signatures
US7349931B2 (en) * 2005-04-14 2008-03-25 Webroot Software, Inc. System and method for scanning obfuscated files for pestware
US8190868B2 (en) 2006-08-07 2012-05-29 Webroot Inc. Malware management through kernel detection
US8806439B1 (en) * 2007-04-30 2014-08-12 AT & T Intellectual Property II, LP System and method for program stack security
JP5251974B2 (ja) * 2008-04-11 2013-07-31 富士通株式会社 管理装置、管理方法及びプログラム
WO2010010597A1 (ja) * 2008-07-23 2010-01-28 富士通株式会社 静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置、オブジェクトの結合方法およびそのプログラム
US8023345B2 (en) * 2009-02-24 2011-09-20 International Business Machines Corporation Iteratively writing contents to memory locations using a statistical model
US8166368B2 (en) * 2009-02-24 2012-04-24 International Business Machines Corporation Writing a special symbol to a memory to indicate the absence of a data signal
US11489857B2 (en) 2009-04-21 2022-11-01 Webroot Inc. System and method for developing a risk profile for an internet resource
US8386739B2 (en) * 2009-09-28 2013-02-26 International Business Machines Corporation Writing to memory using shared address buses
US8230276B2 (en) * 2009-09-28 2012-07-24 International Business Machines Corporation Writing to memory using adaptive write techniques
US8463985B2 (en) 2010-03-31 2013-06-11 International Business Machines Corporation Constrained coding to reduce floating gate coupling in non-volatile memories
US8756591B2 (en) 2011-10-03 2014-06-17 International Business Machines Corporation Generating compiled code that indicates register liveness
US8612959B2 (en) * 2011-10-03 2013-12-17 International Business Machines Corporation Linking code for an enhanced application binary interface (ABI) with decode time instruction optimization
US8615745B2 (en) 2011-10-03 2013-12-24 International Business Machines Corporation Compiling code for an enhanced application binary interface (ABI) with decode time instruction optimization
US10957410B1 (en) * 2018-03-02 2021-03-23 Crossbar, Inc. Methods and apparatus for facilitated program and erase of two-terminal memory devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CH669289A5 (de) * 1982-12-20 1989-02-28 Inventio Ag Mittels digitalrechner betriebene antriebsregelungseinrichtung.
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
GB2242293A (en) 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
US5297291A (en) 1991-03-07 1994-03-22 Digital Equipment Corporation System for linking program units by binding symbol vector index in the symbol table into calling image to obtain current value of the target image
US5410703A (en) 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
US5375241A (en) 1992-12-21 1994-12-20 Microsoft Corporation Method and system for dynamic-link library
US5369766A (en) 1993-03-25 1994-11-29 Taligent, Inc. Object-oriented loader system with support for different load formats
US5615400A (en) 1993-06-30 1997-03-25 Apple Computer, Inc. System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers
US5625808A (en) * 1995-03-31 1997-04-29 International Business Machines Corporation Read only store as part of cache store for storing frequently used millicode instructions
US5812848A (en) 1995-08-23 1998-09-22 Symantec Corporation Subclassing system for computer that operates with portable-executable (PE) modules
US6327704B1 (en) * 1998-08-06 2001-12-04 Hewlett-Packard Company System, method, and product for multi-branch backpatching in a dynamic translator

Also Published As

Publication number Publication date
US6457174B1 (en) 2002-09-24
JP2000132393A (ja) 2000-05-12

Similar Documents

Publication Publication Date Title
JP3837244B2 (ja) プログラムリンク装置及び方法
KR960029984A (ko) 반도체 디스크 장치
KR960032163A (ko) 반도체 디스크 장치
JPH04320553A (ja) アドレス変換機構
TWI273431B (en) Apparatus for the plurality of hosts to share a collection of memory sectors, and method and program storage device for managing memory sectors used by a host
CN109684335B (zh) 基于键值对的数据结构实现方法、装置、设备和存储介质
CN111279324A (zh) 用于定位元数据的方法
US5440708A (en) Microprocessor and storage management system having said microprocessor
KR100321107B1 (ko) 데이타 프로세싱 시스템 내의 캐쉬 메모리를 억세싱하기 위한 방법 및 시스템
EP0175398A2 (en) Data processing system comprising a memory access controller which is provided for combining descriptor bits of different descriptors associated with virtual addresses
JP2004530962A (ja) キャッシュメモリおよびアドレス指定方法
US7181590B2 (en) Method for page sharing in a processor with multiple threads and pre-validated caches
JPS5818708B2 (ja) 共用アクセス多重プログラム型デ−タ処理システムにおいて情報を記憶しアクセスするための方法及び装置
JP2988442B2 (ja) 移動通信システムのホームロケーションレジスタと加入者データ管理方法
JPH0525359B2 (ja)
JP2000284996A (ja) メモリ管理装置及びメモリ管理方法
JP2001337909A (ja) Pciブリッジ
JPS6358556A (ja) フアイルシステム
JPH02285440A (ja) プリフェッチ制御方式
JP2000215090A (ja) プログラム管理装置
JPS6243746A (ja) タグ付デ−タ制御方式
JPH037980B2 (ja)
JPH0251755A (ja) キャッシュ・メモリーアクセス用仮想/実アドレス変換装置
JPH0670351A (ja) 加入者契約情報管理方式
JPH02114346A (ja) Tlbエントリ制御方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060613

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060626

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060725

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060731

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090804

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100804

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees