JP2002524792A - プロセッサのワークメモリに後ロードされたプログラムモジュールをチップカード上でリンクする方法 - Google Patents
プロセッサのワークメモリに後ロードされたプログラムモジュールをチップカード上でリンクする方法Info
- Publication number
- JP2002524792A JP2002524792A JP2000569311A JP2000569311A JP2002524792A JP 2002524792 A JP2002524792 A JP 2002524792A JP 2000569311 A JP2000569311 A JP 2000569311A JP 2000569311 A JP2000569311 A JP 2000569311A JP 2002524792 A JP2002524792 A JP 2002524792A
- Authority
- JP
- Japan
- Prior art keywords
- block
- header
- program
- object code
- work memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000012937 correction Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 102100033029 Carbonic anhydrase-related protein 11 Human genes 0.000 description 1
- 101000867841 Homo sapiens Carbonic anhydrase-related protein 11 Proteins 0.000 description 1
- 101001075218 Homo sapiens Gastrokine-1 Proteins 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
チップカードに後ロードされたプログラムモジュールを、同様に後ロードされた目録にリンクする方法であって、当該方法を2つの部分に分割し、第1の部分はプログラムモジュールのコンパイル後の任意の時点で実行することができ、ダイナミックリファレンスの解決された第2の部分だけをプログラムモジュールのロード後にチップカード上で実行する。
Description
【0001】 本発明は、例えばチップカード上のプロセッサのワークメモリに後ロードされ
たプログラムモジュールをリンクする方法に関する。本発明は以下のような問題
を提起する。 将来のマルチアプリケーションチップカードでは、スタティックに前ロードさ
れたオペレーティングシステムおよび標準目録の他に、個別のプログラムモジュ
ールがユーザにより後ロードできなければならない。このことはこれまで次の理
由から不可能であった:各プログラムはアドレスに基づいており、そのアドレス
位置でプログラムが処理される。いわゆる「リンカ」がこのアドレス割り当てを
設定する。後ロードされるプログラムにとって、どのアドレスがチップカードで
すでに占有されているかはまったく未知であるから、後ロードされるプログラム
を任意のアドレスで実行させることのできる手段を講じなければならない。すな
わち後ロードされるプログラムはチップカード上でリロケータブルでなければな
らない。後ロードされるモジュールが全体で、チップカード上で使用可能な物理
アドレス領域を上回ることも予想される。従ってモジュールに固定的に設定され
た物理アドレス領域を割り当てることはできない。従ってカード上のオペレーテ
ィングシステムは、カードへの挿入時にモジュールに動的に空きメモリ領域を割
り当てることができなければならない。このために後ロードされるモジュールは
チップカードに、どの目録にこれがアクセスするかを通知しなければならない。
モジュールに対して、相応の目録へのアクセスが許容されることが検証された後
、これにリンクしなければならない。すなわち相応の論理アドレスをアクセスの
ために設けなければならない。論理アドレスはカードのオペレーティングシステ
ムにより管理され、一義的に物理アドレスに配属される。全ての目録が固定のア
ドレス領域にあれば、新たなモジュールをスタティックに前もってリンクし、チ
ップカードに変更なしで引き渡すことができる。しかりとりわけ目録がダイナミ
ックに割り当てられたアドレス領域上にある場合には、新たなモジュールはこの
目録にダイナミックにリンクしなければならない。すなわち新たなモジュールに
対して目録の実際に有効な論理アドレスを設けなければならない。従って新たな
モジュールはプログラミングの際に、目録の名前と相応のシンボルセグメントリ
ファレンス、および場合によりアクセスすべき別のリファレンスだけを受け取る
。リンク過程ではこのリファレンスを実際に有効な論理アドレスにより、とりわ
け目録の相応のセグメントアドレスにより置換しなければならない。 リンク過程は基本的にカード端末またはチップカード上で行うことができる。
前者の場合は保安されていないと見なすべきである。なぜなら端末が不正に操作
されていないことを保証しなければならないからである。さらに端末とカードの
間の通信区間でデータが再度不正に操作されることがある。 新たにダイナミックに結合されたモジュールは基本的にリンク前のその状態に
対して変更され、各リンク過程の際にシンボルリファレンスを解決しなければな
らないから、チップカードでスタティックに予定義されたプログラムの署名を検
査することができない。ただ1つの確実な手段は、リンカをチップカードに敷設
することである。しかしここでの問題は、比較的複雑なパーサがオブジェクトコ
ードを読み出し、ダイナミックリファレンスを満足させるという従来のリンクス
トラテジーが大量のメモリリソースをカードで必要とすることである。これまで
従来技術ではこの問題に対する解決手段が存在しなかった。従ってこれまでは、
十分に保安されたチップカード上で、目録をダイナミックに割り当てられたアド
レス領域で使用することは適当なコストによっては不可能であった。 この領域における次に考慮すべき従来技術はDE19723676A1に記載
されている。この刊行物は同様に、プログラムをチップカードに後ロードする方
法を開示する。この従来技術によれば、プログラムをダイナミックに相応のプロ
グラムバンクへ分散させることができる。しかしこの方法によっては、ダイナミ
ックに後ロードされたプログラムが、ダイナミックに後ロードされた別のプログ
ラムまたはダイナミックに後ロードされたアドレスにアクセスすることはできな
い。なぜならこの従来技術によれば、ジャンプアドレスがプログラム内で変換さ
れ、適合されるだけだからである。従ってこの従来技術も、後ロードされたアプ
リケーションが、同じようにダイナミックに割り当てられたアドレスを占有する
目録にアクセスするという課題を解決するものではない。
たプログラムモジュールをリンクする方法に関する。本発明は以下のような問題
を提起する。 将来のマルチアプリケーションチップカードでは、スタティックに前ロードさ
れたオペレーティングシステムおよび標準目録の他に、個別のプログラムモジュ
ールがユーザにより後ロードできなければならない。このことはこれまで次の理
由から不可能であった:各プログラムはアドレスに基づいており、そのアドレス
位置でプログラムが処理される。いわゆる「リンカ」がこのアドレス割り当てを
設定する。後ロードされるプログラムにとって、どのアドレスがチップカードで
すでに占有されているかはまったく未知であるから、後ロードされるプログラム
を任意のアドレスで実行させることのできる手段を講じなければならない。すな
わち後ロードされるプログラムはチップカード上でリロケータブルでなければな
らない。後ロードされるモジュールが全体で、チップカード上で使用可能な物理
アドレス領域を上回ることも予想される。従ってモジュールに固定的に設定され
た物理アドレス領域を割り当てることはできない。従ってカード上のオペレーテ
ィングシステムは、カードへの挿入時にモジュールに動的に空きメモリ領域を割
り当てることができなければならない。このために後ロードされるモジュールは
チップカードに、どの目録にこれがアクセスするかを通知しなければならない。
モジュールに対して、相応の目録へのアクセスが許容されることが検証された後
、これにリンクしなければならない。すなわち相応の論理アドレスをアクセスの
ために設けなければならない。論理アドレスはカードのオペレーティングシステ
ムにより管理され、一義的に物理アドレスに配属される。全ての目録が固定のア
ドレス領域にあれば、新たなモジュールをスタティックに前もってリンクし、チ
ップカードに変更なしで引き渡すことができる。しかりとりわけ目録がダイナミ
ックに割り当てられたアドレス領域上にある場合には、新たなモジュールはこの
目録にダイナミックにリンクしなければならない。すなわち新たなモジュールに
対して目録の実際に有効な論理アドレスを設けなければならない。従って新たな
モジュールはプログラミングの際に、目録の名前と相応のシンボルセグメントリ
ファレンス、および場合によりアクセスすべき別のリファレンスだけを受け取る
。リンク過程ではこのリファレンスを実際に有効な論理アドレスにより、とりわ
け目録の相応のセグメントアドレスにより置換しなければならない。 リンク過程は基本的にカード端末またはチップカード上で行うことができる。
前者の場合は保安されていないと見なすべきである。なぜなら端末が不正に操作
されていないことを保証しなければならないからである。さらに端末とカードの
間の通信区間でデータが再度不正に操作されることがある。 新たにダイナミックに結合されたモジュールは基本的にリンク前のその状態に
対して変更され、各リンク過程の際にシンボルリファレンスを解決しなければな
らないから、チップカードでスタティックに予定義されたプログラムの署名を検
査することができない。ただ1つの確実な手段は、リンカをチップカードに敷設
することである。しかしここでの問題は、比較的複雑なパーサがオブジェクトコ
ードを読み出し、ダイナミックリファレンスを満足させるという従来のリンクス
トラテジーが大量のメモリリソースをカードで必要とすることである。これまで
従来技術ではこの問題に対する解決手段が存在しなかった。従ってこれまでは、
十分に保安されたチップカード上で、目録をダイナミックに割り当てられたアド
レス領域で使用することは適当なコストによっては不可能であった。 この領域における次に考慮すべき従来技術はDE19723676A1に記載
されている。この刊行物は同様に、プログラムをチップカードに後ロードする方
法を開示する。この従来技術によれば、プログラムをダイナミックに相応のプロ
グラムバンクへ分散させることができる。しかしこの方法によっては、ダイナミ
ックに後ロードされたプログラムが、ダイナミックに後ロードされた別のプログ
ラムまたはダイナミックに後ロードされたアドレスにアクセスすることはできな
い。なぜならこの従来技術によれば、ジャンプアドレスがプログラム内で変換さ
れ、適合されるだけだからである。従ってこの従来技術も、後ロードされたアプ
リケーションが、同じようにダイナミックに割り当てられたアドレスを占有する
目録にアクセスするという課題を解決するものではない。
【0002】 従って本発明の課題は、後ロードされたアプリケーションが、ダイナミックに
割り当てられたアドレス領域に存在する目録にアクセスすることができ、しかも
リンク過程が移動されることによる問題、および例えばカード端末で実行される
リンク過程によって生じる保安上の問題が発生しないような方法を提供すること
である。
割り当てられたアドレス領域に存在する目録にアクセスすることができ、しかも
リンク過程が移動されることによる問題、および例えばカード端末で実行される
リンク過程によって生じる保安上の問題が発生しないような方法を提供すること
である。
【0003】 この課題は本発明により、リンク過程を2つの部分に分割し、第1部分はプロ
グラムモジュールのコンパイル後、任意の時点で実行することができ、シンボル
リファレンスが解決される第2部分だけをプログラムモジュールのロード後に実
行すればよいように構成して解決される。 付加的なリソースを節約するためとりわけ有利には、ダイナミックリファレン
スの解決を単純な自動化プログラムによって実行できるようにする。 有利には特に簡単なプログラム構造が次のようにして得られる。すなわち、方
法の第1部分においてオブジェクトファイルをヘッダにより形成し、このヘッダ
には目録およびリンクすべきそのセグメントについての情報が存在するようにす
る。 ここでさらに有利には、オブジェクトファイルのヘッダに付加的に、本来のオ
ブジェクトコードで使用されるダイナミックリファレンスについての情報も含ま
れるようにする。 カード上での特に簡単な処理は、本来のオブジェクトコードをブロックのシー
ケンスに分解することにより得られる。ここでは各ブロックの開始部に、第1の
シンボルリファレンスが発生するまでに何バイトのオブイジェクトコードを読み
出すことができるかという情報が存在し、ブロックはシンボルリファレンスを以
て終了する。 特に簡単な処理は次のようにして得られる。すなわちリンク過程の第2部分の
開始時に、オブジェクトコードのヘッダをワークメモリに記憶し、そこでダイナ
ミックリファレンスにカード上の実際のアドレスを割り当てるのである。 特に簡単なリンク過程は次のようにして得られる。すなわち、リンク過程の第
2部分の間に、カード上でそれぞれのブロック開始部を読み出し、ダイナミック
リファレンスの変換なしで読み出すことのできるバイト数を記憶し、次にブロッ
クをブロック開始部なしでカード上のメモリに書き込み、ブロックの終了時にダ
イナミックリファレンスの代わりに、カード上の実際のアドレスをオブジェクト
コードの変換されたヘッダから読み出すのである。 以下、本発明を図面に示された実施例に基づき詳細に説明する。 図1は、本発明のリンク方法の第1部分後に構成されるオブジェクトファイルの
構造を示す。 図2は、オブジェクトヘッダのリファレンスを絶対アドレスに変換した後のプロ
グラムの状態を示し、ここではリファレンスリストが作成される。 図3は、オブジェクトヘッダのリファレンスを変換した後のプログラムの状態を
示し、ここではリファレンススタックが形成されている。 図4は、リファレンスが変換された後のプログラムの状態を示し、ここでは位置
リストが形成されている。 図5は、リファレンスが変換された後のプログラムの状態を示し、ここではアド
レスが置換されている。 本発明の実施例では、プログラムモジュールのチップカードへのダイナミック
な後ロードが行われる。ここではリンカの複素部分が分離され、カードから移動
される。カード自体では単純な自動化プログラムが実行されるだけであり、この
自動化プログラムはシンボルリファレンスの解決を処理する。カード上のリンカ
はオブジェクトファイルの新たなリンク形式によって十分に記述される。 オブジェクトファイルのヘッダ10には、目録、およびリンクすべきそのセグ
メント、並びに本来のオブジェクトコードで使用される相応のシンボルリファレ
ンスについての情報が存在する。本来のオブジェクトコードはブロック12,1
4,16のシーケンスである。ブロックの開始部には、プログラムコードの何バ
イトを、第1のダイナミックリファレンスが発生するまでに読み出すことができ
るかという情報がある。ダイナミックリファレンスはブロックを終了させる。チ
ップカードに引き渡されるオブジェクトファイルの相応の構造が図1に示されて
いる。オブジェクトファイルはヘッダ10を有し、ヘッダはそれぞれの目録の名
前、およびリンクすべきそれぞれのセグメントの名前、および所属のシンボルリ
ファレンスを含んでいる。 オブジェクトヘッダにはオブジェクトコードの個々のブロックが続いている。
ここでブロック開始部には常にブロック長が指示されており、各ブロックはシン
ボルリファレンスにより終了する。図1に示した構造を有するこのようなブロッ
クの作成は、プログラムのコンパイル後、任意の時点で任意の計算器上で行うこ
とができる。 チップカードでは単にリンク過程の第2部分を実行すればよい。 カード上のリンカはオブジェクトヘッダを読み出し、シンボルリファレンスに
カード上の実際のアドレスを割り当てる。少数のシンボルリファレンスしかオブ
ジェクトコードで反復して必要としない場合には、シンボルリファレンスの実際
のアドレスへの割り当てテーブルを作成することが推奨される。この情報は全リ
ンク過程中に存在していなければならない。多数のダイナミックリファレンスが
比較的稀にオブジェクトコードで呼び出される場合には、リンク過程をさらに単
純化することができる。すなわち、オブジェクトコードのヘッダ10にシンボル
リファレンスをそのオブジェクトコードにおける発生順に配置するのである。こ
の場合、置換すべきアドレスをオブジェクトコード中に直接指示することができ
る。そうするとブロック構造がなくなる。さらに興味深い手段として、ブロック
の終了部に直接、名前とその都度解決されるシンボルリファレンスを特定するこ
とができる。カード上で実際の物理アドレスに変換した後、ヘッダ10には絶対
アドレスのリストが、この絶対アドレスをオブジェクトコードで処理しなければ
ならない順序で存在することになる。このためにヘッダを置換する必要はなく、
相応のリストをメモリに保持すれば十分である。このリストはロード後に消去す
ることができ、これにより多大なメモリスペースが節約される。 このアドレステーブルまたはアドレスリストを形成した後、それぞれブロック
開始部が読み出され、シンボルリファレンスの変換なしでプログラムセグメント
に書き込むことのできるバイト数が記憶される。単にこのブロックのバイト数を
指示するだけであるブロック開始部はこの場合、プログラムコードには取り込ま
れない。ブロックの終了時にシンボルリファレンスは実際の瞬時アドレスによっ
て置換される。このために、オブジェクトコードヘッダ10の比較テーブルが利
用されるか、または相応のリストからこのブロックに所属する物理アドレスが単
純に呼び出される。後者の構成の場合、ヘッダはステープルメモリ(スタック)
の形態に構成することもできる。 このようにして次のブロックを処理することができる。 図2から図5は、ヘッダ10にあるダイナミックリファレンスを変換した後の
オブジェクトコードを示す。ここで絶対アドレスはテーブルの形態に構成するこ
とができ、相応の参照番号(1,2,3)を介して、オブジェクトコード中のそ
れぞれのダイナミックリファレンスへの割り当てを行うことができる。またはヘ
ッダは、ステープルメモリのように、絶対アドレスをこれがブロックにより必要
とされる順序で含むことができる。 図2は本発明の解決手段を詳細に示す。この解決手段ではオブジェクトコード
ヘッダから、それぞれ名前、リファレンス、並びにそれぞれ実際の瞬時アドレス
を含むリストが作成される。これにより少数のリファレンスだけが頻繁にプログ
ラムに発生するような場合には、非常に僅かなメモリスペースしか必要としない
非常に小さなテーブルが作成される。これは例えば、リファレンスMが図2に複
数回発生することにより示されている。 図3は本発明の解決手段を示す。この解決手段では、オブジェクトコードヘッ
ダがステープルメモリの形態で構成されており、このメモリはアドレスをそれが
オブジェクトコードで発生する順序で含む。ここではロード過程がさらに簡素化
される。なぜなら各ブロックの後で単に最上位アドレスだけをステープルメモリ
からコピーすれば良いからである。 図4は本発明の解決手段を示す。この解決手段ではテーブルが記憶され、この
テーブルには名前とアドレスの他に、それぞれのシンボルリファレンスが実際の
瞬時アドレスにより置換されなければならない位置が含まれている。このテーブ
ルはオブジェクトコードの終了部に配置することもできる。このような配置は処
理にとってさらに有利である。なぜなら、テーブルをメモリに保持する必要がな
く、オブジェクトコードのロード後に初めてメモリへ連続的に処理することがで
きるからである。 図5は、アドレスが直接的に解決される本発明の解決手段を示す。 これら本発明の解決手段では全て共通に、シンボルリファレンスの置換が実際
の瞬時アドレスにより、プログラムのカードへのロード中に一度だけ行われ、プ
ログラムの処理中には行われない。従ってシンボルリファレンスはロード中に一
度だけ解決される。従って、シンボルリファレンスと実際の瞬時アドレスとの割
り当てを有するリストをメモリ中に持続的に保持する必要がない。このことは多
大なメモリ節約につながる。従って本発明によりリンカが複素プレリンカに分解
され、プレリンカをプログラムのコンパイル直後に実行することができる。プレ
リンカプロセスの後にコードに署名することができる。署名されたコードはカー
ド上のリンカで、読み出しの間にリンクされ、検証される。図2から図4でのエ
ントリー「名前n」は、アドレスが一義的である場合には省略することができる
。 本発明により初めて、目録およびこの目録にアクセスするアプリケーションを
確実に後ロードすることができる。またアプリケーションだけをダイナミックに
後ロードすることもできよう。例えば次のような適用事例が考えられる: カーネルおよびオペレーティングシステムはスタティックにリンクされてチッ
プカード上に存在する。ユーザは、IATA、全ての航空路線の目録をダイナミ
ックにカードにロードし、続いてさらにIATA目録にアクセスする、ルフトハ
ンザのボーナスポイント・アプリケーションを後ロードしたい、という適用事例
である。
グラムモジュールのコンパイル後、任意の時点で実行することができ、シンボル
リファレンスが解決される第2部分だけをプログラムモジュールのロード後に実
行すればよいように構成して解決される。 付加的なリソースを節約するためとりわけ有利には、ダイナミックリファレン
スの解決を単純な自動化プログラムによって実行できるようにする。 有利には特に簡単なプログラム構造が次のようにして得られる。すなわち、方
法の第1部分においてオブジェクトファイルをヘッダにより形成し、このヘッダ
には目録およびリンクすべきそのセグメントについての情報が存在するようにす
る。 ここでさらに有利には、オブジェクトファイルのヘッダに付加的に、本来のオ
ブジェクトコードで使用されるダイナミックリファレンスについての情報も含ま
れるようにする。 カード上での特に簡単な処理は、本来のオブジェクトコードをブロックのシー
ケンスに分解することにより得られる。ここでは各ブロックの開始部に、第1の
シンボルリファレンスが発生するまでに何バイトのオブイジェクトコードを読み
出すことができるかという情報が存在し、ブロックはシンボルリファレンスを以
て終了する。 特に簡単な処理は次のようにして得られる。すなわちリンク過程の第2部分の
開始時に、オブジェクトコードのヘッダをワークメモリに記憶し、そこでダイナ
ミックリファレンスにカード上の実際のアドレスを割り当てるのである。 特に簡単なリンク過程は次のようにして得られる。すなわち、リンク過程の第
2部分の間に、カード上でそれぞれのブロック開始部を読み出し、ダイナミック
リファレンスの変換なしで読み出すことのできるバイト数を記憶し、次にブロッ
クをブロック開始部なしでカード上のメモリに書き込み、ブロックの終了時にダ
イナミックリファレンスの代わりに、カード上の実際のアドレスをオブジェクト
コードの変換されたヘッダから読み出すのである。 以下、本発明を図面に示された実施例に基づき詳細に説明する。 図1は、本発明のリンク方法の第1部分後に構成されるオブジェクトファイルの
構造を示す。 図2は、オブジェクトヘッダのリファレンスを絶対アドレスに変換した後のプロ
グラムの状態を示し、ここではリファレンスリストが作成される。 図3は、オブジェクトヘッダのリファレンスを変換した後のプログラムの状態を
示し、ここではリファレンススタックが形成されている。 図4は、リファレンスが変換された後のプログラムの状態を示し、ここでは位置
リストが形成されている。 図5は、リファレンスが変換された後のプログラムの状態を示し、ここではアド
レスが置換されている。 本発明の実施例では、プログラムモジュールのチップカードへのダイナミック
な後ロードが行われる。ここではリンカの複素部分が分離され、カードから移動
される。カード自体では単純な自動化プログラムが実行されるだけであり、この
自動化プログラムはシンボルリファレンスの解決を処理する。カード上のリンカ
はオブジェクトファイルの新たなリンク形式によって十分に記述される。 オブジェクトファイルのヘッダ10には、目録、およびリンクすべきそのセグ
メント、並びに本来のオブジェクトコードで使用される相応のシンボルリファレ
ンスについての情報が存在する。本来のオブジェクトコードはブロック12,1
4,16のシーケンスである。ブロックの開始部には、プログラムコードの何バ
イトを、第1のダイナミックリファレンスが発生するまでに読み出すことができ
るかという情報がある。ダイナミックリファレンスはブロックを終了させる。チ
ップカードに引き渡されるオブジェクトファイルの相応の構造が図1に示されて
いる。オブジェクトファイルはヘッダ10を有し、ヘッダはそれぞれの目録の名
前、およびリンクすべきそれぞれのセグメントの名前、および所属のシンボルリ
ファレンスを含んでいる。 オブジェクトヘッダにはオブジェクトコードの個々のブロックが続いている。
ここでブロック開始部には常にブロック長が指示されており、各ブロックはシン
ボルリファレンスにより終了する。図1に示した構造を有するこのようなブロッ
クの作成は、プログラムのコンパイル後、任意の時点で任意の計算器上で行うこ
とができる。 チップカードでは単にリンク過程の第2部分を実行すればよい。 カード上のリンカはオブジェクトヘッダを読み出し、シンボルリファレンスに
カード上の実際のアドレスを割り当てる。少数のシンボルリファレンスしかオブ
ジェクトコードで反復して必要としない場合には、シンボルリファレンスの実際
のアドレスへの割り当てテーブルを作成することが推奨される。この情報は全リ
ンク過程中に存在していなければならない。多数のダイナミックリファレンスが
比較的稀にオブジェクトコードで呼び出される場合には、リンク過程をさらに単
純化することができる。すなわち、オブジェクトコードのヘッダ10にシンボル
リファレンスをそのオブジェクトコードにおける発生順に配置するのである。こ
の場合、置換すべきアドレスをオブジェクトコード中に直接指示することができ
る。そうするとブロック構造がなくなる。さらに興味深い手段として、ブロック
の終了部に直接、名前とその都度解決されるシンボルリファレンスを特定するこ
とができる。カード上で実際の物理アドレスに変換した後、ヘッダ10には絶対
アドレスのリストが、この絶対アドレスをオブジェクトコードで処理しなければ
ならない順序で存在することになる。このためにヘッダを置換する必要はなく、
相応のリストをメモリに保持すれば十分である。このリストはロード後に消去す
ることができ、これにより多大なメモリスペースが節約される。 このアドレステーブルまたはアドレスリストを形成した後、それぞれブロック
開始部が読み出され、シンボルリファレンスの変換なしでプログラムセグメント
に書き込むことのできるバイト数が記憶される。単にこのブロックのバイト数を
指示するだけであるブロック開始部はこの場合、プログラムコードには取り込ま
れない。ブロックの終了時にシンボルリファレンスは実際の瞬時アドレスによっ
て置換される。このために、オブジェクトコードヘッダ10の比較テーブルが利
用されるか、または相応のリストからこのブロックに所属する物理アドレスが単
純に呼び出される。後者の構成の場合、ヘッダはステープルメモリ(スタック)
の形態に構成することもできる。 このようにして次のブロックを処理することができる。 図2から図5は、ヘッダ10にあるダイナミックリファレンスを変換した後の
オブジェクトコードを示す。ここで絶対アドレスはテーブルの形態に構成するこ
とができ、相応の参照番号(1,2,3)を介して、オブジェクトコード中のそ
れぞれのダイナミックリファレンスへの割り当てを行うことができる。またはヘ
ッダは、ステープルメモリのように、絶対アドレスをこれがブロックにより必要
とされる順序で含むことができる。 図2は本発明の解決手段を詳細に示す。この解決手段ではオブジェクトコード
ヘッダから、それぞれ名前、リファレンス、並びにそれぞれ実際の瞬時アドレス
を含むリストが作成される。これにより少数のリファレンスだけが頻繁にプログ
ラムに発生するような場合には、非常に僅かなメモリスペースしか必要としない
非常に小さなテーブルが作成される。これは例えば、リファレンスMが図2に複
数回発生することにより示されている。 図3は本発明の解決手段を示す。この解決手段では、オブジェクトコードヘッ
ダがステープルメモリの形態で構成されており、このメモリはアドレスをそれが
オブジェクトコードで発生する順序で含む。ここではロード過程がさらに簡素化
される。なぜなら各ブロックの後で単に最上位アドレスだけをステープルメモリ
からコピーすれば良いからである。 図4は本発明の解決手段を示す。この解決手段ではテーブルが記憶され、この
テーブルには名前とアドレスの他に、それぞれのシンボルリファレンスが実際の
瞬時アドレスにより置換されなければならない位置が含まれている。このテーブ
ルはオブジェクトコードの終了部に配置することもできる。このような配置は処
理にとってさらに有利である。なぜなら、テーブルをメモリに保持する必要がな
く、オブジェクトコードのロード後に初めてメモリへ連続的に処理することがで
きるからである。 図5は、アドレスが直接的に解決される本発明の解決手段を示す。 これら本発明の解決手段では全て共通に、シンボルリファレンスの置換が実際
の瞬時アドレスにより、プログラムのカードへのロード中に一度だけ行われ、プ
ログラムの処理中には行われない。従ってシンボルリファレンスはロード中に一
度だけ解決される。従って、シンボルリファレンスと実際の瞬時アドレスとの割
り当てを有するリストをメモリ中に持続的に保持する必要がない。このことは多
大なメモリ節約につながる。従って本発明によりリンカが複素プレリンカに分解
され、プレリンカをプログラムのコンパイル直後に実行することができる。プレ
リンカプロセスの後にコードに署名することができる。署名されたコードはカー
ド上のリンカで、読み出しの間にリンクされ、検証される。図2から図4でのエ
ントリー「名前n」は、アドレスが一義的である場合には省略することができる
。 本発明により初めて、目録およびこの目録にアクセスするアプリケーションを
確実に後ロードすることができる。またアプリケーションだけをダイナミックに
後ロードすることもできよう。例えば次のような適用事例が考えられる: カーネルおよびオペレーティングシステムはスタティックにリンクされてチッ
プカード上に存在する。ユーザは、IATA、全ての航空路線の目録をダイナミ
ックにカードにロードし、続いてさらにIATA目録にアクセスする、ルフトハ
ンザのボーナスポイント・アプリケーションを後ロードしたい、という適用事例
である。
【図1】 図1は、本発明のリンク方法の第1部分後に構成されるオブジェクトファイル
の構造を示す。
の構造を示す。
【図2】 図2は、オブジェクトヘッダのリファレンスを絶対アドレスに変換した後のプ
ログラムの状態を示し、ここではリファレンスリストが作成される。
ログラムの状態を示し、ここではリファレンスリストが作成される。
【図3】 図3は、オブジェクトヘッダのリファレンスを変換した後のプログラムの状態
を示し、ここではリファレンススタックが形成されている。
を示し、ここではリファレンススタックが形成されている。
【図4】 図4は、リファレンスが変換された後のプログラムの状態を示し、ここでは位
置リストが形成されている。
置リストが形成されている。
【図5】 図5は、リファレンスが変換された後のプログラムの状態を示し、ここではア
ドレスが置換されている。
ドレスが置換されている。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成12年10月19日(2000.10.19)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0002
【補正方法】変更
【補正内容】
【0002】 WO97/24674から、いわゆる「ホームコミュニケーションターミナル
」が公知である。ここでは既存のワークメモリ不足から、ターミナルにコンパイ
ルされてロードされたプログラムが、ワークメモリが存在するだけしかワークメ
モリに取り入れられない。 同様のことがWO94/22078から公知のコンピュータシステムにも当て
はまる。 従って本発明の課題は、後ロードされたアプリケーションが、ダイナミックに
割り当てられたアドレス領域に存在する目録にアクセスすることができ、しかも
リンク過程が移動されることによる問題、および例えばカード端末で実行される
リンク過程によって生じる保安上の問題が発生しないような方法を提供すること
である。
」が公知である。ここでは既存のワークメモリ不足から、ターミナルにコンパイ
ルされてロードされたプログラムが、ワークメモリが存在するだけしかワークメ
モリに取り入れられない。 同様のことがWO94/22078から公知のコンピュータシステムにも当て
はまる。 従って本発明の課題は、後ロードされたアプリケーションが、ダイナミックに
割り当てられたアドレス領域に存在する目録にアクセスすることができ、しかも
リンク過程が移動されることによる問題、および例えばカード端末で実行される
リンク過程によって生じる保安上の問題が発生しないような方法を提供すること
である。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】請求項1
【補正方法】変更
【補正内容】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 オラフ ブリクセル ドイツ連邦共和国 ミュンヘン グランダ ウアーシュトラーセ 14 アー Fターム(参考) 5B035 AA00 BB09 BC00 CA11 CA29 5B076 AB04 BA04 BA10
Claims (7)
- 【請求項1】 プロセッサのワークメモリに後ロードされたプログラムモジ
ュールをリンクする方法において、 当該方法を2つの部分に分割し、 第1部分は、プログラムモジュールのコンパイル後、任意の時点で実行可能で
あり、 シンボルリファレンスが解決された第2部分だけを、プログラムモジュールの
ロード後、ワークメモリで実行する、 ことを特徴とする方法。 - 【請求項2】 シンボルリファレンスの解決を単純な自動化プログラムによ
り行う、請求項1記載の方法。 - 【請求項3】 第1部分でオブジェクトファイルをヘッダ(10)により形
成し、 該ヘッダには、目録、およびリンクすべきそのセグメントについての情報が含
まれている、請求項1または2記載の方法。 - 【請求項4】 オブジェクトファイルのヘッダ(10)には付加的に、本来
のオブジェクトコードで使用されるシンボルリファレンスについての情報が含ま
れている、請求項3記載の方法。 - 【請求項5】 本来のオブジェクトコードをブロック(12,14,16)
のシーケンスに分解し、 各ブロック(12,14,16)の開始部には、第1のシンボルリファレンス
が発生するまでに何バイトのオブジェクトコードを読み出すことができるかとい
う情報があり、 ブロックはシンボルリファレンスによって終了する、請求項4記載の方法。 - 【請求項6】 リンク過程の第2部分の開始時に、ワークメモリにオブジェ
クトコードのヘッダ(10)を記憶し、そこでシンボルリファレンスに実際のア
ドレスを割り当てる、請求項5記載の方法。 - 【請求項7】 リンク過程の第2部分の間に、それぞれブロック開始部を読
み出し、 シンボルリファレンスの変換なしで読み出すことのできるバイト数を記憶し、 ブロックをブロック開始部なしでワークメモリに書き込み、 ブロックの終了時で、シンボルリファレンスではなく、ワークメモり中の実際
のアドレスを、オブジェクトコードの変換されたヘッダから読み出す、請求項6
記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19840029A DE19840029C1 (de) | 1998-09-02 | 1998-09-02 | Verfahren zum Linken von in einen Arbeitsspeicher eines Prozessors nachgeladenen Programmodulen auf einer Chipkarte |
DE19840029.2 | 1998-09-02 | ||
PCT/DE1999/002784 WO2000014631A2 (de) | 1998-09-02 | 1999-09-02 | Verfahren zum linken von in einen arbeitsspeicher eines prozessors nachgeladenen programmodulen auf einer chipkarte |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002524792A true JP2002524792A (ja) | 2002-08-06 |
Family
ID=7879588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000569311A Pending JP2002524792A (ja) | 1998-09-02 | 1999-09-02 | プロセッサのワークメモリに後ロードされたプログラムモジュールをチップカード上でリンクする方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20010034818A1 (ja) |
EP (1) | EP1145118A2 (ja) |
JP (1) | JP2002524792A (ja) |
KR (1) | KR20010079730A (ja) |
CN (1) | CN1354853A (ja) |
DE (1) | DE19840029C1 (ja) |
WO (1) | WO2000014631A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010198139A (ja) * | 2009-02-23 | 2010-09-09 | Dainippon Printing Co Ltd | プラットフォーム完全性検証システム及び方法,並びに,セキュリティトークン |
JP7034390B1 (ja) * | 2021-04-07 | 2022-03-11 | 三菱電機株式会社 | コード補正装置、および、コード補正方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2000115287A (ru) | 1998-01-16 | 2002-07-27 | Медиадна | Система и способ для подтверждения подлинности равноправных компонентов |
US6802006B1 (en) | 1999-01-15 | 2004-10-05 | Macrovision Corporation | System and method of verifying the authenticity of dynamically connectable executable images |
US7650504B2 (en) | 1999-07-22 | 2010-01-19 | Macrovision Corporation | System and method of verifying the authenticity of dynamically connectable executable images |
JP4509291B2 (ja) * | 2000-03-30 | 2010-07-21 | 大日本印刷株式会社 | Icカード、icカードのプログラム更新装置、および、その方法 |
MX237690B (es) * | 2000-07-25 | 2006-06-12 | Macrovision Corp | Sistema y metodo de verificacion de la autenticidad de imagenes ejecutables conectables dinamicamente. |
BR0209761A (pt) * | 2001-05-30 | 2006-02-07 | Research Motion Ltd | Sistema de processamento de aplicação de dispositivo de comunicação móvel |
US7131121B2 (en) * | 2001-11-14 | 2006-10-31 | Axalto, Inc. | Method and apparatus for linking converted applet files without relocation annotations |
NL1019876C2 (nl) * | 2002-01-31 | 2003-08-04 | Chess Embedded Technology B V | Systeem en werkwijze voor het laden van een programmacode in een inrichting alsmede een werkwijze voor het voeden van een programmacode aan een inrichting. |
FR2839792B1 (fr) * | 2002-05-15 | 2004-08-20 | Gemplus Card Int | Procede de chargement d'une applet dans un objet electronique portatif |
US7047101B1 (en) * | 2002-07-29 | 2006-05-16 | Kla-Tencor Technologies Corporation | Reuse in semiconductor measurement recipes |
DE102004058882A1 (de) * | 2004-12-06 | 2006-06-08 | Giesecke & Devrient Gmbh | Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode |
EP1724677A1 (en) * | 2005-05-19 | 2006-11-22 | Axalto SA | Memory management system and method in portable device |
CN114860204B (zh) * | 2022-04-27 | 2024-07-02 | 恒宝股份有限公司 | 程序处理、运行方法、装置、终端、智能卡及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE6903042U (de) * | 1968-01-26 | 1969-10-02 | Hirst Buckley Ltd | Steuermechanismus fuer maschinen, insbesondere fuer eine lagervorrichtung |
JPH02214994A (ja) * | 1989-02-15 | 1990-08-27 | Hitachi Maxell Ltd | Icカード |
CA2066724C (en) * | 1989-09-01 | 2000-12-05 | Helge Knudsen | Operating system and data base |
US5507030A (en) * | 1991-03-07 | 1996-04-09 | Digitial Equipment Corporation | Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses |
AU6412094A (en) * | 1993-03-23 | 1994-10-11 | Apple Computer, Inc. | Apparatus and method for a relocatable file format |
US5734822A (en) * | 1995-12-29 | 1998-03-31 | Powertv, Inc. | Apparatus and method for preprocessing computer programs prior to transmission across a network |
US6055314A (en) * | 1996-03-22 | 2000-04-25 | Microsoft Corporation | System and method for secure purchase and delivery of video content programs |
FR2757970B1 (fr) * | 1996-12-30 | 1999-03-26 | Gemplus Card Int | Procede de chargement d'un programme d'utilisation dans un support a puce |
US6317872B1 (en) * | 1997-07-11 | 2001-11-13 | Rockwell Collins, Inc. | Real time processor optimized for executing JAVA programs |
US6282706B1 (en) * | 1998-02-10 | 2001-08-28 | Texas Instruments Incorporated | Cache optimization for programming loops |
-
1998
- 1998-09-02 DE DE19840029A patent/DE19840029C1/de not_active Expired - Fee Related
-
1999
- 1999-09-02 KR KR1020017002772A patent/KR20010079730A/ko not_active Application Discontinuation
- 1999-09-02 WO PCT/DE1999/002784 patent/WO2000014631A2/de not_active Application Discontinuation
- 1999-09-02 JP JP2000569311A patent/JP2002524792A/ja active Pending
- 1999-09-02 EP EP99953697A patent/EP1145118A2/de not_active Withdrawn
- 1999-09-02 CN CN99810510A patent/CN1354853A/zh active Pending
-
2001
- 2001-03-02 US US09/798,105 patent/US20010034818A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010198139A (ja) * | 2009-02-23 | 2010-09-09 | Dainippon Printing Co Ltd | プラットフォーム完全性検証システム及び方法,並びに,セキュリティトークン |
JP7034390B1 (ja) * | 2021-04-07 | 2022-03-11 | 三菱電機株式会社 | コード補正装置、および、コード補正方法 |
WO2022215185A1 (ja) * | 2021-04-07 | 2022-10-13 | 三菱電機株式会社 | コード補正装置、および、コード補正方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1145118A2 (de) | 2001-10-17 |
WO2000014631A3 (de) | 2000-07-20 |
DE19840029C1 (de) | 2000-04-20 |
US20010034818A1 (en) | 2001-10-25 |
KR20010079730A (ko) | 2001-08-22 |
WO2000014631A2 (de) | 2000-03-16 |
CN1354853A (zh) | 2002-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002524792A (ja) | プロセッサのワークメモリに後ロードされたプログラムモジュールをチップカード上でリンクする方法 | |
US6496910B1 (en) | Method and device for loading instruction codes to a memory and linking said instruction codes | |
CN1016291B (zh) | 可编程选件的选择 | |
CN101026826B (zh) | 用于提供在无线装置中使用的整体映像的系统和方法 | |
JP2005032259A (ja) | 共有ライブラリーシステム及び前記システム構築方法 | |
EP1119807A1 (en) | Program code conversion | |
CN102243595B (zh) | 基于MMU架构的Java Card系统组件更新方法 | |
JPH03126144A (ja) | 仮想アドレス式情報処理システムにおけるメモリの使用方法及びこの方法を実施するための装置 | |
US4823257A (en) | Information processing system having smart memories | |
EP0751459B1 (en) | Object oriented coding compiler | |
EP0902364A1 (en) | Method for loading a program | |
US20050235268A1 (en) | Optimisation of a compiler generated program code | |
CN112328319A (zh) | 一种支持ram文件系统的星载app动态加载方法 | |
US7107430B2 (en) | Mechanism to reduce the cost of forwarding pointer aliasing | |
US6959430B2 (en) | Specialized heaps for creation of objects in object-oriented environments | |
US6886069B2 (en) | IC card and management method of nonvolatile memory in IC card | |
US6499094B1 (en) | Management of memory heap space for data files accessible to programs operating in different addressing modes | |
US20040015943A1 (en) | Embedded computer system equipped with an upgradeable software library | |
KR20000062382A (ko) | 응용 프로그램을 칩 카드 내에 로딩하기 위한 방법 | |
US6793143B2 (en) | Data carrier | |
CN115291918A (zh) | 用于智能卡的代码升级方法及装置、电子设备、存储介质 | |
JP2729795B2 (ja) | 並列計算機及びその制御方法 | |
MXPA01002268A (en) | Method for linking on a chip card program modules swapped in the working memory of a processor | |
CN114924894A (zh) | 实现脚本单机高并发的方法 | |
KR950005242B1 (ko) | 범용 운영체제에서의 칠(chill) 병렬 처리를 위한 공유변수 처리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040924 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20050302 |