JPH1124940A - エミュレーション処理方式 - Google Patents

エミュレーション処理方式

Info

Publication number
JPH1124940A
JPH1124940A JP18716197A JP18716197A JPH1124940A JP H1124940 A JPH1124940 A JP H1124940A JP 18716197 A JP18716197 A JP 18716197A JP 18716197 A JP18716197 A JP 18716197A JP H1124940 A JPH1124940 A JP H1124940A
Authority
JP
Japan
Prior art keywords
address
target
code
application
program
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.)
Granted
Application number
JP18716197A
Other languages
English (en)
Other versions
JP3495230B2 (ja
Inventor
Eiji Shamoto
英司 社本
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.)
NEC IC Microcomputer Systems Co Ltd
Original Assignee
NEC IC Microcomputer Systems Co Ltd
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 NEC IC Microcomputer Systems Co Ltd filed Critical NEC IC Microcomputer Systems Co Ltd
Priority to JP18716197A priority Critical patent/JP3495230B2/ja
Publication of JPH1124940A publication Critical patent/JPH1124940A/ja
Application granted granted Critical
Publication of JP3495230B2 publication Critical patent/JP3495230B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 前方参照分岐命令を含むエミュレーション対
象プログラムを高速に実行するエミュレーション処理方
式を得る。 【解決手段】 エミュレーション対象アプリケーション
プログラムを一定の単位ごとにホストマシンで動作する
ターゲットコードに変換して変換を行ったターゲットコ
ードを実行する動作を繰り返し、この変換動作において
エミュレーション対象アプリケーションコードが分岐命
令で、その参照先が変換の段階において未解決で変換を
行う範囲外であれば、制御をターゲットコードの実行か
らエミュレータに戻すターゲットコードを生成してこれ
に変換する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はソフトウェアのエミ
ュレーション処理方式に関し、特に任意のマイクロプロ
グラム向けに開発されたアプリケーションソフトウエア
を、異なるアーキテクチャを有する他のマイクロプロセ
ッサ上で実行させるソフトウエアのエミュレーション処
理方式に関する。
【0002】
【従来の技術】図2は、従来のこの種のエミュレーショ
ン処理方式を実行するためのシステムの構成を示すブロ
ック図である。従来のエミュレーション処理方式を実行
するシステムは、異なるアーキテクチャの機械語命令コ
ードで作成されたアプリケーションプログラム201
と、アプリケーションプログラムをターゲットマシンで
実行するエミュレータ202と、エミュレータ202に
より変換されたターゲットコードをアプリケーションプ
ログラム中のアドレスと共に格納するアドレス/ターゲ
ットコード格納テーブル203から構成されている。
【0003】エミュレータ202は、プログラムロード
手段20201,初期アドレス設定手段20202,ア
ドレス検索手段20203,アドレス一致判定手段20
204,アプリケーションコード取り出し手段2020
5,アプリケーションコード−ターゲットコード変換手
段20206,アドレス/ターゲットコード格納手段2
0207,ターゲットコード実行手段20208,アド
レス更新手段20209,ターゲットコード取出手段2
0210を含んで構成されている。アドレス/ターゲッ
トコード格納テーブル203は、ターゲットマシンのメ
モリ中に格納されている。
【0004】次にエミュレータ202の動作フローを図
3のフローチャートを参照して説明する。エミュレータ
202の動作フローは、図3のプログラムロード手段3
01,初期アドレス設定手段302,アドレス検索手段
303,アドレス一致判定手段304,アプリケーショ
ンコード取り出し手段305,アプリケーションコード
−ターゲットコード変換手段306,アドレス/ターゲ
ットコード格納手段307,ターゲットコード実行手段
308,アドレス更新手段309,ターゲットコード取
り出し手段310,ターゲットコード実行手段311か
ら構成される。
【0005】まず図2のエミュレータ202は、図3の
プログラムロード手段301によりアプリケーションプ
ログラム201をターゲットマシン上のメモリにロード
して、初期アドレス設定手段302により解析を開始す
るアドレスをアプリケーションプログラムの先頭アドレ
スに設定する。次にアドレス検索手段303によって、
アドレス/ターゲットコード格納テーブル203から解
析を実行するアドレスを検索する。解析を実行するアド
レスが、アドレス/ターゲットコード格納テーブル20
3になければ、アドレス一致判定手段304を介してア
プリケーションコード取り出し手段305を実行する
が、一致するアドレスがあれば、ターゲットコード取り
出し手段310を実行する。
【0006】アプリケーションコード取り出し手段30
5は、解析を実行するアドレスのアプリケーションプロ
グラムを1命令取り出して、アプリケーションコード−
ターゲットコード変換手段306を行う。アプリケーシ
ョンコード−ターゲットコード変換手段306は、取り
出したアプリケーションコードをターゲットコードに変
換して、アドレス/ターゲットコード格納手段307を
行う。アドレス/ターゲットコード格納手段307は、
解析を実行しているアドレスと変換したターゲットコー
ドをアドレス/ターゲットコード格納テーブル203に
格納して、ターゲットコード実行手段308を行う。タ
ーゲットコード実行手段308は、変換したターゲット
コードを実行してアドレス更新手段309を行う。アド
レス更新手段309は、エミュレートしたアプリケーシ
ョンコードの種類または長さに応じてアドレスを更新し
て、アドレス検索手段303を行う。
【0007】またターゲットコード取り出し手段310
は、アドレス/ターゲットコード格納テーブル203か
らアドレスに対応するターゲットコードを取り出してタ
ーゲットコード実行手段311を行う。ターゲットコー
ド実行手段311は、取り出したターゲットコードを実
行してアドレス更新手段309を行う。
【0008】次に具体的な例として、図4に示すアプリ
ケーションプログラムが入力されたときの図2のエミュ
レータ202の動作について説明する。図4のアプリケ
ーションプログラムにおいて、100h−101h番地
のコード『mov r1,1000h』はレジスタr1
に1000hを入れる命令であり、102h−103h
番地のコード『mov[80000h],10h』はデ
ータ領域80000h番地に10hを入れる命令であ
り、104h−off7h番地までは分岐命令以外の命
令があるとする。またoff8h−off9h番地のコ
ード『dec r1』はレジスタr1の値をデクリメン
トする命令、offah−offbh番地のコード『c
mp r1.0』はレジスタr1と0の比較演算を行い
r1=0ならキャリーフラグを1にし、それ以外ならキ
ャリーフラグを0にする命令である。またoffch−
offdh番地のコード『brnc !102h』はキ
ャリーフラグが0の時にアドレス102h番地に分岐す
る命令、offeh−offfh番地のコード『re
t』はサブルーチンコールから戻る命令で、ここではサ
ブルーチンコールのネストは0として、プログラムを終
了する命令になるとする。
【0009】図4の例では、上記命令のうち『mov
[80000h],10h』だけは、1対1対応可能な
命令がターゲットホストにないので、複数の命令『mo
ver7,10h』,『mov[80000h],r
7』に変換されて、他の命令は等価な命令に変換され
る。但し等価な命令に変換されるとはいえ、アプリケー
ションコードの命令セットとターゲットコードの命令セ
ットでは等価な命令でも、異なるバイナリコードで実現
されているので、同じバイナリーコードとはならない。
また、ターゲットコードでの各命令長は全て2バイトで
あるとする。
【0010】次に動作について説明する。まず図3のプ
ログラムロード手段301で、アプリケーションプログ
ラムをターゲットマシンのメモリ上にロードする。次に
初期アドレス設定手段302で、開始するアドレスをエ
ミュレーションプログラムの先頭アドレス100h番地
に設定する。次にアドレス検索手段303で、アドレス
/ターゲットコード格納テーブルから解析を実行するア
ドレス100h番地を検索する。アドレス100h番地
はアドレス/ターゲットコード格納テーブルにないの
で、アプリケーションコード取り出し手段305を実行
する。アプリケーションコード取り出し手段305は、
解析を実行するアドレス100h番地のアプリケーショ
ンプログラムを1命令取り出す。従ってアドレス100
h番地のアプリケーションコード『mov r1,10
00h』が取り出される。次のアプリケーションコード
−ターゲットコード変換手段306は、アプリケーショ
ンコード『mov r1,1000h』をターゲットコ
ード『movr1,1000h』に変換する。
【0011】次のアドレス/ターゲットコード格納手段
307は、アプリケーションアドレス100h番地とタ
ーゲットコード『mov r1,1000h』とをアド
レス/ターゲットコード格納テーブルに格納する。次に
ターゲットコード実行手段308は、ターゲットコード
『mov r1,1000h』を実行する。ターゲット
コードの実行によって、レジスタr1の値は1000h
になる。実行後にはアドレス更新手段309によって解
析を実行するアドレスを102h番地として、アドレス
検索処理303を行う。以上の動作の繰り返しが、of
f8h−off9h番地の『dec r1』まで実行さ
れる。
【0012】レジスタr1の値は1000hなので、o
ff8h−off9h番地のアプリケーションコード
『dec r1』で、レジスタr1がofffhにな
り、offah−offbh番地のアプリケーションコ
ード『cmp r1,0』で、r1=0ではないのでキ
ャリーフラグが0になり、offch−offdh番地
のアプリケーションコード『brnc !102h』の
キャリーフラグが0なので、解析を実行するアドレスが
102h番地になる。このときのアドレス/ターゲット
コード格納テーブルを図5(a)に示す。
【0013】その後、アドレス検索処理303で、アド
レス/ターゲットコード格納テーブルから、解析を実行
するアドレス102h番地を検索する。アドレス102
h番地は、アドレス/ターゲットコード格納テーブルに
あるのでターゲットコード取り出し手段310を実行す
る。ターゲットコード取り出し手段310は、アドレス
/ターゲットコード格納テーブルからアドレスに対応す
るターゲットコード『mov r7,10h』,『mo
v[800000h],r7』を取り出す。次のターゲ
ットコード実行手段311は、ターゲットコード『mo
v r7,10h』,『mov[800000h],r
7』を実行してアドレス更新手段309を実行する。そ
の後はアドレス更新手段309によって解析を実行する
アドレスを104h番地として、アドレス検索処理30
3を実行する。以上の動作の繰り返しが、offch−
offdh番地の『brnc !102h』まで実行さ
れて、再び解析を実行するアドレスが102h番地にな
る。この時、レジスタr1は、offehとなってい
る。
【0014】さらにアプリケーションコード『dec
r1』,『cmp r1,0』,『brnc !102
h』は、レジスタr1の値を−1して、r1=0でない
ならアドレス102h番地を行うという動作をするた
め、102h番地からoffdh番地までをレジスタr
1の値が0になるまで繰り返すという動作になる。以上
の繰り返しの処理で、102h番地からoffdh番地
までをoffeh回繰り返して行う。その後、アドレス
検索処理303でアドレス/ターゲットコード格納テー
ブルから解析を実行するアドレスoffeh番地を検索
する。アドレスoffehは、アドレス/ターゲットコ
ード格納テーブルにないので、アプリケーションコード
取り出し手段305を行う。
【0015】アプリケーションコード取り出し手段30
5は、アドレスoffeh番地のアプリケーションコー
ド『ret』を取り出す。アプリケーションコード−タ
ーゲットコード変換手段306は、アプリケーションコ
ード『ret』をターゲットコード『ret』に変換す
る。アドレス/ターゲットコード格納手段307は、ア
プリケーションアドレスoffeh番地とターゲットコ
ード『ret』をアドレス/ターゲットコード格納テー
ブルに格納する。次にターゲットコード実行手段308
は、ターゲットコード『ret』を実行する。ターゲッ
トコード『ret』の実行により、エミュレーション手
段202は終了する。この時の最終的なアドレス/ター
ゲットコード格納テーブルを図5(b)に示す。
【0016】
【発明が解決しようとする課題】上記のような従来のエ
ミュレーション処理方式では、同じアドレスにある機械
語コードの2回目以降の実行において、1機械語命令ご
とにアドレス検索手段,アドレス一致手段,ターゲット
コード取り出し手段を実行することになるため、エミュ
レーションの実行に時間がかかるという問題点があっ
た。
【0017】具体的な例を、図4のアプリケーションプ
ログラムを参照して説明する。この例において、アプリ
ケーションコード1命令は、ターゲットコード2命令に
置き換えられるとして、ターゲットコード1命令の実行
が1μsであるとする。また、図3の『303→304
→305→306→307→308→309』のターゲ
ットコード以外の実行が平均200命令あり、図3の
『303→304→310→311→309』のターゲ
ットコード以外の実行が50命令あるとする。
【0018】従来の方式で実行に要する時間は、「機械
語コードの1回目の実行に要する時間」+「機械語コー
ドの2回目以降の実行に要する時間」である。従来のエ
ミュレーション処理方式で、機械語コードの1回目の実
行に要する時間は、1(回)×(200(命令)+2
(命令))×ofooh(命令)×1(μs)=1
(回)×(200(命令)+2(命令))×3840
(命令)×1(μs)=0.776(秒)である。ま
た、機械語コードの2回目の実行に要する時間は、(4
096(回)×(50(命令)+2(命令))×ofo
oh(命令)×1(μs)=(4096(回)×(50
(命令)+2(命令))×3840(命令)×1(μ
s)=817.889(秒)である。従って従来の方式
でエミュレーション処理の実行に要する時間は、0.7
76(秒)+817.889(秒)=818.665
(秒)となる。
【0019】本発明はかかる問題点を解決するためにな
されたものであり、高速処理が可能なエミュレーション
処理方式を提供することを目的としている。
【0020】
【課題を解決するための手段】本発明のエミュレーショ
ン処理方式は、任意のマイクロプログラム向けに開発さ
れたアプリケーションソフトウェアを異なるアーキテク
チャを有するホストマシン上で実行するエミュレーショ
ン処理方式において、エミュレーション対象アプリケー
ションプログラムを一定の単位ごとに前記ホストマシン
で動作するターゲットコードに変換し、変換を行ったタ
ーゲットコードを実行する動作を繰り返し、前記変換動
作においてエミュレーション対象アプリケーションコー
ドが分岐命令で、その参照先が変換の段階において未解
決で変換を行う範囲外であれば、制御をターゲットコー
ドの実行からエミュレータに戻すターゲットコードを生
成してこれに変換することを特徴とする。
【0021】また、任意のマイクロプログラム向けに開
発されたアプリケーションソフトウェアを異なるアーキ
テクチャを有するホストマシン上で実行するエミュレー
ション処理方式において、エミュレータと、前記ホスト
マシンのメモリに格納されたアプリケーションアドレス
/ターゲットアドレス格納テーブル,ターゲットコード
格納テーブル,未決定参照情報テーブル,開始アドレス
格納領域とでシステムが構成され、前記エミュレータに
は、エミュレーション対象アプリケーションプログラム
をホストマシンのメモリにロードするプログラムロード
手段と、前記開始アドレス格納領域にアプリケーション
プログラムの先頭アドレスを設定する初期アドレス設定
手段と、前記アプリケーションアドレス/ターゲットア
ドレス格納テーブルに、前記エミュレーション対象プロ
グラムの実行しようとするアドレスが格納されているか
否かを判定することにより、当該アドレスの前記エミュ
レーション対象プログラム機械語コードが変換されてい
るか否かを判定するアプリケーションコード変換判定手
段と、前記アプリケーションコード変換判定手段により
アプリケーションアドレスが格納されていないときに前
記エミュレーション対象プログラムを一定の単位で前記
ホストマシンの機械語コードに変換を行うためにエミュ
レーション対象プログラムの変換開始アドレスと変換終
了アドレスを設定する変換開始/終了位置設定手段と、
前記エミュレーション対象プログラムの変換を実行しよ
うとするアドレスが前記変換終了アドレスか否かを判定
する終了アプリケーションアドレス判定手段と、前記終
了アプリケーションアドレス判定手段により実行しよう
とするアドレスが前記変換終了アドレスでないときに前
記エミュレーション対象プログラムから当該アドレスの
機械語コードを取り出すアプリケーションコード取り出
し手段と、前記アプリケーションコード取り出し手段に
より取り出されたエミュレーション対象プログラムの機
械語コードが分岐命令で、参照先アドレスが前記アプリ
ケーションアドレス/ターゲットアドレス格納デーブル
になく、且つその値が変換終了アドレスより大きいか否
かを判定する分岐命令判定手段と、前記分岐命令判定手
段により、分岐命令で参照先のアドレスが、前記アプリ
ケーションアドレス/ターゲットアドレス格納テーブル
になく、且つその値が変換終了アドレスより等しい又は
大きいと判断されなかったとき、前記エミュレーション
対象プログラムから取り出した機械語コードを前記ホス
トマシンの機械語コードに変換するアプリケーションコ
ード−ターゲットコード変換手段と、前記ホストマシン
の機械語コードを前記ターゲットコード格納デーブルに
格納して、前記エミュレーション対象プログラムの該当
アドレスを前記ホストマシンの機械語コードの該当アド
レスと共に前記アプリケーションアドレス/ターゲット
アドレス格納テーブルに格納して、機械語コードの参照
先が前記アプリケーションアドレス/ターゲットアドレ
ス格納テーブルにない場合に前記未決定参照情報テーブ
ルに解析中のホストマシンのアドレスを参照先のエミュ
レーション対象プログラムのアドレスと共に格納するア
ドレス/ターゲットコード格納手段と、前記ターゲット
コードアドレス中の機械語コードを実行するターゲット
コード実行手段と、前記分岐命令判定手段により、分岐
命令で参照先のアドレスが、前記アプリケーションアド
レス/ターゲットアドレス格納テーブルになく、且つそ
の値が変換終了アドレスより等しい又は大きいと判断さ
れたとき、あるいは前記終了アプリケーションアドレス
判定手段により、実行しようとするアドレスが前記変換
終了アドレスのとき、前記ターゲットコードアドレス中
の機械語コードの実行から本エミュレーションに制御を
戻すため前記ホストマシンの機械語コードを生成する制
御用ターゲットコード生成手段と、前記アドレス/ター
ゲットコード格納手段により、格納された未決定参照情
報テーブルの解析中のホストマシンのアドレスにある機
械語コードを、参照先のエミュレーション対象プログラ
ムのアドレスに該当するホストマシンの機械語コードの
アドレスで変更を行う参照先決定手段とを備えたことを
特徴とする。
【0022】また、任意のマイクロプログラム向けに開
発されたアプリケーションソフトウェアを異なるアーキ
テクチャを有するホストマシン上で実行するエミュレー
ション処理方式において、エミュレータと、前記ホスト
マシンのメモリに格納されたアプリケーションアドレス
/ターゲットアドレス格納テーブル,ターゲットコード
格納テーブル,未決定参照情報テーブル,開始アドレス
格納領域とでシステムが構成され、前記エミュレータを
動作させ、エミュレーション対象アプリケーションプロ
グラムをホストマシンのメモリにロードするロードプロ
グラム、前記開始アドレス格納領域にアプリケーション
プログラムの先頭アドレスを設定する初期アドレス設定
プログラム、前記アプリケーションアドレス/ターゲッ
トアドレス格納テーブルに、前記エミュレーション対象
プログラムの実行しようとするアドレスが格納されてい
るか否かを判定することにより、当該アドレスの前記エ
ミュレーション対象プログラム機械語コードが変換され
ているか否かを判定するアプリケーションコード変換判
定プログラム、前記アプリケーションコード変換判定プ
ログラムによりアプリケーションアドレスが格納されて
いないときに前記エミュレーション対象プログラムを一
定の単位で前記ホストマシンの機械語コードに変換を行
うためにエミュレーション対象プログラムの変換開始ア
ドレスと変換終了アドレスを設定する変換開始/終了位
置設定プログラム、前記エミュレーション対象プログラ
ムの変換を実行しようとするアドレスが前記変換終了ア
ドレスか否かを判定する終了アプリケーションアドレス
判定プログラム、前記終了アプリケーションアドレス判
定プログラムにより実行しようとするアドレスが前記変
換終了アドレスでないときに前記エミュレーション対象
プログラムから当該アドレスの機械語コードを取り出す
アプリケーションコード取り出しプログラム、前記アプ
リケーションコード取り出しプログラムにより取り出さ
れたエミュレーション対象プログラムの機械語コードが
分岐命令で、参照先アドレスが前記アプリケーションア
ドレス/ターゲットアドレス格納デーブルになく、且つ
その値が変換終了アドレスより大きいか否かを判定する
分岐命令判定プログラム、前記分岐命令判定プログラム
により、分岐命令で参照先のアドレスが、前記アプリケ
ーションアドレス/ターゲットアドレス格納テーブルに
なく、且つその値が変換終了アドレスより等しい又は大
きいと判断されなかったとき、前記エミュレーション対
象プログラムから取り出した機械語コードを前記ホスト
マシンの機械語コードに変換するアプリケーションコー
ド−ターゲットコード変換プログラム、前記ホストマシ
ンの機械語コードを前記ターゲットコード格納デーブル
に格納して、前記エミュレーション対象プログラムの該
当アドレスを前記ホストマシンの機械語コードの該当ア
ドレスと共に前記アプリケーションアドレス/ターゲッ
トアドレス格納テーブルに格納して、機械語コードの参
照先が前記アプリケーションアドレス/ターゲットアド
レス格納テーブルにない場合に前記未決定参照情報テー
ブルに解析中のホストマシンのアドレスを参照先のエミ
ュレーション対象プログラムのアドレスと共に格納する
アドレス/ターゲットコード格納プログラム、前記ター
ゲットコードアドレス中の機械語コードを実行するター
ゲットコード実行プログラム、前記分岐命令判定プログ
ラムにより、分岐命令で参照先のアドレスが、前記アプ
リケーションアドレス/ターゲットアドレス格納テーブ
ルになく、且つその値が変換終了アドレスより等しい又
は大きいと判断されたとき、あるいは前記終了アプリケ
ーションアドレス判定プログラムにより、実行しようと
するアドレスが前記変換終了アドレスのとき、前記ター
ゲットコードアドレス中の機械語コードの実行から本エ
ミュレーションに制御を戻すため前記ホストマシンの機
械語コードを生成する制御用ターゲットコード生成プロ
グラム、前記アドレス/ターゲットコード格納プログラ
ムにより、格納された未決定参照情報テーブルの解析中
のホストマシンのアドレスにある機械語コードを、参照
先のエミュレーション対象プログラムのアドレスに該当
するホストマシンの機械語コードのアドレスで変更を行
う参照先決定プログラムを記録した記録媒体を備えたこ
とを特徴とする。
【0023】さらに、エミュレーション対象アプリケー
ションプログラムを前記ホストマシンで動作するターゲ
ットコードに変換する一定の単位は、1000hバイト
であることを特徴とする。
【0024】本発明のエミュレーション処理方式は上述
のような構成とすることにより、高速な置き換え処理が
可能となる。すなわち従前のエミュレーション処理方式
では、機械語を読み込み、解釈,実行処理を行う必要が
あり、ループ処理部分に関してもループの度に以前処理
した同一部分の機械語命令を読み込み、解釈が必要であ
る。また従来の技術として説明した、一度実行したコー
ドを再度実行する際に高速化する方式でも、1命令ごと
に実行ターゲットコード以外の実行があるため、その分
余計に時間がかかってしまう。本発明のエミュレーショ
ン処理方式は、アプリケーションプログラムが前方参照
命令を持っていることを考慮し、上述のような構成にお
いてブロック単位で読み込んだ上で、ターゲットプログ
ラムに置き換えることとしたので、高速な置き換え処理
が可能となる。
【0025】
【発明の実施の形態】以下、本発明の実施形態を図面を
参照して説明する。図1は、本実施形態のミュレーショ
ン処理方式を実行するためのシステムの構成を示すブロ
ック図である。図1に示すシステムは、異なるアーキテ
クチャの機械語命令コードで作成されたアプリケーショ
ンプログラム101と、このアプリケーションプログラ
ム101をターゲットマシンで実行するエミュレータ1
02と、アプリケーションプログラム101中のアドレ
ス(アプリケーションアドレス1031)をターゲット
プログラム中のアドレス(ターゲットアドレス103
2)と共に格納するアプリケーションアドレス/ターゲ
ットアドレス格納テーブル103と、エミュレータ10
2により変換されたターゲットコード1041を格納す
るターゲットコード格納テーブル104と、前方参照命
令のターゲットアドレス10512を前方参照分岐命令
の参照先のアプリケーションアドレス10511と共に
格納する未決定参照情報テーブル105と、解析を開始
するアドレスを格納する開始アドレス格納領域106か
ら構成される。
【0026】エミュレータ102は、プログラムロード
手段10201,初期アドレス設定手段10202,ア
プリケーションコード変換判定手段10203,変換開
始/終了位置設定手段10204,終了アプリケーショ
ンアドレス判定手段10205,アプリケーションコー
ド取り出し手段10206,分岐命令判定手段1020
7,アプリケーションコード−ターゲットコード変換手
段10208,アドレス/ターゲットコード格納手段1
0209,ターゲットコード実行手段10210,制御
用ターゲットコード生成手段10211,参照先決定手
段10212を含んで構成されている。アプリケーショ
ンアドレス/ターゲットアドレス格納テーブル103,
ターゲットコード格納テーブル104,未決定参照情報
テーブル105および開始アドレス格納領域106は、
ターゲットマシンのメモリ中に格納される。
【0027】次に本実施形態のエミュレータ102の動
作フローを図6のフローチャートを参照して説明する。
エミュレータ102の動作フローは、図6のプログラム
ロード手段601,初期アドレス設定手段602,アプ
リケーションコード変換判定手段603,変換開始/終
了位置設定手段604,終了アプリケーションアドレス
判定手段605,アプリケーションコード取り出し手段
606,分岐命令判定手段607,アプリケーションコ
ード−ターゲットコード変換手段608,アドレス/タ
ーゲットコード格納手段609,ターゲットコード実行
手段610,制御用ターゲットコード生成手段611,
アドレス/ターゲットコード格納手段612,制御用タ
ーゲットコード生成手段613,ターゲットコード格納
手段614,参照先決定手段615からなる。
【0028】まず図1のミュレータ102は、図6のプ
ログラムロード手段601によりアプリケーションプロ
グラムをターゲットマシンのメモリ上にロードして、初
期アドレス設定手段602により、図1の開始アドレス
格納領域106にアプリケーションプログラムの先頭ア
ドレスを設定する。次にアプリケーションコード変換判
定手段603を行う。アプリケーションコード変換判定
手段603は、解析実行中のアプリケーションアドレス
が図1のアプリケーションアドレス/ターゲットアドレ
ス格納テーブル103にあるか否かにより、既に変換さ
れているか否かを判定する。
【0029】解析実行中のアプリケーションアドレスが
あれば、既に変換されていると判断して、ターゲットコ
ード実行手段610を行い、解析実行中のアプリケーシ
ョンアドレスがなければ、既に変換されていないと判断
して、変換開始/終了位置設定手段604を行う。変換
開始/終了位置設定手段604は、図1の開始アドレス
格納領域106から取り出したアドレスを、解析を開始
するアプリケーションアドレスとする。次に開始アプリ
ケーションアドレスから一定のバイトサイズまでのアプ
リケーションアドレスが、図1のアプリケーションアド
レス/ターゲットアドレス格納テーブル103にあれ
ば、そのうち最も値の小さいアプリケーションアドレス
を終了アプリケーションアドレスとする。
【0030】なければ開始アプリケーションアドレスか
ら一定のバイトサイズのアプリケーションアドレスを、
終了アプリケーションアドレスとして、終了アプリケー
ションアドレス判定手段605を行う。終了アプリケー
ションアドレス判定手段605は、解析を行っているア
プリケーションアドレスが終了アプリケーションアドレ
スなら制御用ターゲットコード生成手段613を行い、
そうでないならアプリケーションコード取り出し手段6
06を行う。アプリケーションコード取り出し手段60
6は、解析を実行するアプリケーションアドレスのアプ
リケーションプログラムを1命令取り出して、分岐命令
判定手段607を行う。
【0031】分岐命令判定手段607は、取り出したア
プリケーションコードが分岐命令で参照先のアプリケー
ションアドレスが図1のアプリケーションアドレス/タ
ーゲットアドレス格納テーブル103になく、且つその
値が終了アプリケーションアドレスより等しいか又は大
きければ、すなわち、まだ出来ていない処理範囲外の前
方参照分岐命令と判定して、制御用ターゲットコード生
成手段611を行い、そうでなければアプリケーション
コード−ターゲットコード変換手段608を行う。アプ
リケーションコード−ターゲットコード変換手段608
は、取り出したアプリケーションコードをターゲットコ
ードに変換して、アドレス/ターゲットコード格納手段
609を行う。
【0032】アドレス/ターゲットコード格納手段60
9は、解析をしているアプリケーションアドレスと、そ
のアプリケーションアドレスに対応しているターゲット
アドレスを、図1のアプリケーションアドレス/ターゲ
ットコードアドレス格納テーブル103に格納して、変
換したターゲットコードを、図1のターゲットコード格
納テーブル104に格納する。次に解析しているアプリ
ケーションコードが分岐命令で、参照先のアプリケーシ
ョンアドレスが図1のアプリケーションアドレス/ター
ゲットアドレス格納テーブル103にない時には、解析
中のターゲットコードアドレスを参照先のアプリケーシ
ョンアドレスと共に、未決定参照情報テーブル105に
格納する。
【0033】次に解析を行うアプリケーションアドレス
を、取り出したアプリケーションコードのコードサイズ
分増やして、アプリケーションアドレスに対応するター
ゲットアドレスを、ターゲットコードのコードサイズ分
増やして、終了アプリケーションアドレス判定手段60
5を行う。制御用ターゲットコード生成手段611は、
図1の開始アドレス格納領域106に、参照先のアプリ
ケーションアドレスを格納した後に、制御をエミュレー
タに戻すターゲットコードを生成して、アドレス/ター
ゲットコード格納手段612を行う。アドレス/ターゲ
ットコード格納手段612は、解析をしているアプリケ
ーションアドレスと、そのアプリケーションアドレスに
対応しているターゲットアドレスを、図1のアプリケー
ションアドレス/ターゲットコードアドレス格納テーブ
ル103に格納する。
【0034】次に生成したターゲットコードを、図1の
ターゲットコード格納テーブルに格納して、解析を行う
アプリケーションアドレスを、取り出したアプリケーシ
ョンコードのコードサイズ分増やして、アプリケーショ
ンアドレスに対応するターゲットアドレスを、ターゲッ
トコードのコードサイズ分増やして、終了アプリケーシ
ョンアドレス判定手段605を行う。制御用ターゲット
コード生成手段613は、図1の開始アドレス格納領域
106に解析をしているアプリケーションアドレスを格
納した後に、制御をエミュレータに戻すターゲットコー
ドを生成して、ターゲットコード格納手段614を行
う。ターゲットコード格納手段614は、生成したター
ゲットコードを図1のターゲットコード格納テーブル1
04に格納して、参照先決定手段615を行う。参照先
決定手段615は、図1の未決定参照情報テーブル10
5に格納されているアプリケーションアドレスに対応す
るターゲットアドレスを、図1のアプリケーションアド
レス/ターゲットアドレス格納テーブル103から取り
出し、取り出したターゲットアドレスを用いて、未決定
参照情報テーブル105に格納されているターゲットア
ドレスにある図1のターゲットコード1041の変更を
行い、ターゲットコード実行手段610を行う。ターゲ
ットコード実行手段610は、変換を開始したアプリケ
ーションアドレスに対応するターゲットアドレスからタ
ーゲットコードの実行を行う。ターゲットコード実行終
了後は、アプリケーションコード変換判定手段603を
行う。
【0035】次に具体的な例として、図7に示すアプリ
ケーションプログラムが入力されたときの図1のエミュ
レータ102の動作について説明する。図7のアプリケ
ーションプログラムにおいて、100h−101h番地
のコード『mov[800000h],10h』はデー
タ領域80000h番地に10hを入れる命令、102
h−103h番地のコード『brc !106h』はキ
ャリーフラグが1の時にアドレス106h番地に分岐す
る命令、104h−105h番地のコード『brnc
!2100h』はキャリーフラグが0の時にアドレス2
100h番地に分岐する命令、10feh−10ffh
番地のコード『and r1,10h』はレジスタr1
と10hのand演算を行い、結果をr1に入れる命
令、2100h−2101h番地のコード『or r
1,r2』はレジスタr1とレジスタr2のor演算を
行い、結果をr1に入れる命令、2100h−2101
h番地のコード『ret』はサブルーチンコールから戻
る命令で、ここではサブルーチンコールのネストは0と
してプログラムを終了する命令になるとする。
【0036】一般に『br !0XXXXh』は、無条
件に0XXXXh番地に分岐する命令で、『brc !
0XXXXh』は、キャリーフラグが1なら0XXXX
h番地に分岐する命令で、『benc !0XXXX
h』はキャリーフラグが0なら、0XXXXh番地に分
岐する命令である。この例では、上記の命令のうち『m
ov[800000h],10h』だけ、複数の命令
『mov r7,10h』,『mov[800000
h],r7』に変換されて、他の命令は等価な命令に変
換される。ターゲットコードでの各命令長は全て2バイ
トであるとする。この例においては、本方式の変換する
一定の単位は、1000hバイトとする。
【0037】図1の開始アドレス格納領域のターゲット
アドレスを0c00000h番地として、『br』命令
の参照先のアプリケーションアドレスが0XXXXh番
地を格納した後に、制御をエミュレータに戻すターゲッ
トコードを『mov r7,0XXXXh』,『mov
[0c00000h],r7』,『br[0h]』とす
る。『mov r7,0XXXXh』は、レジスタr7
に値0XXXXhを入れる命令で、『mov[0c00
000h],r7』はアドレス0c0000h番地にレ
ジスタr7の値を入れる命令で、『br[0h]』はエ
ミュレータに制御を戻す命令である。
【0038】また『brc』命令の参照先のアプリケー
ションアドレスが0XXXXh番地を格納した後に、制
御をエミュレータに戻すターゲットコードは、制御をエ
ミュレータに戻すターゲットコードの先頭のターゲット
アドレスが0AAAAh番地の時、『brnc !0A
AAAh+8h』,『mov r7,0XXXXh』,
『mov[0c00000h],r7』,『br[0
h]』とする。『brnc !0AAAAh+8h』
は、キャリーフラグが0なら、機械語コード『brnc
!0AAAAh+8h』,『mov r7,0XXX
Xh』,『mov[0c00000h],r7』,『b
r[0h]』のサイズは8バイトであるので、機械語コ
ード『brnc !0AAAAh+8h』,『mov
r7,0XXXXh』,『mov[0c00000
h],r7』,『br[0h]』の次の機械語コードに
分岐するという命令となる。つまりキャリーフラグが1
で分岐をする際はエミュレータに制御し、そうでないと
きはそれ以降の機械語コードを実行するという命令にな
る。
【0039】『brnc』命令の参照先のアプリケーシ
ョンアドレスが0XXXXh番地を格納した後に制御を
エミュレータに戻すターゲットコードは、制御をエミュ
レータに戻すターゲットコードの先頭のターゲットアド
レスが0AAAAh番地の時、『brc !0AAAA
h+8h』,『mov r7,0XXXXh』,『mo
v[0c00000h],r7』,『br[0h]』で
ある。『brc !0AAAAh+8h』は、キャリー
フラグが1なら、機械語コード『brc !0AAAA
h+8h』,『mov r7,0XXXXh』,『mo
v[0c00000h],r7』,『br[0h]』の
サイズは8バイトであるので、機械語コード『brc
!0AAAAh+8h』,『mov r7,0XXXX
h』,『mov[0c00000h],r7』,『br
[0h]』の次の機械語コードに分岐するという命令と
なる。つまりキャリーフラグが0で分岐をする際は、エ
ミュレータに制御を戻して、そうでないときはそれ以降
の機械語コードを実行するという命令になる。
【0040】次に動作について説明する。まず図6のプ
ログラムロード手段601で、アプリケーションプログ
ラムをターゲットマシンのメモリ上にロードする。次に
初期アドレス設定手段602で開始するアドレスを、図
1の開始アドレス格納領域106にアプリケーションプ
ログラムの先頭アドレス100h番地に設定する。次の
アプリケーションコード変換判定手段603は、図1の
アプリケーションアドレス/ターゲットアドレス格納テ
ーブル103に解析実行中のアプリケーションアドレス
100h番地があるか否かを判定する。アプリケーショ
ンアドレス100h番地は、アプリケーションアドレス
/ターゲットアドレス格納テーブル103にないので、
変換開始/終了位置設定手段604を行う。
【0041】次に交換開始/終了位置設定手段604
は、図1の開始アドレス格納領域106から取り出した
アドレス100h番地を、解析を開始するアプリケーシ
ョンアドレスとし、開始アプリケーションアドレスから
一定のバイトサイズまでのアプリケーションアドレスが
図1のアプリケーションアドレス/ターゲットアドレス
格納テーブル103にないので、開始アプリケーション
アドレス100h番地から一定のバイトサイズ1000
hバイトのアプリケーションアドレス1100h番地
を、終了アプリケーションアドレスとして、次に終了ア
プリケーションアドレス判定手段605を行う。
【0042】終了アプリケーションアドレス判定手段6
05では、解析を行っているアプリケーションアドレス
100h番地が終了アプリケーションアドレス1100
h番地ではないので、アプリケーションコード取り出し
手段606を行う。アプリケーションコード取り出し手
段606は、解析を実行するアドレス100h番地のア
プリケーションプログラムを1命令取り出す。アドレス
100h番地のアプリケーションコード『mov[80
0000h],10h』が取り出される。
【0043】次に分岐命令判定手段607は、アプリケ
ーションコード『mov[800000h],10h』
が、分岐命令でないため、アプリケーションコード−タ
ーゲットコード変換手段608を行う。アプリケーショ
ンコード−ターゲットコード変換手段608は、アプリ
ケーションコード『mov[800000h],10
h』を複数のターゲットコード『mov r7,10
h』,『mov[800000h],r7』に変換す
る。
【0044】次にアプリケーションアドレス/ターゲッ
トアドレス格納手段609は、解析をしているアプリケ
ーションアドレス100h番地と、そのアプリケーショ
ンアドレス100h番地に対応しているターゲットアド
レス100番地を、図1のアプリケーションアドレス/
ターゲットコードアドレス格納テーブル103に格納し
て、交換したターゲットコード『mov r7,10
h』,『mov[800000h],r7』を、図1の
ターゲットコード格納テーブルに格納して、解析を行う
アプリケーションアドレスとそれに対応するターゲット
アドレスを、それぞれ102h番地と104h番地に更
新する。
【0045】次に、終了アプリケーションアドレス判定
手段605では、解析を行っているアプリケーションア
ドレス102h番地が終了アプリケーションアドレス1
100h番地ではないので、アプリケーションコード取
り出し手段606を行う。アプリケーションコード取り
出し手段606は、解析を実行するアドレス102h番
地のアプリケーションプログラムを、1命令取り出す。
アドレス102h番地のアプリケーションコード『br
c !106h』が取り出される。次に分岐命令判定手
段607は、アプリケーションコード『brc !10
6h』が分岐命令で、参照先のアプリケーションアドレ
ス106h番地が、図1のアプリケーションアドレス/
ターゲットアドレス格納テーブル103にないが、その
値106hが終了アプリケーションアドレス1100h
より小さいので、アプリケーションコード−ターゲット
コード変換手段608を行う。
【0046】アプリケーションコード−ターゲットコー
ド変換手段608は、アプリケーションコード『brc
!106h』をターゲットコード『brc !0h』
に変換する。アドレス/ターゲットコード格納手段60
9は、解析をしているアプリケーションアドレス102
h番地と、そのアプリケーションアドレス102h番地
に対応しているターゲットコードアドレス104番地
を、図1のアプリケーションアドレス/ターゲットコー
ドアドレス格納テーブル103に格納して、変換したタ
ーゲットコード『brc !0h』を、図1のターゲッ
トコード格納テーブル104に格納して、参照先のアプ
リケーションアドレス106h番地が図1のアプリケー
ションアドレス/ターゲットアドレス格納テーブル10
3にないので、解析中のターゲットコードアドレス10
4h番地を参照先のアプリケーションアドレス106h
番地と共に、図1の未決定参照情報テーブル105に格
納して、解析を行うアプリケーションアドレスとそれに
対応するターゲットアドレスをそれぞれ104h番地と
106h番地に更新する。
【0047】次に終了アプリケーションアドレス判定手
段605では、解析を行っているアプリケーションアド
レス104h番地が終了アプリケーションアドレス11
00h番地ではないので、アプリケーションコード取り
出し手段606を行う。アプリケーションコード取り出
し手段606は、解析を実行するアドレス104h番地
のアプリケーションプログラムを1命令取り出す。アド
レス104h番地のアプリケーションコード『brnc
!2100h』が取り出される。
【0048】次に、分岐命令判定手段607は、アプリ
ケーションコード『brnc !2100h』が分岐命
令で、参照先のアプリケーションアドレス2100h番
地が、図1のアプリケーションアドレス/ターゲットア
ドレス格納テーブル103になく、その値2100hが
終了アプリケーションアドレス1100hより大きいの
で、制御用ターゲットコード生成手段611を行う。制
御用ターゲットコード生成手段611は、図1の開始ア
ドレス格納領域106に参照先のアプリケーションアド
レス2100h番地を格納した後に、制御エミュレータ
に戻すターゲットコード『brc !10eh』,『m
ov r7,2100h』,『mov[0c00000
h],r7』,『br[0h]』を生成して、アドレス
/ターゲットコード格納手段612を行う。
【0049】アドレス/ターゲットコード格納手段61
2は、解析をしているアプリケーションアドレス104
h番地と、そのアプリケーションアドレスに対応してい
るターゲットアドレス106h番地を、図1のアプリケ
ーションアドレス/ターゲットコードアドレス格納テー
ブル103に格納して、生成したターゲットコード『b
rc !10eh』,『mov r7,2100h』,
『mov[0c00000h],r7』,『br[0
h]』を、図1のターゲットコード格納テーブルに格納
して、解析を行うアプリケーションアドレスを取り出し
たアプリケーションコードのコードサイズ2hバイト増
やして106h番地とし、アプリケーションアドレスに
対応するターゲットアドレスをターゲットコードのコー
ドサイズ8hバイト増やして10eh番地として、最終
アプリケーションアドレス判定手段605を行う。以上
の繰り返しにより、10feh−10ffh番地の『a
nd r1,10h』まで実行される。
【0050】その後、終了アプリケーションアドレス判
定手段605で解析を行っているアプリケーションアド
レス1100h番地が終了アプリケーションアドレス1
100h番地なので制御用ターゲットコード生成手段6
13を行う。制御用ターゲットコード生成手段613
は、図1の開始アドレス格納領域106に解析をしてい
るアプリケーションアドレス1100h番地を格納した
後に、制御をエミュレータに戻すターゲットコード『m
ov r7,2100h』,『mov[0c00000
h],r7』,『br[0h]』を生成して、ターゲッ
トコード格納手段614を行う。
【0051】次にターゲットコード格納手段614は、
生成したターゲットコード『movr7,2100
h』,『mov[0c00000h],r7』,『br
[0h]』を図1のターゲットコード格納テーブル10
4に格納する。この時のアプリケーションアドレス/タ
ーゲットアドレス格納テーブル,ターゲットコード格納
テーブル,未決定参照情報テーブル,開始アドレス格納
領域を図8に示す。次に参照先決定手段615は、図1
の未決定参照テーブル105に格納されているアプリケ
ーションアドレス106h番地を取り出し、図1のアプ
リケーションアドレス/ターゲットアドレス格納テーブ
ル103から、アプリケーションアドレス106h番地
に対応するターゲットアドレス10eh番地を取り出
し、未決定参照情報テーブル105に格納されている上
記アプリケーションアドレス106hに対応するターゲ
ットアドレス104h番地に既に格納されているターゲ
ットコード『brc !0h』を、『brc !10e
h』に変更する。
【0052】次にターゲットコード実行手段610は、
変換を開始したアプリケーションアドレス100h番地
に対応するターゲットアドレス100h番地からターゲ
ットコードの実行を行う。ターゲットマシンがターゲッ
トアドレス106h−10dh番地のターゲットコード
『brc !10eh』,『mov r7,2100
h』,『mov [0c00000h],r7』,『b
r[0h]』を実行する際に、キャリーフラグは0なの
で、ターゲットマシンは、ターゲットコード『mov
r7,2100h』,『mov[0c00000h],
r7』,『br[0h]』を実行して、図1の開始アド
レス格納領域のターゲットアドレス0c00000h番
地に2100hを格納して、エミュレータに制御を戻し
て、アプリケーションコード変換判定手段603を行
う。アプリケーションコード変換判定手段603は、ア
プリケーションアドレス2100h番地が図1のアプリ
ケーションアドレス/ターゲットアドレス格納テーブル
103にないので、アプリケーションコード変換判定手
段604を行う。
【0053】図1の開始アドレス格納領域106から取
り出したアドレス2100h番地を、解析を開始するア
プリケーションアドレスとし、開始アプリケーションア
ドレスから一定のバイトサイズまでのアプリケーション
アドレスが、図1のアプリケーションアドレス/ターゲ
ットアドレス格納テーブル103にないので、開始アプ
リケーションアドレス2100h番地から一定のバイト
サイズ1000hバイトのアプリケーションアドレス3
100h番地を、終了アプリケーションアドレスとし
て、終了アプリケーションアドレス判定手段605を行
う。
【0054】アプリケーションアドレス2100h−3
100hまでのエミュレータの処理は、解析を行ってい
るアプリケーションアドレスが3100hになるまで上
記と同様に図6の『605→606→607→608→
609→605』の繰り返し、あるいは図6の『605
→606→607→611→612→606』の繰り返
しで行われる。アプリケーションアドレスが3100h
になると、上記と同様に図6の『613→614→61
5→610』が行われてターゲットコードの実行が行わ
れる。この時のアプリケーションアドレス/ターゲット
アドレス格納テーブル,ターゲットコード格納テーブ
ル,未決定参照情報テーブル,開始アドレス格納領域を
図9に示す。その後、ターゲットアドレス2102hの
ターゲットコード『ret』の実行を行い、エミュレー
ションを終了する。以上のようにして本実施形態のエミ
ュレーション処理方式は、高速処理を行わせることがで
きるようになる。
【0055】具体的な例として、図4のアプリケーショ
ンプログラムを用いて説明する。上述のようにこの例に
おいて、アプリケーションコード1命令は、ターゲット
コード2命令に置き換えられるとして、ターゲットコー
ド1命令の実行が1μsであるとする。さらに、図6の
『603−604−605−606−607−608−
609』の実行が平均400命令であるとする。上述の
ようにエミュレーション処理に要する時間は、「機械語
コードの1回目の実行に要する時間」+「機械語コード
の2回目以降の実行に要する時間」であり、本方式の機
械語コードの1回目の実行に要する時間は、1(回)×
(400(命令)+2(命令))×ofooh(命令)
×1(μs)=1(回)×(400(命令)+2(命
令))×3840(命令)×1(μs)=1.545
(秒)である。また、機械語コードの2回目以降の実行
に要する時間は、4096(回)×2(命令)×ofo
oh(命令)×1(μs)=4096(回)×2(命
令)×3840(命令)×1(μs)=31.457
(秒)である。従って本方式で実行に要する時間は、
1.545(秒)+31.457(秒)=33.002
(秒)となる。同じ例の従来の方式で実行に要する時間
は、818・889(秒)なので、24.8倍の高速化
が図れることになる。
【0056】また平均的なプログラム例、たとえば一度
実行したアプリケーションプログラムの実行が平均10
0回として、そのアプリケーションプログラムは100
00命令を持つ場合、従来の方法で実行に要する時間
は、機械語コードの1回目の実行に要する時間が、1
(回)×(200(命令)+2(命令))×10000
(命令)×1(μs)=2.02(秒)となり、機械語
コードの2回目以降の実行に要する時間が、100
(回)×(50(命令)+2(命令))×10000
(命令)×1(μs)=52秒となるので、従来の方式
で実行に要する時間は、2.02(秒)+52(秒)=
54.02(秒)となる。これに対し本方式で実行に要
する時間は、機械語コードの1回目の実行に要する時間
が、1(回)×(400(命令)+2(命令))×10
000(命令)×1(μs)=4.02(秒)となり、
機械語コードの2回目以降の実行に要する時間が、10
0(回)×2(命令)×10000(命令)×1(μ
s)=2(秒)となるので、本方式で実行に要する時
間』=4.02(秒)+2(秒)=6.02(秒)とな
り、8.97倍の高速化が図れることになる。
【0057】
【発明の効果】以上説明したように本発明のエミュレー
ション処理方式は、アプリケーションプログラムが前方
参照命令を持っていることを考慮し、エミュレーション
対象アプリケーションプログラムを一定の単位ごとにホ
ストマシンで動作するターゲットコードに変換して変換
を行ったターゲットコードを実行する動作を繰り返し、
この変換動作においてエミュレーション対象アプリケー
ションコードが分岐命令で、その参照先が変換の段階に
おいて未解決で変換を行う範囲外であれば、制御をター
ゲットコードの実行からエミュレータに戻すターゲット
コードを生成してこれに変換することとしたので、高速
に処理が行えるという効果がある。
【図面の簡単な説明】
【図1】本発明のエミュレーション処理方式を実行する
ためのシステムの構成の一実施形態を示すブロック図で
ある。
【図2】従来のエミュレーション処理方式を実行するた
めのシステムの構成の一例を示すブロック図である。
【図3】従来のエミュレーション処理方式の動作を示す
フローチャートである。
【図4】アプリケーションプログラムの具体例を示す図
である。
【図5】図2に示すアドレス/ターゲットコード格納テ
ーブルを説明するための図である。
【図6】本実施形態のエミュレーション処理方式の動作
を示すフローチャートである。
【図7】本実施形態を説明するためのアプリケーション
プログラムの具体例を示す図である。
【図8】本実施形態の動作を説明するためのアプリケー
ションアドレス/ターゲットアドレス格納テーブル,タ
ーゲットコード格納テーブル,未決定参照情報テーブ
ル,開始アドレス格納領域の内容を示す図である。
【図9】本実施形態の動作を説明するためのアプリケー
ションアドレス/ターゲットアドレス格納テーブル,タ
ーゲットコード格納テーブル,未決定参照情報テーブ
ル,開始アドレス格納領域の内容を示す図である。
【符号の説明】
101,201 アプリケーションプログラム 102,202 エミュレータ 103 アプリケーションアドレス/ターゲットアドレ
ス格納テーブル 104 ターゲットコード格納テーブル 105 未決定参照情報テーブル 106 開始アドレス格納領域 203 アドレス/ターゲットアドレス格納テーブル 601,10201 プログラムロード手段 602,10202 初期アドレス設定手段 603,10203 アプリケーションコード変換判定
手段 604,10204 変換開始/終了位置設定手段 605,10205 終了アプリケーションアドレス判
定手段 606,10206 アプリケーションコード取り出し
手段 607,10207 分岐命令判定手段 608,10208 アプリケーションコード−ターゲ
ットコード変換手段 609,612,10209 アドレス/ターゲットコ
ード格納手段 610,10210 ターゲットコード実行手段 611,613,10211 制御用ターゲットコード
生成手段 614 ターゲットコード格納手段 615,10212 参照先決定手段

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 任意のマイクロプログラム向けに開発さ
    れたアプリケーションソフトウェアを異なるアーキテク
    チャを有するホストマシン上で実行するエミュレーショ
    ン処理方式において、 エミュレーション対象アプリケーションプログラムを一
    定の単位ごとに前記ホストマシンで動作するターゲット
    コードに変換し、 変換を行ったターゲットコードを実行する動作を繰り返
    し、 前記変換動作においてエミュレーション対象アプリケー
    ションコードが分岐命令で、その参照先が変換の段階に
    おいて未解決で変換を行う範囲外であれば、制御をター
    ゲットコードの実行からエミュレータに戻すターゲット
    コードを生成してこれに変換することを特徴とするエミ
    ュレーション処理方式。
  2. 【請求項2】 任意のマイクロプログラム向けに開発さ
    れたアプリケーションソフトウェアを異なるアーキテク
    チャを有するホストマシン上で実行するエミュレーショ
    ン処理方式において、 エミュレータと、前記ホストマシンのメモリに格納され
    たアプリケーションアドレス/ターゲットアドレス格納
    テーブル,ターゲットコード格納テーブル,未決定参照
    情報テーブル,開始アドレス格納領域とでシステムが構
    成され、 前記エミュレータには、 エミュレーション対象アプリケーションプログラムをホ
    ストマシンのメモリにロードするプログラムロード手段
    と、 前記開始アドレス格納領域にアプリケーションプログラ
    ムの先頭アドレスを設定する初期アドレス設定手段と、 前記アプリケーションアドレス/ターゲットアドレス格
    納テーブルに、前記エミュレーション対象プログラムの
    実行しようとするアドレスが格納されているか否かを判
    定することにより、当該アドレスの前記エミュレーショ
    ン対象プログラム機械語コードが変換されているか否か
    を判定するアプリケーションコード変換判定手段と、 前記アプリケーションコード変換判定手段によりアプリ
    ケーションアドレスが格納されていないときに前記エミ
    ュレーション対象プログラムを一定の単位で前記ホスト
    マシンの機械語コードに変換を行うためにエミュレーシ
    ョン対象プログラムの変換開始アドレスと変換終了アド
    レスを設定する変換開始/終了位置設定手段と、 前記エミュレーション対象プログラムの変換を実行しよ
    うとするアドレスが前記変換終了アドレスか否かを判定
    する終了アプリケーションアドレス判定手段と、 前記終了アプリケーションアドレス判定手段により実行
    しようとするアドレスが前記変換終了アドレスでないと
    きに前記エミュレーション対象プログラムから当該アド
    レスの機械語コードを取り出すアプリケーションコード
    取り出し手段と、 前記アプリケーションコード取り出し手段により取り出
    されたエミュレーション対象プログラムの機械語コード
    が分岐命令で、参照先アドレスが前記アプリケーション
    アドレス/ターゲットアドレス格納デーブルになく、且
    つその値が変換終了アドレスより大きいか否かを判定す
    る分岐命令判定手段と、 前記分岐命令判定手段により、分岐命令で参照先のアド
    レスが、前記アプリケーションアドレス/ターゲットア
    ドレス格納テーブルになく、且つその値が変換終了アド
    レスより等しい又は大きいと判断されなかったとき、前
    記エミュレーション対象プログラムから取り出した機械
    語コードを前記ホストマシンの機械語コードに変換する
    アプリケーションコード−ターゲットコード変換手段
    と、 前記ホストマシンの機械語コードを前記ターゲットコー
    ド格納デーブルに格納して、前記エミュレーション対象
    プログラムの該当アドレスを前記ホストマシンの機械語
    コードの該当アドレスと共に前記アプリケーションアド
    レス/ターゲットアドレス格納テーブルに格納して、機
    械語コードの参照先が前記アプリケーションアドレス/
    ターゲットアドレス格納テーブルにない場合に前記未決
    定参照情報テーブルに解析中のホストマシンのアドレス
    を参照先のエミュレーション対象プログラムのアドレス
    と共に格納するアドレス/ターゲットコード格納手段
    と、 前記ターゲットコードアドレス中の機械語コードを実行
    するターゲットコード実行手段と、 前記分岐命令判定手段により、分岐命令で参照先のアド
    レスが、前記アプリケーションアドレス/ターゲットア
    ドレス格納テーブルになく、且つその値が変換終了アド
    レスより等しい又は大きいと判断されたとき、あるいは
    前記終了アプリケーションアドレス判定手段により、実
    行しようとするアドレスが前記変換終了アドレスのと
    き、前記ターゲットコードアドレス中の機械語コードの
    実行から本エミュレーションに制御を戻すため前記ホス
    トマシンの機械語コードを生成する制御用ターゲットコ
    ード生成手段と、 前記アドレス/ターゲットコード格納手段により、格納
    された未決定参照情報テーブルの解析中のホストマシン
    のアドレスにある機械語コードを、参照先のエミュレー
    ション対象プログラムのアドレスに該当するホストマシ
    ンの機械語コードのアドレスで変更を行う参照先決定手
    段と、 を備えたことを特徴とするエミュレーション処理方式。
  3. 【請求項3】 任意のマイクロプログラム向けに開発さ
    れたアプリケーションソフトウェアを異なるアーキテク
    チャを有するホストマシン上で実行するエミュレーショ
    ン処理方式において、 エミュレータと、前記ホストマシンのメモリに格納され
    たアプリケーションアドレス/ターゲットアドレス格納
    テーブル,ターゲットコード格納テーブル,未決定参照
    情報テーブル,開始アドレス格納領域とでシステムが構
    成され、 前記エミュレータを動作させ、 エミュレーション対象アプリケーションプログラムをホ
    ストマシンのメモリにロードするロードプログラム、 前記開始アドレス格納領域にアプリケーションプログラ
    ムの先頭アドレスを設定する初期アドレス設定プログラ
    ム、 前記アプリケーションアドレス/ターゲットアドレス格
    納テーブルに、前記エミュレーション対象プログラムの
    実行しようとするアドレスが格納されているか否かを判
    定することにより、当該アドレスの前記エミュレーショ
    ン対象プログラム機械語コードが変換されているか否か
    を判定するアプリケーションコード変換判定プログラ
    ム、 前記アプリケーションコード変換判定プログラムにより
    アプリケーションアドレスが格納されていないときに前
    記エミュレーション対象プログラムを一定の単位で前記
    ホストマシンの機械語コードに変換を行うためにエミュ
    レーション対象プログラムの変換開始アドレスと変換終
    了アドレスを設定する変換開始/終了位置設定プログラ
    ム、 前記エミュレーション対象プログラムの変換を実行しよ
    うとするアドレスが前記変換終了アドレスか否かを判定
    する終了アプリケーションアドレス判定プログラム、 前記終了アプリケーションアドレス判定プログラムによ
    り実行しようとするアドレスが前記変換終了アドレスで
    ないときに前記エミュレーション対象プログラムから当
    該アドレスの機械語コードを取り出すアプリケーション
    コード取り出しプログラム、 前記アプリケーションコード取り出しプログラムにより
    取り出されたエミュレーション対象プログラムの機械語
    コードが分岐命令で、参照先アドレスが前記アプリケー
    ションアドレス/ターゲットアドレス格納デーブルにな
    く、且つその値が変換終了アドレスより大きいか否かを
    判定する分岐命令判定プログラム、 前記分岐命令判定プログラムにより、分岐命令で参照先
    のアドレスが、前記アプリケーションアドレス/ターゲ
    ットアドレス格納テーブルになく、且つその値が変換終
    了アドレスより等しい又は大きいと判断されなかったと
    き、前記エミュレーション対象プログラムから取り出し
    た機械語コードを前記ホストマシンの機械語コードに変
    換するアプリケーションコード−ターゲットコード変換
    プログラム、 前記ホストマシンの機械語コードを前記ターゲットコー
    ド格納デーブルに格納して、前記エミュレーション対象
    プログラムの該当アドレスを前記ホストマシンの機械語
    コードの該当アドレスと共に前記アプリケーションアド
    レス/ターゲットアドレス格納テーブルに格納して、機
    械語コードの参照先が前記アプリケーションアドレス/
    ターゲットアドレス格納テーブルにない場合に前記未決
    定参照情報テーブルに解析中のホストマシンのアドレス
    を参照先のエミュレーション対象プログラムのアドレス
    と共に格納するアドレス/ターゲットコード格納プログ
    ラム、 前記ターゲットコードアドレス中の機械語コードを実行
    するターゲットコード実行プログラム、 前記分岐命令判定プログラムにより、分岐命令で参照先
    のアドレスが、前記アプリケーションアドレス/ターゲ
    ットアドレス格納テーブルになく、且つその値が変換終
    了アドレスより等しい又は大きいと判断されたとき、あ
    るいは前記終了アプリケーションアドレス判定プログラ
    ムにより、実行しようとするアドレスが前記変換終了ア
    ドレスのとき、前記ターゲットコードアドレス中の機械
    語コードの実行から本エミュレーションに制御を戻すた
    め前記ホストマシンの機械語コードを生成する制御用タ
    ーゲットコード生成プログラム、 前記アドレス/ターゲットコード格納プログラムによ
    り、格納された未決定参照情報テーブルの解析中のホス
    トマシンのアドレスにある機械語コードを、参照先のエ
    ミュレーション対象プログラムのアドレスに該当するホ
    ストマシンの機械語コードのアドレスで変更を行う参照
    先決定プログラム、 を記録した記録媒体を備えたことを特徴とするエミュレ
    ーション処理方式。
  4. 【請求項4】 前記エミュレーション対象アプリケーシ
    ョンプログラムを前記ホストマシンで動作するターゲッ
    トコードに変換する一定の単位は、1000hバイトで
    あることを特徴とする請求項1乃至請求項3の何れかに
    記載のエミュレーション処理方式。
JP18716197A 1997-06-30 1997-06-30 エミュレーション処理方式 Expired - Fee Related JP3495230B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP18716197A JP3495230B2 (ja) 1997-06-30 1997-06-30 エミュレーション処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18716197A JP3495230B2 (ja) 1997-06-30 1997-06-30 エミュレーション処理方式

Publications (2)

Publication Number Publication Date
JPH1124940A true JPH1124940A (ja) 1999-01-29
JP3495230B2 JP3495230B2 (ja) 2004-02-09

Family

ID=16201200

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18716197A Expired - Fee Related JP3495230B2 (ja) 1997-06-30 1997-06-30 エミュレーション処理方式

Country Status (1)

Country Link
JP (1) JP3495230B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008533578A (ja) * 2005-03-11 2008-08-21 トランジティブ リミテッド プログラムコード変換中の実行制御
WO2009078544A1 (en) * 2007-12-17 2009-06-25 Electronics And Telecommunications Research Institute Binary value input/output processing apparatus and method
WO2017014318A1 (ja) * 2015-07-23 2017-01-26 国立大学法人東京工業大学 命令セットシミュレータおよびそのシミュレータ生成方法
JP2018028777A (ja) * 2016-08-17 2018-02-22 Necプラットフォームズ株式会社 エミュレーション装置、エミュレーション方法、及び、エミュレーションプログラム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008533578A (ja) * 2005-03-11 2008-08-21 トランジティブ リミテッド プログラムコード変換中の実行制御
US8615749B2 (en) 2005-03-11 2013-12-24 International Business Machines Corporation Execution control during program code conversion
WO2009078544A1 (en) * 2007-12-17 2009-06-25 Electronics And Telecommunications Research Institute Binary value input/output processing apparatus and method
WO2017014318A1 (ja) * 2015-07-23 2017-01-26 国立大学法人東京工業大学 命令セットシミュレータおよびそのシミュレータ生成方法
JP2017027375A (ja) * 2015-07-23 2017-02-02 国立大学法人東京工業大学 命令セットシミュレータおよびそのシミュレータ生成方法
US10459707B2 (en) 2015-07-23 2019-10-29 Tokyo Institute Of Technology Instruction-set simulator and its simulator generation method
JP2018028777A (ja) * 2016-08-17 2018-02-22 Necプラットフォームズ株式会社 エミュレーション装置、エミュレーション方法、及び、エミュレーションプログラム
US10268462B2 (en) 2016-08-17 2019-04-23 Nec Platforms, Ltd. Emulation device, emulation method, and recording medium storing emulation program

Also Published As

Publication number Publication date
JP3495230B2 (ja) 2004-02-09

Similar Documents

Publication Publication Date Title
USRE33706E (en) Table driven translator
US8024555B2 (en) Condition code flag emulation for program code conversion
US5619665A (en) Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
JP3377419B2 (ja) 命令列生成方法及び装置、変換方法、及びコンピュータ
JP4018158B2 (ja) 可変命令セットコンピュータ
EP0709767A1 (en) Method and apparatus for multiplatform instruction set architecture
EP0950219B1 (en) Selective emulation interpretation using transformed instructions
US20050125633A1 (en) Processor and method for generating and storing compressed instructions in a program memory and decompressed instructions in an instruction cache wherein the decompressed instructions are assigned imaginary addresses derived from information stored in the program memory with the compressed instructions
KR970703561A (ko) 초장 명령어 워드 프로그램의 오브젝트-코드 호환가능 표현(Object-Code Com-patible Representation of Very Long Instruction Word Programs)
WO1990001738A1 (en) Machine process for translating programs in binary machine language into another binary machine language
US9235397B2 (en) Method and apparatus for increasing task-execution speed
US20060070049A1 (en) Java bytecode translation method and Java interpreter performing the same
KR101407629B1 (ko) 자바 변환 가속 장치 및 방법
JP2002532775A (ja) インタープリタプログラム実行方法
JP2005504376A (ja) 仮想マシンインタープリタ(vmi)加速ハードウェアのためのソフトウェアサポート
US20010042241A1 (en) Apparatus and method for executing program using just-in time-compiler system
JPH1124940A (ja) エミュレーション処理方式
US6233732B1 (en) Compiling system using intermediate codes to store a plurality of values
JPH1031595A (ja) シミュレーション装置及びシミュレーション方法
JPH025138A (ja) シミユレーシヨン方法
JPH08123697A (ja) エミュレーション高速化方式
US20070022271A1 (en) Processor with changeable correspondences between opcodes and instructions
JPH0756745A (ja) 言語処理プログラムのコンパイラ処理方式
JP2000020319A (ja) プログラム実行装置、その制御方法および記憶媒体
KR880000817B1 (ko) 데이터 처리장치 및 그 방법

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees