(57)【要約】【課題】仮想機械と中間語プログラムを利用した実行系向けにプログラムを開発する際、ターゲット端末上とプログラム開発用ホスト端末上で同一のプログラムを実行してクロス開発を行うことが可能である。しかし、ホスト端末上でプログラムを実行させると携帯電話等のターゲット端末に比べ実行速度が速すぎ、ゲーム等のプログラムの実行速度の検証が難しいという問題があった。【解決手段】ターゲット端末上にてプログラムの各命令の実行時間を計測する手段を設ける。ホスト端末上でプログラムを実行する際、当該計測データを参照して、ホスト端末上でターゲット端末上でのプログラムの実行速度を模擬する。【選択図】  図２
2004318449.tif 000002
【特許請求の範囲】
【請求項１】
実行時にソースプログラムまたは中間語プログラムを機械語プログラムへ翻訳して実行する仮想機械を持ち、同一のソースプログラムまたは同一の中間語プログラムが実行可能な二つの異なる端末において、プログラム実行速度が遅い端末上でソースプログラムまたは中間語プログラムの各一命令の実行にかかる時間を計測し、プログラム実行速度が速い端末上でプログラムを実行する際に、計測したデータを参照してプログラム実行速度を調整することを特徴とするプログラム実行速度シュミレーション方法。
【請求項２】
請求項１記載のプログラム実行速度が遅い端末上での命令の実行にかかる時間の計測方法において、ソースプログラムまたは中間語プログラムの複数の命令をまとめて実行時間を計測し、プログラム実行速度が速い端末上でプログラムを実行する際に、計測したデータを参照してプログラム実行速度を調整することを特徴とするプログラム実行速度シュミレーション方法。
【請求項３】
請求項１と２記載のプログラム実行速度が遅い端末上の命令の実行にかかる時間の計測方法において、ソースプログラムまたは中間語プログラムの命令の実行時間が命令が参照する値によって異なる場合、命令と参照する値の組ごとに実行時間を計測し、プログラム実行速度が速い端末上でプログラムを実行する際に、計測したデータを参照してプログラム実行速度を調整することを特徴とするプログラム実行速度シュミレーション方法。
【請求項４】
請求項１から３記載のプログラム実行速度が速い端末上でプログラムを実行する際のプログラム実行速度を調整方法において、ソースプログラムまたは中間語プログラムのロード時および実行時に仮想機械の処理を待機する命令を挿入することを特徴とするプログラム実行速度シュミレーション方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はプログラム開発用ホスト端末（以下、ホスト端末）上において開発したプログラムの動作検証を行う際、運用時にプログラムを実行するターゲット端末（以下、ターゲット端末）のプログラム実行速度を模擬する方法に関する。
【０００２】
【従来の技術】
従来、ターゲット端末上で動作するプログラムをホスト端末上でクロス開発する場合、コンパイルしたターゲット端末上で動作する機械語プログラムを動作検証のためにホスト端末上で実行することがある。その際、ターゲット端末上で動作する機械語プログラムをホスト端末上で動作させるためにエミュレータを利用し、ホスト端末上で動作する機械語プログラムに翻訳して実行していた。機械語プログラムの翻訳には時間がかかるため、ホスト端末上でのプログラムを動作させるとターゲット端末上に比べ実行速度が遅いという問題があった。この問題を解決するために特開平６−９５９２１号公報では、ターゲット端末上で動作するプログラムをホスト端末上のエミュレータで実行させた場合のプログラム実行を高速化する技術について述べられている。
【０００３】
【特許文献１】
特開平６−９５９２１号公報
【０００４】
【発明が解決しようとする課題】
しかし、仮想機械と中間語プログラムを利用して異なったプラットフォームで同一のプログラムを実行できる実行系が一般的になってくると、ターゲット端末とホスト端末の両方で同一のプログラムが実行可能になり、エミュレータが不要になる。中間語プログラムを実行する際には、ターゲット端末とホスト端末の両方において中間語プログラムを機械語プログラムに翻訳して実行するという同様の処理が発生する。よって、ターゲット端末とホスト端末のプログラム実行速度の差は、主にハードウェアの性能差によって引き起こされる。通常、ターゲット端末は携帯電話等のハードウェア性能の低い組込み機器であり、ホスト端末の方がハードウェアの性能が高いことから、ホスト端末上でプログラムを実行するとターゲット端末上より実行速度が速くなり、ゲーム等のプログラム実行速度の検証が必要な場合、ホスト端末上でプログラム実行速度を検証することが難しいという問題があった。この問題のため、正確に動作検証を行う場合はターゲット端末上にホスト端末上で開発したプログラムを頻繁に転送して実行する必要があり、作業効率が低下するという問題があった。
【０００５】
【課題を解決するための手段】
上記のような従来技術の問題点を解決するために、ターゲット端末上の仮想機械にソースプログラムまたは中間語プログラムの各一命令ごとの実行時間を計測する手段を設け、ホスト端末上の仮想機械は計測したデータを参照しながらソースプログラムまたは中間語プログラムの一命令実行時間がターゲット端末上の仮想機械の同命令の実行時間と同一になるように命令ごとに実行を遅らせる。
【０００６】
実行時間の計測においては複数の命令単位、例えば関数ごとに実行時間を計測する方法も考えられるし、命令が参照している値（オペランド、スタック上の値等）によって実行時間が変わる場合は、命令と異なる値ごとに実行時間を計測する方法が考えられる。
【０００７】
ホスト端末上の仮想機械の実行を遅らせる方法として、仮想機械自身が中間語プログラムを機械語プログラムへ翻訳して実行する際に仮想機械の処理を待機する方法、ソースプログラムまたは中間語プログラムを主記憶装置にロードする際に仮想機械の処理を待機する命令を挿入する方法、および実行中にソースプログラムまたは中間語プログラムを機械語プログラムへ翻訳し、その翻訳結果を主記憶装置上にロードされているソースプログラムまたは中間語プログラムと置き換えて実行を行う実行系の場合は、機械語プログラムに翻訳する際に仮想機械を待機する機械語プログラムの命令を挿入する方法が考えられる。
【０００８】
【発明の実施の形態】
以下、本発明についての実施例の一つを図１〜図４を用いて説明する。
【０００９】
まず始めに図１により、本発明による一利用形態の全体図と機器構成を示す。
【００１０】
ホスト端末１００は、二次記憶装置１０１、主記憶装置１０２、中央処理装置１０３、通信装置１０４、表示装置１０５からなる。主記憶装置１０２には、検査対象プログラム１０６、仮想機械実行待機処理部１０７、仮想機械等がある。ターゲット端末１１０は、二次記憶装置１１１、主記憶装置１１２、中央処理装置１１３、通信装置１１４、表示装置１１５からなる。主記憶装置１１２には、実行時間計測用プログラム１１６、仮想機械実行時間計測部１１７、仮想機械１１８がある。ホスト端末１００とターゲット端末は１１０はネットワークにより繋がっておりデータ通信が可能である。
【００１１】
図２は本発明に係るモジュールの関連を示す図である。検査対象プログラム１０６をホスト端末１００上で実行させる際にターゲット端末１１０上の実行速度を模擬する方法について説明する。
【００１２】
ホスト端末１００上で検査対象プログラム１０６を実行する事前準備として、ターゲット端末１１０上で実行時間計測プログラム１１６を仮想機械１１８により実行し、仮想機械実行時間計測部１１７により、実行時間計測データ２０１を生成し、ホスト端末１００上の２次記憶装置１０１に記録する。ホスト端末１００上で検査対象プログラム１０６を仮想機械１０８により実行する際は、仮想機械１０８が検査対象プログラム１０６は仮想機械実行待機処理部１０７に実行待機処理を依頼する。仮想機械実行待機処理部１０７は、２次記憶装置１０１内の実行時間計測データ２０１を参照し、仮想機械１０８の実行時間がターゲット端末１１０上の仮想機械１１８と同じになるようにする。その方法として、仮想機械１０８による検査対象プログラム１０６のロード時に仮想機械実行待機処理部１０７に問い合わせ、処理を待機するソースプログラムまたは中間語プログラムコードまたは翻訳した機械語プログラムを挿入する方法、仮想機械１０８による検査対象プログラム１０６の一命令実行毎に仮想機械実行待機処理部１０７に問い合わせ、仮想機械の処理を待機させる方法が考えられる。
【００１３】
図３は、実行時間計測データ２０１を示す図である。命令３０１は、仮想機械により実行可能なソースプログラムまたは中間語プログラムの命令を一意に特定できる値または名前である。実行時間３０２は、命令が参照する値を入力することでターゲット端末１１０上の仮想機械１１８による命令実行時間を算出する式やプログラムが考えられる。各テーブルの行要素３０３は、ソースプログラムまたは中間語プログラムの一つの命令に対応している。
【００１４】
本発明におけるターゲット端末１１０上で実行時間計測プログラムプログラム１１６を実行させ、実行時間計測データを生成するフローチャートを図４に示し、処理フローを以下に説明する。
処理４０１：  仮想機械１１８は、実行時間計測プログラム１１６の実行を開始する。
処理４０２：  仮想機械実行時間計測部１１７は、仮想機械１１８による一命令実行にかかる時間を計測する。
処理４０３：  仮想機械実行時間計測部１１７は、実行時間計測データ２０１を参照し計測した一命令実行にかかる時間がすでに記録済みかどうか判定する。記録済みである場合、処理４０５に進み、それ以外は処理４０４に進む。
処理４０４：  計測したデータを実行時間計測データ２０１に記録する。
処理４０５：  実行時間計測プログラム１１６の最後の命令か判定する。最後の命令の場合、処理を終了する。それ以外は処理４０４に進む。処理４０２に進む。
【００１５】
本発明におけるホスト端末１００上で検査対象プログラム１０６を実行するフローチャートを図５に示し、処理フローを以下に説明する。
処理５０１：  仮想機械１０８は、検査対象プログラム１０６内の命令のロードおよび実行を開始する。
処理５０２：  仮想機械実行時間待機処理部１０７は、命令実行時間の計測を開始する。
処理５０３：  仮想機械１０８により命令を実行する。
処理５０４：  仮想機械実行時間待機処理部１０７は、実行時間計測データ２０１を参照し、仮想機械１１８の命令実行時間になるまで仮想機械１０８の処理を待機させる。
処理５０５：  検査対象プログラム１０６の最後の命令か判定する。最後の命令の場合、処理を終了する。それ以外は処理５０６に進む。
【００１６】
本発明におけるホスト端末１００上で検査対象プログラム１０６を実行する方法の一つとして図５で示す処理とは異なる方法についてを図６に示す。本方法は、仮想機械１０８を大きく変更することなく実装可能であり、より容易に既存の仮想機械に適応可能な方法である。処理フローを以下に説明する。
処理６０１：  仮想機械１０８は、検査対象プログラム１０６内の命令のロードおよび実行を開始する。
処理６０２：  仮想機械実行時間待機処理部１０７は、仮想機械１０８によりロードしている一命令の実行時間を計測する。
処理６０３：  実行時間計測データ２０１を参照し、仮想機械１０８と仮想機械１１８による命令実行時間の差分を計算する。
処理６０４：  ロード中の検査対象プログラム１０６に処理６０３の結果である差分時間を待機する処理を行うコードを挿入する。
処理６０５：  検査対象プログラム１０６内の命令の最後の命令か判定する。最後の命令の場合、処理６０６に進む。それ以外は処理６０２に進む。
処理６０６：  仮想機械１０８はロードした検査対象プログラム１０６の実行を開始する。
【００１７】
【発明の効果】
本発明によれば、プログラム開発用ホスト端末上において、ターゲット端末上の命令実行時間のデータを利用することにより、ホスト端末上でターゲット端末上のプログラム実行速度を模擬することを実現し、効率的にプログラムを開発することが可能となる。
【図面の簡単な説明】
【図１】本発明を実現するシステム全体のモジュール構成の一例を示す図である。
【図２】本発明を実現するシステム全体のモジュール関係の一例を示す図である。
【図３】プログラム実行時に参照する実行時間計測データテーブルの一例を示す図である。
【図４】プログラム実行時間計測時における処理の流れを示す図である。
【図５】プログラム実行時における処理の流れを示す図である。
【図６】プログラム実行時における、図５と異なる処理の流れを示す図である。
【符号の説明】
１００…ホスト端末、１０１…２次記憶装置、１０２…主記憶装置、１０３…中央処理装置、１０４…通信装置、１０５…表示装置、１０６…検査対象プログラム、１０７…仮想機械実行待機処理部、１０８…仮想機械、１１０…ターゲット端末、１１１…２次記憶装置、１１２…主記憶装置、１１３…中央処理装置、１１４…通信装置、１１５…表示装置、１１６…実行時間計測用プログラム、１１７…仮想機械実行時間計測部、１１８…仮想機械。
【図１】
2004318449.tif 000003
【図２】
2004318449.tif 000004
【図３】
2004318449.tif 000005
【図４】
2004318449.tif 000006
【図５】
2004318449.tif 000007
【図６】
2004318449.tif 000008