(57)【要約】【課題】デバッグ処理が含まれたままであっても、実行時にはプログラムの実行速度を大きく低下させることのない電子機器及びプログラム書き込み方法を提供することを課題とする。【解決手段】ＣＰＵ２がＨＤＤ６に格納された、デバッグ処理に関する命令であるデバッグ処理命令が含まれるプログラム９を実行しようとするとき、ロード制御部４はプログラム９中のデバッグ処理命令をＮＯＰ命令に書き換えながら、ＲＡＭ５に対してロードする。ロード処理完了時にはプログラムはデバッグ処理命令を含まないものとなっており、ＰＣ１はデバッグ処理命令を含むプログラムであっても、実行時にはプログラム実行処理速度を大きく低減させることがない。【選択図】図３
2011159084.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを記憶する記憶手段と、
プログラムを実行する情報処理手段と、
前記情報処理手段がプログラムを実行する際に、このプログラムを格納するメモリと、
前記記憶手段に記憶されたデバッグ処理に関する命令が含まれるプログラムを、前記情報処理手段が前記デバッグ処理に関する命令を実行しないように置き換えて前記メモリに書き込む書き込み手段と
を具備することを特徴とする情報処理装置。
【請求項２】
前記書き込み手段は、
前記プログラム中の前記デバッグ処理に関する命令を検出する検出手段と、
前記検出手段によって検出したデバッグ処理に関する命令を、該デバッグ処理以外の命令へと書き換える書き換え手段と、を具備し、
前記書き換え手段によって書き換えられたプログラムを前記メモリに書き込む
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記書き換え手段は前記デバッグ処理に関する命令のコードをＮＯＰ命令へと書き換えること
を特徴とする請求項２記載の情報処理装置。
【請求項４】
前記デバッグ処理に関する命令が含まれるプログラムを実行するとき、前記デバッグ処理行うか／行わないかを選択する選択手段を、更に具備し、
前記書き込み手段は、
前記選択手段によってデバッグ処理を行わないと選択されたとき、前記置き換えを行って前記プログラムを書き込み、
前記選択手段によってデバッグ処理を行うと選択されたとき、前記置き換えを行わず前記プログラムを書き込むこと
を特徴とする請求項１記載の情報処理装置。
【請求項５】
プログラムを記憶する第1の記憶手段および第２の記憶手段と、
プログラムを実行する情報処理手段と、
前記情報処理手段がプログラムを実行する際に、このプログラムを格納するメモリと、
前記第1の記憶手段に記憶されたデバッグ処理に関する命令が含まれる第1のプログラムに基づいて、デバッグ処理に関する命令を前記デバッグ処理以外の命令に書き換えた第２のプログラムを作成し、第２の記憶手段に記憶させる作成手段と、
前記情報処理手段が前記第１のプログラムを実行しようとするとき、前記第１プログラムの代わりに前記第２のプログラムを前記メモリに書き込む書き込み手段と、
を具備することを特徴とする情報処理装置。
【請求項６】
前記作成手段は前記第１のプログラムのデバッグ処理に関する命令のコードをＮＯＰ命令へと書き換えることで第２のプログラムを作成すること
を特徴とする請求項５記載の情報処理装置。
【請求項７】
前記作成手段は、前記書き換えを行うとき前記デバッグ処理に関する命令のコードを再現するための再現情報を更に作成すること
を特徴とする請求項５記載の情報処理装置。
【請求項８】
前記第１のプログラムを実行しようとするとき、前記デバッグ処理行うか／行わないかを選択する選択手段を、更に具備し、
前記書き込み手段は、
前記選択手段によってデバッグ処理を行わないと選択されたとき、前記第２のプログラムを書き込み、
前記選択手段によってデバッグ処理を行うと選択されたとき、前記再現情報に基づいて前記第２のプログラムに前記デバッグ処理に関する命令のコードを再現して、再現後の前記第２のプログラムを書き込む
ことを特徴とする請求項７記載の情報処理装置。
【請求項９】
情報処理手段がプログラムを実行するときに、記憶装置に記憶されたプログラムを、情報処理手段がプログラムを実行する際にこのプログラムを格納するメモリに対して書き込むプログラム書き込み方法であって、
前記記憶装置に記憶されたデバッグ処理に関する命令が含まれるプログラムを読み出し、
前記情報処理手段が前記デバッグ処理に関する命令を実行しないように置き換えて前記メモリに書き込むこと
を特徴とするプログラム書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラムを読み出して実行する情報処理装置及びプログラム書き込み方法に関するものであり、デバッグ処理が含まれるプログラムを実行する情報処理装置、及びこのプログラムの書き込み方法に関する。
【背景技術】
【０００２】
プログラムの開発段階においては、実行するプログラム内にこのプログラムをデバッグするための、本来のフローには無い所定の命令を埋め込む場合がある。そして最終的なプログラムとする際には、これらのデバッグのためのコードは削除する。これは余計なコードを入れたまま実行させるとプログラムの処理速度低下、あるいはプログラムの肥大化を招くためである。しかしながらデバッグ時と同じデバッグのコードを含んだままユーザに提供にできれば、最終的なプログラムを生成し直す手間が省ける上、動作確認が出来ているコードのままなので後々問題が生じることが少ない。または、それらのプログラムがユーザに渡った後でも実機上でデバッグが可能であれば、メンテナンス時に有利な場合がある。
【０００３】
そこで、デバッグ対象のオペレーティングシステムの実行時に所望のアドレスのコードを一時的に未定義命令に書き換えて例外処理を発生させることで、デバッグ対象のオペレーティングシステムを修正すること無くデバッグ可能とするオペレーティングシステムのデバッグ方法が提案されている（特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４―１６５４３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記提案のデバッグ方法においてはデバッグ対象のプログラムの実行時に、デバッグしたい所望のアドレスのプログラムの書き換え処理と上記のような例外処理を発生させるため、実行時の情報処理装置の処理量が大幅に増え処理速度が大きく低下してしまう。場合によっては動作タイミングが合わず、正確なデバッグが出来ない場合もある。
【０００６】
本発明は上記問題に鑑みてなされたものであって、デバッグ処理が含まれたままであっても、実行時にはプログラムの実行速度を大きく低下させることのない電子機器及びプログラム書き込み方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一実施形態にかかる情報処理装置は、プログラムを記憶する記憶手段と、プログラムを実行する情報処理手段と、前記情報処理手段がプログラムを実行する際に、このプログラムを格納するメモリと、前記記憶手段に記憶されたデバッグ処理に関する命令が含まれるプログラムを、前記情報処理手段が前記デバッグ処理に関する命令を実行しないように置き換えて前記メモリに書き込む書き込み手段とを具備することを特徴としている。
【０００８】
本発明の一実施形態にかかる情報処理装置は、プログラムを記憶する第1の記憶手段および第２の記憶手段と、プログラムを実行する情報処理手段と、前記情報処理手段がプログラムを実行する際に、このプログラムを格納するメモリと、前記第1の記憶手段に記憶されたデバッグ処理に関する命令が含まれる第1のプログラムに基づいて、デバッグ処理に関する命令を前記デバッグ処理以外の命令に書き換えた第２のプログラムを作成し、第２の記憶手段に記憶させる作成手段と、前記情報処理手段が前記第１のプログラムを実行しようとするとき、前記第１プログラムの代わりに前記第２のプログラムを前記メモリに書き込む書き込み手段と、を具備することを特徴としている。
【０００９】
本発明にかかるプログラム書き込み方法は、情報処理手段がプログラムを実行するときに、記憶装置に記憶されたプログラムを、情報処理手段がプログラムを実行する際にこのプログラムを格納するメモリに対して書き込むプログラム書き込み方法であって、前記記憶装置に記憶されたデバッグ処理に関する命令が含まれるプログラムを読み出し、前記情報処理手段が前記デバッグ処理に関する命令を実行しないように置き換えて前記メモリに書き込むことを特徴としている。
【発明の効果】
【００１０】
本発明によれば、デバッグ処理が含まれたままであっても、実行時にはプログラムの実行速度を大きく低下させることのない電子機器及びプログラム書き込み方法を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第1の実施形態におけるＰＣの内部構成の一例を示すブロック図。
【図２】本発明の第1の実施形態におけるプログラムのデータ構造の一例を示す概念図。
【図３】本発明の第1の実施形態における通常モードでプログラムをロードする際のロード方法を示す概念図。
【図４】本発明の第1の本実施形態におけるＰＣがプログラムを実行する際に行う処理の一例が示されるフロー図
【図５】本発明の第２の実施形態におけるＰＣの内部構成の一例を示すブロック図。
【図６】本発明の第２の実施形態におけるプログラム変換情報の一例を示す概念図。
【図７】本発明の第２の実施形態における変換プログラムの作成処理の一例を示すフロー図。
【図８】本発明の第２の実施形態におけるＰＣがプログラムを実行する際に行う処理の一例が示されるフロー図。
【発明を実施するための形態】
【００１２】
本発明の実施の形態を図面を参照しながら以下に説明する。
【００１３】
（第１の実施形態）
本発明の第１の実施形態について図１乃至図４を用いて以下に詳細に説明する。
【００１４】
図１は本実施形態におけるＰＣ１の内部構成の一例を示すブロック図である。
【００１５】
ＰＣ１は、本実施形態における情報処理装置の例示であるパーソナルコンピュータ（Personal Computer）であり、各種計算処理を行う機能を有している。本実施形態において、情報処理装置の例としてパーソナルコンピュータを示すがこれに限定されず、例えばデジタルテレビ、携帯電話、さらにはマイコン（Micro computer）を搭載した家電等の電子機器において本発明を適用するとしてもよい。
【００１６】
ＣＰＵ２はＰＣ１全体を制御する中央演算処理装置（Central Processing Unit）であり、プログラムに応じた所定の処理を実行する機能を有している。
【００１７】
ＲＯＭ３は、例えばＮＯＲフラッシュメモリ等の半導体メモリによって構成される不揮発性半導体記憶装置（Read Only Memory）である。本実施形態においてＲＯＭ３はＣＰＵ２がＰＣ１のブート時に実行されるプログラムや各種プログラム実行時に使用するデータ等を格納している。また、ＲＯＭ３はロード設定情報８を記憶している。
【００１８】
ロード制御部４はＨＤＤ６に格納されたプログラムをＣＰＵ２が実行しようとするとき、このプログラムをＨＤＤ６より読み出し、ＣＰＵ２がプログラムを実行する際のプログラム格納領域であるＲＡＭ５に書き出す（ロードする）機能を有している。
【００１９】
ＲＡＭ５は、例えばSDRAM等の半導体メモリによって構成されるアドレス指定を用いたランダムな読み出しが可能な揮発性のメモリ（Random Access Memory）である。上述のように、ＲＡＭ５はＣＰＵ２がプログラムを実行する際のプログラム格納メモリとして使用され、ＣＰＵ２はＲＡＭ５に格納されたプログラムを実行することで各種情報処理を行う。
【００２０】
ＨＤＤ６は不揮発性の大容量磁気記憶媒体（Hard Disk Drive）であって、ＣＰＵ２が実行する各種プログラム、またプログラム実行時に参酌する各種データを格納する記憶手段である。ＨＤＤ６はＣＰＵ２が実行可能なプログラム９を格納している。大容量磁気記憶媒体はあくまで本実施形態における記憶手段の例示であって、例えばＮＡＮＤフラッシュメモリやＳＳＤ（Solid State Drive）等によって構成されているとしてもよい。
【００２１】
バス７はバス７に接続される各モジュールをそれぞれ通信可能に接続する機能を有している。
【００２２】
ロード設定情報８はＲＯＭ３に格納されており、ロード制御部４がプログラム９をＲＡＭ５にロードする際に参照する情報である。このロード設定情報８はユーザによって設定することも可能である。
【００２３】
プログラム９は、ＨＤＤ６に格納されるＣＰＵ２が実行可能なプログラムであって、ＣＰＵ２がこのプログラム９のデバッグ処理を行うための命令であるデバッグ処理命令が一部に記述されたプログラムである。
【００２４】
本実施形態においてプログラム９はＨＤＤ６に、ロード設定情報８はＲＯＭ３に格納されているものとして例示したが、これに限定されず、他の記憶媒体に格納されているとしてもよい。さらに、ロード制御部４は所定のプログラムを実行することによって実現されるようにソフトウェアによって構成されていてもよいし、半導体チップ等のハードウェアによって構成されているとしてもよい。
【００２５】
プログラム９にバグが生じた場合、ＣＰＵ２はこのプログラム９内に記述されたデバッグ処理命令を参照してデバッグ処理を行うことが可能である。このプログラム９について以下にて説明を行う。
【００２６】
図２は本実施形態におけるプログラム９のデータ構造の一例を示す概念図である。
【００２７】
プログラム９は、ＣＰＵ２が所定の一連の処理を行うためのプログラムであるが、この通常行う一連の処理に関する命令をプログラム命令２１と呼ぶ。本実施形態においてプログラム９には、プログラム命令２１の他にデバッグ処理命令が記述されており、このデバッグ処理命令はプログラム９の所定の位置（アドレス）に記述されている。図２に示されるようにプログラム９にはデバッグ処理命令Ａ２２、デバッグ処理命令Ｂ２３、およびデバッグ処理命令Ｘ２４が記述されている。
【００２８】
デバッグ処理を行うとき、ＣＰＵ２はプログラム９を先頭より実行していき、デバッグ処理命令まで到達すると、このデバッグ処理命令に従った処理を行う。ここでのデバッグ処理命令に記述されている命令は、本実施形態においてはデバッグ処理のプログラムを記述したサブルーチンへのサブルーチンコールであると例示する。ＣＰＵ２はこのサブルーチンコールによってデバッグ用ルーチンを実行することができる。しかし、これには限定されず、例えばこのデバッグ処理命令にデバッグ処理のプログラム自体が記述されているものとしてもよい。
【００２９】
本実施形態においてＣＰＵ２がプログラム９を実行しようとする際、ロード制御部４はＨＤＤ６に格納されたプログラム９をＲＡＭ５にロードするが、このときのロードの形態（プログラム９の実行形態）には２種類のロードの形態が存在する。ここではこの２種類のロードの形態を通常モードでのロードと、デバッグモードでのロードと呼ぶ。通常モードとはＣＰＵ２がプログラム９中のデバッグ処理命令を実行せず、プログラム命令２１のみを実行するようにロードするモードであって、デバッグモードとはＣＰＵ２がプログラム９中のプログラム命令２１及びデバッグ処理命令を実行するようにロードするモードである。このうちどちらのモードによってプログラム９を実行するかはロード設定情報８によって示され、ロード制御部４はプログラム９のロードの際にこのロード設定情報８を参酌してどちらのモードでロードするかを決定する。
【００３０】
ここで、この通常モードでロードする際のロードの方法について以下に説明する。
【００３１】
図３は本実施形態における通常モードでプログラム９をロードする際のロード方法を示す概念図である。
【００３２】
ロード制御部４は通常モードによりプログラム９のロードを行う際、図３のようにプログラム９にデバッグ処理命令が存在することを検知すると、そのデバッグ処理命令をＮＯＰ命令３１に書き換えた後に、ＲＡＭ５へと書き出す。ここでのＮＯＰ（no operation）命令とはＣＰＵ２がこの命令を読み出したときに何もしないという命令であり、ＮＯＰ命令を読み出したＣＰＵ２は何の処理も行わずにプログラムカウンタのインクリメントのみを行う。このフローにより、ＲＡＭ５上にロードされたプログラムにはデバッグ命令が含まれない。つまりＣＰＵ２は、通常モードでロード制御部４によってＲＡＭ５にロードされたプログラム９を実行する際にはプログラム９のプログラム命令２１を実行して一連の処理を行うが、デバッグ命令Ａ２２乃至デバッグ命令Ｘ２５に記述されていた処理を行わず、デバッグ処理は行われない。
【００３３】
また、ロード制御部４はデバッグモードでプログラム９のロードする際には、上述のデバッグ処理命令をＮＯＰ命令に書き換える処理は行わずに、ＨＤＤ６に格納されているプログラム９をそのままＲＡＭ５に書き出す。つまりデバッグモードでプログラム９のロードが行われた場合には、ＣＰＵ２はプログラム９に記述されたデバッグ処理命令を含むためデバッグ処理が実行される。
【００３４】
ロード制御部４はプログラム９をＨＤＤ６からＲＡＭ５にロードする際にＲＯＭ３に格納されているロード設定情報８に基づいて、通常モードによるロードを行うかデバッグモードによるロードを行うかを判別し、上述のロード処理を行う。ここでのモード設定は、例えばプログラム９がＯＳ（Operating System）、ロード制御部４がブートローダとすれば、ＢＩＯＳ（Basic Input/Output System）の設定情報として設定される。このときはこのＢＩＯＳの設定画面で選択されたロード設定情報８がＲＯＭ３に保存されることとなる。しかし上述には限定されず、ロード制御部４としてＯＳ上で動作するＥＬＦ（Executable and Linking Format）形式等のローダ、プログラム９としてＯＳ上で動作するアプリケーションプログラム等のようなそれぞれ様々な実施の例が考えられる。
【００３５】
またロード制御部４はプログラム９に記述されたデバッグ処理命令を検出する機能を有している。本実施形態においては特定のデバッグ処理のサブルーチンへのコール命令を検出し、このコール命令が存在するときは、デバッグ処理命令をＮＯＰ命令へと書き換えてＲＡＭ５に書き出す。また、デバッグ処理自体の（読み出すことによってＣＰＵ２がデバッグ処理を実行する）プログラムが直接プログラム９に記述されている際には、このデバッグ処理プログラムのうちの所定の文字列を検出し、このデバッグ処理命令をＮＯＰ命令に書き換える。
【００３６】
ここで、ロード制御部４が実行する処理に関しての説明を行う。
【００３７】
図４は本実施形態におけるＰＣ１がプログラム９を実行する際に行う処理の一例が示されるフロー図である。
【００３８】
まず、ＣＰＵ２がプログラム９を実行しようとする際、ロード制御部４はＲＯＭ３に格納されているロード制御情報８を読み込み（ステップＳ４１）、ロードの設定モードを確定する。
【００３９】
ロードの設定モードを確定すると、ロード制御部４はプログラム９の次のコードを読み込む（ステップＳ４２）。ここで設定された設定モードがデバッグモードでないとき、すなわち通常モードのときは（ステップＳ４３、Ｎｏ）、読み込んだプログラムの内からデバッグ処理命令を検出する処理を行う（ステップＳ４４）。
【００４０】
ステップＳ４４においてデバッグ処理命令を、読み込んだプログラムより検出した場合は（ステップＳ４４、Ｙｅｓ）、このデバッグ処理命令をＮＯＰ命令に書き換える（ステップＳ４５）。
【００４１】
ステップＳ４３において設定モードがデバッグモードであるとき（ステップＳ４３、Ｙｅｓ）、ステップＳ４４においてデバッグ処理命令を検出しないとき（ステップＳ４４、Ｎｏ）、またステップＳ４５においてデバッグ処理命令をＮＯＰ命令に書き換えた後には、ロード制御部４は読み込んだ（書き換えた命令を含む）プログラムをＲＡＭ５に書き出す（ステップＳ４６）。
【００４２】
次にロード制御部４はプログラム９を全て読み込んだか否かの判別を行い（ステップＳ４７）、全て読み込んでいない場合は（ステップＳ４７、Ｎｏ）、ステップＳ４２に戻り、プログラム９の次の読み込み箇所に関してプログラムの読み出しを行う。
【００４３】
ステップＳ４７においてロード制御部４がプログラム９の全ての読み出し（書き込み）を完了した場合には（ステップＳ４７、Ｙｅｓ）、ＣＰＵ２はＲＡＭ５に書き出されたプログラムを実行する。
【００４４】
これにより、通常モードによってプログラム９がロードされた場合にはＣＰＵ２はデバッグ処理を行わず、デバッグモードによってロードされた場合にはデバッグ処理を実行することとなる。
【００４５】
また、プログラム９がＨＤＤ６に圧縮または暗号化された状態で格納されている場合には、ステップＳ４２の前に展開または暗号解読処理を行うとしてもよい。
【００４６】
本実施形態のＰＣ１は、デバッグ処理命令が記述されたプログラムの中のデバッグ処理命令を無効化しながらＲＡＭ５にロードするため、一度コンパイルされたプログラムを再コンパイルすることなく、このプログラムを用いてデバッグ処理を行わないプログラム実行を行うことができ、プログラム提供者は開発時のデバッグ処理が含まれるプログラムをそのままユーザに提供することができる。これによって提供者はデバッグ処理に関する命令を削除したプログラムを新たに作成する必要が無くなり、提供者の利便性に寄与する。
【００４７】
本実施形態においてロード制御部４はロード設定情報８によって示されるロードの設定モードによってＣＰＵ２にデバッグ処理を行わせるか否かを決定してプログラム９のロードを行う。つまりデバッグ処理を行うか否かを選択的にプログラムを実行することができる。また、プログラム９を実行する際にユーザはデバッグ処理を行うか否かの選択を行うことができる。
【００４８】
また、デバッグモードの際にはロード制御部４は特に何も行わず、プログラム９をＲＡＭ５にロードするだけであるため処理量が少なくすみ、ＰＣ１はそれぞれのモードに適した処理量でロード処理を行うことができる。
【００４９】
更に、ロード制御部４はプログラム９中からデバッグ処理命令を検出する機能を有しており、ＰＣ１はプログラム９のデバッグ処理命令を含まないプログラムを自動的に生成することができる。
【００５０】
このように本実施形態のＰＣ１においては、デバッグ処理が含まれたままであっても、実行時にはプログラムの実行速度を大きく低下させることない。
【００５１】
（第２の実施形態）
本発明の第２の実施形態に関して図５乃至図８を用いて以下に説明する。
【００５２】
図５は本実施形態におけるＰＣ５１の内部構成の一例を示すブロック図である。
【００５３】
本実施形態において第１の実施形態と機能が同様またはほぼ同様であるものに関しては、第１の実施形態と同様の符号を付し、第１実施形態と機能の異なるもの／機能が追加されたもの、または第１の実施形態には存在しない構成要素については新たな符号を付して示す。
【００５４】
ＰＣ５１は第１の実施形態のＰＣ１に加えて、変換処理部５３、変換後プログラム５４の構成要素が増えている。
【００５５】
ロード制御部５２はＨＤＤ６内に格納されたプログラムをＲＡＭ５にロードする機能を有している。ロード制御部５２のプログラムのロード方法に関しては図８を用いて後で詳細に説明する。
【００５６】
変換処理部５３はデバッグ処理命令を含むプログラム９をデバッグ処理命令が含まれない変換後プログラム５４に変換する機能を有している。変換処理部５３はプログラム９に記述されたデバッグ処理命令をＮＯＰ命令に変換し、変換後プログラム５４およびプログラム変換情報５５を生成する。
【００５７】
変換後プログラム５４はプログラム９のデバッグ処理命令がＮＯＰ命令へと変換されたプログラムであって、プログラム９を通常モードで実行するときに、プログラム９の代わりにＨＤＤ６からＲＡＭ５へとロードされるプログラムである。この変換後プログラム５４はＨＤＤ６ではなく他の記憶手段に記憶されているとしてもよい。
【００５８】
プログラム変換情報５５は変換処理部５３がプログラム９の変換処理を行う際に生成される情報であって、デバッグ処理命令が記述されているプログラム９内のアドレスと、このデバッグ処理命令を再現するための情報であるデバッグ処理命令再現情報とが対応付けられて記録されたテーブル情報である。
【００５９】
このプログラム変換情報５５として記録されるデータを図６を参照して説明する。
【００６０】
図６は本実施形態におけるプログラム変換情報５５の一例を示す概念図である。
【００６１】
プログラム変換情報５５にはデバッグ処理命令が記述されているプログラム９中のアドレスと、このデバッグ処理命令を再現するための情報であるデバッグ処理命令再現情報とが対応付けられて記録されている。このデバッグ処理命令再現情報にはデバッグ処理命令がそのまま記録されていてもよいし、デバッグ処理命令を再現するためのデバッグ処理命令とは異なる情報が記録されていてもよい。本実施形態において、ロード処理実行時にロード制御部５２はこのデバッグ処理命令再現情報を参照して、変換後プログラム５４にデバッグ処理命令を追加していく。このとき例えばロード制御部５２がデバッグプログラムの格納されているアドレスがわかれば、このプログラムをコールする命令を作成できるのであれば、プログラム変換情報５５のデバッグ処理命令再現情報としてデバッグプログラムの格納アドレスのみが保持されていればよい。ロード制御部５２はこのデバッグ処理命令再現情報に基づいてデバッグ処理命令を作成し、変換後プログラム５４にこれを埋め込む。
【００６２】
変換処理部５３はプログラム９を変換して変換後プログラム５４およびプログラム変換情報５５を作成するが、このときの変換後プログラム５４の作成方法を以下に説明する。
【００６３】
図７は本実施形態における変換後プログラム５４の作成処理の一例を示すフロー図である。
【００６４】
まず、変換処理部５３はプログラム９を読み出し（ステップＳ７１）、次にプログラム９中のデバッグ処理命令を検出するための変換ポリシーを設定する（ステップＳ７２）。
【００６５】
この変換ポリシーはプログラム９中に記載された命令をＮＯＰ命令に書き換える際に用いられ、変換処理部５３はプログラム９中からこの変換ポリシーに合致する文字列を検出すると、この文字列の処理をＮＯＰ命令に書き換える。この本実施形態においてはこの変換ポリシーはデバッグ処理のプログラムを記述したサブルーチンへのサブルーチンコールであると例示する。しかし、これに限定されず変換ポリシーはデバッグプログラムが記載されているアドレスのリスト等であってもよい。また、デバッグ処理命令にデバッグ処理のプログラム事態が記述されている等の場合には、これを特定できる程度の文字列であってもよい。この変換ポリシーはプログラム９のデバッグ処理命令の記述態様、デバッグプログラムの格納場所等に対応して様々に設計することが可能である。
【００６６】
また、ステップＳ７２における変換ポリシーの設定は本処理フローの実行前にあらかじめ行われているとしてもよい。
【００６７】
ステップＳ７２が終了すると、変換処理部５３はステップＳ７２で設定された変換ポリシーと合致する命令がプログラム９中存在するか否かを先頭より見ていく（ステップＳ７３）。
【００６８】
ステップＳ７３において変換ポリシーと合致する箇所を検出すると（ステップＳ７３、Ｙｅｓ）、変換処理部５３はこれ含まれるデバッグ処理命令及びそのアドレスをプログラム変換情報５５に書き出し（ステップＳ７４）、このデバッグ処理命令をＮＯＰ命令へと書き換える（ステップＳ７５）。
【００６９】
ステップＳ７５が終了すると処理フローはステップＳ７３へと戻り、次の文字列より再度変換ポリシーと合致する命令が存在するかどうかを検索していく。ステップＳ７３においてプログラム９を最後まで検索したとき、変換処理部５３はデバッグ処理命令のＮＯＰ命令への書き換え後のプログラムである変換後プログラム５４をＨＤＤ６に書き出し（ステップＳ７６）、以上で生成処理フローは終了となる。
【００７０】
次にＰＣ５１がプログラム９を実行する際に行われる処理について以下で説明する。
【００７１】
図８は本実施形態におけるＰＣ５１がプログラム９を実行する際に行う処理の一例が示されるフロー図である。
【００７２】
まず、ＣＰＵ２がプログラム９を実行しようとする際、ロード制御部５２はＲＯＭ３に格納されているロード制御情報８を読み込み（ステップＳ８１）、ロードの設定モードを確定する。
【００７３】
ロードの設定モードを確定すると、ロード制御部５２は変換後プログラム５４の次のコードを読み込む（ステップＳ８２）。ここで設定モードがデバッグモードのときは（ステップＳ８３、Ｙｅｓ）、プログラム変換情報５５を読み出す（ステップＳ８４）。
【００７４】
次にロード制御部５２はプログラム変換情報５５に記録されているアドレスが読み出したプログラム内に存在するか否かの判別を行う（ステップＳ８５）。
【００７５】
ステップＳ８５において存在するとき（ステップＳ８５、Ｙｅｓ）、ロード制御部５２はプログラム変換情報５５に基づいて、検出したアドレスと対応するデバッグ処理命令再現情報からデバッグ処理命令を作成し、変換後プログラム５４のデバッグ情報に対応するアドレス（ＮＯＰ命令が記載されている箇所）に対してこのデバッグ処理命令を埋め込む（書き換える）（ステップＳ８６）。
【００７６】
ステップＳ８３において設定モードがデバッグモードでないとき、すなわち通常モードであるとき（ステップＳ８３、Ｎｏ）、ステップＳ８５においてプログラム変換情報５５に記録されているアドレスが読み出したプログラム内に存在しないとき（ステップＳ８５、Ｎｏ）、またステップＳ８６の処理が終了したときには、ロード制御部５２は読み込んだ（書き換えた命令を含む）プログラムをＲＡＭ５に書き出す（ステップＳ８７）。
【００７７】
次にロード制御部５２は変換後プログラム５４を全て読み込んだか否かの判別を行い（ステップＳ８８）、全て読み込んでいない場合は（ステップＳ８８、Ｎｏ）、ステップＳ８２に戻り、変換後プログラム５４の次の読み込み箇所に関してプログラムの読み出しを行う。
【００７８】
ステップＳ８８においてロード制御部５２が変換後プログラム５４の全ての読み出し（書き込み）が完了した場合には（ステップＳ４７、Ｙｅｓ）、ＣＰＵ２はＲＡＭ５に書き出されたプログラムを実行する。
【００７９】
これにより、ＣＰＵ２は通常モードによってプログラム９がロードされた場合にはデバッグ処理を行わず、デバッグモードによってロードされた場合にはデバッグ処理を実行することとなる。
【００８０】
本実施形態においては、ロード制御部５２は通常モードのロードの際には検出等の処理を行わず、プログラムを先頭からロードしていくため、デバッグ処理を行わない通常モード時のロード処理時間が短くなる。
【００８１】
また、本実施形態においてＰＣ５１はプログラム９、変換後プログラム５４、およびプログラム変換情報５５を記憶していると例示しているが、これに限定されるものではなく、変換後プログラム５４およびプログラム変換情報５５のみを記憶しており、プログラム９を記憶していないとしてもよい。この構成でも、変換後プログラム５４およびプログラム変換情報５５によってデバッグ処理命令を再現できるため、ＰＣ５１は更にプログラム９の情報量分の記憶領域を確保することが可能となる。例えば、これらの情報をＨＤＤ６ではなくＲＯＭ３に記憶している場合等には、ＨＤＤ６と比較してＲＯＭ３は記憶容量が小さい場合が多く、変換後プログラム５４およびプログラム変換情報５５のみを記憶しておけばよいこの構成は特に有用となる。
【００８２】
本実施形態では、ロード制御部５２はデバッグモードの際に変換後プログラム５４にデバッグ処理命令を埋め込んでいき、プログラムをロードするように例示したが、これに限定されず、次のような実施の形態も考えられる。デバッグモードの際にはロード制御部５２は変換後プログラム５４ではなく、プログラム９をＲＡＭ５にロードする。プログラム９はデバッグ処理命令が記述されているプログラムであるため、デバッグ処理を実行することができ、更に、ロード制御部５２はＨＤＤ６のプログラム６をそのままＲＡＭ５にロードすればよいため、ＮＯＰ命令をデバッグ処理命令に書き換える場合と比較してロード処理速度が向上する。
【００８３】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具現化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００８４】
１…ＰＣ、２…ＣＰＵ、３…ＲＯＭ、４…ロード制御部、５…ＲＡＭ、６…ＨＤＤ、７…バス、８…ロード設定情報、９…プログラム、２１…プログラム命令、２２〜２４…デバッグ処理命令、３１…ＮＯＰ命令、５１…ＰＣ、５２…ロード制御部、５３…変換処理部、５４…変換後プログラム、５５…プログラム変換情報
【図１】
2011159084.tif 000003
【図２】
2011159084.tif 000004
【図３】
2011159084.tif 000005
【図４】
2011159084.tif 000006
【図５】
2011159084.tif 000007
【図６】
2011159084.tif 000008
【図７】
2011159084.tif 000009
【図８】
2011159084.tif 000010