JP4563669B2 - 命令模擬装置 - Google Patents
命令模擬装置 Download PDFInfo
- Publication number
- JP4563669B2 JP4563669B2 JP2003393977A JP2003393977A JP4563669B2 JP 4563669 B2 JP4563669 B2 JP 4563669B2 JP 2003393977 A JP2003393977 A JP 2003393977A JP 2003393977 A JP2003393977 A JP 2003393977A JP 4563669 B2 JP4563669 B2 JP 4563669B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- unit
- information
- pointer
- conversion
- 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
- Debugging And Monitoring (AREA)
Description
また、ターゲットCPUプログラム自身がプログラムを生成、または更新するような場合には、ターゲットCPUシミュレーション関数呼び出し列あるいはテーブルが更新されたメモリの内容に対応しておらず、更新前のメモリ情報に基づいて、誤ったターゲットCPU命令のシミュレーションを行うという課題もある。
また、この発明は、ターゲットCPUプログラムを変換した際に設定するポインタ参照テーブル保持手段に巨大なテーブルが必要となりがちであるが、ターゲットCPUプログラムが複数の領域に分割されている場合でも、テーブルの大型化あるいはテーブル検索の速度低下が生じないようにする。
模擬対象の命令を実行履歴によらず解析して必要情報を抽出・割付ける変換情報解析部と、
上記解析・抽出された命令に対して、シミュレーション計算機の命令列で記述されるシミュレーション命令の有無を表す状態情報を含む情報を記憶するポインタ参照情報保持部と、
上記模擬対象の命令のシミュレーション実行に際して、上記ポインタ参照情報保持部で記憶している状態情報を参照して、既シミュレーション命令に該当する場合には該当シミュレーション命令を実行し、該当しない場合には模擬対象の命令を順次取出し解釈して逐次実行する、実行部とを備えた。
図1は、この発明の実施の形態1における命令シミュレーション装置の構成を示す図であり、図2はホストCPU上で動作するこのCPUシミュレーン装置の動作を示すフローチャートである。
ターゲットCPUの命令コードを含むバイナリデータ100をホストCPU上でシミュレーションする前に、読込み部200により読み込まれたバイナリデータ100を命令変換情報解析部300がターゲットCPUのアドレス情報が示すバイナリデータをターゲットCPU命令とみなし、以下を解析する(図2のS1a)。そして解析した情報に基いてターゲットCPUアドレス情報、該当する命令シミュレーション関数のポインタ情報、ポインタ情報が有効か無効かを示すフラグ情報、命令シミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報の対をポインタ参照テーブル保持部400に設定する(図2のS1b)。例えば、デコード情報とはターゲットCPU命令がレジスタ−レジスタ演算を行う命令の場合、使用するレジスタ番号(ソースおよびディスティネーション)の情報である。
読み込まれたバイナリデータの変換解析が完了していない場合(図2のS2でNの場合)には、完了するまでポインタ参照テーブルの設定(図2のS1)を繰り返し行う。その際、ターゲットCPUシステムで定義された命令長の最小単位で変換を行う。たとえば、ターゲットCPUシステムで定義されている命令長が4バイトのみであれば、4バイト単位で変換を行い、ターゲットCPUシステムで定義されている命令長が2バイト、4バイト、6バイトの3種類であれば、2バイト単位で変換を行う。また、読み込まれたバイナリデータの命令コードのエリアであっても、データエリア(オペランドエリア)であっても、同様に変換を行う。データエリアから読み出したデータや命令の途中から読み出した命令コードであっても、命令の先頭から読み出したものとして、変換を行う。読み出したデータあるいは命令コードが未定義命令に相当する場合には、ターゲットCPUでの未定義命令実行の命令シミュレーション関数あるいは逐次実行処理を呼び出す(フラグ情報を無効とする)ようにポインタ参照テーブル保持部400に設定する。
これらのポインタ参照テーブル検索(図2のS4)からプログラムカウンタの更新(図2のS7および図2のS9)までを繰り返し実行することで、ターゲットCPU命令のシミュレーションを行う。ターゲットCPUプログラムがオペレーティングシステムのようにターゲットCPUのプログラムが周辺機器からプログラムをロードして実行するような場合には、ロードされたプログラムはポインタ参照テーブル保持部400に登録されていないため、逐次実行部800で命令実行される。
このステップを計算機プログラムとして用意することも有効である。
これらのシミュレーションを行うターゲットCPUの命令が、すでにシミュレーション実行されているかを判定し、シミュレーション実行速度を上げる形態を説明する。
図3は、本実施の形態におけるターゲットCPUのプログラムカウンタがポインタ参照テーブル保持部に格納されているかを判定する判定部900bの構成を示す詳細ブロック図である。
図3において、ポインタ参照テーブル保持部400は、図1に示す詳細構成要素を持っている。そして判定部900bは、内部に命令変換情報解析部300によって解析された変換エリアの開始アドレスと終了アドレスの対を少なくとも1つ保持するする変換エリア情報保持部902、ポインタ参照テーブル保持部400の内容を読み出し、変換された領域の開始アドレスと終了アドレスの検索を行い、開始アドレスと終了アドレスの対を変換エリア情報保持部902に設定する変換エリア情報設定部901、ターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと終了アドレスの間に含まれているかを比較する比較部903を持っている。
基本的な動作は、実施の形態1で説明した動作を行う。実施の形態2では、ターゲットCPU命令を予め準備した命令シミュレーション関数に割り付けが完了した後(図2のS3のループを抜ける)、変換エリア情報設定部901がポインタ参照テーブル保持部400の検索を行う。変換エリア情報設定部901はポインタ参照テーブル保持部400からターゲットCPUの命令アドレスを読み出し、連続するエリアの抽出を行う。たとえば、ターゲットCPUシステムで定義されている命令長が4バイトのみであり、ポインタ参照テーブル保持部400に格納されているターゲットCPUの命令アドレスが、0x1000、0x1004、0x1008、0x100C、0x1010、0x1014の値が格納されている場合には、開始アドレスが0x1000であり、終了アドレスが0x1014となる。
また、ターゲットCPUシステムで定義されている命令長が2バイト、4バイト、6バイトの3種類であり、ポインタ参照テーブル保持部400に格納されているターゲットCPUの命令アドレスが、0x1000、0x1002、0x1004、0x1006、0x1008、0x100A、0x100C、0x1010、0x1012、0x1014の値が格納されている場合には、最初の開始アドレスが0x1000であり、最初の終了アドレスが0x100C、次の開始アドレスが0x1010であり、次の終了アドレスが0x1014となる。
ターゲットCPU命令のシミュレーション時には、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていれば、ポインタ参照テーブル保持部400にターゲットCPUの命令アドレスと対に保持されているポインタ情報を読み出す。読み出したポインタ情報が有効であれば、変換コード実行部700を起動し、読み出したポインタ情報が無効であれば、逐次実行部800を起動する。また、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていなければ、逐次実行部800を起動する。
図4は、本実施の形態における他の、ターゲットCPUのプログラムカウンタがポインタ参照テーブル保持部に格納されているかを判定する判定部900Cの構成を示す詳細ブロック図である。
図4において、判定部900Cは、内部に命令変換情報解析部300によって変換された変換エリアの開始アドレスと開始アドレスからの変換長さの対を少なくとも1つ保持するする変換エリア情報保持部905、ポインタ参照テーブル保持部400の内容を読み出し、変換された領域の開始アドレスと開始アドレスからの変換長さの検索を行い、開始アドレスと変換長さの対を変換エリア情報保持部902に設定する変換エリア情報設定部904、ターゲットCPUのプログラムカウンタが変換エリア情報保持部905が保持する開始アドレスと(開始アドレス+変換長さ)の間に含まれているかを比較する比較部906を持っている。
基本的な動作は、実施の形態1で説明した動作を行う。先の説明と同様に、ターゲットCPU命令をホストCPUの命令列に変換が完了した後、変換エリア情報設定部904がポインタ参照テーブル保持部400の検索を行う。変換エリア情報設定部904はポインタ参照テーブル保持部400からターゲットCPUの命令アドレスを読み出し、連続するエリアの抽出を行う。たとえば、ターゲットCPUシステムで定義されている命令長が4バイトのみであり、ポインタ参照テーブル保持部400に格納されているターゲットCPUの命令アドレスが、0x1000、0x1004、0x1008、0x100C、0x1010、0x1014の値が格納されている場合には、開始アドレスが0x1000であり、変換長さが0x14となる。また、ターゲットCPUシステムで定義されている命令長が2バイト、4バイト、6バイトの3種類であり、ポインタ参照テーブル保持部400に格納されているターゲットCPUの命令アドレスが、0x1000、0x1002、0x1004、0x1006、0x1008、0x100A、0x100C、0x1010、0x1012、0x1014の値が格納されている場合には、最初の開始アドレスが0x1000であり、最初の変換長さが0x0C、次の開始アドレスが0x1010であり、次の変換長さが0x14となる。
ターゲットCPU命令のシミュレーション時には、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部905が保持する開始アドレスと(開始アドレス+変換長さ)の対に挟まれたエリアに含まれていれば、ポインタ参照テーブル保持部400にターゲットCPUの命令アドレスと対に保持されているポインタ情報を読み出す。読み出したポインタ情報が有効であれば、変換コード実行部700を起動し、読み出したポインタ情報が無効であれば、逐次実行部800を起動する。また、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと(開始アドレス+変換長さ)の対に挟まれたエリアに含まれていなければ、逐次実行部800を起動する。
ターゲット命令が連続アドレスで表現されていない場合でも、効率的にシミュレーションを行い、命令実行の実行速度も上げる形態を説明する。
図5は、この発明の実施の形態3における、ターゲットCPUの命令コードを含むバイナリデータの読込部200cの構成を示す詳細ブロック図である。
図5において、命令変換情報解析部300は、実施の形態1で説明した動作を行い、図1のポインタ参照テーブル保持部400に必要な情報を設定する。そして読込み部200cは、内部にターゲットCPUバイナリデータ100に書かれた命令コードのエリア情報(変換開始アドレス及び変換終了アドレスの対)を少なくとも1つを保持し、命令変換情報解析部300に変換範囲の指示を行う変換エリア情報指示部202、ターゲットCPUバイナリデータ100のヘッダー情報から命令コードのエリア(開始アドレス及び終了アドレスの対)を抽出し、変換エリア情報指示部202を設定する変換エリア情報設定部201を持っている。
基本的な動作は、実施の形態1で示した動作を行う。実施の形態3では、ターゲットCPUバイナリデータ100を読込み部200cが読み込む時に、変換エリア情報設定部201がヘッダー情報から命令コードの配置情報(命令コードの開始アドレスと終了アドレスの対)を読み込む。変換エリア情報設定部201により抽出された命令コードの開始アドレスと終了アドレスの対は、変換エリア情報指示部202に保持される。ターゲットCPU命令の変換時には、変換エリア情報指示部202により指示されるエリアを命令コードのエリアとして、命令変換情報解析部300がターゲットCPUの命令を予め準備した命令シミュレーション関数への割り付けを行う。その際、読込み部200cによって読み込まれたターゲットCPUバイナリデータが飛び飛びのエリアで構成されている場合であっても、変換エリア情報指示部202により、エリアとエリアの間は変換対象とせず、効率的に命令の変換を行う。
図6は、本実施の形態における他の、ターゲットCPUの命令コードを含むバイナリデータがオペレーティングシステムなどのようにメモリ管理機能を有するプログラムである場合の、読込み部の構成を示す詳細ブロック図である。
図6において、ターゲットCPUバイナリデータ100は、内部にオペレーティングシステムなどのようにメモリ管理機能を有する場合にメモリ管理に用いるメモリ管理テーブルを持っている。また命令変換情報解析部300は実施の形態1で説明した機能を持つ。そして読込み部200dは内部に図5に示したと同じ機能の変換エリア情報誌時部202と、CPUバイナリデータ100のメモリ管理テーブル101の情報から命令コードのエリア(開始アドレス及び終了アドレスの対)を抽出し、変換エリア情報指示部202を設定する変換エリア情報設定部、200は変換エリア情報設定部203を持っている。
基本的な動作は、実施の形態1で示した動作を行う。先の動作説明と同様に、ターゲットCPUバイナリデータを読込み部200dを用いて読み込む時に、変換エリア情報設定部201がターゲットCPUバイナリデータ100が保持するメモリ管理テーブル101から命令コードの配置情報(命令コードの開始アドレスと終了アドレスの対)を読み込む。変換エリア情報設定部203により抽出された命令コードの開始アドレスと終了アドレスの対は、変換エリア情報指示部202に保持される。ターゲットCPU命令の変換時には、変換エリア情報指示部202により指示されるエリアを命令コードのエリアとして、命令変換情報解析部300は、ターゲットCPU命令を予め準備した命令シミュレーション関数への割り付けを行う。その際、読込み部200dによって読み込まれたターゲットCPUバイナリデータのメモリ常駐情報を抽出し、ターゲットCPUシステムのメモリに常駐する領域のみを変換エリア情報指示部202による変換対象とし、効率的に命令の変換を行う。
図7は、本実施の形態における他のターゲットCPUの命令コードを含むバイナリデータの読込み部200eの構成を示す詳細ブロック図である。
図7において、読込み部200eは、内部にターゲットCPUバイナリデータ100の命令コードのエリア情報を少なくとも1つを保持し、命令変換情報解析部300に変換範囲の指示を行う変換エリア情報指示部205、ターゲットCPUバイナリデータ100のヘッダー情報から命令コードのエリアを抽出し、変換エリア情報指示部205を設定する変換エリア情報設定部204を持っている。
ターゲットCPUバイナリデータを読込み部200eを用いて読み込む時に、変換エリア情報設定部204がヘッダー情報から命令コードの配置情報を読み込む。そして抽出された命令コードの開始アドレスと変換長さの対は、変換エリア情報指示部205に保持される。ターゲットCPU命令の変換時には、この指示されるエリアを命令コードのエリアとして、命令変換情報解析部300はターゲットCPU命令を予め準備した命令シミュレーション関数への割り付けを行う。その際、読み込まれたターゲットCPUバイナリデータが飛び飛びのエリアで構成されていても、エリアとエリアの間は変換対象とならず、効率的に命令の変換を行う。
以上のように構成しても、同様の効果が得られる。
図8において、読込み部200fは、内部にターゲットCPUバイナリデータ100の命令コードのエリア情報を少なくとも1つを保持し、命令変換情報解析部300に変換範囲の指示を行う変換エリア情報指示部205と、ターゲットCPUバイナリデータ100のメモリ管理テーブル情報から命令コードのエリアを抽出し、変換エリア情報指示部205を設定する変換エリア情報設定部206を持っている。
以上のように構成しても、同様の効果が得られる。
図9は、この発明の実施の形態3における、読込み部と判定部の構成を示す詳細ブロック図である。
図9において、読込み部200cは、内部に図5で示したと同様な変換エリア情報設定部201と、変換エリア情報指示部202を持つ。また、判定部900dは、内部に図で示したと同様な比較部903を持つ。
基本的な動作は、実施の形態1で示した動作を行う。更に図3、図5の動作は既に説明しているので、簡単に説明する。
変換エリア情報設定部201はターゲットCPUバイナリデータ100のヘッダー情報から命令コードの配置情報を読み込む。そして抽出された命令コードの開始アドレスと終了アドレスの対は、変換エリア情報指示部202に保持される。命令変換情報解析部300はターゲットCPU命令を、予め準備した命令シミュレーション関数に割り付けを行う。その際、バイナリデータが飛び飛びのエリアで構成されている場合であっても、エリアとエリアの間は変換対象とせず、効率的に命令の変換を行う。
シミュレーション時には、設定されたターゲットCPUのプログラムカウンタが変換エリア情報指示部202が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていれば、保持されているポインタ情報を読み出す。以後、読み出したポインタ情報の有効/無効により、変換コード実行部700または逐次実行部800が動作する。また、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていなければ、逐次実行部800が動作する。
本構成において、ターゲットCPUバイナリデータ100のヘッダー情報から変換エリア情報を抽出したが、ターゲットCPUプログラムがオペレーティングシステムなどの場合には、変換エリア情報設定部201を用いて、ターゲットCPUバイナリプログラム100内のメモリ管理テーブル101の情報を読み出し、変換エリア情報指示部202に設定することも可能である。
図10は、本実施の形態における、他の読込み部と判定部の構成を示す詳細ブロック図である。
図10において、読込み部200eは、内部に変換エリア情報設定部204と、変換エリア情報指示部205を持つ。また判定部900eは、内部に比較部906を持つ。
本構成による動作は、既に図4と図7で説明しており、図9の動作と同等なので、詳細記述を省略する。
本実施の形態においては、ポインタ参照テーブル保持部の詳細具体構成を説明する。
図11は、この発明の実施の形態4におけるポインタ参照テーブル保持部、及び、逐次実行部と変換コード実行部を切り替えてターゲットCPU命令を実行する実行部の構成を示すブロック図である。
図11において、ポインタ参照テーブル保持部400dは、ターゲットCPUのページ単位で管理され、ターゲットCPUのページ先頭から順に命令シミュレーション関数へのポインタと有効/無効を示すフラグ情報とシミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報を保持するポインタ情報保持部402と、ターゲットCPUのページアドレスとポインタ情報保持部402の該当ポインタの対を保持するページポインタ参照テーブル保持部401とを内部に持っている。その他の命令変換情報解析部300と、実行部600については、実施の形態1、図1に示す要素と同等のものである。
基本的な動作は、実施の形態1で示した動作を行う。本実施の形態において、命令変換情報解析部300は、ターゲットCPUの命令を予め準備した命令シミュレーション関数への割り付けを行う際に、ターゲットCPUシステムのメモリにある内容をページ単位で命令変換をする。
命令変換情報解析部300は、ターゲットCPUのページの先頭を変換するときに、まずターゲットCPUのページアドレスと変換した情報を格納するポインタ情報保持部402のページポインタを対にしてページポインタ参照テーブル保持部401に格納する。その後、ターゲットCPUのページ内のバイナリデータを変換し、該当する命令シミュレーション関数のポインタ、有効か無効かを示すフラグ、命令シミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報をポインタ情報保持部402に格納する。
ターゲットCPU命令のシミュレーション時には、設定されたターゲットCPUのプログラムカウンタのページアドレスを元にページポインタ参照テーブル保持部401の検索を行う。ページポインタ参照テーブル保持部401の検索の結果得られたポインタにターゲットCPUのプログラムカウンタのページオフセットを加算することで、ターゲットCPUのプログラムカウンタに対応する命令シミュレーション関数の該当ポインタ情報を抽出する。判定部900はポインタ情報保持部402から得られた有効/無効情報をみて、有効であれば同時に得られたポインタ情報に従い、変換コード実行部700を動作させる。ポインタ情報保持部から得られた有効/無効情報が無効であれば、逐次実行部800を動作させる。
図12は、本実施の形態における他のポインタ参照テーブル保持部の構成を示すブロック図である。
図12において、ページポインタ参照テーブル保持部401と、ポインタ情報保持部402は、図11に示したものと同等である。また、ポインタ参照テーブル保持部400eは、他にターゲットCPUの論理ページアドレスと論理ページアドレスに対応する物理ページアドレスと物理ページアドレスに対応するポインタ情報保持部402の該当ポインタの対を保持するページアドレス変換バッファ保持部403を持つ。更にCPUシミュレーション装置は、ターゲットCPUシステムのアドレス変換機構を備えている。
命令変換情報解析部300は、図11と同様の動作を行う。
ターゲットCPU命令のシミュレーション時には、設定されたターゲットCPUのプログラムカウンタの論理ページアドレスを基にページアドレス変換バッファ403の検索を行う。ページアドレス変換バッファ保持部403は、ターゲットCPU命令の変換時には設定されないため、ターゲットCPUのプログラムカウンタの論理ページアドレスは該当アドレスが登録されておらず、ミスとなる。ミスとなった場合には、ターゲットCPUシステムのアドレス変換機構1000による論理アドレス・物理アドレスの変換を行い、得られた物理アドレスでページポインタ参照テーブル保持部401の検索を行う。ターゲットCPUのプログラムカウンタの論理ページアドレス、ターゲットCPUシステムのアドレス変換機構1000で得られた物理ページアドレス、ページポインタ参照テーブル保持部401で得られたページポインタをページアドレス変換バッファ保持部403に登録する。ターゲットCPUのプログラムカウンタの論理ページアドレスに対応するページポインタがページポインタ参照テーブル保持部401にない場合には、ポインタ情報保持部402が有するフラグ情報を無効としている専用エリアのポインタをページアドレス変換バッファ保持部403に登録する。その後、再度ターゲットCPUのプログラムカウンタの論理ページアドレスでページアドレス変換バッファ保持部403を検索すると、登録されたページポインタを抽出できる。抽出されたページポインタにターゲットCPUのプログラムカウンタのページ内オフセットを加算することで、ターゲットCPUのプログラムカウンタに対応する命令シミュレーション関数701の該当ポインタ情報を抽出する。
判定部900はポインタ情報保持部402から得られた有効/無効情報をみて、変換コード実行部700または、逐次実行部800を動作させる。
図13は、本実施の形態における他のポインタ参照テーブル保持部の構成を示すブロック図である。
図13において、ポインタ参照テーブル保持部400fには、図12のポインタ情報保持部402に代るポインタ情報保持部404がある。これはターゲットCPUのページ単位で管理され、ターゲットCPUのページ先頭から順に命令シミュレーション関数ポインタとシミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報を保持し、逐次実行部を起動するために命令シミュレーション関数ポインタが逐次実行部をさしている専用エリアを持っている。
命令変換情報解析部300は、図11と同様の動作を行う。そして、ターゲットCPUのページ先頭から順に該当する命令シミュレーション関数のポインタ、命令シミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報をポインタ情報保持部404に格納する。また、ターゲットCPUバイナリデータ100の命令エリア、データエリアの区別なく変換するため、ターゲットCPU無効な命令コードと判断した場合には、逐次実行部800のポインタを設定する。
ターゲットCPUのプログラムカウンタの論理ページアドレスに対応するページポインタがページポインタ参照テーブル保持部401にない場合には、ポインタ情報保持部404が有する逐次実行部800のポインタを示す専用エリアのポインタをページアドレス変換バッファ保持部403に登録する。その後、ページアドレス変換バッファ保持部403を検索すると、登録されたページポインタを抽出できる。更に、抽出されたページポインタにターゲットCPUのプログラムカウンタのページ内オフセットを加算することで、ターゲットCPUのプログラムカウンタに対応する変換コード保持部の該当ポインタ情報を抽出する。ポインタ情報保持部402から得られたポインタ情報に従い、変換コード実行部700又は、逐次実行部800を動作させる。
本実施の形態においては、これまでの実施の形態において述べてこなかった各種の他の変形構成を説明する。
図14は、この発明の実施の形態5における命令変換部の構成を示すブロック図である。
図14において、命令変換情報解析部300eは、内部にポインタ参照テーブル保持部400の容量をチェックし、容量オーバーフローを検出する容量オーバーフロー検出部301と、容量オーバーフロー検出部301によって検出された容量オーバーフローの情報に従い、ポインタ参照テーブル保持部400の容量を拡張する容量拡張部302を持つ。また図1の同番号のそれと同等の機能を持つポインタ参照テーブル保持部400は、拡張部405を持つ。
本実施の形態5において、命令変換情報解析部300が情報を解析し、割付を行っていって、ポインタ参照テーブル保持部400の残容量を観測する。容量オーバーフロー検出部301が、残容量が規定値以下を検出すると、容量拡張部302に通報する。この容量オーバーフロー検出部301からの通報に従い、容量拡張部302はポインタ参照テーブル保持部400の拡張を行う。命令変換情報解析部300は変換すべきターゲットCPU命令がなくなるまで、上記動作を繰り返し、全てのエリアの変換を行う。
図15において、実行部600eは、新たに変換コード実行部700あるいは逐次実行部800がターゲットCPU命令のシミュレーションを行った際にターゲットCPUシステムのメモリ1100へのメモリ更新要求を検出するメモリ更新検出部601と、メモリ更新検出部601が通報するメモリ更新要求及びメモリ更新アドレスを元にポインタ参照テーブル保持部400のメモリ更新アドレスに対応する情報を無効化あるいは再変換するポインタ参照テーブル更新部602を持つ。その他の要素は、既に説明した同番号の構成要素と同等のものである。
本実施の形態において、ターゲットCPU命令のストア命令等ターゲットCPUシステムのメモリ1100を更新する命令を実行した場合に、メモリ更新検出部601はターゲットCPUシステムのメモリ1100へのメモリ参照要求を観測し、メモリ更新要求を検出すると、ポインタ参照テーブル保持部400に格納されているターゲットCPUの全命令アドレスとメモリ更新アドレスの比較を行う。これは、ターゲットCPU命令の実行により、命令変換情報解析部300で変換した命令が書きかえられることの検出を行う。このメモリ更新検出部601がない場合には、書きかえられた命令を実行せずに、書きかえられる前の命令を実行する可能性がある。メモリ更新検出部601は、命令変換情報解析部300によって変換されたエリアのデータが更新されたことを検出すると、ポインタ参照テーブル更新部602にメモリ更新アドレスとポインタ参照テーブル保持部400の更新要求を通報する。通報を受けたポインタ参照テーブル更新部602は、メモリ更新アドレスに対応するポインタ参照テーブル保持部400が保持している有効か無効かを示すフラグ情報を無効にする。あるいは、ポインタ参照テーブル更新部602は、更新されたメモリ情報に基づきポインタ参照テーブル保持部400の再設定(再変換)を行う。ターゲットCPU命令の実行で、無効化されたポインタに対するターゲットCPU命令のアドレスの実行が起きた場合には、フラグ情報が無効となっているため、逐次実行部800が起動される、あるいは更新されたメモリ情報に従い再変換されている命令シミュレーション関数のポインタに従い変換コード実行部700が起動される。逐次実行部800は、命令の取り出しから行うため、更新されたメモリ情報に従い、命令の解釈、命令の実行が行われる。
ターゲットCPUシステムのメモリ1100の更新によるポインタ参照テーブル保持部の無効化あるいは再変換は、更新されたメモリ領域に限定して行ってもかまわないし、更新されたメモリ領域を含むページ単位で行ってもかまわない。
Claims (3)
- ターゲット中央処理装置(以下「中央処理装置」を「CPU」と称する)で動作するように作成されたプログラムの複数のターゲット命令の各ターゲット命令を上記ターゲットCPUとは異なる別のホストCPUでシミュレーションする命令模擬装置であって、
上記各ターゲット命令が上記ターゲットCPUで実行される場合の当該ターゲット命令のアドレスを示すアドレス情報と、当該ターゲット命令とを順次読み込む読み込み部と、
ターゲット命令を上記ホストCPUでシミュレーションする命令シミュレーション関数を複数、命令シミュレーション関数群に記憶する実行部と、
上記アドレス情報と、命令シミュレーション関数へのポインタであるポインタ情報と、上記ポインタ情報が有効か無効かを示すフラグ情報とを対応させて複数記憶するポインタ参照情報保持部と、
上記読み込み部が読み込んだアドレス情報とターゲット命令とを入力し、入力したターゲット命令を上記複数のターゲット命令の最小の命令長で1つ以上の最小単位に分割して、分割した1つ以上の単位の先頭の最小単位のアドレス情報として、入力したアドレス情報を上記ポインタ参照情報保持部に記憶し、複数の最小単位に分割できた場合、先頭の最小単位以外の他の最小単位のアドレス情報として、入力したアドレス情報に最小の命令長を順次加算したアドレス情報を順次上記ポインタ参照情報保持部に記憶し、
分割した最小単位ごとに、分割した最小単位が上記命令シミュレーション関数群に記憶された命令シミュレーション関数がシュミレーションするターゲット命令である定義命令か否かを判定し、定義命令である場合、上記命令シミュレーション関数群に記憶された上記命令シミュレーション関数へのポインタを、上記分割した最小単位のポインタ情報としてアドレス情報に対応させて上記ポインタ参照情報保持部に記憶し、かつ、ポインタ情報が有効であることを示すフラグ情報をアドレス情報に対応させて上記ポインタ参照情報保持部に記憶するとともに、未定義命令である場合、上記分割した最小単位のフラグ情報としてポインタ情報が無効であることを示すフラグ情報をアドレス情報に対応させて上記ポインタ参照情報保持部に記憶する変換情報解析部とを備え、
上記実行部は、さらに、
ターゲットCPUのプログラムカウンタの値を入力し、
入力したプログラムカウンタの値と一致するアドレス情報を上記ポインタ参照情報保持部から検索し、検索できたアドレス情報に対応するフラグ情報とポインタ情報を上記ポインタ参照情報保持部から取り出し、取り出したフラグ情報が有効か無効かを判定する判定部と、
上記判定部が判定した結果が有効である場合、上記判定部が取り出したポインタ情報に対応する命令シミュレーション関数を上記命令シミュレーション関数群から取り出して実行する変換コード実行部とを有する
ことを特徴とする命令模擬装置。 - 上記実行部は、上記判定部が判定した結果が無効である場合、上記プログラムカウンタの値が指し示すアドレスにあるターゲット命令を解析して実行する逐次実行部を有することを特徴とする請求項1記載の命令模擬装置。
- 上記変換コード実行部は、上記命令シミュレーション関数を実行した後、プログラムカウンタの値を更新し、
上記逐次実行部は、上記ターゲット命令を実行した後、プログラムカウンタの値を更新し、
上記実行部は、更新されたプログラムカウンタの値を入力し、
上記判定部は、更新されたプログラムカウンタの値を用いて上記フラグ情報が有効か無効かを判定する
ことを特徴とする請求項2記載の命令模擬装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003393977A JP4563669B2 (ja) | 2003-11-25 | 2003-11-25 | 命令模擬装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003393977A JP4563669B2 (ja) | 2003-11-25 | 2003-11-25 | 命令模擬装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005157640A JP2005157640A (ja) | 2005-06-16 |
JP4563669B2 true JP4563669B2 (ja) | 2010-10-13 |
Family
ID=34720184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003393977A Expired - Fee Related JP4563669B2 (ja) | 2003-11-25 | 2003-11-25 | 命令模擬装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4563669B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4873423B2 (ja) * | 2007-12-27 | 2012-02-08 | 東芝ソリューション株式会社 | 仮想化プログラム、シミュレーション装置、仮想化方法 |
JP5045934B2 (ja) * | 2008-02-15 | 2012-10-10 | エヌイーシーコンピュータテクノ株式会社 | 情報処理装置、情報処理装置におけるエミュレーション方法及びエミュレーションプログラム |
US9405551B2 (en) * | 2013-03-12 | 2016-08-02 | Intel Corporation | Creating an isolated execution environment in a co-designed processor |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06250874A (ja) * | 1993-02-26 | 1994-09-09 | Nec Corp | Cpuシミュレーション方法およびcpuシミュレータ |
JPH06324883A (ja) * | 1993-05-15 | 1994-11-25 | Nec Corp | Cpuシミュレータ |
JPH08305583A (ja) * | 1995-05-08 | 1996-11-22 | N Ii C Joho Syst:Kk | Cpuシミュレーション方法 |
JPH096646A (ja) * | 1995-06-14 | 1997-01-10 | Oki Electric Ind Co Ltd | プログラムシミュレーション装置 |
JPH1031595A (ja) * | 1996-07-15 | 1998-02-03 | Nec Corp | シミュレーション装置及びシミュレーション方法 |
JPH10177487A (ja) * | 1996-12-16 | 1998-06-30 | Fujitsu Ltd | プロセッサの命令シミュレーション方法および命令シミュレーション・システム |
JPH11282718A (ja) * | 1998-03-27 | 1999-10-15 | Nec Corp | シミュレーション方法、シミュレーション装置及びシミュレーションプログラムを記憶した記憶媒体 |
-
2003
- 2003-11-25 JP JP2003393977A patent/JP4563669B2/ja not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06250874A (ja) * | 1993-02-26 | 1994-09-09 | Nec Corp | Cpuシミュレーション方法およびcpuシミュレータ |
JPH06324883A (ja) * | 1993-05-15 | 1994-11-25 | Nec Corp | Cpuシミュレータ |
JPH08305583A (ja) * | 1995-05-08 | 1996-11-22 | N Ii C Joho Syst:Kk | Cpuシミュレーション方法 |
JPH096646A (ja) * | 1995-06-14 | 1997-01-10 | Oki Electric Ind Co Ltd | プログラムシミュレーション装置 |
JPH1031595A (ja) * | 1996-07-15 | 1998-02-03 | Nec Corp | シミュレーション装置及びシミュレーション方法 |
JPH10177487A (ja) * | 1996-12-16 | 1998-06-30 | Fujitsu Ltd | プロセッサの命令シミュレーション方法および命令シミュレーション・システム |
JPH11282718A (ja) * | 1998-03-27 | 1999-10-15 | Nec Corp | シミュレーション方法、シミュレーション装置及びシミュレーションプログラムを記憶した記憶媒体 |
Also Published As
Publication number | Publication date |
---|---|
JP2005157640A (ja) | 2005-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8381194B2 (en) | Methods and apparatuses for selective code coverage | |
US5347647A (en) | Method of predicting the performance of an emulated computer system | |
US5617553A (en) | Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer | |
JPH1139167A (ja) | 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ | |
US20030028860A1 (en) | Compiler and debugging device | |
EP3049921A1 (en) | Methods and apparatus to validate translated guest code in a dynamic binary translator | |
KR20210018415A (ko) | 예측 실패 복구에 대한 레이턴시를 줄이기 위한 이차적 분기 예측 저장 | |
JP5318197B2 (ja) | ホストデータ処理装置内におけるデバイスエミュレーションのサポート | |
US8589899B2 (en) | Optimization system, optimization method, and compiler program | |
US20120011490A1 (en) | Development system | |
JP4563669B2 (ja) | 命令模擬装置 | |
JPH11306021A (ja) | 複数のパイプライン処理機構を有するデータ処理装置 | |
JP2005128692A (ja) | シミュレータ及びシミュレーション方法 | |
JP5118562B2 (ja) | デバッグ支援装置 | |
JP6103541B2 (ja) | バイナリコードの実行を制御する装置及び方法 | |
JPH1031595A (ja) | シミュレーション装置及びシミュレーション方法 | |
CN113569177A (zh) | 一种跳转网页优化的方法、装置及电子设备 | |
JP3495230B2 (ja) | エミュレーション処理方式 | |
JP2003015914A (ja) | 情報処理装置を評価するためのテストプログラムを作成する方法、装置、およびそのための処理を記述したプログラム | |
JP2000250957A (ja) | 論理シミュレーション装置 | |
JP2004185527A (ja) | シミュレーション装置及びシミュレーション方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP5208706B2 (ja) | コード実行システム、方法及びプログラム | |
JP6239212B1 (ja) | シミュレーション装置、シミュレーション方法及びシミュレーションプログラム | |
JP2727023B2 (ja) | 情報処理装置 | |
JP3130421B2 (ja) | プログラム解析方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060907 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090306 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091110 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100105 |
|
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: 20100727 |
|
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: 20100729 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130806 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |