JP4563669B2 - 命令模擬装置 - Google Patents

命令模擬装置 Download PDF

Info

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
Application number
JP2003393977A
Other languages
English (en)
Other versions
JP2005157640A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2003393977A priority Critical patent/JP4563669B2/ja
Publication of JP2005157640A publication Critical patent/JP2005157640A/ja
Application granted granted Critical
Publication of JP4563669B2 publication Critical patent/JP4563669B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、シミュレーション対象となるターゲットCPU(中央処理装置)の動作をホストCPU上でシミュレーションする命令模擬装置及び方法に関するものである。
ターゲットCPUのマシン語レベルの各命令コードをシミュレートするホストCPUのアセンブラ言語レベル又はマシン語レベルの命令コードで構成されたシミュレーション関数が用意されている。従来技術としての特許文献1では、ターゲットCPUの命令コードをホストCPUで実行するための命令コード変換を行う変換手段は、ターゲットプログラムをシミュレーションする前に、その命令コードをホストCPUの命令でシミュレートするためのシミュレーション関数を呼び出すシミュレーション関数呼び出しで構成されたシミュレーション関数呼び出し列あるいはテーブルを生成する。ホストCPUはシミュレーション関数呼び出し列を実行する、あるいはテーブルを検索し該当するシミュレーション関数を実行することによりターゲットCPUの動作のシミュレーションを行う。
特開平6−250874号公報(第3項、第1図)
従来のCPUシミュレーション装置は上記のように構成されており、ターゲットCPUプログラムの実行前にシミュレーション関数呼び出し列あるいはテーブルを生成しているので、ターゲットCPUプログラムがオペレーティングシステムのように、ターゲットCPUのプログラムが周辺機器からプログラムをロードして実行するような場合には、ロードされたプログラムに対応するターゲットCPUシミュレーション関数呼び出し列あるいはテーブルが準備できていないため、ロードされたプログラムを実行できないという課題がある。
また、ターゲットCPUプログラム自身がプログラムを生成、または更新するような場合には、ターゲットCPUシミュレーション関数呼び出し列あるいはテーブルが更新されたメモリの内容に対応しておらず、更新前のメモリ情報に基づいて、誤ったターゲットCPU命令のシミュレーションを行うという課題もある。
この発明は、上記のような課題を解決するためになされたもので、ターゲットCPUのプログラムがプログラムをロード、生成、または更新するような場合でも、または未シュミレートの命令に対しても、ターゲットCPUの動作をホストCPU上で支障なく、シミュレーションできるようにし、且つ、シミュレーションシステムを小型化、高速化できるようにする。
また、この発明は、ターゲットCPUプログラムを変換した際に設定するポインタ参照テーブル保持手段に巨大なテーブルが必要となりがちであるが、ターゲットCPUプログラムが複数の領域に分割されている場合でも、テーブルの大型化あるいはテーブル検索の速度低下が生じないようにする。
この発明に係る命令模擬装置は、模擬対象(ターゲット)の命令をシミュレーション計算機の命令で模擬する命令模擬装置において、
模擬対象の命令を実行履歴によらず解析して必要情報を抽出・割付ける変換情報解析部と、
上記解析・抽出された命令に対して、シミュレーション計算機の命令列で記述されるシミュレーション命令の有無を表す状態情報を含む情報を記憶するポインタ参照情報保持部と、
上記模擬対象の命令のシミュレーション実行に際して、上記ポインタ参照情報保持部で記憶している状態情報を参照して、既シミュレーション命令に該当する場合には該当シミュレーション命令を実行し、該当しない場合には模擬対象の命令を順次取出し解釈して逐次実行する、実行部とを備えた。
シミュレーション命令の有無を表す状態情報に基づいてシミュレーション命令を実行し、または切換えて模擬対象の命令を逐次実行するので、模擬対象のプログラムが自身を更新する場合でも、高速でシミュレーションができる効果がある。
実施の形態1.
図1は、この発明の実施の形態1における命令シミュレーション装置の構成を示す図であり、図2はホストCPU上で動作するこのCPUシミュレーン装置の動作を示すフローチャートである。
図1において、CPUシミュレーション装置は、シミュレーションすべきターゲットCPUの命令コードを含むターゲットCPUバイナリデータを読み込む。また構成として、ホストCPU上でターゲットCPUバイナリデータ100をCPUシミュレーション装置にロードする読込み部200、ターゲットCPUのアドレス情報を保持するターゲットCPUアドレス情報保持部410、ターゲットCPU命令の命令シミュレーション関数のポインタ情報を保持する関数ポインタ情報保持部411、関数ポインタ情報保持部411の保持する情報が有効か無効かを示すフラグを保持するフラグ情報保持部412、命令シミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報を保持するデコード情報保持部413から構成されるポインタ参照テーブル保持部400、ターゲットCPU命令のシミュレーションを行う予め準備された命令シミュレーション関数(701−1や701−2)群を持ち、ターゲットCPU命令に対応した命令シミュレーション関数を実行する変換コード実行部700、命令の取り出しと命令の解釈と命令の実行を逐次的に行う逐次実行部800、所定の条件により変換コード実行部700と逐次実行部800を切り替える切替部910、切替部910を持ち、ポインタ参照テーブル保持部400からの情報を解析し切替部910に制御情報を伝える判定部900、判定部900と変換コード実行部700と逐次実行部800を持つ実行部600、読込み部200によって読み込まれたターゲットCPUバイナリデータをターゲットCPU命令と解釈し、ターゲットCPUアドレス、該当する命令シミュレーション関数のポインタ、有効か無効かを示すフラグ、命令シミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報をポインタ参照テーブル保持部400に設定する命令変換情報解析部300を備えている。
次に図1と図2を基に動作を説明する。
ターゲット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のS2でYの場合)には、開始すべきターゲットCPUのプログラムカウンタを設定(図2のS3)し、設定されたPCに従い、ポインタ参照テーブル保持部400を検索する(図2のS4)。判定部900はポインタ参照テーブル保持部400から取り出したポインタ情報が有効な場合(図2のS5でYの場合)には、予め準備された命令シミュレーション関数群701を実行するために変換コード実行部700を起動して実行する(図2のS6)。判定部900はポインタ参照テーブル保持部400から取り出したポインタ情報が無効な場合や該当するポインタ情報がなかった場合(図2のS5でNの場合)には、命令の取り出し、命令の解釈、命令の実行を逐次的に行うために逐次実行部800を起動して実行する(図2のS8)。変換コード実行(図2のS6)および逐次処理実行(図2の8)の完了後は、プログラムカウンタの更新を行い(図2のS7および図2のS9)、次に実行するターゲットCPUの変換済コードを検索する(図2のS4)。
これらのポインタ参照テーブル検索(図2のS4)からプログラムカウンタの更新(図2のS7および図2のS9)までを繰り返し実行することで、ターゲットCPU命令のシミュレーションを行う。ターゲットCPUプログラムがオペレーティングシステムのようにターゲットCPUのプログラムが周辺機器からプログラムをロードして実行するような場合には、ロードされたプログラムはポインタ参照テーブル保持部400に登録されていないため、逐次実行部800で命令実行される。
以上のように、ポインタ参照テーブルに登録されているかどうか、または登録された情報が有効であるか無効であるかを判断し、ターゲットCPU命令のシミュレーション部分を切り替えることで、ターゲットCPUのプログラムがプログラムをロード、生成、または更新するような場合でも、ターゲットCPUの動作をホストCPU上で支障なくシミュレーションすることができる。
なお、上記では、上記記載の要素で構成される装置として説明したが、ホストCPUとして汎用の計算機を用い、図2のフローに示されるステップを構成してシミュレーションを行うようにしてもよい。即ち図2のS1aとしてホストCPU系への命令変換情報解析ステップ、S1bとしてポインタ参照テーブルでの情報保持ステップ、S6として変換コード実行ステップ、S8として逐次処理実行ステップ、S5として判定・切替ステップを持ち、図2に示される処理を行わせる。
このステップを計算機プログラムとして用意することも有効である。
実施の形態2.
これらのシミュレーションを行うターゲットCPUの命令が、すでにシミュレーション実行されているかを判定し、シミュレーション実行速度を上げる形態を説明する。
図3は、本実施の形態におけるターゲットCPUのプログラムカウンタがポインタ参照テーブル保持部に格納されているかを判定する判定部900bの構成を示す詳細ブロック図である。
図3において、ポインタ参照テーブル保持部400は、図1に示す詳細構成要素を持っている。そして判定部900bは、内部に命令変換情報解析部300によって解析された変換エリアの開始アドレスと終了アドレスの対を少なくとも1つ保持するする変換エリア情報保持部902、ポインタ参照テーブル保持部400の内容を読み出し、変換された領域の開始アドレスと終了アドレスの検索を行い、開始アドレスと終了アドレスの対を変換エリア情報保持部902に設定する変換エリア情報設定部901、ターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと終了アドレスの間に含まれているかを比較する比較部903を持っている。
次に図3を用いて動作を説明する。
基本的な動作は、実施の形態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となる。
変換エリア情報設定部901は、ポインタ参照テーブル保持部400の最初から最後までターゲットCPUの命令アドレスの読み出しを行い、変換した全エリアの開始アドレスと終了アドレスの対を抽出する。変換エリア情報設定部901で抽出された開始アドレスと終了アドレスの対が変換エリア情報保持部902に通知され、保持される。
ターゲットCPU命令のシミュレーション時には、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていれば、ポインタ参照テーブル保持部400にターゲットCPUの命令アドレスと対に保持されているポインタ情報を読み出す。読み出したポインタ情報が有効であれば、変換コード実行部700を起動し、読み出したポインタ情報が無効であれば、逐次実行部800を起動する。また、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていなければ、逐次実行部800を起動する。
以上のように、変換エリア情報設定部及び設定エリア情報保持部を持ち、変換エリアの範囲(開始アドレスと終了アドレス)とターゲットCPUのプログラムカウンタを比較できるようにするので、ポインタ参照テーブル保持部の高速な検索が可能となり、従って高速にターゲットCPU命令のシミュレーションを行うことができる。
同様主旨の他の構成を説明する。
図4は、本実施の形態における他の、ターゲットCPUのプログラムカウンタがポインタ参照テーブル保持部に格納されているかを判定する判定部900Cの構成を示す詳細ブロック図である。
図4において、判定部900Cは、内部に命令変換情報解析部300によって変換された変換エリアの開始アドレスと開始アドレスからの変換長さの対を少なくとも1つ保持するする変換エリア情報保持部905、ポインタ参照テーブル保持部400の内容を読み出し、変換された領域の開始アドレスと開始アドレスからの変換長さの検索を行い、開始アドレスと変換長さの対を変換エリア情報保持部902に設定する変換エリア情報設定部904、ターゲットCPUのプログラムカウンタが変換エリア情報保持部905が保持する開始アドレスと(開始アドレス+変換長さ)の間に含まれているかを比較する比較部906を持っている。
次に図4を用いて動作を説明する。
基本的な動作は、実施の形態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となる。
変換エリア情報設定部904は、ポインタ参照テーブル保持部400の最初から最後までターゲットCPUの命令アドレスの読み出しを行い、変換した全エリアの開始アドレスと変換長さの対を抽出する。変換エリア情報設定部904で抽出された開始アドレスと変換長さの対が変換エリア情報保持部905に通知され、保持される。
ターゲットCPU命令のシミュレーション時には、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部905が保持する開始アドレスと(開始アドレス+変換長さ)の対に挟まれたエリアに含まれていれば、ポインタ参照テーブル保持部400にターゲットCPUの命令アドレスと対に保持されているポインタ情報を読み出す。読み出したポインタ情報が有効であれば、変換コード実行部700を起動し、読み出したポインタ情報が無効であれば、逐次実行部800を起動する。また、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと(開始アドレス+変換長さ)の対に挟まれたエリアに含まれていなければ、逐次実行部800を起動する。
以上のように構成しても、ポインタ参照テーブル保持部の高速な検索が可能で、ターゲットCPU命令の高速シミュレーションを行うことができる。
実施の形態3.
ターゲット命令が連続アドレスで表現されていない場合でも、効率的にシミュレーションを行い、命令実行の実行速度も上げる形態を説明する。
図5は、この発明の実施の形態3における、ターゲットCPUの命令コードを含むバイナリデータの読込部200cの構成を示す詳細ブロック図である。
図5において、命令変換情報解析部300は、実施の形態1で説明した動作を行い、図1のポインタ参照テーブル保持部400に必要な情報を設定する。そして読込み部200cは、内部にターゲットCPUバイナリデータ100に書かれた命令コードのエリア情報(変換開始アドレス及び変換終了アドレスの対)を少なくとも1つを保持し、命令変換情報解析部300に変換範囲の指示を行う変換エリア情報指示部202、ターゲットCPUバイナリデータ100のヘッダー情報から命令コードのエリア(開始アドレス及び終了アドレスの対)を抽出し、変換エリア情報指示部202を設定する変換エリア情報設定部201を持っている。
次に図5を用いて動作を説明する。
基本的な動作は、実施の形態1で示した動作を行う。実施の形態3では、ターゲットCPUバイナリデータ100を読込み部200cが読み込む時に、変換エリア情報設定部201がヘッダー情報から命令コードの配置情報(命令コードの開始アドレスと終了アドレスの対)を読み込む。変換エリア情報設定部201により抽出された命令コードの開始アドレスと終了アドレスの対は、変換エリア情報指示部202に保持される。ターゲットCPU命令の変換時には、変換エリア情報指示部202により指示されるエリアを命令コードのエリアとして、命令変換情報解析部300がターゲットCPUの命令を予め準備した命令シミュレーション関数への割り付けを行う。その際、読込み部200cによって読み込まれたターゲットCPUバイナリデータが飛び飛びのエリアで構成されている場合であっても、変換エリア情報指示部202により、エリアとエリアの間は変換対象とせず、効率的に命令の変換を行う。
以上のように、変換エリア情報設定部及び設定エリア情報指示部を持ち、変換エリアの範囲(開始アドレスと終了アドレス)を命令変換情報解析部に通知するので、効果的な命令変換が可能で、ターゲットCPU命令のシミュレーションに必要な利用資源を少なくできる。
同様主旨の他の構成を説明する。
図6は、本実施の形態における他の、ターゲットCPUの命令コードを含むバイナリデータがオペレーティングシステムなどのようにメモリ管理機能を有するプログラムである場合の、読込み部の構成を示す詳細ブロック図である。
図6において、ターゲットCPUバイナリデータ100は、内部にオペレーティングシステムなどのようにメモリ管理機能を有する場合にメモリ管理に用いるメモリ管理テーブルを持っている。また命令変換情報解析部300は実施の形態1で説明した機能を持つ。そして読込み部200dは内部に図5に示したと同じ機能の変換エリア情報誌時部202と、CPUバイナリデータ100のメモリ管理テーブル101の情報から命令コードのエリア(開始アドレス及び終了アドレスの対)を抽出し、変換エリア情報指示部202を設定する変換エリア情報設定部、200は変換エリア情報設定部203を持っている。
次に図6を用いて動作を説明する。
基本的な動作は、実施の形態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を持っている。
図7を用いて動作を説明するが、図4と図5で既に詳細を説明したので、簡単に述べる。
ターゲットCPUバイナリデータを読込み部200eを用いて読み込む時に、変換エリア情報設定部204がヘッダー情報から命令コードの配置情報を読み込む。そして抽出された命令コードの開始アドレスと変換長さの対は、変換エリア情報指示部205に保持される。ターゲットCPU命令の変換時には、この指示されるエリアを命令コードのエリアとして、命令変換情報解析部300はターゲットCPU命令を予め準備した命令シミュレーション関数への割り付けを行う。その際、読み込まれたターゲットCPUバイナリデータが飛び飛びのエリアで構成されていても、エリアとエリアの間は変換対象とならず、効率的に命令の変換を行う。
以上のように構成しても、同様の効果が得られる。
図8は、本実施の形態における他の、読込み部200fの構成を示す詳細ブロック図である。
図8において、読込み部200fは、内部にターゲットCPUバイナリデータ100の命令コードのエリア情報を少なくとも1つを保持し、命令変換情報解析部300に変換範囲の指示を行う変換エリア情報指示部205と、ターゲットCPUバイナリデータ100のメモリ管理テーブル情報から命令コードのエリアを抽出し、変換エリア情報指示部205を設定する変換エリア情報設定部206を持っている。
図8の構成による動作は、既に説明した構成要素の動作から明らかであるので、記述を省略する。
以上のように構成しても、同様の効果が得られる。
命令実行シミュレーションの実行速度を更に向上する形態を説明する。
図9は、この発明の実施の形態3における、読込み部と判定部の構成を示す詳細ブロック図である。
図9において、読込み部200cは、内部に図5で示したと同様な変換エリア情報設定部201と、変換エリア情報指示部202を持つ。また、判定部900dは、内部に図で示したと同様な比較部903を持つ。
次に図9を用いて動作を説明する。
基本的な動作は、実施の形態1で示した動作を行う。更に図3、図5の動作は既に説明しているので、簡単に説明する。
変換エリア情報設定部201はターゲットCPUバイナリデータ100のヘッダー情報から命令コードの配置情報を読み込む。そして抽出された命令コードの開始アドレスと終了アドレスの対は、変換エリア情報指示部202に保持される。命令変換情報解析部300はターゲットCPU命令を、予め準備した命令シミュレーション関数に割り付けを行う。その際、バイナリデータが飛び飛びのエリアで構成されている場合であっても、エリアとエリアの間は変換対象とせず、効率的に命令の変換を行う。
シミュレーション時には、設定されたターゲットCPUのプログラムカウンタが変換エリア情報指示部202が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていれば、保持されているポインタ情報を読み出す。以後、読み出したポインタ情報の有効/無効により、変換コード実行部700または逐次実行部800が動作する。また、設定されたターゲットCPUのプログラムカウンタが変換エリア情報保持部902が保持する開始アドレスと終了アドレスの対に挟まれたエリアに含まれていなければ、逐次実行部800が動作する。
本構成において、ターゲットCPUバイナリデータ100のヘッダー情報から変換エリア情報を抽出したが、ターゲットCPUプログラムがオペレーティングシステムなどの場合には、変換エリア情報設定部201を用いて、ターゲットCPUバイナリプログラム100内のメモリ管理テーブル101の情報を読み出し、変換エリア情報指示部202に設定することも可能である。
以上のように構成しても、効果的な命令変換と、省資源による高速シミュレーションの効果がある。
これの変形として、図4と図7の回路を組み合わせることもできる。
図10は、本実施の形態における、他の読込み部と判定部の構成を示す詳細ブロック図である。
図10において、読込み部200eは、内部に変換エリア情報設定部204と、変換エリア情報指示部205を持つ。また判定部900eは、内部に比較部906を持つ。
本構成による動作は、既に図4と図7で説明しており、図9の動作と同等なので、詳細記述を省略する。
実施の形態4.
本実施の形態においては、ポインタ参照テーブル保持部の詳細具体構成を説明する。
図11は、この発明の実施の形態4におけるポインタ参照テーブル保持部、及び、逐次実行部と変換コード実行部を切り替えてターゲットCPU命令を実行する実行部の構成を示すブロック図である。
図11において、ポインタ参照テーブル保持部400dは、ターゲットCPUのページ単位で管理され、ターゲットCPUのページ先頭から順に命令シミュレーション関数へのポインタと有効/無効を示すフラグ情報とシミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報を保持するポインタ情報保持部402と、ターゲットCPUのページアドレスとポインタ情報保持部402の該当ポインタの対を保持するページポインタ参照テーブル保持部401とを内部に持っている。その他の命令変換情報解析部300と、実行部600については、実施の形態1、図1に示す要素と同等のものである。
図11を用いて動作を説明する。
基本的な動作は、実施の形態1で示した動作を行う。本実施の形態において、命令変換情報解析部300は、ターゲットCPUの命令を予め準備した命令シミュレーション関数への割り付けを行う際に、ターゲットCPUシステムのメモリにある内容をページ単位で命令変換をする。
命令変換情報解析部300は、ターゲットCPUのページの先頭を変換するときに、まずターゲットCPUのページアドレスと変換した情報を格納するポインタ情報保持部402のページポインタを対にしてページポインタ参照テーブル保持部401に格納する。その後、ターゲットCPUのページ内のバイナリデータを変換し、該当する命令シミュレーション関数のポインタ、有効か無効かを示すフラグ、命令シミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報をポインタ情報保持部402に格納する。
ターゲットCPU命令のシミュレーション時には、設定されたターゲットCPUのプログラムカウンタのページアドレスを元にページポインタ参照テーブル保持部401の検索を行う。ページポインタ参照テーブル保持部401の検索の結果得られたポインタにターゲットCPUのプログラムカウンタのページオフセットを加算することで、ターゲットCPUのプログラムカウンタに対応する命令シミュレーション関数の該当ポインタ情報を抽出する。判定部900はポインタ情報保持部402から得られた有効/無効情報をみて、有効であれば同時に得られたポインタ情報に従い、変換コード実行部700を動作させる。ポインタ情報保持部から得られた有効/無効情報が無効であれば、逐次実行部800を動作させる。
以上のように構成すると、ポインタ参照テーブル保持部の全検索を行うことなく、ターゲットCPU命令のシミュレーションを高速に行うことができる。
本実施の形態の変形を説明する。
図12は、本実施の形態における他のポインタ参照テーブル保持部の構成を示すブロック図である。
図12において、ページポインタ参照テーブル保持部401と、ポインタ情報保持部402は、図11に示したものと同等である。また、ポインタ参照テーブル保持部400eは、他にターゲットCPUの論理ページアドレスと論理ページアドレスに対応する物理ページアドレスと物理ページアドレスに対応するポインタ情報保持部402の該当ポインタの対を保持するページアドレス変換バッファ保持部403を持つ。更にCPUシミュレーション装置は、ターゲットCPUシステムのアドレス変換機構を備えている。
図12を用いて動作を説明する。
命令変換情報解析部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を動作させる。
以上の構成により、ターゲットCPU命令のシミュレーションを高速に行うことができる。
本実施の形態の変形を説明する。
図13は、本実施の形態における他のポインタ参照テーブル保持部の構成を示すブロック図である。
図13において、ポインタ参照テーブル保持部400fには、図12のポインタ情報保持部402に代るポインタ情報保持部404がある。これはターゲットCPUのページ単位で管理され、ターゲットCPUのページ先頭から順に命令シミュレーション関数ポインタとシミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報を保持し、逐次実行部を起動するために命令シミュレーション関数ポインタが逐次実行部をさしている専用エリアを持っている。
図13を用いて簡単に動作を説明する。
命令変換情報解析部300は、図11と同様の動作を行う。そして、ターゲットCPUのページ先頭から順に該当する命令シミュレーション関数のポインタ、命令シミュレーション関数に引き渡すターゲットCPU命令コードのデコード情報をポインタ情報保持部404に格納する。また、ターゲットCPUバイナリデータ100の命令エリア、データエリアの区別なく変換するため、ターゲットCPU無効な命令コードと判断した場合には、逐次実行部800のポインタを設定する。
ターゲットCPUのプログラムカウンタの論理ページアドレスに対応するページポインタがページポインタ参照テーブル保持部401にない場合には、ポインタ情報保持部404が有する逐次実行部800のポインタを示す専用エリアのポインタをページアドレス変換バッファ保持部403に登録する。その後、ページアドレス変換バッファ保持部403を検索すると、登録されたページポインタを抽出できる。更に、抽出されたページポインタにターゲットCPUのプログラムカウンタのページ内オフセットを加算することで、ターゲットCPUのプログラムカウンタに対応する変換コード保持部の該当ポインタ情報を抽出する。ポインタ情報保持部402から得られたポインタ情報に従い、変換コード実行部700又は、逐次実行部800を動作させる。
以上の構成によっても、シミュレーションに必要な利用資源を削減し、シミュレーションを高速化できる。
実施の形態5.
本実施の形態においては、これまでの実施の形態において述べてこなかった各種の他の変形構成を説明する。
図14は、この発明の実施の形態5における命令変換部の構成を示すブロック図である。
図14において、命令変換情報解析部300eは、内部にポインタ参照テーブル保持部400の容量をチェックし、容量オーバーフローを検出する容量オーバーフロー検出部301と、容量オーバーフロー検出部301によって検出された容量オーバーフローの情報に従い、ポインタ参照テーブル保持部400の容量を拡張する容量拡張部302を持つ。また図1の同番号のそれと同等の機能を持つポインタ参照テーブル保持部400は、拡張部405を持つ。
図14を用いて動作を説明する。
本実施の形態5において、命令変換情報解析部300が情報を解析し、割付を行っていって、ポインタ参照テーブル保持部400の残容量を観測する。容量オーバーフロー検出部301が、残容量が規定値以下を検出すると、容量拡張部302に通報する。この容量オーバーフロー検出部301からの通報に従い、容量拡張部302はポインタ参照テーブル保持部400の拡張を行う。命令変換情報解析部300は変換すべきターゲットCPU命令がなくなるまで、上記動作を繰り返し、全てのエリアの変換を行う。
以上のように、容量オーバーフロー検出部及び容量拡張部を備え、ターゲットCPU命令のホストCPU命令列への変換時に容量を拡張することにより、ターゲットCPUバイナリデータのサイズによらず、ターゲットCPU命令のシミュレーションを行うことができる。
図15は、本実施の形態における実行部の構成を示すブロック図である。
図15において、実行部600eは、新たに変換コード実行部700あるいは逐次実行部800がターゲットCPU命令のシミュレーションを行った際にターゲットCPUシステムのメモリ1100へのメモリ更新要求を検出するメモリ更新検出部601と、メモリ更新検出部601が通報するメモリ更新要求及びメモリ更新アドレスを元にポインタ参照テーブル保持部400のメモリ更新アドレスに対応する情報を無効化あるいは再変換するポインタ参照テーブル更新部602を持つ。その他の要素は、既に説明した同番号の構成要素と同等のものである。
図15を用いて動作を説明する。
本実施の形態において、ターゲット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の更新によるポインタ参照テーブル保持部の無効化あるいは再変換は、更新されたメモリ領域に限定して行ってもかまわないし、更新されたメモリ領域を含むページ単位で行ってもかまわない。
以上のように、メモリ更新検出部とポインタ参照テーブル更新部を備え、命令変換部により変換されたエリアに対するメモリ更新を検出し、ポインタ参照テーブル保持部の該当情報を無効化あるいは再変換することにより、ターゲットCPUの命令が命令を書きかえる場合においても、ターゲットCPUの動作をホストCPU上で支障なくシミュレーションすることができる。
この発明の実施の形態1における命令模擬装置の構成を示す図である。 シミュレーション装置が行う動作を示すフロー図である。 この発明の実施の形態2における判定部の構成を示す図である。 実施の形態2における他の判定部の構成を示す図である。 この発明の実施の形態3における読込み部の構成を示す図である。 実施の形態3における他の読込み部の構成を示す図である。 実施の形態3における他の読込み部の構成を示す図である。 実施の形態3における他の読込み部の構成を示す図である。 実施の形態3における他の読込み部と判定部の構成を示す図である。 実施の形態3における他の読込み部と判定部の構成を示す図である。 この発明の実施の形態4におけるポインタ参照テーブル保持部と実行部の構成を示す図である。 実施の形態4における他のポインタ参照テーブル保持部と実行部の構成を示す図である。 実施の形態4における他のポインタ参照テーブル保持部と実行部の構成を示す図である。 この発明の実施の形態5におけるポインタ参照テーブル保持部と命令変換部の構成を示す図である。 実施の形態5における他のポインタ参照テーブル保持部と実行部の構成を示す図である。
符号の説明
200,200c,200d,200e,200f 読込み部、201,204,206 変換エリア情報設定部、202,205 変換エリア情報指示部、300,300e 命令変換情報解析部、301 容量オーバーフロー検出部、302 容量拡張部、400,400d,400e,400f ポインタ参照テーブル保持部、401 ページポインタ参照テーブル保持部、402,404 ポインタ情報保持部、403 ページアドレス変換バッファ保持部、405 拡張部、410 ターゲットCPUアドレス情報保持部、411 関数ポインタ情報保持部、412 フラグ情報保持部、413 デコード情報保持部、600,600e 実行部、601 メモリ更新検出部、602 ポインタ参照テーブル更新部、700 変換コード実行部、701 命令シミュレーション関数、800 逐次実行部、900,900b,900c 判定部、901,904 変換エリア情報設定部、902,905 変換エリア情報保持部、903,906 比較部、910 切替部、1000 ターゲットCPUシステムのアドレス変換機構、S1a 命令変換情報解析ステップ、S1b ポインタ参照テーブル設定ステップ、S5 判定ステップ、S6 変換コード実行ステップ、S8 逐次処理実行ステップ。

Claims (3)

  1. ーゲット中央処理装置(以下「中央処理装置」を「CPU」と称する)で動作するように作成されたプログラムの複数のターゲット命令の各ターゲット命令を上記ターゲットCPUとは異なる別のホストCPUでシミュレーショする命令模擬装置であって
    上記各ターゲット命令が上記ターゲットCPUで実行される場合の当該ターゲット命令のアドレスを示すアドレス情報と、当該ターゲット命令とを順次読み込む読み込み部と、
    ターゲット命令を上記ホストCPUでシミュレーションする命令シミュレーション関数を複数、命令シミュレーション関数群に記憶する実行部と、
    上記アドレス情報と、命令シミュレーション関数へのポインタであるポインタ情報と、上記ポインタ情報が有効か無効かを示すフラグ情報とを対応させて複数記憶するポインタ参照情報保持部と、
    上記読み込み部が読み込んだアドレス情報とターゲット命令とを入力し、入力したターゲット命令を上記複数のターゲット命令の最小の命令長で1つ以上の最小単位に分割して、分割した1つ以上の単位の先頭の最小単位のアドレス情報として、入力したアドレス情報を上記ポインタ参照情報保持部に記憶し、複数の最小単位に分割できた場合、先頭の最小単位以外の他の最小単位のアドレス情報として、入力したアドレス情報に最小の命令長を順次加算したアドレス情報を順次上記ポインタ参照情報保持部に記憶し、
    分割した最小単位ごとに、分割した最小単位が上記命令シミュレーション関数群に記憶された命令シミュレーション関数がシュミレーションするターゲット命令である定義命令か否かを判定し、定義命令である場合、上記命令シミュレーション関数群に記憶された上記命令シミュレーション関数へのポインタを、上記分割した最小単位のポインタ情報としてアドレス情報に対応させて上記ポインタ参照情報保持部に記憶し、かつ、ポインタ情報が有効であることを示すフラグ情報をアドレス情報に対応させて上記ポインタ参照情報保持部に記憶するとともに、未定義命令である場合、上記分割した最小単位のフラグ情報としてポインタ情報が無効であることを示すフラグ情報をアドレス情報に対応させて上記ポインタ参照情報保持部に記憶する変換情報解析部とを備え
    上記実行部は、さらに、
    ターゲットCPUのプログラムカウンタの値を入力し、
    入力したプログラムカウンタの値と一致するアドレス情報を上記ポインタ参照情報保持部から検索し、検索できたアドレス情報に対応するフラグ情報とポインタ情報を上記ポインタ参照情報保持部から取り出し、取り出したフラグ情報が有効か無効かを判定する判定部と、
    上記判定部が判定した結果が有効である場合、上記判定部が取り出したポインタ情報に対応する命令シミュレーション関数を上記命令シミュレーション関数群から取り出して実行する変換コード実行部とを有する
    ことを特徴とする命令模擬装置。
  2. 上記実行部は、上記判定部が判定した結果が無効である場合、上記プログラムカウンタの値が指し示すアドレスにあるターゲット命令を解析して実行する逐次実行部を有することを特徴とする請求項1記載の命令模擬装置。
  3. 上記変換コード実行部は、上記命令シミュレーション関数を実行した後、プログラムカウンタの値を更新し、
    上記逐次実行部は、上記ターゲット命令を実行した後、プログラムカウンタの値を更新し、
    上記実行部は、更新されたプログラムカウンタの値を入力し、
    上記判定部は、更新されたプログラムカウンタの値を用いて上記フラグ情報が有効か無効かを判定する
    ことを特徴とする請求項2記載の命令模擬装置。
JP2003393977A 2003-11-25 2003-11-25 命令模擬装置 Expired - Fee Related JP4563669B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 シミュレーション方法、シミュレーション装置及びシミュレーションプログラムを記憶した記憶媒体

Patent Citations (7)

* Cited by examiner, † Cited by third party
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
JP3612294B2 (ja) デバッグ方法およびデバッグ装置
US5617553A (en) Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer
JPH1139167A (ja) 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ
US8589143B2 (en) Virtualization apparatus and processing method thereof
WO2015047278A1 (en) Methods and apparatus to validate translated guest code in a dynamic binary translator
KR20210018415A (ko) 예측 실패 복구에 대한 레이턴시를 줄이기 위한 이차적 분기 예측 저장
JP5318197B2 (ja) ホストデータ処理装置内におけるデバイスエミュレーションのサポート
JP4563669B2 (ja) 命令模擬装置
US8589899B2 (en) Optimization system, optimization method, and compiler program
JPH11306021A (ja) 複数のパイプライン処理機構を有するデータ処理装置
JP2005128692A (ja) シミュレータ及びシミュレーション方法
JP2817786B2 (ja) シミュレーション装置及びシミュレーション方法
JP6103541B2 (ja) バイナリコードの実行を制御する装置及び方法
JP5118562B2 (ja) デバッグ支援装置
JP3495230B2 (ja) エミュレーション処理方式
JP2000250957A (ja) 論理シミュレーション装置
JP2004185527A (ja) シミュレーション装置及びシミュレーション方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2007219893A (ja) ファームウェア評価システムおよびファームウェア評価方法
JP6239212B1 (ja) シミュレーション装置、シミュレーション方法及びシミュレーションプログラム
JP5208706B2 (ja) コード実行システム、方法及びプログラム
TW202340938A (zh) 用於處理排序受限制存取操作之技術
JPH10171435A (ja) 文字表示システム
CN116450211A (zh) 虚拟机应用对Linux Arm64的兼容判断方法

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