(57)【要約】【課題】逆アセンブルする際に、実際の利用機能に一致した制御名で表示する技術を提供する。【解決手段】表示部と、逆アセンブルを実行した実行結果を前記表示部に供給する逆アセンブル部（１５）とを具備する逆アセンブルシステム（１）を構築する。その逆アセンブル部（１５）は、命令コードの解析によって得られた解析結果に基づいて、命令記述と命令アドレスとを特定し、制御名有効情報付き制御表ファイル（１４）を参照してその命令記述に対応する照合データを抽出し、抽出したその照合データに示される照合アドレスとその解析結果に示される命令アドレスと予め決定しているアドレス有効範囲とに基づいて特定した制御名を、その逆アセンブルの実行結果（１６）としてその表示部に供給する。【選択図】図５
2010266939.tif 000002
【特許請求の範囲】
【請求項１】
表示部と、
逆アセンブルを実行した実行結果を前記表示部に供給する逆アセンブル部と
を具備し、
前記逆アセンブル部は、
命令コードの解析によって得られた解析結果に基づいて、命令記述と命令アドレスとを特定し、
制御名有効情報付き制御表ファイルを参照して前記命令記述に対応する照合データを抽出し、
抽出した前記照合データに示される照合アドレスと前記解析結果に示される命令アドレスと予め決定しているアドレス有効範囲とに基づいて特定した制御名を、前記実行結果として前記表示部に供給する
逆アセンブルシステム。
【請求項２】
請求項１に記載の逆アセンブルシステムにおいて、
前記逆アセンブル部は、
前記命令コードをメモリから読み出して読み出し命令コードとし、
前記読み出し命令コードが記録されていた前記メモリの番地を特定し、
前記アドレス有効範囲に前記番地が含まれるとき、前記アドレス有効範囲に対応する制御名を、前記実行結果として前記表示部に供給する
逆アセンブルシステム。
【請求項３】
請求項２に記載の逆アセンブルシステムにおいて、
前記制御名有効情報付き制御表ファイルは、
前記照合アドレスと、前記制御名と、前記制御名に対応する有効関数の開始アドレスと、前記制御名に対応する有効関数の終了アドレスとを含み、
前記逆アセンブル部は、
前記開始アドレスから前記終了アドレスまでを前記アドレス有効範囲とする
逆アセンブルシステム。
【請求項４】
請求項３に記載の逆アセンブルシステムにおいて、さらに、
機械語を前記命令コードに変換してマクロライブラリを生成する自動コード生成部と、
前記マクロライブラリに基づいて制御表ファイルを生成する演算処理部と
を備え、
前記自動コード生成部は、
ユーザの操作に応答して入力されるコード生成情報に基づいて、前記マクロライブラリと制御名有効情報ファイルとを生成し、
前記制御名有効情報ファイルは、
前記制御名と、前記照合アドレスと、前記有効関数名とを関連付けた情報を保持し、
前記制御表ファイルは、
前記制御名と、前記有効関数名と、前記有効関数名に示される関数の開始アドレスと、前記有効関数名に示される関数の終了アドレスとを関連付けて保持し、
前記逆アセンブル部は、
前記制御名有効情報ファイルと前記制御表ファイルとに基づいて、前記制御名有効情報付き制御表ファイルを生成する
逆アセンブルシステム。
【請求項５】
請求項４に記載の逆アセンブルシステムにおいて、
前記逆アセンブル部は、
制御名有効情報付き制御表ファイル生成部を備え、
前記制御名有効情報付き制御表ファイル生成部は、
前記制御名有効情報ファイルに含まれる前記有効関数名と、前記制御表ファイルに含まれる前記有効関数名とが合致するとき、
前記制御表ファイルに含まれる前記開始アドレスと前記終了アドレスとを、前記制御名有効情報ファイルの前記制御名に関連付けて、前記制御名有効情報付き制御表ファイルを生成する
逆アセンブルシステム。
【請求項６】
コンピュータを、逆アセンブルを実行した実行結果を表示部に供給する逆アセンブル部を具備する逆アセンブルシステムとして機能させるための逆アセンブルプログラムであって、
（ａ）命令コードの解析によって得られた解析結果に基づいて、命令記述と命令アドレスとを特定するステップと、
（ｂ）制御名有効情報付き制御表ファイルを参照して前記命令記述に対応する照合データを抽出するステップと、
（ｃ）抽出した前記照合データに示される照合アドレスと、前記解析結果に示される命令アドレスと、予め決定しているアドレス有効範囲とに基づいて特定した制御名を、前記実行結果として前記表示部に供給するステップと
を具備する手順を示す
逆アセンブルプログラム。
【請求項７】
請求項６に記載の逆アセンブルプログラムにおいて、
前記（ａ）ステップは、
前記命令コードをメモリから読み出して読み出し命令コードとするステップを含み、
前記（ｃ）ステップは、
前記読み出し命令コードが記録されていた前記メモリの番地を特定するステップと、
前記アドレス有効範囲に前記番地が含まれるとき、前記アドレス有効範囲に対応する制御名を、前記実行結果として前記表示部に供給するステップ
を含む
逆アセンブルプログラム。
【請求項８】
請求項７に記載の逆アセンブルプログラムにおいて、
前記制御名有効情報付き制御表ファイルは、
前記照合アドレスと、前記制御名と、前記制御名に対応する有効関数の開始アドレスと、前記制御名に対応する有効関数の終了アドレスとを含み、
前記（ｃ）ステップは、
前記開始アドレスから前記終了アドレスまでを前記アドレス有効範囲とするステップを含む
逆アセンブルプログラム。
【請求項９】
請求項８に記載の逆アセンブルプログラムにおいて、さらに、
（ｄ）機械語を前記命令コードに変換してマクロライブラリを生成するステップと、
（ｅ）前記マクロライブラリに基づいて制御表ファイルを生成するステップと、
（ｆ）前記制御名有効情報付き制御表ファイルを生成するステップと
を具備し、
前記（ｄ）ステップは、
ユーザの操作に応答して入力されるコード生成情報に基づいて、前記マクロライブラリと制御名有効情報ファイルとを生成するステップ
を含み、
前記制御名有効情報ファイルが、前記制御名と、前記照合アドレスと、前記有効関数名とを関連付けた情報を保持し、前記制御表ファイルが、前記制御名と、前記有効関数名と、前記有効関数名に示される関数の開始アドレスと、前記有効関数名に示される関数の終了アドレスとを関連付けて保持するとき、
前記（ｆ）ステップは、
前記制御名有効情報ファイルと前記制御表ファイルとに基づいて、前記制御名有効情報付き制御表ファイルを生成するステップを含む
逆アセンブルプログラム。
【請求項１０】
請求項９に記載の逆アセンブルプログラムにおいて、
前記（ｆ）ステップは、
前記制御名有効情報ファイルに含まれる前記有効関数名と、前記制御表ファイルに含まれる前記有効関数名とが合致するとき、前記制御表ファイルに含まれる前記開始アドレスと前記終了アドレスとを、前記制御名有効情報ファイルの前記制御名に関連付けて、前記制御名有効情報付き制御表ファイルを生成するステップを含む
逆アセンブルプログラム。
【請求項１１】
（ａ）命令コードの解析によって得られた解析結果に基づいて、命令記述と命令アドレスとを特定するステップと、
（ｂ）制御名有効情報付き制御表ファイルを参照して前記命令記述に対応する照合データを抽出するステップと、
（ｃ）抽出した前記照合データに示される照合アドレスと、前記解析結果に示される命令アドレスと、予め決定しているアドレス有効範囲とに基づいて特定した制御名を、前記実行結果として前記表示部に供給するステップと
を具備する
逆アセンブル方法。
【請求項１２】
請求項１１に記載の逆アセンブル方法において、
前記（ａ）ステップは、
前記命令コードをメモリから読み出して読み出し命令コードとするステップを含み、
前記（ｃ）ステップは、
前記読み出し命令コードが記録されていた前記メモリの番地を特定するステップと、
前記アドレス有効範囲に前記番地が含まれるとき、前記アドレス有効範囲に対応する制御名を、前記実行結果として前記表示部に供給するステップ
を含む
逆アセンブル方法。
【請求項１３】
請求項１２に記載の逆アセンブル方法において、
前記制御名有効情報付き制御表ファイルは、
前記照合アドレスと、前記制御名と、前記制御名に対応する有効関数の開始アドレスと、前記制御名に対応する有効関数の終了アドレスとを含み、
前記（ｃ）ステップは、
前記開始アドレスから前記終了アドレスまでを前記アドレス有効範囲とするステップを含む
逆アセンブル方法。
【請求項１４】
請求項１３に記載の逆アセンブル方法において、さらに、
（ｄ）機械語を前記命令コードに変換してマクロライブラリを生成するステップと、
（ｅ）前記マクロライブラリに基づいて制御表ファイルを生成するステップと、
（ｆ）前記制御名有効情報付き制御表ファイルを生成するステップと
を具備し、
前記（ｄ）ステップは、
ユーザの操作に応答して入力されるコード生成情報に基づいて、前記マクロライブラリと制御名有効情報ファイルとを生成するステップ
を含み、
前記制御名有効情報ファイルが、前記制御名と、前記照合アドレスと、前記有効関数名とを関連付けた情報を保持し、前記制御表ファイルが、前記制御名と、前記有効関数名と、前記有効関数名に示される関数の開始アドレスと、前記有効関数名に示される関数の終了アドレスとを関連付けて保持するとき、
前記（ｆ）ステップは、
前記制御名有効情報ファイルと前記制御表ファイルとに基づいて、前記制御名有効情報付き制御表ファイルを生成するステップを含む
逆アセンブル方法。
【請求項１５】
請求項１４に記載の逆アセンブル方法において、
前記（ｆ）ステップは、
前記制御名有効情報ファイルに含まれる前記有効関数名と、前記制御表ファイルに含まれる前記有効関数名とが合致するとき、前記制御表ファイルに含まれる前記開始アドレスと前記終了アドレスとを、前記制御名有効情報ファイルの前記制御名に関連付けて、前記制御名有効情報付き制御表ファイルを生成するステップを含む
逆アセンブル方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、逆アセンブルシステム、逆アセンブルプログラム、及び逆アセンブル方法に関する。
【背景技術】
【０００２】
同一のアドレスに、異なる機能を持つメモリ・マップドＩ／Ｏレジスタを割り付けたデバイスが存在する。このようなデバイス用のソフトウェアの開発を支援する技術が知られている（例えば、特許文献１参照）。特許文献１には、１つの命令で複数の処理を行う機能を含むソースプログラムのデバッグ方法に関する技術が記載されている。その技術では、命令のセマンティクス（命令の内部構造）に関する情報に基づいて複数の処理単位に分割している。さらに、命令が使用するデータの格納先を、命令のセマンティクス（命令の内部構造）に関する情報に基づいて抽出している。また、分割された命令を各処理単位毎に実行し、そのソースプログラム、処理単位毎に分割された分割命令、及び命令が使用するデータを表示している。そして、それと共に、そのソースプログラム、分割命令、及び命令が使用するデータのうち、実行段階のソースプログラム、実行段階の分割命令、及び命令が使用するデータを強調して表示している。
【０００３】
また、上述のようなデバイス用のソフトウェアの開発をする場合、逆アセンブル方式を適用することがある（例えば、特許文献２参照）。図１は、従来の逆アセンブルシステムの構成を示すブロック図である。従来の逆アセンブルシステムは、マクロライブラリ１０１と、制御表のアセンブルリスト１０２と、制御表ファイル１０３と、リンクファイル１０４と、逆アセンブル部１０５と、パラメータファイル１０７とを備え、ソースリスト１０６を出力している。
【０００４】
従来の逆アセンブルシステムは、マクロライブラリ１０１をアセンブルして、制御表のアセンブルリスト１０２を作成する。制御表のアセンブルリスト１０２内には、処理に不要なデータが存在する。そのため抽出プログラムにより、逆アセンブルに必要な情報のみを取り出した情報を制御表ファイル１０３に出力する。逆アセンブル部１０５により、命令コードを解析し、命令オペランドに制御名を表示する場合、オペランドのアドレスと制御名表内のアドレスとを照合し、一致した制御名をオペランドに表示する。
【０００５】
図２は、従来の逆アセンブルシステムの動作を示すフローチャートである。ステップＳ１において、メモリ内部の命令コードを読み込む。ステップＳ２において、得られた命令コードの命令解析を行う。ステップＳ３において、その命令解析によって得られた解析結果が、オペランドに制御名を記述可能な命令か否かの判断を行う。その判断の結果、オペランドに制御名を記述可能な命令と判断した場合、処理はステップＳ４に進み、オペランドに制御名を記述可能な命令と判断されなかった場合、処理はステップＳ８に進む。
【０００６】
ステップＳ８において、命令がオペランドに制御名を記述可能な命令でなかった場合、オペランドが表示される。ステップＳ４において、オペランドに制御名を記述可能な命令なので、制御ファイル内にデータがあるかどうかの判断を行う。その判断の結果、制御ファイル内にデータがある場合、処理はステップＳ５に進み、制御ファイル内にデータがない場合、処理はステップＳ９に進む。ステップＳ９において、制御ファイル内にデータがない場合、オペランドにアドレスを表示する。
【０００７】
ステップＳ５において、オペランドを制御表ファイルのアドレス欄と照合する。その照合の結果、制御ファイル内のアドレスと一致した場合、処理はステップＳ６に進む。ステップＳ６において、オペランドに制御名を表示する。ステップＳ７において、解析データがあるかの判断行い、なければ処理を終了し、あれば再度、命令コードを読み込む。
【０００８】
図３は、制御表ファイルを用いた、従来の逆アセンブルシステムの動作を示すブロック図である。図３に示されているように、従来の逆アセンブルシステムは、メモリ９００と、制御表ファイル９０９と、オペランド一覧表９１０とを含んでいる。また、以下の説明において、逆アセンブルシステムの使用者は、
‘ＭＯＶ  Ａ，ＴＸＤ’
が表示されることを期待しているものとする。
【０００９】
図３を参照すると、メモリ９００内の１０Ｃ番地と１０Ｄ番地との命令コードを読み込む（ステップＳ１）。それによって、命令コード９Ｄ１０（読み込み済み命令コード９０１）が得られる。得られた命令コードの命令解析を行う（ステップＳ２）。その命令解析によって、解析結果９０２として、
‘ＭＯＶ  Ａ，  ０ｘ１０’
の状態が得られたものとする。‘ＭＯＶ’命令を、オペランド一覧表９１０で照合。そして、オペランドに制御名を記述可能な命令か否かの判断を行う（ステップＳ３）。その判断の結果、オペランド一覧表９１０には、一覧表記述情報９１１として、
‘ＭＯＶ  Ａ，  制御名’
が記載されており、
‘ＭＯＶ  Ａ，  ０ｘ１０’（解析結果９０２）
は、オペランドに制御名の記述が可能な命令と判断できる。
【００１０】
なお、‘ＭＯＶ’命令がオペランドに制御名を記述可能な命令でなかった場合、オペランドに‘０ｘ１０’を表示する（ステップＳ６）。そのため、
‘ＭＯＶ  Ａ，  ０ｘ１０’
が表示される。
【００１１】
オペランドに制御名の記述が可能な命令なので、制御ファイル内にデータがあるかどうかの判断を行う（ステップＳ４）。制御ファイル内にデータがある場合、オペランドの‘０ｘ１０’を制御表ファイル９０９のアドレス欄９０６と照合する（ステップＳ５）。図３を参照すると、その照合により、第１情報９０７のアドレスと一致する。これによって、制御名ＴＸＤが該当することがわかり、オペランドに制御名ＴＸＤを表示する（ステップＳ６）。したがって、最終的に解析結果（表示結果）９０２として、
‘ＭＯＶ  Ａ，  ＴＸＤ’
と表示される。図３の動作では、使用者の期待通り、
‘ＭＯＶ  Ａ，  ＴＸＤ’
が表示される。なお、制御ファイル内にデータがない場合、オペランドにアドレスを表示する（ステップＳ９）。そのため、
‘ＭＯＶ  Ａ，  ０ｘ１０’
が表示される。その後、解析データがあるかの判断を行い、なければ処理を終了し、あれば再度、命令コードを読み込む。
【００１２】
図４は、制御表ファイルを用いた従来の逆アセンブルシステムの他の動作を示すブロック図である。ここにおいて、逆アセンブルシステムの使用者は、
‘ＭＯＶ  Ａ，ＳＩＯ’
が表示されることを期待しているものとする。メモリ１０００内の３００番地と３０１番地との命令コードを読み込む（ステップＳ１）。それによって、命令コード９Ｄ１０（読み込み済み命令コード１００１）が得られる。得られた命令コードの命令解析を行う（ステップＳ２）。その命令解析によって、解析結果１００２が得られる。以下では、その解析結果１００２が、
‘ＭＯＶ  Ａ，  ０ｘ１０’
の状態となっているものとする。
【００１３】
ここで、‘ＭＯＶ’命令を、オペランド一覧表１０１０で照合し、オペランドに制御名の記述が可能な命令か否かの判断を行う（ステップＳ３）。その判断の結果、オペランド一覧表１０１０には、一覧表記述情報１０１１として、
‘ＭＯＶ  Ａ，  制御名’
が記載されており、
‘ＭＯＶ  Ａ，  ０ｘ１０’（解析結果１００２）は、オペランドに制御名の記述が可能な命令と判断できる。なお、‘ＭＯＶ’命令がオペランドに制御名を記述可能な命令でなかった場合、オペランドに‘０ｘ１０’を表示する（ステップＳ８）。そのため、
‘  ＭＯＶ  Ａ，  ０ｘ１０’
が表示される。
【００１４】
‘ＭＯＶ’命令が、オペランドに制御名の記述が可能な命令なので、制御ファイル内にデータがあるかどうかの判断を行う（ステップＳ４）。制御ファイル内にデータがある場合、オペランドの‘０ｘ１０’を制御表ファイル１００９のアドレス欄１００６と照合する（ステップＳ５）。その照合により、第１情報１００７のアドレスと一致する。
【００１５】
それによって、制御名ＴＸＤが該当することがわかり、オペランドに制御名ＴＤＸを表示する（ステップＳ６）。したがって、最終的に、
‘ＭＯＶ  Ａ，  ＴＸＤ’
と表示される。上述のように、図４の動作では使用者の期待に反し、
‘ＭＯＶ  Ａ，ＴＸＤ’
が表示される。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００６−００３９８７号公報
【特許文献２】特開平８−２２１２９８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
従来の逆アセンブルシステムでは、逆アセンブルを行う命令コードが同じ場合、常に最初に一致した制御名で表示してしまう。そのため、実際の利用機能に合った制御名で表示することが困難である。逆アセンブル方式において、同一アドレスを、異なる機能名を持つメモリ・マップドＩ／Ｏレジスタの、どの機能を対応させて使用しているか明確に表示する技術が求められている。
【課題を解決するための手段】
【００１８】
以下に、［発明を実施するための形態］で使用される番号を用いて、［課題を解決するための手段］を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１９】
上記の課題を解決するために、表示部と、逆アセンブルを実行した実行結果を前記表示部に供給する逆アセンブル部（１５）とを具備する逆アセンブルシステム（１）を構築する。その逆アセンブル部（１５）は、命令コードの解析によって得られた解析結果に基づいて、命令記述と命令アドレスとを特定し、制御名有効情報付き制御表ファイル（１４）を参照してその命令記述に対応する照合データを抽出し、抽出したその照合データに示される照合アドレスとその解析結果に示される命令アドレスと予め決定しているアドレス有効範囲とに基づいて特定した制御名を、その逆アセンブルの実行結果（１６）としてその表示部に供給する。
【発明の効果】
【００２０】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、１つのアドレスに対し、複数の機能が割り付けられたデバイスの命令コードを逆アセンブルする際に、実際の利用機能に一致した制御名で表示することが可能となる。
【図面の簡単な説明】
【００２１】
【図１】図１は、従来の逆アセンブルシステムの構成を示すブロック図である。
【図２】図２は、従来の逆アセンブルシステムの動作を示すフローチャートである。
【図３】図３は、制御表ファイルを用いた、従来の逆アセンブルシステムの動作を示すブロック図である。
【図４】図４は、制御表ファイルを用いた従来の逆アセンブルシステムの他の動作を示すブロック図である。
【図５】図５は、本実施形態の逆アセンブルシステム１の構成を例示するブロック図である。
【図６】図６は、本実施形態の逆アセンブルシステム１の動作を例示するフロ−チャートである。
【図７】図７は、制御名有効情報付制御ファイルを生成する動作を例示するフロ−チャートである。
【図８】図８は、制御名有効情報付制御ファイルを生成する具体的な動作を例示するブロック図である。
【図９】図９は、制御名有効情報付制御ファイルを生成する具体的な動作を例示するブロック図である。
【図１０】図１０は、本実施形態の逆アセンブルシステム１の動作を例示するブロック図である。
【図１１】図１１は、本実施形態の逆アセンブルシステム１の、他の動作を例示するブロック図である。
【発明を実施するための形態】
【００２２】
以下、本発明の実施の形態を図面に基づいて説明する。なお、実施の形態を説明するための図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２３】
図５は、本実施形態の逆アセンブルシステム１の構成を例示するブロック図である。逆アセンブルシステム１は、マクロライブラリ１１と、制御表のアセンブルリスト１２と、制御表ファイル１３と、逆アセンブル部１５と、自動コード生成部１７とを備え、ソースリスト１６を出力する。また、逆アセンブル部１５は、制御名有効情報付き制御表ファイル生成部１９と制御名検索機能２０とを備えている。
【００２４】
自動コード生成部１７は、コード生成情報２１を基に、マクロライブラリ１１と制御名有効情報ファイル１８とを生成する。逆アセンブル部１５の制御名有効情報付き制御表ファイル生成部１９は、逆アセンブル時に、制御表ファイル１３と制御名有効情報ファイル１８から、制御名有効情報付き制御表ファイル１４を生成する。逆アセンブル部１５の制御名検索機能２０は、その制御名有効情報付き制御表ファイル１４を基に制御名を検索する。
【００２５】
図６は、本実施形態の逆アセンブルシステム１の動作を例示するフロ−チャートである。ステップＳ１０１において、逆アセンブルシステム１は、メモリから命令コードを読み込む。ステップＳ１０２において、その命令コードの命令解析を行う。ステップＳ１０３において、その命令解析によって得られた命令が、オペランドに制御名の記述が可能な命令か否かの判断を行う。その判断の結果、制御名の記述が可能な命令であれば、処理はステップＳ１０４に進み、制御名の記述が可能な命令でない場合、処理はステップＳ１０９に進む。ステップＳ１０９において、オペランドに制御名を記述できない命令であるので、そのままオペランドを表示する。
【００２６】
ステップＳ１０４において、制御名有効情報付き制御表ファイル１４に照合データが存在するか否かの判断を実行する。その判断の結果、照合データが存在する場合、処理はステップＳ１０５に進み、照合データが存在しない場合、処理はステップＳ１１０に進む。
【００２７】
ステップＳ１０５において、照合データが存在すれば、制御名有効情報付き制御表ファイル１４のアドレスと照合する。照合の結果、アドレスが一致すれば、処理はステップＳ１０６に進み、一致しない場合、処理はステップＳ１０４に戻る。
【００２８】
ステップＳ１０６において、有効範囲内か否かの判断を実行する。その判断の結果、有効範囲内であれば、処理はステップＳ１０７に進み、オペランドに制御名を表示する。
【００２９】
解析すべき命令コードが存在しなければ、処理を終了する。ステップＳ１０６における有効範囲内か否かの判断で、有効範囲外であれば、処理はステップＳ１０４に戻り、次の照合データと再度アドレスが一致するものがあるか否かの判断を行う。一致するデータがなければ、処理はステップＳ１１０に進み、オペランドにアドレスを表示する。
【００３０】
図７は、本実施形態の逆アセンブルシステム１が、制御名有効情報付制御ファイルを生成する動作を例示するフロ−チャートである。図７を参照すると、ステップＳ２０１において、逆アセンブルシステム１は、プログラム開発者の操作に応答して、コード生成情報２１を読み出す。コード生成情報２１として、使用するデバイス選択、周辺機能選択、詳細機能選択等の情報が入力される。
【００３１】
ステップＳ２０２において、コード生成ボタンが押されるまで待機する。ステップＳ２０２でコード生成ボタンが押されたと判断されたとき、処理はステップＳ２０３に進む。
【００３２】
ステップＳ２０３において、コード生成ボタンが押されたら、自動コード生成部１７は、入力された情報に誤りがあるかの判断を行う。その判断の結果、誤りがある場合、処理はステップＳ２０４に進み、エラーを出力する。
【００３３】
誤りがなければ、ステップＳ２０５において、入力された情報を基に、メモリ・マップドＩ／Ｏレジスタの初期化等のコードをマクロライブラリ１１に出力する。また、誤りがない場合、ステップＳ２１０において、制御名有効情報を示す制御名有効情報ファイル１８を生成する。
【００３４】
ステップＳ２０６において、マクロライブラリ１１をアセンブルする。ステップＳ２０７において、制御表のアセンブルリスト１２を出力する。ステップＳ２０８において、制御表のアセンブルリスト１２から、有効情報を抽出プログラムで抽出する。ステップＳ２０９において、抽出した有効情報を制御表ファイル１３に出力する。
【００３５】
ステップＳ２１１において、逆アセンブル部１５は、出力された制御名有効情報ファイル１８と、コード生成情報２１から生成された制御表ファイル１３を読み出す。逆アセンブル部１５は、読み出した制御名有効情報ファイル１８と制御表ファイル１３とに基づいて、制御名有効情報付き制御表ファイル１４を生成し、ステップＳ２１２において、その制御名有効情報付き制御表ファイル１４を出力する。
【００３６】
図８、図９は、本実施形態の逆アセンブルシステム１における、制御名有効情報付制御ファイルを生成する具体的な動作を例示するブロック図である。以下の動作の説明においては、ＳＡＵ（シリアル・アレイ・ユニット）３１の例を用いて説明する。図８の（ａ）は、ＳＡＵ（シリアル・アレイ・ユニット）３１の構成を例示している。ＳＡＵ（シリアル・アレイ・ユニット）３１は、ＵＡＲＴ機能３２とＣＳＩ機能３３を備えている。ＳＡＵ（シリアル・アレイ・ユニット）３１は、ＵＡＲＴ機能３２として使用するときに、‘ＴＤＸ’という名称で扱われ、ＣＳＩ機能３３として使用するときに、‘ＣＳＩ’という名称で扱われるメモリ・マップドＩ／Ｏレジスタ３４であるとする。
【００３７】
図８の（ｂ）は、自動コード生成部１７が提供するデバイス選択ダイアログ３５を例示している。デバイス選択ダイアログ３５に示される情報に従って、使用するデバイスが選択される。図８の（ｃ）は、自動コード生成部１７が提供する周辺機能選択ダイアログ３６を例示している。周辺機能選択ダイアログ３６に示される情報に従って、使用する周辺機能が選択される。図８の（ｄ）は、自動コード生成部１７が提供する詳細機能入力ダイアログ３７を例示している。詳細機能入力ダイアログ３７に示される情報に従って、コード生成の詳細情報が供給される。
【００３８】
図９は、マクロライブラリ１１と、制御表ファイル１３と、制御名有効情報ファイル１８の構成を例示するブロック図である。上述のように、自動コード生成部１７は、入力された情報に基づいて、マクロライブラリ１１に生成コード４１を出力する。また、自動コード生成部１７は、制御名有効情報ファイル１８を出力する。
【００３９】
図９に示されているように、ＵＡＲＴ機能３２に関しては、生成コード４１として、ＵＡＲＴ＿Ｓｅｎｄ関数４２とＵＡＲＴ＿Ｒｅｃｖｅ関数４３が、マクロライブラリ１１内に出力される。また、制御名有効情報ファイル１８内には、制御名のアドレス４６、制御名４７、制御名有効関数４８が出力される。同様に、ＣＳＩ機能３３に関しては、生成コード４１として、ＳＣＩ＿Ｓｅｎｄ関数４４とＳＣＩ＿Ｒｅｃｖｅ関数４５が、マクロライブラリ１１内に出力される。また、制御名有効情報ファイル１８内には、制御名のアドレス４６、制御名４７、制御名有効関数４８が出力される。
【００４０】
また、マクロライブラリ１１をアセンブルし、制御表のアセンブルリスト１２を得る。そして、抽出プログラムを実行することにより、制御表のアセンブルリスト１２から、有効情報を抽出する。抽出された有効情報に基づいて、制御名４９、制御名のアドレス５０、制御名サイズ５１、関数名５２、関数の開始アドレス５３、関数の終了アドレス５４が制御表ファイル１３内に出力される。制御名有効情報付き制御表ファイル生成部１９において、制御名有効情報ファイル１８内の制御名有効関数４８と、制御表ファイル１３の関数名５２を照合し、制御名有効関数４８の記載を、関数の開始アドレス５３と関数の終了アドレス５４とに書き換えて、制御名有効情報付き制御表ファイル１４として出力する。
【００４１】
図９を参照すると、制御名有効情報ファイル１８には、第１制御名有効情報５５〜第４制御名有効情報５８が保持されている。第１制御名有効情報５５において、制御名ＴＸＤの有効関数が、ＵＡＲＴ＿Ｓｅｎｄ関数である。制御表ファイル１３から、ＵＡＲＴ＿Ｓｅｎｄ関数の開始アドレス５３を取得すると、０ｘ１００番地である。同様に、ＵＡＲＴ＿Ｓｅｎｄ関数の終了アドレス５４を取得すると、０ｘ１ｂｆ番地である。
【００４２】
この情報に基づいて、制御名有効情報付き制御表ファイル１４内の第１情報保持領域５９に、
アドレス    ：‘０ｘ１０’
制御名      ：‘ＴＸＤ’
開始アドレス：‘０ｘ１００’
終了アドレス：‘０ｘ１ｂｆ’
を示す情報を出力する。
【００４３】
同様に、制御名有効情報ファイル１８の第２制御名有効情報５６、関数の終了アドレス５４、及び第２制御名有効情報５６に対し、制御表ファイル１３の関数名５２との照合から、制御名有効情報付き制御表ファイル１４の第２情報保持領域６０、第３情報保持領域６１、及び第４情報保持領域６２の記載が生成される。
【００４４】
このように、同一アドレスに複数の制御名を持つメモリ・マップドＩ／Ｏレジスタの逆アセンブル表示が、制御名有効情報付き制御表ファイル１４と、逆アセンブルを行う命令アドレスを比較し、制御名検索機能２０を用いることにより、適切な制御名での表示が可能となる。
【００４５】
ここにおいて、制御名有効情報付き制御表ファイル１４を用いた逆アセンブルシステム１の動作について説明を行う。図１０は、本実施形態の逆アセンブルシステム１の動作を例示するブロック図である。図１０に示されているように、逆アセンブルシステム１は、メモリ７００と、制御名有効情報付き制御表ファイル１４と、オペランド一覧表７１６とを含んでいる。また、以下の説明において、逆アセンブルシステムの使用者は、
‘ＭＯＶ  Ａ，ＴＸＤ’
が表示されることを期待しているものとする。
【００４６】
上述のフローチャートに示されるように、メモリ７００内の１０Ｃ番地と１０Ｄ番地との命令コードを読み込む（ステップＳ１０１）。その読み込み動作によって、読み込み済み命令コード７０１として命令コード９Ｄ１０が得られる。
【００４７】
得られた読み込み済み命令コード７０１の命令解析を行い（ステップＳ１０２）、その解析結果７０２として
‘ＭＯＶ  Ａ，  ０ｘ１０’
を得た状態となる。
【００４８】
解析結果７０２に示されている‘ＭＯＶ’命令を、オペランド一覧表７１６で照合し、オペランドに制御名の記述が可能な命令か否かの判断を行う（ステップＳ１０３）。図１０を参照すると、解析結果７０２の
‘ＭＯＶ  Ａ，  ０ｘ１０’
は、オペランド一覧表７１６の一覧表記述情報７１７に示される
‘ＭＯＶ  Ａ，  制御名’
に対応している。したがって、オペランドに制御名を記述可能な命令であると判断される。
【００４９】
このとき、制御名有効情報付き制御表ファイル１４に照合データが存在するとの判断が得られ、オペランドに制御名の記述が可能な命令なので、解析結果７０２の記述７０３“０ｘ１０”を、制御名有効情報付き制御表ファイル１４のアドレス欄７０５で照合する。この場合、１番目の情報（第１情報保持領域５９の情報）のアドレス欄７０５と一致する。
【００５０】
続いて、制御名が有効範囲内か否かを判断する（ステップＳ１０６）。このとき、読み込み済み命令コード７０１の番地情報７１５から、０ｘ１０Ｃ番地を特定し、制御名有効情報付き制御表ファイル１４内の開始アドレス７０７、終了アドレス７１４で照合する。このとき、０ｘ１０Ｃ番地は、０ｘ１００番地から０ｘ１ｂｆ番地の範囲内なので、第１情報保持領域５９の開始アドレス７０７と、第１情報保持領域５９の終了アドレス７１４が対応する。それによって、制御名ＴＸＤ（制御名欄７０６）が該当することがわかり、オペランドにＴＸＤを表示する最終出力表示７０４が生成され、ソースリストに最終出力表示７０４として、
‘ＭＯＶ  Ａ，  ＴＸＤ’
が表示される。このように、図１０の構成・動作では、使用者の期待通り、‘ＭＯＶ  Ａ，ＴＸＤ’が表示される。
【００５１】
図１１は、本実施形態の逆アセンブルシステム１の、他の動作を例示するブロック図である。以下の説明において、逆アセンブルシステム１の使用者は、
‘ＭＯＶ  Ａ，ＳＩＯ’
が表示されることを期待しているものとする。
【００５２】
メモリ８００内の３００番地と３０１番地の命令コードを読み込む（ステップＳ１０１）。その読み込み動作によって、読み込み済み命令コード８０１として命令コード９Ｄ１０が得られる。得られた読み込み済み命令コード８０１の命令解析を行い（ステップＳ１０２）、解析結果８０２として
‘ＭＯＶ  Ａ，  ０ｘ１０’
を得る。
【００５３】
解析結果８０２に示される‘ＭＯＶ’命令を、オペランド一覧表７１６で照合し、オペランドに、制御名の記述が可能な命令か否かの判断を行う（ステップＳ１０３）。図１１を参照すると、解析結果８０２の‘ＭＯＶ  Ａ，  ０ｘ１０’は、オペランド一覧表７１６の一覧表記述情報７１７に示される‘ＭＯＶ  Ａ，  制御名’に対応している。そのため、‘ＭＯＶ  Ａ，  ０ｘ１０’（解析結果８０２）は、オペランドに制御名の記述が可能な命令であるとの判断がされる。
【００５４】
オペランドに制御名の記述が可能な命令なので、解析結果８０２の記述８０３（オペランドの０ｘ１０）を、制御名有効情報付き制御表ファイル１４のアドレス欄７０５で照合する。この場合、１番目の情報（第１情報保持領域５９の情報）のアドレス欄７０５と一致する。
【００５５】
続いて、制御名が有効範囲内か否かを判断する（ステップＳ１０６）。このとき、読み込み済み命令コード８０１の番地情報８１５に基づいて得られる３００番地を、制御名有効情報付き制御表ファイル１４内の開始アドレス７０７、終了アドレス７１４で照合する。図１１に示されているように、０ｘ３００番地は、０ｘ１００番地から０ｘ１ｂｆ番地の範囲外なので、次の情報（第２情報保持領域６０に示される情報）との照合を行う。このとき、解析結果８０２の記述８０３に示されるアドレスと開始アドレス７０７の０ｘ１０とが一致する。そのため、制御名が有効範囲内か否かの判断が実行される。
【００５６】
読み込み済み命令コード８０１の番地情報８１５に基づいて得られる３００番地を、制御名有効情報付き制御表ファイル１４内の開始アドレス７０７、終了アドレス７１４で照合する。０ｘ３００番地は、０ｘ１ｃ０番地から０ｘ２１ｄ番地の範囲外なので、さらに次の情報（第３情報保持領域６１の情報）との照合を行う。このとき、解析結果８０２の記述８０３に示されるアドレスと開始アドレス７０７の０ｘ１０とが一致する。そのため、制御名が有効範囲内か否かの判断が実行される。
【００５７】
読み込み済み命令コード８０１の番地情報８１５に基づいて得られる３００番地を、制御名有効情報付き制御表ファイル１４内の開始アドレス７０７、終了アドレス７１４で照合する。０ｘ３００番地は、０ｘ３００番地から０ｘ３ｄｆ番地の範囲内なので、制御名欄８０６の制御名ＳＩＯが該当することがわかり、オペランドにＳＩＯを表示する。したがって、ソースリストには最終出力表示８０４として、
‘ＭＯＶ  Ａ，  ＳＩＯ’
と表示される。
【００５８】
図１０、図１１に示されているように、本実施形態の逆アセンブルシステム１では、同一アドレスに複数の制御名を持つメモリ・マップドＩ／Ｏレジスタの逆アセンブル表示が、制御名有効情報付き制御表ファイル１４と逆アセンブルを行う命令アドレスを比較する。これによって、適切な制御名での表示が可能となる。
【００５９】
以上、本願発明の実施の形態を具体的に説明した。本願発明は上述の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【符号の説明】
【００６０】
１…逆アセンブルシステム
１１…マクロライブラリ
１２…制御表のアセンブルリスト
１３…制御表ファイル
１４…制御名有効情報付き制御表ファイル
１５…逆アセンブル部
１６…ソースリスト
１７…自動コード生成部
１８…制御名有効情報ファイル
１９…制御名有効情報付き制御表ファイル生成部
２０…制御名検索機能
２１…コード生成情報
３１…ＳＡＵ（シリアル・アレイ・ユニット）
３２…ＵＡＲＴ機能
３３…ＣＳＩ機能
３４…メモリ・マップドＩ／Ｏレジスタ
３５…デバイス選択ダイアログ
３６…周辺機能選択ダイアログ
３７…詳細機能入力ダイアログ
４１…生成コード
４２…ＵＡＲＴ＿Ｓｅｎｄ関数
４３…ＵＡＲＴ＿Ｒｅｃｖｅ関数
４４…ＳＣＩ＿Ｓｅｎｄ関数
４５…ＳＣＩ＿Ｒｅｃｖｅ関数
４６…制御名のアドレス
４７…制御名
４８…制御名有効関数
４９…制御名
５０…制御名のアドレス
５１…制御名サイズ
５２…関数名
５３…関数の開始アドレス
５４…関数の終了アドレス
５５…第１制御名有効情報
５６…第２制御名有効情報
５７…第３制御名有効情報
５８…第４制御名有効情報
５９…第１情報保持領域
６０…第２情報保持領域
６１…第３情報保持領域
６２…第４情報保持領域
７００…メモリ
７０１…読み込み済み命令コード
７０２…解析結果
７０３…記述
７０４…最終出力表示
７０５…アドレス欄
７０６…制御名欄
７０７…開始アドレス
７１４…終了アドレス
７１５…番地情報
７１６…オペランド一覧表
７１７…一覧表記述情報
８００…メモリ
８０１…読み込み済み命令コード
８０２…解析結果
８０３…記述
８０４…最終出力表示
８０６…制御名欄
８１５…番地情報
１０１…マクロライブラリ
１０２…制御表のアセンブルリスト
１０３…制御表ファイル
１０４…リンクファイル
１０５…逆アセンブル部
１０６…ソースリスト
１０７…パラメータファイル
９００…メモリ
９０１…読み込み済み命令コード
９０２…解析結果
９０６…アドレス欄
９０７…第１情報
９０９…制御表ファイル
９１０…オペランド一覧表
９１１…一覧表記述情報
１０００…メモリ
１００１…読み込み済み命令コード
１００２…解析結果
１００６…アドレス欄
１００７…第１情報
１００９…制御表ファイル
１０１０…オペランド一覧表
１０１１…一覧表記述情報
【図１】
2010266939.tif 000003
【図２】
2010266939.tif 000004
【図３】
2010266939.tif 000005
【図４】
2010266939.tif 000006
【図５】
2010266939.tif 000007
【図６】
2010266939.tif 000008
【図７】
2010266939.tif 000009
【図８】
2010266939.tif 000010
【図９】
2010266939.tif 000011
【図１０】
2010266939.tif 000012
【図１１】
2010266939.tif 000013