JP5109808B2 - Additional executable information generating apparatus, information processing apparatus, and program - Google Patents
Additional executable information generating apparatus, information processing apparatus, and program Download PDFInfo
- Publication number
- JP5109808B2 JP5109808B2 JP2008138109A JP2008138109A JP5109808B2 JP 5109808 B2 JP5109808 B2 JP 5109808B2 JP 2008138109 A JP2008138109 A JP 2008138109A JP 2008138109 A JP2008138109 A JP 2008138109A JP 5109808 B2 JP5109808 B2 JP 5109808B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- call
- instruction
- module
- additional executable
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Description
本発明は、追加実行可能情報生成装置、情報処理装置、及びプログラムに関する。 The present invention relates to an additional executable information generating device, an information processing device, and a program.
ソフトウェアを細分化してモジュールを設定して、モジュール間にまたがってシンボル参照する関係を抽出する。そしてモジュール間参照関係にある被参照モジュールにおいて、他モジュールからシンボル参照される受け入れ参照アドレスを定めたテーブルを定め、かつ受け入れ参照アドレスと自モジュール内のシンボル参照先の実アドレスとを結びつけるベクターテーブル作成部と、他モジュールからの被参照アドレスをベクタテーブルの受け入れ参照アドレスに書き換えるベクタテーブル・シンボル情報作成部とを備えた組み込みソフトウェア開発装置が特許文献1に開示されている。
モジュール内のシンボル参照にかかる負荷を軽減するべく、組み込みソフトウェアではシンボル参照を固定されたアドレス情報で行うもの(絶対アドレスオブジェクトコード)が一般的である。しかし、絶対アドレスオブジェクトコードとする場合、その一部のモジュールに修正を行う場合にも、すべてのモジュールを再度リンクし、当該リンク後のオブジェクトコード全体を記憶媒体に格納してテストを行うなどの必要がある。 In order to reduce the load on symbol reference in a module, embedded software generally performs symbol reference with fixed address information (absolute address object code). However, when making absolute address object code, even when some of the modules are modified, all modules are linked again, and the entire object code after linking is stored in a storage medium for testing. There is a need.
請求項1記載の発明は、追加実行可能情報生成装置であって、記憶媒体に固定されたコンピュータ実行可能な実行情報に含まれる呼び出し対象の識別情報と、その前記記憶媒体内での格納位置とを関連づけて記憶する記憶手段と、前記実行情報に含まれる呼び出し対象を呼び出す処理命令を含む追加実行可能情報を生成する生成手段と、前記実行情報の実行前にコンピュータにより実行される事前実行情報であって、前記実行情報によって呼び出される呼び出し対象に対応する呼び出し対象が、前記追加実行可能情報に含まれる場合に、前記実行情報を書き換えて、前記追加実行可能情報に含まれる、対応する呼び出し対象を呼び出すよう設定させる事前実行情報を生成する事前実行情報生成手段と、を有し、前記生成手段が、前記記憶手段に記憶された情報を参照し、前記生成する追加実行可能情報に、前記実行情報内の呼び出し対象を呼び出す処理命令があるときに、当該処理命令で呼び出される呼び出し対象を呼び出す呼び出し命令要素を生成し、前記処理命令を、対応する前記呼び出し命令要素の格納位置を呼び出す命令に書き換えて、前記呼び出し命令要素とともに出力することとしたものである。
The invention according to
請求項2記載の発明は、プログラムであって、コンピュータを、記憶媒体に固定されたコンピュータ実行可能な実行情報に含まれる呼び出し対象の識別情報と、その前記記憶媒体内での格納位置とを関連づけて記憶する記憶手段と、前記実行情報に含まれる呼び出し対象を呼び出す処理命令を含む追加実行可能情報を生成する生成手段と、前記実行情報の実行前にコンピュータにより実行される事前実行情報であって、前記実行情報によって呼び出される呼び出し対象に対応する呼び出し対象が、前記追加実行可能情報に含まれる場合に、前記実行情報を書き換えて、前記追加実行可能情報に含まれる、対応する呼び出し対象を呼び出すよう設定させる事前実行情報を生成する事前実行情報生成手段と、として機能させ、前記生成手段として機能させる際に、前記記憶手段に記憶された情報を参照し、前記生成する追加実行可能情報に、前記実行情報内の呼び出し対象を呼び出す処理命令があるときに、当該処理命令で呼び出される呼び出し対象を呼び出す呼び出し命令要素を生成し、前記処理命令を、対応する前記呼び出し命令要素の格納位置を呼び出す命令に書き換えて、前記呼び出し命令要素とともに出力させることとしたものである。
The invention described in
請求項1,5記載の発明によると、実行情報の一部のモジュールに修正を行う場合にも、当該修正したモジュールから既に記憶媒体に格納された実行情報の他のモジュール内の呼び出し対象へのアドレスが設定され、すべてのモジュールを再度リンクする必要がなく、当該リンク後のオブジェクトコード全体を記憶媒体に格納しなおす必要もない。 According to the first and fifth aspects of the invention, even when a part of the module of the execution information is corrected, the execution module already stored in the storage medium from the corrected module is transferred to the call target in the other module. An address is set, and it is not necessary to link all modules again, and it is not necessary to store the entire object code after the link in the storage medium.
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る追加実行可能情報生成装置1を図1に例示する。追加実行可能情報生成装置1は、図1に例示するように、制御部11と、記憶部12と、操作部13と、出力部14とを含んで構成される。この追加実行可能情報生成装置1は、また、ディスプレイ等の表示デバイスを含んでも構わない。
Embodiments of the present invention will be described with reference to the drawings. An additional executable
制御部11は、CPU(Central Processing Unit)等のプログラム制御デバイスである。この制御部11は、記憶部12に格納されているプログラムに従って動作する。この制御部11は、プログラムのソースコードをコンパイルしてバイナリコードを生成し、またこのバイナリコードをリンクしてオブジェクトコードを生成して出力する。コンパイルの対象となるソースコードは、記憶部12に格納されており、利用者(プログラマ)は、必要に応じて、ソースコードを書き換える。
The
本実施の形態の追加実行可能情報生成装置1は、複数のモジュールに分けて開発されたソースコードを処理の対象とする。各モジュールのソースコードは個別に生成されるが、相互に内部の関数や変数等を呼び出す。呼び出しの際には、呼び出しの対象である関数や変数などの格納先アドレス(記憶媒体上の格納位置を表す情報)を用いる。すなわち呼び出しの対象が関数であれば、格納先アドレスから格納されている命令列を読みだして処理する。また呼び出しの対象が変数であれば、格納先アドレスに保持されたデータを読み出す。図2に一般的なソースコードのコンパイルからリンクまでの処理の過程を示す。
The additional executable
ソースコード内には、例えば他のモジュールのソースコードに含まれる関数の呼び出し指令(C)が含まれる。追加実行可能情報生成装置1がこのソースコードをコンパイルすると、この指令により呼び出されるべき関数の識別情報(例えば関数名を含む情報)が生成される(D)。
In the source code, for example, a function call command (C) included in the source code of another module is included. When the additional executable
さらに各コンパイル結果をリンクする指示が行われると、追加実行可能情報生成装置1は、呼び出されるべき関数の識別情報を参照し、他のモジュールのコンパイル結果に含まれる、当該識別情報で識別される関数の格納先アドレスを取得する。そして、当該取得した格納先アドレスを呼び出し指令に設定し(E)、処理を完了する。変数等についても同様に処理が行われる。
Further, when an instruction to link each compilation result is given, the additional executable
本実施の形態の追加実行可能情報生成装置1は、事前にコンパイル及びリンクが行われ、記憶媒体に固定されているコンピュータ実行可能な実行情報の元となったソースコード(オリジナルコード)を利用して処理を行う。当該オリジナルコードの一部のモジュールのソースコードに改変が行われたときに、本実施の形態の追加実行可能情報生成装置1の制御部11は、コンパイル及びリンクの指示に従い、次のように処理する。
The additional executable
すなわち制御部11は、改変されたソースコードをコンパイルする。そして制御部11は、リンクの処理として、呼び出されるべき他のモジュールの関数や変数(呼び出し対象)の識別情報がコンパイル結果に含まれている場合、既にリンクされ、格納先アドレスが決定されている、当該呼び出し対象の格納先アドレスの情報を取得する。制御部11は、当該格納先アドレスを含む追加実行可能情報を出力する。この制御部11の処理の内容については、後にさらに詳しく述べる。
That is, the
記憶部12は、RAM(Random Access Memory)などを含んで構成されている。この記憶部12には、制御部11によって実行されるプログラムが保持される。このプログラムは、コンピュータ可読な記録媒体に格納されて提供され、この記憶部12に複写されたものであってもよい。また本実施の形態では、この記憶部12に既に格納されている実行可能情報に含まれる、呼び出し対象の識別情報と、格納先アドレスとを関連づけたテーブル(マップ情報)が保持される(図3)。このテーブルは、制御部11等が実行可能情報とともに生成し、記憶部12に格納したものであってもよい。さらに記憶部12は、制御部11のワークメモリとしても動作する。
The
操作部13は、マウスやキーボードなどを含む。この操作部13は、利用者の操作の内容を制御部11に出力する。利用者はこの操作部13を操作して、ソースコードの修正や、コンパイル/リンクの指示などを行う。
The
出力部14は、ディスプレイやネットワークインタフェース等であり、制御部11から入力される指示に従って情報を出力する。また本実施の形態の出力部14は、制御部11から入力される指示に従い、記憶媒体に対して、実行可能情報や追加実行可能情報を記録するデバイスを含む。
The
情報処理装置2は、図4に例示するように、記憶媒体読み取り部21と、制御部22と、記憶部23と、インタフェース部24と、機能部25とを含んで構成される。ここに記憶媒体読み取り部21は、制御部22からの指示に従ってフラッシュROM(Read Only Memory)等の記憶媒体に格納された実行可能情報や、追加実行可能情報を読み出す。
As illustrated in FIG. 4, the
制御部22は、記憶媒体に格納されている実行可能情報や追加実行可能情報を記憶部23に複写させる。そして当該記憶部23に格納した実行可能情報や追加実行可能情報に従って処理を遂行する。なお、この制御部22は、記憶媒体に格納されている実行可能情報の複写に先立って、事前実行情報(パッチ)として指定されたプログラムに従って前処理を実行してもよい。
The
記憶部23は、RAMなどの記憶素子を含んで構成される。この記憶部23には、記憶媒体から読み出された実行可能情報や、追加実行可能情報が保持される。また、この記憶部23は、制御部22のワークメモリとしても動作する。
The
インタフェース部24は、制御部22から入力される指示に従って、機能部25に対して指示を出力する。また、このインタフェース部24は、機能部25から入力される情報を制御部22に出力する。例えば機能部25は、プリンタエンジンなどであり、制御部22は機能部25に対し、このインタフェース部24を介して画像形成の制御の指示を出力する。
The
次に、本実施の形態の制御部11の動作について述べる。ここでは制御部11が、記憶媒体に格納する実行可能情報を生成する処理を行うものとする。制御部11は、実行可能情報を生成するにあたり、実行可能情報に含めるべきモジュールのソースコードをそれぞれコンパイルし、各コンパイル結果をリンクして、実行可能情報を生成する。既に述べたように、この実行可能情報においては、モジュール間で呼び出し対象となる関数や変数について、その格納先アドレスが明示(ハードコード)されている。例えば図5に示すように、第1モジュールAと、第2モジュールBとを含む実行可能情報を用い、第1モジュールAに含まれる関数 funcA1( ) において、第2モジュールBに含まれる関数 funcB1( ) を呼び出しているものとして説明すると、次のようになる。
Next, operation | movement of the
ソースコードの段階では、funcA1( ) 内には、funcB1( ) がその識別情報(例えば funcB1( ) の名称そのもの)を用いて呼び出しの指示が記述されている。制御部11がこれをコンパイルした後、リンク及び記憶媒体への書き込む段階で、関数 funcB1( ) の実行可能情報部分の格納先アドレス addrB1 を取得する。そして制御部11は、funcA1( ) 内での funcB1( ) の呼び出しを、その格納アドレス addrB1 の呼び出しに書き換える。
At the source code stage, in the funcA1 (), funcB1 () describes a call instruction using its identification information (for example, the name of funcB1 () itself). After the
また本実施の形態では、各モジュールでの呼び出し対象の識別情報(シンボル名)と、その格納先アドレスとを関連づけて記憶部12に格納する。上述の例においては、呼び出し対象である関数 funcB1( ) の識別情報と、その格納先アドレス addrB1 とを関連づけて、図3に例示したようなマップ情報として記憶部12に格納する。
In this embodiment, identification information (symbol name) to be called in each module is stored in the
次に、追加実行可能情報を生成する際の制御部11の動作について説明する。制御部11は、利用者が一部のモジュールのソースコードを書き換えて、コンパイル/リンクの指示を行うと、次の図6に例示する処理を実行する。
Next, the operation of the
すなわち制御部11は、書き換えられたモジュールのソースコードをコンパイルする(S1)。以下の説明では利用者によってソースコードが書き換えられたモジュールを追加対象モジュールと呼び、ソースコードが書き換えられていないモジュール(そのままとするモジュール)を、既存モジュールと呼ぶ。
That is, the
制御部11は、追加対象モジュールから呼び出される呼び出し対象を検索する(S2)。そして制御部11は、記憶部12に保持されているマップ情報を参照して、検索の結果見いだされた各呼び出し対象の識別情報に関連づけられた各格納先アドレスを取得する(S3)。
The
制御部11は、リンクの指示とともに、追加対象モジュールについてのコンパイル結果において、呼び出し対象の呼び出し指示を、処理S3で取得した、対応する格納先アドレスの呼び出し指示に書き換える(S4)。制御部11は、このようにして生成した追加実行可能情報を、書き換え前のモジュールに基づく実行可能情報が記録されている記憶媒体に追記して格納する(S5)。また制御部11は、各追加対象モジュールでの呼び出し対象の識別情報(シンボル名)と、その格納先アドレス(コンパイル結果におけるデータ先頭からの相対的なアドレス、すなわちオフセット値でよい)とを関連づけて、追加実行可能情報に含めて記憶部12に格納しておく。
In addition to the link instruction, the
このとき記憶媒体には、図7(a)に例示するように、書き換え前の実行可能情報(EX)と追加実行可能情報(AEX)とが格納され、追加実行可能情報内から実行可能情報に含まれる関数や、実行可能情報で用いられる変数等が、マップ情報に基づくアドレス情報に従って呼び出されることになる。 At this time, as illustrated in FIG. 7A, executable information (EX) before rewriting and additional executable information (AEX) are stored in the storage medium, and the executable information is added to the executable information from the additional executable information. Functions included, variables used in executable information, and the like are called according to address information based on map information.
さらに本実施の形態では、記憶部23に複写された実行可能情報において、書き換え前のモジュール内の関数や変数等を呼び出す指令が含まれているときに、当該指令を書き換えて、書き換え後のモジュール内の関数や変数を呼び出すようにしてもよい。
Further, in the present embodiment, when the executable information copied to the
このために制御部11は、追加対象モジュールをコンパイル/リンクするときに、図8に示すように、追加対象モジュールにおいて定義されている呼び出し対象(関数や変数等)に対応する、書き換え前のモジュールの呼び出し対象の格納先アドレスをマップ情報から取得する(S11)。
Therefore, when compiling / linking the addition target module, the
また制御部11は、書き換え後の呼び出し対象の格納アドレスを取得するべき旨の指示を書き出し(S12)、さらに書き換え前のモジュールでの呼び出し対象の格納先アドレスを、書き換え後の呼び出し対象の格納アドレスへ書き換える指示を含めて事前実行情報を生成する(S13)。そして制御部11は、この事前実行情報を追加実行可能情報とともに記憶媒体に書き込む(S14)。
Further, the
既に説明したように、情報処理装置2の制御部22は、事前実行情報として指定されたプログラムがあれば、記憶媒体に格納された実行可能情報や追加実行可能情報を記憶部23に複写してから、当該事前実行情報を実行する。これにより制御部22は、書き換えられていないモジュールに対応する実行可能情報内で、追加実行可能情報に含まれる呼び出し対象を呼び出すべき部分について、追加実行可能情報に含まれる呼び出し対象の格納先アドレスを設定する。従って記憶媒体に格納された実行可能情報から追加実行可能情報に定義された関数や変数などの呼び出し対象が呼び出されるようになる(図7(b))。
As described above, if there is a program designated as the pre-execution information, the
なお、この処理において、処理S11では、追加対象モジュールにおいて定義されている関数や変数のすべてについて、格納先アドレスを変更する処理命令を事前実行情報に含める必要はない。すなわち、記憶媒体に格納された実行可能情報、またはその元となったソースコードなどを参照して、追加対象モジュールにおいて定義されている関数や変数等のうち、実際に呼び出されている呼び出し対象についてのみ、格納先アドレスを変更する処理命令を事前実行情報に含めてもよい。 In this process, in the process S11, it is not necessary to include, in the pre-execution information, a processing instruction for changing the storage destination address for all the functions and variables defined in the addition target module. In other words, referring to the executable information stored in the storage medium or the source code that is the source, the call target that is actually called among the functions and variables defined in the addition target module Only the processing instruction for changing the storage destination address may be included in the pre-execution information.
また、追加対象モジュールのソースコード等において、外部のモジュールなどから呼び出されるインタフェースとして規定された呼び出し対象が見いだされる場合は、追加対象モジュールにおいて定義されている関数や変数等のうち、当該呼び出されるインタフェースとして規定された呼び出し対象についてのみ、格納先アドレスを変更する処理命令を事前実行情報に含めてもよい。ここでインタフェースとしての規定された呼び出し対象とは、例えばC言語であればextern宣言が行われている変数や関数であるとしてもよいし、C++言語であればpublicの指定が行われているクラスメソッドやインスタンスであってもよい。さらに、書き換えられたモジュールにおいて定義されるグローバル変数があれば、当該グローバル変数も、その格納先アドレスを書き換え前のモジュールにおける格納先アドレスから、書き換え後のモジュールにおける格納先アドレスへ変更してもよい。 In addition, when a call target defined as an interface to be called from an external module or the like is found in the source code of the addition target module, the interface to be called among the functions and variables defined in the addition target module A processing instruction for changing the storage destination address may be included in the pre-execution information only for the call target defined as Here, the specified call target as an interface may be, for example, a variable or function for which an extern declaration is made in the C language, or a class for which public is designated in the C ++ language. It may be a method or instance. Further, if there is a global variable defined in the rewritten module, the global variable may also be changed from the storage destination address in the module before rewriting to the storage destination address in the module after rewriting. .
本実施の形態の追加実行可能情報生成装置1及び情報処理装置2は、上述の構成を備えるので、次のように動作する。
Since the additional executable
以下では、説明のために、図9に例示するように、モジュールA,Bの2つのモジュールを含む実行可能情報を生成するものとする。ここでモジュールAには、関数 funcA1( ) と、funcA2( ) とが少なくとも定義されている。また、関数 funcA1( ) 内では、モジュールBの関数 funcB1( ) を呼び出し対象として呼び出す命令(図では、call funcB1( )と記載している)が含まれる。 In the following, for the sake of explanation, it is assumed that executable information including two modules A and B is generated as illustrated in FIG. Here, at least a function funcA1 () and funcA2 () are defined in the module A. The function funcA1 () includes an instruction (indicated as call funcB1 () in the figure) that calls the function B of the module B as a call target.
また、モジュールBには、関数 funcB1( ) と、funcB2( ) とが少なくとも定義されている。また、関数 funcB2( ) 内では、モジュールAの関数 funcA2( ) を呼び出し対象として呼び出す命令(図では、call funcA2( )と記載している)が含まれる。 Module B defines at least functions funcB1 () and funcB2 (). The function funcB2 () includes an instruction for calling the function funcA2 () of the module A as a call target (denoted as call funcA2 () in the figure).
これらのモジュールについてコンパイル及びリンクの指示が行われると、追加実行可能情報生成装置1は、各呼び出し対象の格納先アドレスが規定された実行可能情報を生成する(S21)とともに、呼び出し対象を識別する情報(シンボル)と、その格納先アドレスとを関連づけたマップ情報を生成する(S22)。
When compiling and linking instructions are given for these modules, the additional executable
ここで実行可能情報は、記憶媒体に格納されて情報処理装置2での実行処理に供される。この実行可能情報では、モジュールA内の関数 funcA1( ) に相当する処理命令列において、モジュールBの関数 funcB1( ) を呼び出す命令が含まれているが、当該命令はその呼び出し対象である関数 funcB1( ) に相当する処理命令列の格納先アドレス(addrB1)を呼び出す命令に設定されている。また、モジュールB内の関数 funcB2( ) に相当する処理命令列において、モジュールAの関数 funcA2( ) を呼び出す命令が含まれているが、当該命令はその呼び出し対象である関数 funcA2( ) に相当する処理命令列の格納先アドレス(addrA2)を呼び出す命令に設定されている。
Here, the executable information is stored in a storage medium and used for execution processing in the
従って情報処理装置2では、例えば関数 funcA1( ) に相当する処理命令列を処理しているときに、モジュールB内の関数 funcB1( ) を呼び出す指示として、格納先アドレス addrB1 を呼び出すべき命令に出会うと、addrB1 以下に格納されている命令列の処理を行うこととなる。
Therefore, in the
一方、利用者が、モジュールAを書き換えてモジュールA′を生成する。このモジュールA′では、書き換え前のモジュールAに含まれる呼び出し対象と同じ呼び出し対象が含まれるものとする。利用者の指示により、追加実行可能情報生成装置1がこのモジュールA′のコンパイル/リンクを行う。このとき、追加実行可能情報生成装置1は、マップ情報を参照して、モジュールA内の関数 funcA1( ) に相当する処理命令列において、モジュールBの関数 funcB1( ) を呼び出す命令を、その格納先アドレスを呼び出す命令(シンボル funcB1 に関連づけられたアドレス addrB1 を呼び出す命令)に置き換える(S23)。
On the other hand, the user rewrites module A to generate module A ′. This module A ′ is assumed to include the same call target as the call target included in the module A before rewriting. The additional executable
このようにして生成された書き換え後のモジュールA′のコンパイル/リンクの結果は、追加実行可能情報として記録される。そしてその格納先アドレスは、例えば関数 funcA1( ) が、addrA1'に、関数 funcA2( ) が addrA2' に…というように、書き換え前のモジュールAにおいて対応する関数の格納先アドレスとは異なっている。なお、これらの格納先アドレスは、情報処理装置2において、追加実行可能情報が読み出されたときに決定される。
The result of compiling / linking the module A ′ after rewriting generated in this way is recorded as additional executable information. The storage destination address is different from the storage destination address of the corresponding function in the module A before rewriting, for example, the function funcA1 () is addedrA1 ′, the function funcA2 () is addrA2 ′, and so on. These storage destination addresses are determined when the additional executable information is read out in the
追加実行可能情報生成装置1は、そこで、書き換え後のモジュールA′における関数の格納先アドレスを取得し、書き換え前のモジュールAにおいて対応する関数の格納先アドレスを、書き換え後のモジュールA′において対応する関数の格納先アドレスへ書き換える指示命令列を事前実行情報として生成する(S24)。なお、これら追加実行可能情報と、事前実行情報とは、例えば元の実行可能情報と同じ記憶媒体に格納される。
Therefore, the additional executable
なお、この事前実行情報は、インデックスと、書き換え前のモジュールでの対応する呼び出し対象の格納先アドレス(旧アドレス)と、書き換え後のモジュールでの対応する呼び出し対象の格納先アドレス(新アドレス)とを関連づけるテーブルと、インデックスをキーとして、インデックスをインクリメントしつつ、キーとなっているインデックスに関連づけられた旧アドレスを新アドレスに書き換える処理を行うプログラムとを含むものであってもよい。 This pre-execution information includes an index, a corresponding storage target address (old address) in the module before rewriting, and a corresponding storage target address (new address) in the rewritten module. And a program that performs a process of rewriting the old address associated with the key index to the new address while incrementing the index using the index as a key.
情報処理装置2は、記憶媒体から実行可能情報と追加実行可能情報とを読み出して、ワークメモリへ記録する。すなわち情報処理装置2は、記憶媒体から、まず実行可能情報を読み出して、ワークメモリの予め定められたアドレス以降へ記録する。また、情報処理装置2は、追加実行可能情報を読み出して、ワークメモリの空き領域に記録する。このとき情報処理装置2は、ワークメモリに格納した追加実行情報に含まれる書き換え後のモジュール内の関数について、追加実行情報の記録開始アドレスを、追加実行情報に含まれている、各関数のオフセット(先頭アドレスからの相対アドレス)にそれぞれ加算して、各関数の実際の格納先アドレスを得る。
The
そして情報処理装置2は、書き換え後のモジュール内の各関数について、実際の格納先アドレスを記憶する。その後、情報処理装置2は、当該ワークメモリへ記録した実行可能情報や追加実行可能情報の処理を開始するが、当該実行に先立って事前実行情報の処理を行う。この処理において情報処理装置2は、先に記録した書き換え後のモジュールA′における各関数の格納先アドレスの情報を参照し、実行可能情報中、書き換えられていないモジュールBの関数 funcB2( ) に対応する処理命令列において、関数 funcA2( ) を呼び出す指示(元は、addrA2 を呼び出す指示)を、書き換え後のモジュールA′における関数funcA2( ) を呼び出す指示(例えば当該関数の格納先のアドレスであるaddrA2'を呼び出す指示)に書き換える(S25)。
The
従って情報処理装置2では、モジュールA′に相当する処理においては、addrB1を呼び出すようになっていることで、実行可能情報に含まれる、書き換え前のモジュールBの関数 funcB1( ) に相当する処理命令列を実行することとなる。また、書き換え前のモジュールBからモジュールAに代えてモジュールA′内の関数funcA2( ) を、その格納先アドレス addrA2' を呼び出すことによって実行することとなる。
Therefore, in the
なおここでは、追加実行可能情報を生成する際に、マップ情報を参照して、コンパイル/リンクの結果において、直接、呼び出し対象の格納先アドレスを呼び出すよう、命令を記述しているが、本実施の形態はこれに限られない。 Here, when generating additional executable information, the instruction is described so that the storage destination address of the call target is directly called in the result of compilation / link with reference to the map information. The form of is not limited to this.
例えば、本実施の形態の追加実行可能情報生成装置1は、次のように動作してもよい。すなわち、追加実行可能情報生成装置1は、追加実行可能情報を生成する際に、他のモジュール内の呼び出し対象を呼び出す命令があると、その格納先アドレス(マップ情報から取得する)を呼び出す命令(例えば格納先アドレスへジャンプする命令)を記述した命令要素を生成する。これを各呼び出し命令について生成して、呼び出し命令要素群(ジャンプテーブル)を生成する。
For example, the additional executable
追加実行可能情報生成装置1は、この呼び出し命令要素群と、コンパイルの結果とを合成して、追加実行可能情報とする(図10)。この場合、追加実行可能情報内で、呼び出し対象を呼び出す命令は、対応する呼び出し命令要素へのジャンプ命令を含むものとなる。この場合、例えばモジュールA′の関数 funcA1( ) において、モジュールBの関数 funcB1( ) を呼び出す呼び出し命令要素、「call addrB1」が、マップ情報を参照して生成される。そしてこの呼び出し命令要素は格納先アドレス addrCallB1 に格納されるとする。
The additional executable
この場合、モジュールA′において、モジュールBの関数 funcB1( ) を呼び出す命令は、すべて、funcB1( ) を呼び出す呼び出し命令要素が格納されている格納先アドレス addrCallB1 を呼び出すものに書き換えられる。 In this case, in the module A ′, all the instructions for calling the function funcB1 () of the module B are rewritten to call the storage destination address addrCallB1 in which the call instruction element for calling the funcB1 () is stored.
従って情報処理装置2では、呼び出し命令要素群つきの追加実行可能情報が記録されているときには、呼び出し命令要素を呼び出す命令に従って呼び出し命令要素を実行し、当該実行した呼び出し命令要素によって他のモジュールの呼び出し対象を呼び出す。このようにした場合は、かかる呼び出し命令要素群を含まない実行可能情報と、呼び出し命令要素群を含む追加実行可能情報とが共存することとなる。
Therefore, in the
また、ここまでの説明では、追加実行可能情報や事前実行情報が実行可能情報とともに記録されている場合、情報処理装置2が特段の判断を行うことなく、事前実行情報を実行したり、追加実行可能情報を読み込むこととしていたが、情報処理装置2は、例えば実行可能情報や追加実行可能情報にバージョン情報などのモジュール識別情報が含まれる場合、当該モジュール識別情報を参照し、追加実行可能情報に含まれる、各モジュールに対応する部分のうち、実行可能情報に含まれるモジュール識別情報を含まないものについては、読み込みを行わないこととしてもよい。
In addition, in the above description, when additional executable information and pre-execution information are recorded together with executable information, the
さらに追加実行可能情報や事前実行情報が実行可能情報とともに記録されている場合に、利用者の明示的な指示なく、事前実行情報を実行したり、追加実行可能情報を読み込むか、あるいは利用者の明示的な指示を受けるまで、事前実行情報を実行せず、追加実行可能情報を読み込まないようにするかを、情報処理装置2に予め設定しておいてもよい。この設定は、情報処理装置2の電源断によって揮発しない記憶手段に格納されてもよい。
Furthermore, if additional executable information and pre-execution information are recorded together with executable information, the pre-execution information is executed, the additional executable information is read, or the user's It may be set in advance in the
本実施の形態によると、追加実行可能情報と実行可能情報のうち書き換えられていないモジュールとが関連づけられるので、テストを行う際などに、すべてのモジュールを再度リンクし、当該リンク後のオブジェクトコード全体を記憶媒体に格納する必要がない。 According to the present embodiment, the additional executable information is associated with the module that has not been rewritten among the executable information. Therefore, when performing a test, all the modules are linked again, and the entire object code after the link is performed. Need not be stored in the storage medium.
1 追加実行可能情報生成装置、2 情報処理装置、11,22 制御部、12,23 記憶部、13 操作部、14 出力部、24 インタフェース部、25 機能部。
DESCRIPTION OF
Claims (2)
前記実行情報に含まれる呼び出し対象を呼び出す処理命令を含む追加実行可能情報を生成する生成手段と、
前記実行情報の実行前にコンピュータにより実行される事前実行情報であって、前記実行情報によって呼び出される呼び出し対象に対応する呼び出し対象が、前記追加実行可能情報に含まれる場合に、前記実行情報を書き換えて、前記追加実行可能情報に含まれる、対応する呼び出し対象を呼び出すよう設定させる事前実行情報を生成する事前実行情報生成手段と、を有し、
前記生成手段が、
前記記憶手段に記憶された情報を参照し、前記生成する追加実行可能情報に、前記実行情報内の呼び出し対象を呼び出す処理命令があるときに、当該処理命令で呼び出される呼び出し対象を呼び出す呼び出し命令要素を生成し、前記処理命令を、対応する前記呼び出し命令要素の格納位置を呼び出す命令に書き換えて、前記呼び出し命令要素とともに出力する追加実行可能情報生成装置。 Storage means for associating and storing identification information of a call target included in computer-executable execution information fixed to a storage medium and a storage position in the storage medium;
Generating means for generating additional executable information including a processing instruction for calling a call target included in the execution information;
The execution information is rewritten when pre-execution information executed by a computer before execution of the execution information and the call target corresponding to the call target called by the execution information is included in the additional executable information And pre-execution information generation means for generating pre-execution information for setting to call the corresponding call target included in the additional executable information,
The generating means is
A call instruction element that refers to the information stored in the storage unit and calls the call target called by the processing instruction when the additional executable information to be generated includes a processing instruction that calls the call target in the execution information. Is generated, and the processing instruction is rewritten to an instruction for calling the storage position of the corresponding call instruction element, and is output together with the call instruction element.
記憶媒体に固定されたコンピュータ実行可能な実行情報に含まれる呼び出し対象の識別情報と、その前記記憶媒体内での格納位置とを関連づけて記憶する記憶手段と、 Storage means for associating and storing identification information of a call target included in computer-executable execution information fixed to a storage medium and a storage position in the storage medium;
前記実行情報に含まれる呼び出し対象を呼び出す処理命令を含む追加実行可能情報を生成する生成手段と、 Generating means for generating additional executable information including a processing instruction for calling a call target included in the execution information;
前記実行情報の実行前にコンピュータにより実行される事前実行情報であって、前記実行情報によって呼び出される呼び出し対象に対応する呼び出し対象が、前記追加実行可能情報に含まれる場合に、前記実行情報を書き換えて、前記追加実行可能情報に含まれる、対応する呼び出し対象を呼び出すよう設定させる事前実行情報を生成する事前実行情報生成手段と、として機能させ、 The execution information is rewritten when pre-execution information executed by a computer before execution of the execution information and the call target corresponding to the call target called by the execution information is included in the additional executable information A pre-execution information generating means for generating pre-execution information for setting to call the corresponding call target included in the additional executable information,
前記生成手段として機能させる際に、前記記憶手段に記憶された情報を参照し、前記生成する追加実行可能情報に、前記実行情報内の呼び出し対象を呼び出す処理命令があるときに、当該処理命令で呼び出される呼び出し対象を呼び出す呼び出し命令要素を生成し、前記処理命令を、対応する前記呼び出し命令要素の格納位置を呼び出す命令に書き換えて、前記呼び出し命令要素とともに出力させるプログラム。 When functioning as the generation means, the information stored in the storage means is referred to. When the additional executable information to be generated includes a processing instruction for calling a call target in the execution information, the processing instruction A program that generates a call instruction element that calls a call target to be called, rewrites the processing instruction into an instruction that calls a storage position of the corresponding call instruction element, and outputs the instruction together with the call instruction element.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008138109A JP5109808B2 (en) | 2008-05-27 | 2008-05-27 | Additional executable information generating apparatus, information processing apparatus, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008138109A JP5109808B2 (en) | 2008-05-27 | 2008-05-27 | Additional executable information generating apparatus, information processing apparatus, and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009288858A JP2009288858A (en) | 2009-12-10 |
JP5109808B2 true JP5109808B2 (en) | 2012-12-26 |
Family
ID=41458046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008138109A Expired - Fee Related JP5109808B2 (en) | 2008-05-27 | 2008-05-27 | Additional executable information generating apparatus, information processing apparatus, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5109808B2 (en) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62224825A (en) * | 1986-03-26 | 1987-10-02 | Nec Corp | Program correcting system |
JPH01205332A (en) * | 1988-02-12 | 1989-08-17 | Nec Corp | Linkage editor system |
JPH01237832A (en) * | 1988-03-18 | 1989-09-22 | Fujitsu Ltd | Program linkage system |
JPH02309419A (en) * | 1989-05-24 | 1990-12-25 | Nec Corp | Static link system for correcting object module |
JPH06110678A (en) * | 1992-09-30 | 1994-04-22 | Toshiba Corp | Program execution system and dynamic change method for execution program |
JPH06236264A (en) * | 1993-02-08 | 1994-08-23 | Nec Software Ltd | Load module generating system |
JPH06266539A (en) * | 1993-03-17 | 1994-09-22 | Toshiba Corp | Method and device for link suitable for preparation for load module for debugging |
JPH07110758A (en) * | 1993-10-12 | 1995-04-25 | Nec Corp | Compiling/linking system for program |
JPH11184680A (en) * | 1997-12-24 | 1999-07-09 | Fujitsu Ltd | File editing method, method and device for developing program using the same, and storage medium |
JP3682050B2 (en) * | 2002-10-15 | 2005-08-10 | 三菱電機株式会社 | Embedded software development equipment |
-
2008
- 2008-05-27 JP JP2008138109A patent/JP5109808B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2009288858A (en) | 2009-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11579856B2 (en) | Multi-chip compatible compiling method and device | |
US20080127113A1 (en) | Method and system for implementing watchpoints | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
JP2011028648A (en) | System and method for generating object code | |
JP2008276735A (en) | Program code converter and program code conversion method | |
JP2009104252A (en) | Debugging support device and debugging support method | |
JP6597356B2 (en) | Control program, control device, and control method | |
KR0125605B1 (en) | Method and device for verifying operation of machine language program | |
JP5109808B2 (en) | Additional executable information generating apparatus, information processing apparatus, and program | |
JP2009048259A (en) | Program conversion method and program for conversion | |
JP6720993B2 (en) | Support devices and programs | |
JP5906609B2 (en) | Debug support program, debug support method, and debug support system | |
JP2002055848A (en) | Program execution procedure and storage medium with the program execution procedure stored therein | |
KR101548960B1 (en) | Method for making and debuging program using virtual platform and appparatus therof | |
JP2021103354A (en) | Program testing method | |
JP3682050B2 (en) | Embedded software development equipment | |
JP4594704B2 (en) | Program development support system, program and recording medium | |
JP2002082811A (en) | Compiling method and recording medium | |
JP2002259121A (en) | Source line debagging device | |
JP2009098963A (en) | Automatic module generation system | |
JP2008071065A (en) | Compile device, method, program and storage medium for performing in-line expansion | |
JP6898556B2 (en) | Information processing equipment, compilation method and compilation program | |
JP6447358B2 (en) | Source code generation program, source code generation method, and computer | |
JP2024118113A (en) | Compiler dependency extraction device and source code analysis system | |
JPH09274570A (en) | Compile method and compiler system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120403 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120601 |
|
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: 20120911 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120924 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151019 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |