JP2007213257A - 連携編集方法、連携編集プログラム及び記憶媒体 - Google Patents
連携編集方法、連携編集プログラム及び記憶媒体 Download PDFInfo
- Publication number
- JP2007213257A JP2007213257A JP2006031594A JP2006031594A JP2007213257A JP 2007213257 A JP2007213257 A JP 2007213257A JP 2006031594 A JP2006031594 A JP 2006031594A JP 2006031594 A JP2006031594 A JP 2006031594A JP 2007213257 A JP2007213257 A JP 2007213257A
- Authority
- JP
- Japan
- Prior art keywords
- instructions
- call
- instruction
- object files
- destination
- 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.)
- Withdrawn
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【課題】コードサイズを小さくすることが可能な連携編集方法、連携編集プログラム及び記憶媒体を提供する。
【解決手段】入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けると共に、命令数の降順に並び替え、一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定し、特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成すると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換え、各オブジェクトファイルに含まれている各要素の配置アドレスを決定すると共に、未解決のアドレスを決定し、生成した分岐命令をメモリ資源の特定のメモリ領域に配置し、配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力する。
【選択図】図1
【解決手段】入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けると共に、命令数の降順に並び替え、一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定し、特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成すると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換え、各オブジェクトファイルに含まれている各要素の配置アドレスを決定すると共に、未解決のアドレスを決定し、生成した分岐命令をメモリ資源の特定のメモリ領域に配置し、配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力する。
【選択図】図1
Description
本発明は連携編集方法、連携編集プログラム及び記憶媒体に係り、特に複数のオブジェクトファイル(又は、目的モジュール)を結合して1つの実行形式ファイル(又は、実行形式モジュール)を作成する連携編集方法、コンピュータにそのような連携編集方法を実行させる連携編集プログラム、及びそのような連携編集プログラムが格納されたコンピュータ読み取り可能な記憶媒体に関する。
連携編集プログラムは、リンケージエディタ(Linkage Editor)又は単にリンカ(Linker)とも呼ばれる。
組み込み用途の分野では、必要な機能を限られたメモリ資源を用いて実現する必要がある。組み込み用途の分野の一例としては、電子機器のリモートコントローラ(所謂、リモコン)等のようにメモリ資源が限られている環境が挙げられる。このため、コードサイズを小さくしたり、使用するメモリ資源のデータ領域を小さくすることが求められており、従来よりハードウェア的に、或いは、ソフトウェア的に様々な対策が考えられている。
ハードウェア的な対策の一例を説明する。プロセッサには、メモリ資源の特定の領域に配置したコードに対して他の領域に比べてより効率の良い方法で制御を移すことが可能なものがある。このようなプロセッサにおいては、静的な呼び出し回数の多い関数のコードを、効率の良い方法で制御を移すことが可能なメモリ資源の特定の領域に配置することで、関数呼び出し命令長を短くしてコードサイズを小さくすることが可能である。
特許文献1には、誤って古いバージョンのオブジェクトモジュールが使用されることを防ぐリンケージエディタが提案されている。
特開平7−175638号公報
しかし、効率の良い方法で制御を移すことが可能なメモリ資源の特定の領域は、通常は大きさに限りがあり、この特定の領域に所望の個数の関数のコードを必ず配置できるとは限らないため、関数呼び出し命令長を短くしてコードサイズを小さくするには限界があるという問題があった。
そこで、本発明は、コードサイズを小さくすることが可能な連携編集方法、連携編集プログラム及び記憶媒体を提供することを目的とする。
上記の課題は、複数のオブジェクトファイルを結合して1つの実行形式ファイルを作成する連携編集方法であって、入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けると共に、命令数の降順に並び替える入力ステップと、一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定する特定ステップと、特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成すると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換える置き換えステップと、各オブジェクトファイルに含まれている各要素の配置アドレスを決定すると共に、未解決のアドレスを決定し、該置き換えステップで生成した分岐命令をメモリ資源の特定のメモリ領域に配置する配置アドレス決定ステップと、配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、該入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力する出力ステップとを含むことを特徴とする連携編集方法によって達成できる。
上記の課題は、コンピュータに、複数のオブジェクトファイルを結合して1つの実行形式ファイルを作成させる連携編集プログラムであって、該コンピュータに、入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けさせると共に、命令数の降順に並び替えさせる入力手順と、一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定させる特定手順と、特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成させると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換えさせる置き換え手順と、各オブジェクトファイルに含まれている各要素の配置アドレスを決定させると共に、未解決のアドレスを決定させ、該置き換えステップで生成させた分岐命令をメモリ資源の特定のメモリ領域に配置する配置アドレス決定手順と、配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、該入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力させる出力手順とを含むことを特徴とする連携編集プログラムによっても達成できる。
上記の課題は、上記連携編集プログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体によっても達成できる。
本発明によれば、コードサイズを小さくすることが可能な連携編集方法、連携編集プログラム及び記憶媒体を実現することができる。
本発明では、効率の良い方法で制御を移すことが可能なメモリ資源の特定の領域には関数実体に分岐する命令列のみを配置し、関数実体はメモリ資源の特定の領域以外の領域に配置する。
このようにすることで、効率の良い方法で制御を移すことが可能なメモリ資源の特定の領域に配置するコードを大幅に削減することができる。
以下に、本発明になる連携編集方法、連携編集プログラム及び記憶媒体の各実施例を、図面と共に説明する。
図1は、本発明になる連携編集プログラムの一実施例を示す図である。連携編集プログラムの本実施例は、本発明になる連携編集方法の一実施例を採用し、例えば本発明になる記憶媒体の一実施例に格納されている。
連携編集プログラムを格納する記憶媒体は、連携編集プログラムをコンピュータ読み取り可能に格納できる記録媒体により構成され、記録媒体の種類は特に限定されない。例えば、コンピュータ読み取り可能な記憶媒体は、磁気記録媒体、光記録媒体、光磁気記録媒体、半導体記憶装置等により構成できる。
連携編集プログラムは、汎用のコンピュータシステムにより実行される。具体的には、コンピュータシステムを構成するCPU等のプロセッサが、コンピュータシステムを構成するメモリ等のメモリ資源を用いて連携編集プログラムを実行することで、複数のオブジェクトファイル(又は、目的モジュール)を結合して1つの実行形式ファイル(又は、実行形式モジュール)を作成する。本実施例では、コンピュータシステムは小規模なものであり、メモリ資源が限られているものとする。メモリ資源が限られている場合の一例としては、コンピュータシステムが電子機器のリモートコントローラ(所謂、リモコン)等に適用されている場合がある。
図1において、連携編集プログラム(以下、単に「リンカ」と言う)1は、オブジェクト走査部11、ソート部12、関数呼び出し特定部13、分岐テーブル生成及び命令置き換え部14、配置アドレス決定部15及び実行形式ファイル出力部16からなる。
オブジェクト走査部11は、入力された複数のオブジェクトファイルの読み込みを行うと同時に、入力された複数のオブジェクトファイルに対して、全ての関数呼び出し命令を見つけ出し、呼び出し先毎にその命令数を数え上げて、呼び出し先と命令数を対応付けた表T1を作成する。
図2は、オブジェクト走査部11が作成する表T1の一例を示す図である。説明の便宜上、図2は、呼び出し先がCD1,CD2,CD3,CD4,CD5,CD6,CD7の命令を有する複数のオブジェクトファイルについて、呼び出し先と命令数を対応付けた表T1を示す。例えば、呼び出し先がCD1の命令数が10、呼び出し先がCD2の命令数が15、呼び出し先がCD3の命令数が51である。
ソート部12は、オブジェクトファイル走査部11が作成した表T1を命令数の降順に並び替えた表T2を作成する。図3は、ソート部12により図2に示す表T1を命令数の降順に並び替えられた(即ち、ソートされた)表T2の一例を示す図である。例えば、呼出し先がCD3の命令数が最も多い51である。図3の場合、呼び出し先がCD7の命令数が最も少ない1である。
尚、同じ命令数の場合、任意の順でソートを行って良い。図3は、命令数が10の場合について、呼び出し先がCD1の命令数が上位となっている例を示す。
関数呼び出し特定部13は、ソート部12が並び替えた表T2に基づいて、ユーザにより指定された、或いは、予め設定されている呼び出し先の数の上限に達するまで、ある一定回数以上の呼び出し回数を持つ呼び出し先を、命令数の多い順に特定する。例えば、ある一定回数が「10」であり、予め設定されている呼び出し先の数の上限が「3」であるとすると、図3に示す表T2において、呼び出し先CD3,CD2,CD1が命令数の多い順に特定される。この場合、呼び出し先CD3の命令数が51、呼び出し先CD2の命令数が15、呼び出し先CD1の命令数が10である。
分岐テーブル生成及び命令置き換え部14は、特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成すると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換える。
配置アドレス決定部15は、各オブジェクトファイルに含まれている各要素の配置アドレスを決定すると共に、未解決のアドレスを決定する。このとき、分岐テーブル生成及び命令置き換え部14が生成した分岐命令を、他の領域に比べて効率の良い方法で制御を移すことが可能なメモリ資源の特定のメモリ領域に配置する。
実行形式ファイル出力部16は、配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、入力された複数のオブジェクトファイルが結合された1つの実行形式ファイル(又は、実行形式モジュール)として出力する。
例えば、コンピュータシステムのメモリ資源のうち、0番地から0x000fffff番地までの範囲が効率の良い方法で制御を移すことが可能な特定な領域に該当し、且つ、この特定の領域に配置されたコードに制御を移す命令(CALL20)の命令長が6バイト、メモリ資源のその他の領域に配置されたコードに制御を移す命令(CALL32)の命令長が8バイトであるものと仮定する。
この場合、上記構成のリンカ1を用いない場合のアドレス、命令及び命令長の関係は、図4に示す如くである。図4は、リンカ1を用いない場合のアドレス、命令及び命令長の関係を示す図である。
これに対し、上記構成のリンカ1を用いた場合のアドレス、命令及び命令長の関係は、図5に示すようになる。図5は、リンカ1を用いた場合のアドレス、命令及び命令長の関係を示す図である。
このように、上記構成のリンカ1を用いると、 JMP32命令分の8バイトが増加するが、各関数呼び出し命令のコードサイズは夫々2バイト減少するため、全オブジェクトファイル中に5箇所以上同じ関数の呼び出しがあれば、リンカ1を用いることでコードサイズはリンカ1を用いない場合と比べて小さくなる。つまり、全オブジェクトファイル中に同じ関数の呼び出し箇所が増大すればする程、リンカ1を用いることによるコードサイズの減少効果が増大する。
又、効率の良い方法で制御を移すことが可能なメモリ資源の特定な領域に関数呼び出しテーブルのみを配置して、関数コードをメモリ資源のその他に配置することで、限られた大きさしかないメモリ資源の領域を最大限に利用することが可能となる。
このように、上記構成のリンカ1を用いると、特にメモリ資源が限られている環境下での効果が大きい。
図6は、リンカ1の動作を説明するフローチャートである。図6に示す処理は、連携編集方法が行うステップに対応すると共に、連携編集プログラム(リンカ)1によりCPUが実行させられる手順に対応する。
図6において、複数のオブジェクトファイルが入力されて処理が開始されると、ステップS1は、入力された複数のオブジェクトファイルの読み込みを行うと同時に、入力された複数のオブジェクトファイルに対して、全ての関数呼び出し命令を見つけ出し、呼び出し先毎にその命令数を数え上げて、呼び出し先と命令数を対応付けた図2に示す如き表T1を作成する。
ステップS2は、ステップS1で作成した表T1を命令数の降順に並び替えた図3に示す如き表T2を作成する。
ステップS3は、ステップS2が並び替えた表T2に基づいて、ある一定回数以上の呼び出し回数を持つ呼び出し先を、命令数の多い順に特定する。ステップS4は、ユーザにより指定された、或いは、予め設定されている呼び出し先の数の上限に達したか否かを判定し、判定結果がNOであると、処理はステップS3へ戻る。
ステップS4の判定結果がYESであると、ステップS5は、他の呼び出し先が残っているか否かを判定し、判定結果がNOであると、処理は後述するステップS7へ進む。他方、ステップS5の判定結果がYESであると、ステップS6は、これらの他の呼び出し先については本発明の連携編集方法を適用しないようにして、処理はステップS7へ進む。
ステップS7は、特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成すると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換える。
ステップS8は、各オブジェクトファイルに含まれている各要素の配置アドレスを決定すると共に、未解決のアドレスを決定する。このとき、ステップS7が生成した分岐命令を、効率の良い方法で制御を移すことが可能なメモリ資源の特定のメモリ領域に配置する。
ステップS9は、配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、入力された複数のオブジェクトファイルが結合された1つの実行形式ファイル(又は、実行形式モジュール)として出力し、処理は終了する。
尚、本発明は、以下に付記する発明をも包含するものである。
(付記1) 複数のオブジェクトファイルを結合して1つの実行形式ファイルを作成する連携編集方法であって、
入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けると共に、命令数の降順に並び替える入力ステップと、
一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定する特定ステップと、
特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成すると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換える置き換えステップと、
各オブジェクトファイルに含まれている各要素の配置アドレスを決定すると共に、未解決のアドレスを決定し、該置き換えステップで生成した分岐命令をメモリ資源の特定のメモリ領域に配置する配置アドレス決定ステップと、
配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、該入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力する出力ステップとを含むことを特徴とする、連携編集方法。
(付記2) 該入力ステップは、
該入力された複数のオブジェクトファイルの読み込みを行うと同時に、入力された複数のオブジェクトファイルに対して、全ての関数呼び出し命令を見つけ出し、呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けた第1の表を作成する走査ステップと、
該第1の表を命令数の降順に並び替えた第2の表を作成するソートステップとからなることを特徴とする、付記1記載の連携編集方法。
(付記3) 該特定ステップは、該第2の表に基づいて、該一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定することを特徴とする、付記2記載の連携編集方法。
(付記4) 該特定ステップは、呼び出し先の数の上限に達するまで、該一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定することを特徴とする、付記2又は3記載の連携編集方法。
(付記5) 該特定なメモリ領域は、他の領域に比べて効率の良い方法で制御を移すことが可能なメモリ資源のメモリ領域であることを特徴とする、付記1〜4のいずれか1項記載の連携編集方法。
(付記6) コンピュータに、複数のオブジェクトファイルを結合して1つの実行形式ファイルを作成させる連携編集プログラムであって、
該コンピュータに、
入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けさせると共に、命令数の降順に並び替えさせる入力手順と、
一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定させる特定手順と、
特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成させると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換えさせる置き換え手順と、
各オブジェクトファイルに含まれている各要素の配置アドレスを決定させると共に、未解決のアドレスを決定させ、該置き換えステップで生成させた分岐命令をメモリ資源の特定のメモリ領域に配置する配置アドレス決定手順と、
配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、該入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力させる出力手順とを含むことを特徴とする、連携編集プログラム。
(付記7) 該入力手順は、該コンピュータに、
該入力された複数のオブジェクトファイルの読み込みを行わせると同時に、入力された複数のオブジェクトファイルに対して、全ての関数呼び出し命令を見つけ出させ、呼び出し先毎にその命令数を数え上げさせて呼び出し先と命令数を対応付けた第1の表を作成させる走査手順と、
該第1の表を命令数の降順に並び替えた第2の表を作成させるソートスソ¬ト?手順とからなることを特徴とする、付記6記載の連携編集プログラム。
(付記8) 該特定手順は、該コンピュータに、該第2の表に基づいて、該一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定させることを特徴とする、付記7記載の連携編集プログラム。
(付記9) 該特定手順は、該コンピュータに、呼び出し先の数の上限に達するまで、該一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定させることを特徴とする、付記7又は8記載の連携編集プログラム。
(付記10) 該特定なメモリ領域は、他の領域に比べて効率の良い方法で制御を移すことが可能なメモリ資源のメモリ領域であることを特徴とする、付記6〜9のいずれか1項記載の連携編集プログラム。
(付記11) 付記6〜10のいずれか1項記載の連携編集プログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
(付記1) 複数のオブジェクトファイルを結合して1つの実行形式ファイルを作成する連携編集方法であって、
入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けると共に、命令数の降順に並び替える入力ステップと、
一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定する特定ステップと、
特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成すると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換える置き換えステップと、
各オブジェクトファイルに含まれている各要素の配置アドレスを決定すると共に、未解決のアドレスを決定し、該置き換えステップで生成した分岐命令をメモリ資源の特定のメモリ領域に配置する配置アドレス決定ステップと、
配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、該入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力する出力ステップとを含むことを特徴とする、連携編集方法。
(付記2) 該入力ステップは、
該入力された複数のオブジェクトファイルの読み込みを行うと同時に、入力された複数のオブジェクトファイルに対して、全ての関数呼び出し命令を見つけ出し、呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けた第1の表を作成する走査ステップと、
該第1の表を命令数の降順に並び替えた第2の表を作成するソートステップとからなることを特徴とする、付記1記載の連携編集方法。
(付記3) 該特定ステップは、該第2の表に基づいて、該一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定することを特徴とする、付記2記載の連携編集方法。
(付記4) 該特定ステップは、呼び出し先の数の上限に達するまで、該一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定することを特徴とする、付記2又は3記載の連携編集方法。
(付記5) 該特定なメモリ領域は、他の領域に比べて効率の良い方法で制御を移すことが可能なメモリ資源のメモリ領域であることを特徴とする、付記1〜4のいずれか1項記載の連携編集方法。
(付記6) コンピュータに、複数のオブジェクトファイルを結合して1つの実行形式ファイルを作成させる連携編集プログラムであって、
該コンピュータに、
入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けさせると共に、命令数の降順に並び替えさせる入力手順と、
一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定させる特定手順と、
特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成させると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換えさせる置き換え手順と、
各オブジェクトファイルに含まれている各要素の配置アドレスを決定させると共に、未解決のアドレスを決定させ、該置き換えステップで生成させた分岐命令をメモリ資源の特定のメモリ領域に配置する配置アドレス決定手順と、
配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、該入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力させる出力手順とを含むことを特徴とする、連携編集プログラム。
(付記7) 該入力手順は、該コンピュータに、
該入力された複数のオブジェクトファイルの読み込みを行わせると同時に、入力された複数のオブジェクトファイルに対して、全ての関数呼び出し命令を見つけ出させ、呼び出し先毎にその命令数を数え上げさせて呼び出し先と命令数を対応付けた第1の表を作成させる走査手順と、
該第1の表を命令数の降順に並び替えた第2の表を作成させるソートスソ¬ト?手順とからなることを特徴とする、付記6記載の連携編集プログラム。
(付記8) 該特定手順は、該コンピュータに、該第2の表に基づいて、該一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定させることを特徴とする、付記7記載の連携編集プログラム。
(付記9) 該特定手順は、該コンピュータに、呼び出し先の数の上限に達するまで、該一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定させることを特徴とする、付記7又は8記載の連携編集プログラム。
(付記10) 該特定なメモリ領域は、他の領域に比べて効率の良い方法で制御を移すことが可能なメモリ資源のメモリ領域であることを特徴とする、付記6〜9のいずれか1項記載の連携編集プログラム。
(付記11) 付記6〜10のいずれか1項記載の連携編集プログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
1 リンカ
11 オブジェクト走査部
12 ソート部
13 関数呼び出し特定部
14 分岐テーブル生成及び命令置き換え部
15 配置アドレス決定部
16 実行形式ファイル出力部
11 オブジェクト走査部
12 ソート部
13 関数呼び出し特定部
14 分岐テーブル生成及び命令置き換え部
15 配置アドレス決定部
16 実行形式ファイル出力部
Claims (5)
- 複数のオブジェクトファイルを結合して1つの実行形式ファイルを作成する連携編集方法であって、
入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けると共に、命令数の降順に並び替える入力ステップと、
一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定する特定ステップと、
特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成すると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換える置き換えステップと、
各オブジェクトファイルに含まれている各要素の配置アドレスを決定すると共に、未解決のアドレスを決定し、該置き換えステップで生成した分岐命令をメモリ資源の特定のメモリ領域に配置する配置アドレス決定ステップと、
配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、該入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力する出力ステップとを含むことを特徴とする、連携編集方法。 - 該入力ステップは、
該入力された複数のオブジェクトファイルの読み込みを行うと同時に、入力された複数のオブジェクトファイルに対して、全ての関数呼び出し命令を見つけ出し、呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けた第1の表を作成する走査ステップと、
該第1の表を命令数の降順に並び替えた第2の表を作成するソートステップとからなることを特徴とする、請求項1記載の連携編集方法。 - 該特定ステップは、呼び出し先の数の上限に達するまで、該一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定することを特徴とする、請求項2記載の連携編集方法。
- コンピュータに、複数のオブジェクトファイルを結合して1つの実行形式ファイルを作成させる連携編集プログラムであって、
該コンピュータに、
入力された複数のオブジェクトファイルに含まれる関数呼出し命令の呼び出し先毎にその命令数を数え上げて呼び出し先と命令数を対応付けさせると共に、命令数の降順に並び替えさせる入力手順と、
一定回数以上の呼び出し回数を持つ呼び出し先を命令数の多い順に特定させる特定手順と、
特定された全ての呼び出し先について、夫々の分岐先に制御を移す命令を生成させると共に、元々の関数呼出し命令を対応する分岐命令への呼出し命令に置き換えさせる置き換え手順と、
各オブジェクトファイルに含まれている各要素の配置アドレスを決定させると共に、未解決のアドレスを決定させ、該置き換えステップで生成させた分岐命令をメモリ資源の特定のメモリ領域に配置する配置アドレス決定手順と、
配置アドレスの決定及び分岐命令の配置により完成した実行イメージを、該入力された複数のオブジェクトファイルが結合された1つの実行形式ファイルとして出力させる出力手順とを含むことを特徴とする、連携編集プログラム。 - 請求項4記載の連携編集プログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006031594A JP2007213257A (ja) | 2006-02-08 | 2006-02-08 | 連携編集方法、連携編集プログラム及び記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006031594A JP2007213257A (ja) | 2006-02-08 | 2006-02-08 | 連携編集方法、連携編集プログラム及び記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007213257A true JP2007213257A (ja) | 2007-08-23 |
Family
ID=38491643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006031594A Withdrawn JP2007213257A (ja) | 2006-02-08 | 2006-02-08 | 連携編集方法、連携編集プログラム及び記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007213257A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010146181A (ja) * | 2008-12-17 | 2010-07-01 | Fujitsu Ltd | 実行ファイル作成装置 |
US8566813B2 (en) | 2009-03-03 | 2013-10-22 | Samsung Electronics Co., Ltd. | Method and system generating execution file system device |
-
2006
- 2006-02-08 JP JP2006031594A patent/JP2007213257A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010146181A (ja) * | 2008-12-17 | 2010-07-01 | Fujitsu Ltd | 実行ファイル作成装置 |
US8566813B2 (en) | 2009-03-03 | 2013-10-22 | Samsung Electronics Co., Ltd. | Method and system generating execution file system device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4957729B2 (ja) | プログラム並列化方法、プログラム並列化装置及びプログラム | |
KR100419108B1 (ko) | 데이터처리시스템 | |
JP2003178170A (ja) | ワークフロー・システムにおける変更後のプロセス定義への移行方法 | |
JP2007293383A (ja) | プログラム開発支援装置及びプログラム開発支援装置の動作方法 | |
CN106547522B (zh) | 一种流应用优化的方法及装置 | |
US5964861A (en) | Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set | |
US20040093319A1 (en) | Method and apparatus for precision optimization in compiled programs | |
JP2007094731A (ja) | コンパイラ装置 | |
CN111355672A (zh) | 一种报文转发的方法及装置 | |
JP2007213257A (ja) | 連携編集方法、連携編集プログラム及び記憶媒体 | |
US20100228958A1 (en) | Information processing apparatus, method for controlling information processing apparatus and computer readable medium | |
EP1502182B1 (en) | Automatic task distribution in scalable processors | |
JP2009169864A (ja) | コンパイル方法およびコンパイルプログラム | |
JP2005129001A (ja) | プログラム実行装置、マイクロプロセッサ及びプログラム実行方法 | |
CN101561884B (zh) | 一种可变数据印刷过程中的脚本实现方法及装置 | |
JP2007226784A (ja) | インラインされたメソッドの呼出方法およびそれを用いたジャバ仮想マシン | |
KR101670916B1 (ko) | 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치 | |
US10310871B2 (en) | Non-transitory computer-readable recording medium storing control program, control device and control method | |
JPH01118931A (ja) | プログラム変換方式 | |
JP2009187099A (ja) | 情報処理装置およびプログラム | |
JP3871312B2 (ja) | プログラム変換方法、これを用いたデータ処理装置及びプログラム | |
CN110032433B (zh) | 一种任务执行方法、装置、设备及介质 | |
JP3835764B2 (ja) | プロセッサおよび記録媒体 | |
JP4449799B2 (ja) | データ動的読み込み型テンプレート適用方法および装置 | |
JP2002041310A (ja) | クラス動的バインドシステムおよび方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20080729 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20081016 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20101126 |