JP5109808B2 - 追加実行可能情報生成装置、情報処理装置、及びプログラム - Google Patents

追加実行可能情報生成装置、情報処理装置、及びプログラム Download PDF

Info

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
Application number
JP2008138109A
Other languages
English (en)
Other versions
JP2009288858A (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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2008138109A priority Critical patent/JP5109808B2/ja
Publication of JP2009288858A publication Critical patent/JP2009288858A/ja
Application granted granted Critical
Publication of JP5109808B2 publication Critical patent/JP5109808B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明は、追加実行可能情報生成装置、情報処理装置、及びプログラムに関する。
ソフトウェアを細分化してモジュールを設定して、モジュール間にまたがってシンボル参照する関係を抽出する。そしてモジュール間参照関係にある被参照モジュールにおいて、他モジュールからシンボル参照される受け入れ参照アドレスを定めたテーブルを定め、かつ受け入れ参照アドレスと自モジュール内のシンボル参照先の実アドレスとを結びつけるベクターテーブル作成部と、他モジュールからの被参照アドレスをベクタテーブルの受け入れ参照アドレスに書き換えるベクタテーブル・シンボル情報作成部とを備えた組み込みソフトウェア開発装置が特許文献1に開示されている。
特開2004−192604号公報
モジュール内のシンボル参照にかかる負荷を軽減するべく、組み込みソフトウェアではシンボル参照を固定されたアドレス情報で行うもの(絶対アドレスオブジェクトコード)が一般的である。しかし、絶対アドレスオブジェクトコードとする場合、その一部のモジュールに修正を行う場合にも、すべてのモジュールを再度リンクし、当該リンク後のオブジェクトコード全体を記憶媒体に格納してテストを行うなどの必要がある。
請求項1記載の発明は、追加実行可能情報生成装置であって、記憶媒体に固定されたコンピュータ実行可能な実行情報に含まれる呼び出し対象の識別情報と、その前記記憶媒体内での格納位置とを関連づけて記憶する記憶手段と、前記実行情報に含まれる呼び出し対象を呼び出す処理命令を含む追加実行可能情報を生成する生成手段と、前記実行情報の実行前にコンピュータにより実行される事前実行情報であって、前記実行情報によって呼び出される呼び出し対象に対応する呼び出し対象が、前記追加実行可能情報に含まれる場合に、前記実行情報を書き換えて、前記追加実行可能情報に含まれる、対応する呼び出し対象を呼び出すよう設定させる事前実行情報を生成する事前実行情報生成手段と、を有し、前記生成手段が、前記記憶手段に記憶された情報を参照し、前記生成する追加実行可能情報に、前記実行情報内の呼び出し対象を呼び出す処理命令があるときに、当該処理命令で呼び出される呼び出し対象を呼び出す呼び出し命令要素を生成し、前記処理命令を、対応する前記呼び出し命令要素の格納位置を呼び出す命令に書き換えて、前記呼び出し命令要素とともに出力することとしたものである。
請求項2記載の発明は、プログラムであって、コンピュータを、記憶媒体に固定されたコンピュータ実行可能な実行情報に含まれる呼び出し対象の識別情報と、その前記記憶媒体内での格納位置とを関連づけて記憶する記憶手段と、前記実行情報に含まれる呼び出し対象を呼び出す処理命令を含む追加実行可能情報を生成する生成手段と、前記実行情報の実行前にコンピュータにより実行される事前実行情報であって、前記実行情報によって呼び出される呼び出し対象に対応する呼び出し対象が、前記追加実行可能情報に含まれる場合に、前記実行情報を書き換えて、前記追加実行可能情報に含まれる、対応する呼び出し対象を呼び出すよう設定させる事前実行情報を生成する事前実行情報生成手段と、として機能させ、前記生成手段として機能させる際に、前記記憶手段に記憶された情報を参照し、前記生成する追加実行可能情報に、前記実行情報内の呼び出し対象を呼び出す処理命令があるときに、当該処理命令で呼び出される呼び出し対象を呼び出す呼び出し命令要素を生成し、前記処理命令を、対応する前記呼び出し命令要素の格納位置を呼び出す命令に書き換えて、前記呼び出し命令要素とともに出力させることとしたものである。
請求項1,5記載の発明によると、実行情報の一部のモジュールに修正を行う場合にも、当該修正したモジュールから既に記憶媒体に格納された実行情報の他のモジュール内の呼び出し対象へのアドレスが設定され、すべてのモジュールを再度リンクする必要がなく、当該リンク後のオブジェクトコード全体を記憶媒体に格納しなおす必要もない。
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る追加実行可能情報生成装置1を図1に例示する。追加実行可能情報生成装置1は、図1に例示するように、制御部11と、記憶部12と、操作部13と、出力部14とを含んで構成される。この追加実行可能情報生成装置1は、また、ディスプレイ等の表示デバイスを含んでも構わない。
制御部11は、CPU(Central Processing Unit)等のプログラム制御デバイスである。この制御部11は、記憶部12に格納されているプログラムに従って動作する。この制御部11は、プログラムのソースコードをコンパイルしてバイナリコードを生成し、またこのバイナリコードをリンクしてオブジェクトコードを生成して出力する。コンパイルの対象となるソースコードは、記憶部12に格納されており、利用者(プログラマ)は、必要に応じて、ソースコードを書き換える。
本実施の形態の追加実行可能情報生成装置1は、複数のモジュールに分けて開発されたソースコードを処理の対象とする。各モジュールのソースコードは個別に生成されるが、相互に内部の関数や変数等を呼び出す。呼び出しの際には、呼び出しの対象である関数や変数などの格納先アドレス(記憶媒体上の格納位置を表す情報)を用いる。すなわち呼び出しの対象が関数であれば、格納先アドレスから格納されている命令列を読みだして処理する。また呼び出しの対象が変数であれば、格納先アドレスに保持されたデータを読み出す。図2に一般的なソースコードのコンパイルからリンクまでの処理の過程を示す。
ソースコード内には、例えば他のモジュールのソースコードに含まれる関数の呼び出し指令(C)が含まれる。追加実行可能情報生成装置1がこのソースコードをコンパイルすると、この指令により呼び出されるべき関数の識別情報(例えば関数名を含む情報)が生成される(D)。
さらに各コンパイル結果をリンクする指示が行われると、追加実行可能情報生成装置1は、呼び出されるべき関数の識別情報を参照し、他のモジュールのコンパイル結果に含まれる、当該識別情報で識別される関数の格納先アドレスを取得する。そして、当該取得した格納先アドレスを呼び出し指令に設定し(E)、処理を完了する。変数等についても同様に処理が行われる。
本実施の形態の追加実行可能情報生成装置1は、事前にコンパイル及びリンクが行われ、記憶媒体に固定されているコンピュータ実行可能な実行情報の元となったソースコード(オリジナルコード)を利用して処理を行う。当該オリジナルコードの一部のモジュールのソースコードに改変が行われたときに、本実施の形態の追加実行可能情報生成装置1の制御部11は、コンパイル及びリンクの指示に従い、次のように処理する。
すなわち制御部11は、改変されたソースコードをコンパイルする。そして制御部11は、リンクの処理として、呼び出されるべき他のモジュールの関数や変数(呼び出し対象)の識別情報がコンパイル結果に含まれている場合、既にリンクされ、格納先アドレスが決定されている、当該呼び出し対象の格納先アドレスの情報を取得する。制御部11は、当該格納先アドレスを含む追加実行可能情報を出力する。この制御部11の処理の内容については、後にさらに詳しく述べる。
記憶部12は、RAM(Random Access Memory)などを含んで構成されている。この記憶部12には、制御部11によって実行されるプログラムが保持される。このプログラムは、コンピュータ可読な記録媒体に格納されて提供され、この記憶部12に複写されたものであってもよい。また本実施の形態では、この記憶部12に既に格納されている実行可能情報に含まれる、呼び出し対象の識別情報と、格納先アドレスとを関連づけたテーブル(マップ情報)が保持される(図3)。このテーブルは、制御部11等が実行可能情報とともに生成し、記憶部12に格納したものであってもよい。さらに記憶部12は、制御部11のワークメモリとしても動作する。
操作部13は、マウスやキーボードなどを含む。この操作部13は、利用者の操作の内容を制御部11に出力する。利用者はこの操作部13を操作して、ソースコードの修正や、コンパイル/リンクの指示などを行う。
出力部14は、ディスプレイやネットワークインタフェース等であり、制御部11から入力される指示に従って情報を出力する。また本実施の形態の出力部14は、制御部11から入力される指示に従い、記憶媒体に対して、実行可能情報や追加実行可能情報を記録するデバイスを含む。
情報処理装置2は、図4に例示するように、記憶媒体読み取り部21と、制御部22と、記憶部23と、インタフェース部24と、機能部25とを含んで構成される。ここに記憶媒体読み取り部21は、制御部22からの指示に従ってフラッシュROM(Read Only Memory)等の記憶媒体に格納された実行可能情報や、追加実行可能情報を読み出す。
制御部22は、記憶媒体に格納されている実行可能情報や追加実行可能情報を記憶部23に複写させる。そして当該記憶部23に格納した実行可能情報や追加実行可能情報に従って処理を遂行する。なお、この制御部22は、記憶媒体に格納されている実行可能情報の複写に先立って、事前実行情報(パッチ)として指定されたプログラムに従って前処理を実行してもよい。
記憶部23は、RAMなどの記憶素子を含んで構成される。この記憶部23には、記憶媒体から読み出された実行可能情報や、追加実行可能情報が保持される。また、この記憶部23は、制御部22のワークメモリとしても動作する。
インタフェース部24は、制御部22から入力される指示に従って、機能部25に対して指示を出力する。また、このインタフェース部24は、機能部25から入力される情報を制御部22に出力する。例えば機能部25は、プリンタエンジンなどであり、制御部22は機能部25に対し、このインタフェース部24を介して画像形成の制御の指示を出力する。
次に、本実施の形態の制御部11の動作について述べる。ここでは制御部11が、記憶媒体に格納する実行可能情報を生成する処理を行うものとする。制御部11は、実行可能情報を生成するにあたり、実行可能情報に含めるべきモジュールのソースコードをそれぞれコンパイルし、各コンパイル結果をリンクして、実行可能情報を生成する。既に述べたように、この実行可能情報においては、モジュール間で呼び出し対象となる関数や変数について、その格納先アドレスが明示(ハードコード)されている。例えば図5に示すように、第1モジュールAと、第2モジュールBとを含む実行可能情報を用い、第1モジュールAに含まれる関数 funcA1( ) において、第2モジュールBに含まれる関数 funcB1( ) を呼び出しているものとして説明すると、次のようになる。
ソースコードの段階では、funcA1( ) 内には、funcB1( ) がその識別情報(例えば funcB1( ) の名称そのもの)を用いて呼び出しの指示が記述されている。制御部11がこれをコンパイルした後、リンク及び記憶媒体への書き込む段階で、関数 funcB1( ) の実行可能情報部分の格納先アドレス addrB1 を取得する。そして制御部11は、funcA1( ) 内での funcB1( ) の呼び出しを、その格納アドレス addrB1 の呼び出しに書き換える。
また本実施の形態では、各モジュールでの呼び出し対象の識別情報(シンボル名)と、その格納先アドレスとを関連づけて記憶部12に格納する。上述の例においては、呼び出し対象である関数 funcB1( ) の識別情報と、その格納先アドレス addrB1 とを関連づけて、図3に例示したようなマップ情報として記憶部12に格納する。
次に、追加実行可能情報を生成する際の制御部11の動作について説明する。制御部11は、利用者が一部のモジュールのソースコードを書き換えて、コンパイル/リンクの指示を行うと、次の図6に例示する処理を実行する。
すなわち制御部11は、書き換えられたモジュールのソースコードをコンパイルする(S1)。以下の説明では利用者によってソースコードが書き換えられたモジュールを追加対象モジュールと呼び、ソースコードが書き換えられていないモジュール(そのままとするモジュール)を、既存モジュールと呼ぶ。
制御部11は、追加対象モジュールから呼び出される呼び出し対象を検索する(S2)。そして制御部11は、記憶部12に保持されているマップ情報を参照して、検索の結果見いだされた各呼び出し対象の識別情報に関連づけられた各格納先アドレスを取得する(S3)。
制御部11は、リンクの指示とともに、追加対象モジュールについてのコンパイル結果において、呼び出し対象の呼び出し指示を、処理S3で取得した、対応する格納先アドレスの呼び出し指示に書き換える(S4)。制御部11は、このようにして生成した追加実行可能情報を、書き換え前のモジュールに基づく実行可能情報が記録されている記憶媒体に追記して格納する(S5)。また制御部11は、各追加対象モジュールでの呼び出し対象の識別情報(シンボル名)と、その格納先アドレス(コンパイル結果におけるデータ先頭からの相対的なアドレス、すなわちオフセット値でよい)とを関連づけて、追加実行可能情報に含めて記憶部12に格納しておく。
このとき記憶媒体には、図7(a)に例示するように、書き換え前の実行可能情報(EX)と追加実行可能情報(AEX)とが格納され、追加実行可能情報内から実行可能情報に含まれる関数や、実行可能情報で用いられる変数等が、マップ情報に基づくアドレス情報に従って呼び出されることになる。
さらに本実施の形態では、記憶部23に複写された実行可能情報において、書き換え前のモジュール内の関数や変数等を呼び出す指令が含まれているときに、当該指令を書き換えて、書き換え後のモジュール内の関数や変数を呼び出すようにしてもよい。
このために制御部11は、追加対象モジュールをコンパイル/リンクするときに、図8に示すように、追加対象モジュールにおいて定義されている呼び出し対象(関数や変数等)に対応する、書き換え前のモジュールの呼び出し対象の格納先アドレスをマップ情報から取得する(S11)。
また制御部11は、書き換え後の呼び出し対象の格納アドレスを取得するべき旨の指示を書き出し(S12)、さらに書き換え前のモジュールでの呼び出し対象の格納先アドレスを、書き換え後の呼び出し対象の格納アドレスへ書き換える指示を含めて事前実行情報を生成する(S13)。そして制御部11は、この事前実行情報を追加実行可能情報とともに記憶媒体に書き込む(S14)。
既に説明したように、情報処理装置2の制御部22は、事前実行情報として指定されたプログラムがあれば、記憶媒体に格納された実行可能情報や追加実行可能情報を記憶部23に複写してから、当該事前実行情報を実行する。これにより制御部22は、書き換えられていないモジュールに対応する実行可能情報内で、追加実行可能情報に含まれる呼び出し対象を呼び出すべき部分について、追加実行可能情報に含まれる呼び出し対象の格納先アドレスを設定する。従って記憶媒体に格納された実行可能情報から追加実行可能情報に定義された関数や変数などの呼び出し対象が呼び出されるようになる(図7(b))。
なお、この処理において、処理S11では、追加対象モジュールにおいて定義されている関数や変数のすべてについて、格納先アドレスを変更する処理命令を事前実行情報に含める必要はない。すなわち、記憶媒体に格納された実行可能情報、またはその元となったソースコードなどを参照して、追加対象モジュールにおいて定義されている関数や変数等のうち、実際に呼び出されている呼び出し対象についてのみ、格納先アドレスを変更する処理命令を事前実行情報に含めてもよい。
また、追加対象モジュールのソースコード等において、外部のモジュールなどから呼び出されるインタフェースとして規定された呼び出し対象が見いだされる場合は、追加対象モジュールにおいて定義されている関数や変数等のうち、当該呼び出されるインタフェースとして規定された呼び出し対象についてのみ、格納先アドレスを変更する処理命令を事前実行情報に含めてもよい。ここでインタフェースとしての規定された呼び出し対象とは、例えばC言語であればextern宣言が行われている変数や関数であるとしてもよいし、C++言語であればpublicの指定が行われているクラスメソッドやインスタンスであってもよい。さらに、書き換えられたモジュールにおいて定義されるグローバル変数があれば、当該グローバル変数も、その格納先アドレスを書き換え前のモジュールにおける格納先アドレスから、書き換え後のモジュールにおける格納先アドレスへ変更してもよい。
本実施の形態の追加実行可能情報生成装置1及び情報処理装置2は、上述の構成を備えるので、次のように動作する。
以下では、説明のために、図9に例示するように、モジュールA,Bの2つのモジュールを含む実行可能情報を生成するものとする。ここでモジュールAには、関数 funcA1( ) と、funcA2( ) とが少なくとも定義されている。また、関数 funcA1( ) 内では、モジュールBの関数 funcB1( ) を呼び出し対象として呼び出す命令(図では、call funcB1( )と記載している)が含まれる。
また、モジュールBには、関数 funcB1( ) と、funcB2( ) とが少なくとも定義されている。また、関数 funcB2( ) 内では、モジュールAの関数 funcA2( ) を呼び出し対象として呼び出す命令(図では、call funcA2( )と記載している)が含まれる。
これらのモジュールについてコンパイル及びリンクの指示が行われると、追加実行可能情報生成装置1は、各呼び出し対象の格納先アドレスが規定された実行可能情報を生成する(S21)とともに、呼び出し対象を識別する情報(シンボル)と、その格納先アドレスとを関連づけたマップ情報を生成する(S22)。
ここで実行可能情報は、記憶媒体に格納されて情報処理装置2での実行処理に供される。この実行可能情報では、モジュールA内の関数 funcA1( ) に相当する処理命令列において、モジュールBの関数 funcB1( ) を呼び出す命令が含まれているが、当該命令はその呼び出し対象である関数 funcB1( ) に相当する処理命令列の格納先アドレス(addrB1)を呼び出す命令に設定されている。また、モジュールB内の関数 funcB2( ) に相当する処理命令列において、モジュールAの関数 funcA2( ) を呼び出す命令が含まれているが、当該命令はその呼び出し対象である関数 funcA2( ) に相当する処理命令列の格納先アドレス(addrA2)を呼び出す命令に設定されている。
従って情報処理装置2では、例えば関数 funcA1( ) に相当する処理命令列を処理しているときに、モジュールB内の関数 funcB1( ) を呼び出す指示として、格納先アドレス addrB1 を呼び出すべき命令に出会うと、addrB1 以下に格納されている命令列の処理を行うこととなる。
一方、利用者が、モジュールAを書き換えてモジュールA′を生成する。このモジュールA′では、書き換え前のモジュールAに含まれる呼び出し対象と同じ呼び出し対象が含まれるものとする。利用者の指示により、追加実行可能情報生成装置1がこのモジュールA′のコンパイル/リンクを行う。このとき、追加実行可能情報生成装置1は、マップ情報を参照して、モジュールA内の関数 funcA1( ) に相当する処理命令列において、モジュールBの関数 funcB1( ) を呼び出す命令を、その格納先アドレスを呼び出す命令(シンボル funcB1 に関連づけられたアドレス addrB1 を呼び出す命令)に置き換える(S23)。
このようにして生成された書き換え後のモジュールA′のコンパイル/リンクの結果は、追加実行可能情報として記録される。そしてその格納先アドレスは、例えば関数 funcA1( ) が、addrA1'に、関数 funcA2( ) が addrA2' に…というように、書き換え前のモジュールAにおいて対応する関数の格納先アドレスとは異なっている。なお、これらの格納先アドレスは、情報処理装置2において、追加実行可能情報が読み出されたときに決定される。
追加実行可能情報生成装置1は、そこで、書き換え後のモジュールA′における関数の格納先アドレスを取得し、書き換え前のモジュールAにおいて対応する関数の格納先アドレスを、書き換え後のモジュールA′において対応する関数の格納先アドレスへ書き換える指示命令列を事前実行情報として生成する(S24)。なお、これら追加実行可能情報と、事前実行情報とは、例えば元の実行可能情報と同じ記憶媒体に格納される。
なお、この事前実行情報は、インデックスと、書き換え前のモジュールでの対応する呼び出し対象の格納先アドレス(旧アドレス)と、書き換え後のモジュールでの対応する呼び出し対象の格納先アドレス(新アドレス)とを関連づけるテーブルと、インデックスをキーとして、インデックスをインクリメントしつつ、キーとなっているインデックスに関連づけられた旧アドレスを新アドレスに書き換える処理を行うプログラムとを含むものであってもよい。
情報処理装置2は、記憶媒体から実行可能情報と追加実行可能情報とを読み出して、ワークメモリへ記録する。すなわち情報処理装置2は、記憶媒体から、まず実行可能情報を読み出して、ワークメモリの予め定められたアドレス以降へ記録する。また、情報処理装置2は、追加実行可能情報を読み出して、ワークメモリの空き領域に記録する。このとき情報処理装置2は、ワークメモリに格納した追加実行情報に含まれる書き換え後のモジュール内の関数について、追加実行情報の記録開始アドレスを、追加実行情報に含まれている、各関数のオフセット(先頭アドレスからの相対アドレス)にそれぞれ加算して、各関数の実際の格納先アドレスを得る。
そして情報処理装置2は、書き換え後のモジュール内の各関数について、実際の格納先アドレスを記憶する。その後、情報処理装置2は、当該ワークメモリへ記録した実行可能情報や追加実行可能情報の処理を開始するが、当該実行に先立って事前実行情報の処理を行う。この処理において情報処理装置2は、先に記録した書き換え後のモジュールA′における各関数の格納先アドレスの情報を参照し、実行可能情報中、書き換えられていないモジュールBの関数 funcB2( ) に対応する処理命令列において、関数 funcA2( ) を呼び出す指示(元は、addrA2 を呼び出す指示)を、書き換え後のモジュールA′における関数funcA2( ) を呼び出す指示(例えば当該関数の格納先のアドレスであるaddrA2'を呼び出す指示)に書き換える(S25)。
従って情報処理装置2では、モジュールA′に相当する処理においては、addrB1を呼び出すようになっていることで、実行可能情報に含まれる、書き換え前のモジュールBの関数 funcB1( ) に相当する処理命令列を実行することとなる。また、書き換え前のモジュールBからモジュールAに代えてモジュールA′内の関数funcA2( ) を、その格納先アドレス addrA2' を呼び出すことによって実行することとなる。
なおここでは、追加実行可能情報を生成する際に、マップ情報を参照して、コンパイル/リンクの結果において、直接、呼び出し対象の格納先アドレスを呼び出すよう、命令を記述しているが、本実施の形態はこれに限られない。
例えば、本実施の形態の追加実行可能情報生成装置1は、次のように動作してもよい。すなわち、追加実行可能情報生成装置1は、追加実行可能情報を生成する際に、他のモジュール内の呼び出し対象を呼び出す命令があると、その格納先アドレス(マップ情報から取得する)を呼び出す命令(例えば格納先アドレスへジャンプする命令)を記述した命令要素を生成する。これを各呼び出し命令について生成して、呼び出し命令要素群(ジャンプテーブル)を生成する。
追加実行可能情報生成装置1は、この呼び出し命令要素群と、コンパイルの結果とを合成して、追加実行可能情報とする(図10)。この場合、追加実行可能情報内で、呼び出し対象を呼び出す命令は、対応する呼び出し命令要素へのジャンプ命令を含むものとなる。この場合、例えばモジュールA′の関数 funcA1( ) において、モジュールBの関数 funcB1( ) を呼び出す呼び出し命令要素、「call addrB1」が、マップ情報を参照して生成される。そしてこの呼び出し命令要素は格納先アドレス addrCallB1 に格納されるとする。
この場合、モジュールA′において、モジュールBの関数 funcB1( ) を呼び出す命令は、すべて、funcB1( ) を呼び出す呼び出し命令要素が格納されている格納先アドレス addrCallB1 を呼び出すものに書き換えられる。
従って情報処理装置2では、呼び出し命令要素群つきの追加実行可能情報が記録されているときには、呼び出し命令要素を呼び出す命令に従って呼び出し命令要素を実行し、当該実行した呼び出し命令要素によって他のモジュールの呼び出し対象を呼び出す。このようにした場合は、かかる呼び出し命令要素群を含まない実行可能情報と、呼び出し命令要素群を含む追加実行可能情報とが共存することとなる。
また、ここまでの説明では、追加実行可能情報や事前実行情報が実行可能情報とともに記録されている場合、情報処理装置2が特段の判断を行うことなく、事前実行情報を実行したり、追加実行可能情報を読み込むこととしていたが、情報処理装置2は、例えば実行可能情報や追加実行可能情報にバージョン情報などのモジュール識別情報が含まれる場合、当該モジュール識別情報を参照し、追加実行可能情報に含まれる、各モジュールに対応する部分のうち、実行可能情報に含まれるモジュール識別情報を含まないものについては、読み込みを行わないこととしてもよい。
さらに追加実行可能情報や事前実行情報が実行可能情報とともに記録されている場合に、利用者の明示的な指示なく、事前実行情報を実行したり、追加実行可能情報を読み込むか、あるいは利用者の明示的な指示を受けるまで、事前実行情報を実行せず、追加実行可能情報を読み込まないようにするかを、情報処理装置2に予め設定しておいてもよい。この設定は、情報処理装置2の電源断によって揮発しない記憶手段に格納されてもよい。
本実施の形態によると、追加実行可能情報と実行可能情報のうち書き換えられていないモジュールとが関連づけられるので、テストを行う際などに、すべてのモジュールを再度リンクし、当該リンク後のオブジェクトコード全体を記憶媒体に格納する必要がない。
本発明の実施の形態に係る追加実行可能情報生成装置の構成例を表すブロック図である。 本発明の実施の形態に係る追加実行可能情報生成装置によるコンパイル・リンクの一般的処理の例を表す説明図である。 本発明の実施の形態に係る追加実行可能情報生成装置が生成するマップ情報の例を表す説明図である。 本発明の実施の形態に係る情報処理装置の例を表す構成ブロック図である。 本発明の実施の形態に係る追加実行可能情報生成装置が生成する実行可能情報の内容例を表す説明図である。 本発明の実施の形態に係る追加実行可能情報生成装置による追加実行可能情報の生成処理例を表すフローチャート図である。 本発明の実施の形態に係る追加実行可能情報生成装置によって生成された実行可能情報と追加実行可能情報との関係例を表す説明図である。 本発明の実施の形態に係る追加実行可能情報生成装置による事前実行情報の生成例を表すフローチャート図である。 本発明の実施の形態に係る追加実行可能情報生成装置の動作例を表す説明図である。 本発明の実施の形態に係る追加実行可能情報生成装置が生成する追加実行可能情報の別の例を表す説明図である。
符号の説明
1 追加実行可能情報生成装置、2 情報処理装置、11,22 制御部、12,23 記憶部、13 操作部、14 出力部、24 インタフェース部、25 機能部。

Claims (2)

  1. 記憶媒体に固定されたコンピュータ実行可能な実行情報に含まれる呼び出し対象の識別情報と、その前記記憶媒体内での格納位置とを関連づけて記憶する記憶手段と、
    前記実行情報に含まれる呼び出し対象を呼び出す処理命令を含む追加実行可能情報を生成する生成手段と、
    前記実行情報の実行前にコンピュータにより実行される事前実行情報であって、前記実行情報によって呼び出される呼び出し対象に対応する呼び出し対象が、前記追加実行可能情報に含まれる場合に、前記実行情報を書き換えて、前記追加実行可能情報に含まれる、対応する呼び出し対象を呼び出すよう設定させる事前実行情報を生成する事前実行情報生成手段と、を有し、
    前記生成手段が、
    前記記憶手段に記憶された情報を参照し、前記生成する追加実行可能情報に、前記実行情報内の呼び出し対象を呼び出す処理命令があるときに、当該処理命令で呼び出される呼び出し対象を呼び出す呼び出し命令要素を生成し、前記処理命令を、対応する前記呼び出し命令要素の格納位置を呼び出す命令に書き換えて、前記呼び出し命令要素とともに出力する追加実行可能情報生成装置。
  2. コンピュータを、
    記憶媒体に固定されたコンピュータ実行可能な実行情報に含まれる呼び出し対象の識別情報と、その前記記憶媒体内での格納位置とを関連づけて記憶する記憶手段と、
    前記実行情報に含まれる呼び出し対象を呼び出す処理命令を含む追加実行可能情報を生成する生成手段と、
    前記実行情報の実行前にコンピュータにより実行される事前実行情報であって、前記実行情報によって呼び出される呼び出し対象に対応する呼び出し対象が、前記追加実行可能情報に含まれる場合に、前記実行情報を書き換えて、前記追加実行可能情報に含まれる、対応する呼び出し対象を呼び出すよう設定させる事前実行情報を生成する事前実行情報生成手段と、として機能させ、
    前記生成手段として機能させる際に、前記記憶手段に記憶された情報を参照し、前記生成する追加実行可能情報に、前記実行情報内の呼び出し対象を呼び出す処理命令があるときに、当該処理命令で呼び出される呼び出し対象を呼び出す呼び出し命令要素を生成し、前記処理命令を、対応する前記呼び出し命令要素の格納位置を呼び出す命令に書き換えて、前記呼び出し命令要素とともに出力させるプログラム。
JP2008138109A 2008-05-27 2008-05-27 追加実行可能情報生成装置、情報処理装置、及びプログラム Expired - Fee Related JP5109808B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008138109A JP5109808B2 (ja) 2008-05-27 2008-05-27 追加実行可能情報生成装置、情報処理装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008138109A JP5109808B2 (ja) 2008-05-27 2008-05-27 追加実行可能情報生成装置、情報処理装置、及びプログラム

Publications (2)

Publication Number Publication Date
JP2009288858A JP2009288858A (ja) 2009-12-10
JP5109808B2 true JP5109808B2 (ja) 2012-12-26

Family

ID=41458046

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008138109A Expired - Fee Related JP5109808B2 (ja) 2008-05-27 2008-05-27 追加実行可能情報生成装置、情報処理装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP5109808B2 (ja)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62224825A (ja) * 1986-03-26 1987-10-02 Nec Corp プログラムの修正方式
JPH01205332A (ja) * 1988-02-12 1989-08-17 Nec Corp リンケージエディタ方式
JPH01237832A (ja) * 1988-03-18 1989-09-22 Fujitsu Ltd プログラムリンケージ方式
JPH02309419A (ja) * 1989-05-24 1990-12-25 Nec Corp 修正オブジェクトモジュールの静的リンク方式
JPH06110678A (ja) * 1992-09-30 1994-04-22 Toshiba Corp プログラム実行方式及び実行プログラムの動的変更方法
JPH06236264A (ja) * 1993-02-08 1994-08-23 Nec Software Ltd ロードモジュール生成方式
JPH06266539A (ja) * 1993-03-17 1994-09-22 Toshiba Corp デバッグ用ロードモジュールの再作成に好適なリンク装置およびリンク方法
JPH07110758A (ja) * 1993-10-12 1995-04-25 Nec Corp プログラムのコンパイル・リンク方式
JPH11184680A (ja) * 1997-12-24 1999-07-09 Fujitsu Ltd ファイル編集方法及びこれを用いたプログラム開発方法及び装置並びに記憶媒体
JP3682050B2 (ja) * 2002-10-15 2005-08-10 三菱電機株式会社 組込みソフトウェア開発装置

Also Published As

Publication number Publication date
JP2009288858A (ja) 2009-12-10

Similar Documents

Publication Publication Date Title
US20230004368A1 (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
JPH10507016A (ja) ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ
JP2011028648A (ja) オブジェクトコード生成システム、及びオブジェクトコード生成方法
JP2009104252A (ja) デバッグ支援装置およびデバッグ支援方法
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
JP5109808B2 (ja) 追加実行可能情報生成装置、情報処理装置、及びプログラム
JP2009048259A (ja) プログラム変換方法及び変換用プログラム
JP6597356B2 (ja) 制御プログラム、制御装置、及び制御方法
JP5906609B2 (ja) デバッグ支援プログラム、デバッグ支援方法及びデバッグ支援システム
JP2002055848A (ja) プログラム実行方式及び当該プログラム実行方式を格納した記憶媒体
JP2021103354A (ja) プログラムの試験方法
JP3682050B2 (ja) 組込みソフトウェア開発装置
JP4594704B2 (ja) プログラム開発支援システム、プログラムおよび記録媒体
KR101548960B1 (ko) 가상 플랫폼을 이용한 프로그램 작성과 디버깅 방법 및 장치
JP2001022560A (ja) ライブラリ関数バージョンアップ方法
JP2002082811A (ja) コンパイル方法および記録媒体
JP2002259121A (ja) ソースラインデバッグ装置
JP2009098963A (ja) モジュール自動生成システム
JP2008071065A (ja) インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体
JP6898556B2 (ja) 情報処理装置、コンパイル方法及びコンパイルプログラム
JPH09274570A (ja) コンパイル方法及びコンパイラシステム
JP3922699B2 (ja) ループ内不変な式の移動に関する最適化方式およびプログラム
JP6061763B2 (ja) 単体試験支援装置及び単体試験支援プログラム

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