(57)【要約】  プログラム情報生成システムは、非割込み命令コード及び割込み命令コードを含むプログラムと、非割込み命令コード及び割込み命令コードの実行順序を示す動作情報とを取得する取得部と、割込み命令コード及び動作情報に基づいて、動作情報内における割込み発生位置を示す動作割込み位置を判定する動作割込み位置判定部と、非割込み命令コード及び動作割込み位置に基づいて、プログラム内における割込み発生位置を示すプログラム割込み位置を判定するプログラム割込み位置判定部と、プログラム割込み位置を特定するプログラム割込み位置情報を生成する生成部とを備える。
2017022016.tif 000002
【特許請求の範囲】
【請求項１】
非割込み命令コード及び割込み命令コードを含むプログラムと、前記非割込み命令コード及び前記割込み命令コードの実行順序を示す動作情報とを取得する取得部と、
前記割込み命令コード及び前記動作情報に基づいて、前記動作情報内における割込み発生位置を示す動作割込み位置を判定する第１の判定部と、
前記非割込み命令コード及び前記動作割込み位置に基づいて、前記プログラム内における割込み発生位置を示すプログラム割込み位置を判定する第２の判定部と、
前記プログラム割込み位置を特定するプログラム割込み位置情報を生成する生成部と、
を備えるプログラム情報生成システム。
【請求項２】
前記第１の判定部は、前記動作情報に含まれる複数の命令コードの中から前記割込み命令コードと一致する一致部分を検出し、
前記第２の判定部は、前記動作情報内において前記一致部分の直前に位置する直前命令コード及び直後に位置する直後命令コードを検出し、前記非割込み命令コード内において前記直前命令コード及び前記直後命令コードが連続している部分を前記プログラム割込み位置と判定する、
請求項１に記載のプログラム情報生成システム。
【請求項３】
前記プログラム割込み位置情報は、複数の前記非割込み命令コードの中から前記直前命令コード又は前記直後命令コードに該当する前記非割込み命令コードを特定する命令コード特定情報を含む、
請求項２に記載のプログラム情報生成システム。
【請求項４】
前記プログラム割込み位置情報は、更に、前記プログラム内の複数のスコープのうち前記直前命令コード又は前記直後命令コードを含むスコープを特定するスコープ特定情報を含む、
請求項３に記載のプログラム情報生成システム。
【請求項５】
前記プログラム割込み位置情報は、更に、前記割込み命令コードが実行された回数を示す割込み回数情報を含む、
請求項３に記載のプログラム情報生成システム。
【請求項６】
前記プログラムは、複数の前記割込み命令コードを含み、
前記プログラム割込み位置情報は、前記割込み命令コード毎に生成される、
請求項３に記載のプログラム情報生成システム。
【請求項７】
前記プログラムは、複数の前記割込み命令コードを含み、
前記取得部は、１つの前記プログラムに対して複数の前記動作情報を取得し、
前記プログラム割込み位置情報は、前記動作情報と前記割込み命令コードとの組み合わせ毎に生成される、
請求項３に記載のプログラム情報生成システム。
【請求項８】
前記プログラム内のスコープを指定する指定部、を更に備え、
前記第１の判定部は、指定された前記スコープ内における前記動作割込み位置を判定し、
前記第２の判定部は、指定された前記スコープ内における前記プログラム割込み位置を判定する、
請求項１に記載のプログラム情報生成システム。
【請求項９】
前記プログラム割込み位置情報に基づいて、前記割込み命令コードの実行状況を示す表示画像が表示されるように表示部を制御する表示制御部、を更に備える、
請求項１に記載のプログラム情報生成システム。
【請求項１０】
前記プログラム割込み位置情報は、前記プログラム割込み位置と前記割込み命令コードが実行された回数を示す割込み回数とを対応付ける情報を含み、
前記表示制御部は、前記プログラム割込み位置情報に基づいて、前記プログラム割込み位置毎の前記割込み回数を示す前記表示画像が表示されるように前記表示部を制御する、
請求項９に記載のプログラム情報生成システム。
【請求項１１】
前記表示制御部は、前記表示画像内の前記割込み回数が所定条件を満たしている部分を、前記所定条件を満たしていない部分とは異なる表示形式で表示する、
請求項１０に記載のプログラム情報生成システム。
【請求項１２】
非割込み命令コード及び割込み命令コードを含むプログラムと、前記非割込み命令コード及び前記割込み命令コードの実行順序を示す動作情報とを取得するステップと、
前記割込み命令コード及び前記動作情報に基づいて、前記動作情報内における割込み発生位置を示す動作割込み位置を判定するステップと、
前記非割込み命令コード及び前記動作割込み位置に基づいて、前記プログラム内における割込み発生位置を示すプログラム割込み位置を判定するステップと、
前記プログラム割込み位置を特定するプログラム割込み位置情報を生成するステップと、
を含むプログラム情報生成方法。
【請求項１３】
コンピュータに、
非割込み命令コード及び割込み命令コードを含むプログラムと、前記非割込み命令コード及び前記割込み命令コードの実行順序を示す動作情報とを取得する処理と、
前記割込み命令コード及び前記動作情報に基づいて、前記動作情報内における割込み発生位置を示す動作割込み位置を判定する処理と、
前記非割込み命令コード及び前記動作割込み位置に基づいて、前記プログラム内における割込み発生位置を示すプログラム割込み位置を判定する処理と、
前記プログラム割込み位置を特定するプログラム割込み位置情報を生成する処理と、
を実行させるプログラム情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プログラム情報生成システム、方法、及びプログラムに関する。
【背景技術】
【０００２】
プログラム（ソフトウェア）の開発、検査等を行うために、プログラムの実行状況を示す情報を生成するシステムが利用される。例えば、シミュレーションにおいて実行されたプログラムの実行順序及び実行結果を時間軸上に表示するシステムであって、非割込み処理の実行タイミングと割込み処理の実行タイミングとが同一の時間軸上に表示されるシステムがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２８２４４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のシステムにおいては、割込み処理が発生した位置がシミュレーションの結果を表示する際に用いられる時間軸上に表示される。すなわち、割込み位置をプログラムの動作情報（トレース情報）のレベルで特定することはできるが、プログラムを構成する命令コードのレベルで特定することはできない。【０００５】
そこで、以下の実施形態では、割込み発生位置をプログラムの命令コードのレベルで特定することができる情報を生成することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態のプログラム情報生成システムは、取得部と、第１の判定部と、第２の判定部と、生成部とを含む。取得部は、非割込み命令コード及び割込み命令コードを含むプログラムと、非割込み命令コード及び割込み命令コードの実行順序を示す動作情報とを取得する。第１の判定部は、割込み命令コード及び動作情報に基づいて、動作情報内における割込み発生位置を示す動作割込み位置を判定する。第２の判定部は、非割込み命令コード及び動作割込み位置に基づいて、プログラム内における割込み発生位置を示すプログラム割込み位置を判定する。生成部は、プログラム割込み位置を特定するプログラム割込み位置情報を生成する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態におけるプログラム情報生成システムの機能的構成を例示する図。
【図２】プログラム情報生成システムのハードウェア構成を例示する図。
【図３】情報処理端末及びサーバの内部構成を例示する図。
【図４】プログラム情報生成システムによる処理の流れを例示するフローチャート。
【図５】第１の実施形態におけるソースコード及びプログラムを例示する図。
【図６】第１の実施形態におけるプログラム及び動作情報を例示する図。
【図７】第１の実施形態における動作割込み位置の判定方法を例示する図。
【図８】第１の実施形態におけるプログラム割込み位置の判定方法を例示する図。
【図９】第１の実施形態における第１の例のプログラム割込み位置情報を例示する図。
【図１０】第１の実施形態における第２の例のプログラム割込み位置情報を例示する図。
【図１１】第２の実施形態におけるプログラム情報生成システムの機能的構成を例示する図。
【図１２】第２の実施形態におけるプログラム及び動作情報を例示する図。
【図１３】第３の実施形態におけるプログラム情報生成システムの機能的構成を例示する図。
【図１４】第３の実施形態における生成部により生成されるプログラム割込み位置情報を例示する図。
【図１５】第３の実施形態における第１の例の表示画像を例示する図。
【図１６】第３の実施形態における第２の例の表示画像を例示する図。
【図１７】第３の実施形態における第３の例の表示画像を例示する図。
【図１８】第３の実施形態における第４の例の表示画像を例示する図。
【図１９】第３の実施形態における第５の例の表示画像を例示する図。
【図２０】第４の実施形態におけるプログラム、動作情報、及びプログラム割込み位置情報を例示する図。
【図２１】第４の実施形態における第１の例の表示画像を例示する図。
【図２２】第４の実施形態における第２の例の表示画像を例示する図。
【図２３】第５の実施形態におけるプログラム、動作情報、及びプログラム割込み位置情報を例示する図。
【図２４】第５の実施形態における第１の例の表示画像を例示する図。
【図２５】第５の実施形態における第２の例の表示画像を例示する図。
【図２６】第６の実施形態におけるプログラム、動作情報、及びプログラム割込み位置情報を例示する図。
【図２７】第６の実施形態における表示画像を例示する図。
【発明を実施するための形態】
【０００８】
（第１の実施形態）
図１は、第１の実施形態におけるプログラム情報生成システム１の機能的構成を例示する図である。プログラム情報生成システム１は、取得部１１、動作割込み位置判定部１２（第１の判定部）、プログラム割込み位置判定部１３（第２の判定部）、及び生成部１４を含む。
【０００９】
図２は、プログラム情報生成システム１のハードウェア構成を例示する図である。本例のプログラム情報生成システム１は、情報処理端末２１、サーバ２２、及びネットワーク２３を含む。情報処理端末２１は、ユーザが使用するＰＣ（Personal  Computer）、タブレット、スマートフォン等であり得る。サーバ２２は、プログラム情報生成システム１の管理者が管理するサーバコンピュータ等であり得る。情報処理端末２１とサーバ２２とは、インターネット、ＬＡＮ(Local  Area  Network）等のネットワーク２３を介して接続されている。なお、同図においては、情報処理端末２１及びサーバ２２がそれぞれ１つずつ記載されているが、それらの両方又は一方が複数存在してもよい。
【００１０】
図３は、情報処理端末２１及びサーバ２２の内部構成を例示する図である。情報処理端末２１及びサーバ２２は、ＣＰＵ（Central  Processing  Unit）３１、ＲＯＭ（Read  Only  Memory）３２、ＲＡＭ（Random  Access  Memory）３３、入力デバイス３４、出力デバイス３５、通信ＩＦ（Interface）３６、及びバス３７を含む。ＣＰＵ３１は、ＲＯＭ３２等に記憶された制御プログラムに従ってＲＡＭ３３をワーキングエリアとして所定の演算処理を行う。入力デバイス３４は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス３５は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信ＩＦ３６は、ネットワークを介して外部の装置との間で情報の送受信を可能にするデバイスである。
【００１１】
取得部１１は、検査対象となるプログラムと、当該プログラムに含まれる複数の命令コードの実行順序を示す動作情報とを取得する。プログラムは、非割込み命令コード及び割込み命令コードを含む。取得部１１は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ（Integrated  Circuit）、ＲＡＭ３３等を利用して構成される。ここでの「取得」には、外部からデータを受信すること、及び内部でデータを生成することが含まれる。すなわち、プログラム及び動作情報は、プログラム情報生成システム１以外のシステム（装置）によって生成されてもよいし、プログラム情報生成システム１内で生成されてもよい。プログラム及び動作情報の生成方法は特に限定されるものではなく、プログラム及び動作情報は公知又は新規の技術を用いて適宜生成されればよい。
【００１２】
動作割込み位置判定部１２は、割込み命令コード及び動作情報に基づいて、動作情報内における割込み発生位置を示す動作割込み位置を判定する。動作割込み位置判定部１２は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ、ＲＡＭ３３等を利用して構成される。
【００１３】
プログラム割込み位置判定部１３は、非割込み命令コード及び動作割込み位置に基づいて、プログラム内における割込み発生位置を示すプログラム割込み位置を判定する。プログラム割込み位置判定部１３は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ、ＲＡＭ３３等を利用して構成される。
【００１４】
生成部１４は、プログラム割込み位置を特定するプログラム割込み位置情報を生成する。生成部１４は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ、ＲＡＭ３３等を利用して構成される。
【００１５】
図４は、プログラム情報生成システム１による処理の流れを例示するフローチャートである。先ず、取得部１１がプログラム及び動作情報を取得する（Ｓ１０１）。その後、動作割込み位置判定部１２が、プログラムに含まれる割込み命令コード及び動作情報に基づいて、動作情報内における動作割込み位置を判定する（Ｓ１０２）。その後、プログラム割込み位置判定部１３が、プログラムに含まれる非割込み命令コード及び動作割込み位置に基づいて、プログラム内におけるプログラム割込み位置を判定する（Ｓ１０３）。その後、生成部１４がプログラム割込み位置を特定するプログラム割込み位置情報を生成する（Ｓ１０４）。
【００１６】
図５は、ソースコード５１及びプログラム５２を例示する図である。ソースコード５１及びプログラム５２は、互いに対応している。プログラム５２は、特定の処理を実行するための命令を記述した情報である。本例のプログラム５２は、命令の内容を示す複数の命令コード（ａｄｄ、ｓｔ、ｌｄ、ｊｍｐ、ｃｍｐ、ｊｎｅ、ｍｏｖ、ｊｂｒ等）５０、及び１つ以上の連続した命令コード５０を含むスコープを特定するラベル（ｆｕｎｃＡ＿ｔｏｐ、ｆｕｎｃＡ＿ｉｆ、ｆｕｎｃＡ＿ｅｌｓｅ、ｈａｎｄｌｅｒ等）５４を含む。プログラム５２は、更に、命令コード５０毎に割り当てられたプログラムカウンタ等を更に含んでもよい。
【００１７】
複数の命令コード５０には、非割込み命令コード５５及び割込み命令コード５６が含まれる。割込み命令コード５６は、割込み処理を実行させるための命令コードである。非割込み命令コード５５は、割込み命令コード５６以外の命令コードである。
【００１８】
本例のプログラム５２は、ソースコード５１の関数ｆｕｎｃＡに対応している。本例の非割込み命令コード５５は、ｆｕｎｃＡ＿ｔｏｐ、ｆｕｎｃＡ＿ｉｆ、及びｆｕｎｃＡ＿ｅｌｓｅの３つのラベル５４が付された複数の命令コード５０から構成されている。関数ｆｕｎｃＡには分岐処理が含まれている。分岐を含まない５つの命令コード（ａｄｄ、ｓｔ、ｌｄ、ｓｔ、及びｊｍｐ）５０にｆｕｎｃＡ＿ｔｏｐのラベル５４が付されている。関数ｆｕｎｃＡのｉｆ文及びその内部の処理を示す６つの命令コード（ｌｄ、ｃｍｐ、ｊｎｅ、ｍｏｖ、ｓｔ、及びｊｂｒ）５０にｆｕｎｃＡ＿ｅｌｓｅのラベル５４が付されている。関数ｆｕｎｃＡのｅｌｓｅ文及びその内部の処理を示す５つの命令コード（ｌｄ、ｃｍｐ、ｊｎｅ、ｍｏｖ、及びｓｔ）５０にｆｕｎｃＡ＿ｅｌｓｅのラベル５４が付されている。
【００１９】
ソースコード５１の関数ｈａｎｄｌｅｒは、割込み処理を実行する関数である。本例の割込み命令コード５６は、ｈａｎｄｌｅｒのラベル５４が付された複数の命令コード（ｍｏｖ及びｓｔ）５０から構成されている。
【００２０】
なお、割込み処理を実行する関数は、予め指定されていることが好ましい。割込み処理を実行する関数は、ユーザにより手動で指定されてもよいし、制御プログラムの処理により自動的に検出され指定されてもよい。
【００２１】
図６は、プログラム５２及び動作情報５３を例示する図である。動作情報５３は、プログラム５２に含まれる非割込み命令コード５５及び割り込み命令コード５６の実行順序を示す情報である。本例の動作情報５３においては、複数の命令コード５０が実行された順に記述されている。本例の動作情報５３は、関数ｆｕｎｃＡの分岐処理中に関数ｈａｎｄｌｅｒによる割込み処理が実行された場合の例である。また、本例においては、ｆｕｎｃＡ＿ｔｏｐ、ｆｕｎｃＡ＿ｉｆ、及びｈａｎｄｌｅｒの各スコープの動作開始及び動作終了を示す付属ラベル（ｓｔａｒｔ及びｅｎｄ）５７が含まれているが、付属ラベル５７は必ずしも必要なものではない。
【００２２】
図７は、動作割込み位置６１の判定方法を例示する図である。動作割込み位置判定部１２は、プログラム５２に含まれる割込み命令コード５６及び動作情報５３に基づいて、動作情報５３内における割込み発生位置を示す動作割込み位置６１を判定する。
【００２３】
動作割込み位置判定部１２は、動作情報５３に含まれる複数の命令コード５０の中から割込み命令コード（ｍｏｖ及びｓｔ）５６と一致する部分（一致部分）を検出し、一致部分を動作割込み位置６１と判定する。一致部分の検出方法は、特に限定されるべきものではなく、周知又は新規な技術を適宜利用した方法であればよい。一致部分は、例えば、関数ｈａｎｄｌｅｒの命令コード（ｍｏｖ及びｓｔ）５０及びラベル（ｈａｎｄｌａｒ）５４を検索キーワードとして動作情報５３内から検出することができる。また、非割込み命令コード５５の命令コード（ｌｄ、ｃｍｐ、ｊｎｅ、ｍｏｖ、ｓｔ、ｊｂｒ等）５０及びラベル（ｆｕｎｃＡ＿ｉｆ等）５４を検索キーワードとして用いてもよい。非割込み命令コード５５の命令コード５０及びラベル５４を検索キーワードとして利用することにより、一致部分の前後の命令コード５０の並び順を確かめることができるので、一致部分の検出をより高い精度で行うことが可能となる。
【００２４】
本例の動作情報５３においては、ｈａｎｄｌｅｒの割込み命令コード（ｍｏｖ及びｓｔ）５０がｆｕｎｃＡ＿ｉｆの動作開始を示す付属ラベル５７であるｓｔａｒｔと動作終了を示す付属ラベル５７であるｅｎｄとの間に存在している。従って、動作情報５３から関数ｆｕｎｃＡ内のｉｆ文の中で割込みが発生したことを読み取ることができる。
【００２５】
図８は、プログラム割込み位置６５の判定方法を例示する図である。プログラム割込み位置判定部１３は、プログラム５２に含まれる非割込み命令コード５５、及び上述のように判定された動作割込み位置６１に基づいて、プログラム５２内における割込み発生位置を示すプログラム割込み位置６５を判定する。
【００２６】
プログラム割込み位置判定部１３は、先ず、動作割込み位置６１の直前に位置する直前命令コード６２及び直後に位置する直後命令コード６３を検出する。その後、プログラム割込み位置判定部１３は、非割込み命令コード５５内において直前命令コード６２及び直後命令コード６３が連続している部分（連続部分）を検出し、当該連続部分をプログラム割込み位置６５と判定する。連続部分の検出方法は、特に限定されるべきものではなく、周知又は新規な技術を適宜利用した方法であればよい。連続部分（プログラム割込み位置６５）は、例えば、直前命令コード（ｍｏｖ）６２、直後命令コード（ｓｔ）６３、これらを含むスコープを示すラベル（ｆｕｎｃＡ＿ｉｆ）５４等を検索キーワードとして、非割込み命令コード５５内から検出することができる。また、動作情報５３において直前命令コード６２及び直後命令コード６３の前後の命令コード（ｌｄ、ｃｍｐ、ｊｎｅ、ｍｏｖ、ｓｔ、ｊｂｒ等）５０及びラベル（ｆｕｎｃＡ＿ｉｆ等）５４を検索キーワードとして用いてもよい。直前命令コード６２及び直後命令コード６３の前後の命令コード５０及びラベル５４を検索キーワードとして利用することにより、連続部分の前後における命令コード５０の並び順を確かめることができるので、連続部分の検出をより高い精度で行うことが可能となる。
【００２７】
本例の連続部分（プログラム割込み位置６５）は、非割込み命令コード５５のｆｕｎｃＡ＿ｉｆ内の２つの命令コード５０：「ｍｏｖ」及び「ｓｔ」の位置にある。このことから、関数ｆｕｎｃＡ内のｉｆ文の中の命令コード５０：「ｍｏｖ」の実行後、命令コード５０：「ｓｔ」の実行前に割込みが発生したことがわかる。このように、プログラム割込み位置６５によれば、割込み発生位置をプログラム５０の命令コード５０のレベルで特定することが可能となる。
【００２８】
図９は、第１の例のプログラム割込み位置情報７１を例示する図である。生成部１４は、プログラム割込み位置６５を一意に示すプログラム割込み位置情報７１を生成する。本例においては、プログラム５２に第１の識別番号６８が含まれている。第１の識別番号６８は、プログラム５２に含まれる全ての命令コード５０に対して一意に割り当てられた番号である。本例のプログラム割込み位置情報７１は、直前命令コード６２に対応する第１の識別番号６８を示す直前命令コードＩＤ７２（命令コード特定情報）を含む。本例の直前命令コードＩＤ７２：「９」は、プログラム５２のｆｕｎｃＡ＿ｉｆ内の命令コード５０：「ｍｏｖ」に対応している。すなわち、本例のプログラム割込み位置情報７１は、ｆｕｎｃＡ＿ｉｆ内の命令コード５０：「ｍｏｖ」の実行直後に割込みが発生したことを示している。
【００２９】
図１０は、第２の例のプログラム割込み位置情報７１を例示する図である。本例においては、プログラム５２に第２の識別番号６９が含まれている。第２の識別番号６９は、プログラム割込み位置６５を含むスコープ内の命令コード５０に対してのみ一意に割り当てられた番号である。本例のプログラム割込み位置情報７１は、直前命令コードＩＤ７２及び割込み位置ラベル７３（スコープ特定情報）を含む。割込み位置ラベル７３は、プログラム割込み位置６５を含むスコープを示すラベル５４を示している。本例の直前命令コードＩＤ７２：「４」は、プログラム５２のｆｕｎｃＡ＿ｉｆ内の命令コード５０：「ｍｏｖ」に対応している。すなわち、本例のプログラム割込み位置情報７１は、図９に示す第１の例と同様に、ｆｕｎｃＡ＿ｉｆ内の命令コード５０：「ｍｏｖ」の実行直後に割込みが発生したことを示している。
【００３０】
なお、プログラム割込み位置情報７１は、上記例に限られるものではない。例えば、プログラム割込み位置情報７１は、直前命令コードＩＤ７２に加え、又はこれに代えて、直後命令コード６３に対応するＩＤを含んでもよい。
【００３１】
上記のように生成されたプログラム割込み位置情報７１は、様々な目的で利用され得る。例えば、プログラム割込み位置情報７１は、そのままコンピュータのディスプレイ等に出力されてもよいし、他のシステム、例えばＧＵＩ(Graphical  User  Interface）を利用してプログラム５２の実行状況を可視化したり、プログラム５２（ソースコード５１）を検証したりするシステムに提供されてもよい。
【００３２】
なお、図２及び図３に示すハードウェア構成は一例であり、プログラム情報生成システム１は、様々なハードウェア構成により実現することができる。例えば、プログラム情報生成システム１は、単体の汎用コンピュータ、組み込みプロセッサを有する専用装置等により構成されてもよい。
【００３３】
また、図１には、プログラム情報生成システム１の最も基本的な機能ブロックである取得部１１、動作割込み位置判定部１２、プログラム割込み位置判定部１３、及び生成部１４を処理の順序で接続した構成が示されているが、実施形態はこれに限らない。例えば、各機能ブロックが協調しながら並列的に動作を行う構成、機能ブロックの順序を入れ替える構成、１つの機能ブロックを複数の機能ブロックに分割する構成、これら３つの構成を組み合わせた構成等であってもよい。
【００３４】
プログラム情報生成システム１の機能を実現させる制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、制御プログラムは、ネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めＲＯＭ等に組み込まれて所定の情報処理装置に提供されてもよい。また、制御プログラムは、上記取得部１１、動作割込み位置判定部１２、プログラム割込み位置判定部１３、及び生成部１４の機能を実現する複数のモジュールから構成されてもよい。
【００３５】
上記第１の実施形態によれば、割込み発生位置をプログラム５２の命令コード５０のレベルで特定することが可能となる。
【００３６】
以下に、他の実施形態について図面を参照して説明するが、上記第１の実施形態と同一又は同様の箇所については同一の符号を付してその説明を省略する場合がある。
【００３７】
（第２の実施形態）
図１１は、第２の実施形態におけるプログラム情報生成システム８１の機能的構成を例示する図である。プログラム情報生成システム８１は、第１の実施形態におけるプログラム情報生成システム１の構成に加え、指定部８２を含む。
【００３８】
指定部８２は、プログラム５２に含まれる複数のスコープの中から１つ以上のスコープを指定する。指定部８２は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ、ＲＡＭ３３等を利用して構成される。動作割込み位置判定部１２は、指定されたスコープ内における動作割込み位置６１を判定する。プログラム割込み位置判定部１３は、指定されたスコープ内におけるプログラム割込み位置６５を判定する。すなわち、第２の実施形態においては、割込み発生位置を判定するプログラム５２の範囲を指定することができる。
【００３９】
指定部８２により指定されるスコープは、１つ以上の連続した命令コード５０からなる区間である。指定されるスコープは、代表的にはラベル５４が付された関数単位の区間であるが、これに限定されるものではない。スコープは、ユーザにより手動で指定されてもよいし、制御プログラムの処理により所定の条件に基づいて自動的に指定されてもよい。
【００４０】
図１２は、第２の実施形態におけるプログラム５２及び動作情報９１を例示する図である。同図に示される指定区間８９は、指定部８２により指定されたスコープである。本例は、指定部８２によりプログラム５２の中からｆｕｎｃＡ＿ｉｆのラベル５４が付されたスコープが選択された場合を示している。指定区間８９には、６つの命令コード（ｌｄ、ｃｍｐ、ｊｎｅ、ｍｏｖ、ｓｔ、及びｊｂｒ）５０と、各命令コード５０に一意に割り当てられた識別番号７６とが含まれている。
【００４１】
本実施形態における動作割込み位置判定部１２は、指定区間８９についてのみ動作割込み位置６１の判定を行う。動作情報９１は、指定区間８９における実行順序のみを示している。本例の動作情報９１は、指定区間８９について繰り返しシミュレーションを行った場合に生成される情報である。本例においては、異なるシミュレーションにおける２種類の動作割込み位置６１Ａ，６１Ｂが示されている。
【００４２】
本実施形態におけるプログラム割込み位置判定部１３は、動作割込み位置６１Ａ，６１Ｂ及びプログラム５２に基づいて、第１の実施形態と同様に、指定区間８９内におけるプログラム割込み位置６５Ａ，６５Ｂを判定する。プログラム割込み位置６５Ａは動作割込み位置６１Ａに対応し、プログラム割込み位置６５Ｂは動作割込み位置６１Ｂに対応する。生成部１４は、このように判定されたプログラム割込み位置６５Ａ，６５Ｂに基づいて、第１の実施形態と同様にプログラム割込み位置情報７１を生成する。
【００４３】
上記第２の実施形態によれば、ユーザが必要とするスコープについてのみ割込み発生位置の判定を行うことができる。これにより、不要な情報の生成を抑制したり、検証結果をスコープ毎に確認しやすくしたりすることが可能となる。
【００４４】
（第３の実施形態）
図１３は、第３の実施形態におけるプログラム情報生成システム１０１の機能的構成を例示する図である。プログラム情報生成システム１０１は、第２の実施形態におけるプログラム情報生成システム８１の構成に加え、表示制御部１０２を含む。
【００４５】
表示制御部１０２は、生成部１４により生成されたプログラム割込み位置情報に基づいて、割込み命令コード５６の実行状況を示す表示画像が表示されるように表示部を制御する。表示部とは、画像を出力するデバイスであり、ディスプレイ、プリンタ等である。表示制御部１０２は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ、ＲＡＭ３３等を利用して構成される。
【００４６】
図１４は、第３の実施形態における生成部１４により生成されるプログラム割込み位置情報８６を例示する図である。本例のプログラム割込み位置情報８６は、直前命令コードＩＤ７２、割込み位置ラベル７３、及び割込み回数８７（割込み回数情報）を含む。本例の直前命令コードＩＤ７２及び割込み位置ラベル７３は、図１０に示す第１の実施形態における第２の例の直前命令コードＩＤ７２及び割込み位置ラベル７３と同一である。割込み回数８７は、指定部８２により指定されたスコープ（割込み位置ラベル７３：「ｆｕｎｃＡ＿ｉｆ」）内の割込み発生位置（直前命令コードＩＤ７２：「４」が示す命令コード５０：「ｍｏｖ」の実行後）６５において割込み命令コード５６が実行された回数を示している。このようなプログラム割込み位置情報８６は、シミュレーションの実行毎に生成される。すなわち、シミュレーション毎に変化する割込み発生位置（直前命令コードＩＤ７２）及びその位置における累積の割込み発生回数（割込み回数８７）に応じてプログラム割込み位置情報８６が生成される。
【００４７】
図１５は、第３の実施形態における第１の例の表示画像１１１を例示する図である。本例の表示画像１１１には、直前命令コードＩＤ７２に対応する割込み回数８７を示す回数オブジェクト１００が描画されている。本例においては、直前命令コードＩＤ７２：「１」が示すプログラム割込み位置６５（図１０におけるｆｕｎｃＡ＿ｉｆ内のｌｄ実行後）において割込み処理が１回発生し、直前命令コードＩＤ７２：「２」が示すプログラム割込み位置６５（図１０におけるｆｕｎｃＡ＿ｉｆ内のｃｍｐ実行後）において割込み処理が６回発生し、直前命令コードＩＤ７２：「４」が示すプログラム割込み位置６５（図１０におけるｆｕｎｃＡ＿ｉｆ内のｍｏｖ実行後）において割込み処理が４回発生し、直前命令コードＩＤ７２：「５」が示すプログラム割込み位置６５（図１０におけるｆｕｎｃＡ＿ｉｆ内のｓｔ実行後）において割込み処理が２回発生し、直前命令コードＩＤ７２：「３」及び「６」が示すプログラム割込み位置６５（図１０におけるｆｕｎｃＡ＿ｉｆ内のｊｎｅ実行後及びｊｂｒ実行後）においては割込み処理が発生していないことが示されている。
【００４８】
図１６は、第３の実施形態における第２の例の表示画像１１２を例示する図である。本例の表示画像１１２においては、直前命令コードＩＤ７２：「３」及び「６」の部分に、他の部分とは異なる表示形式で表示される強調オブジェクト１１６が描画されている。表示形式としては、例えば色彩、輝度、点滅等が挙げられる。強調オブジェクト１１６は、割込み回数８７が所定条件を満たしている部分に描画される。本例における所定条件は、割込み回数８７が「０」の場合である。所定条件はこれに限られるものではなく、例えば割込み回数８７が所定値以上である場合等も考えられる。
【００４９】
図１７は、第３の実施形態における第３の例の表示画像１１３を例示する図である。本例の表示画像１１３は、スコープ指定領域１１７Ａ及び結果表示領域１１８を含む。
【００５０】
スコープ指定領域１１７Ａは、ユーザに、プログラム５２に含まれる複数のスコープ（関数）の中から所望のスコープを選択させるための領域である。本例においては、複数のスコープがリスト状に表示されており、ユーザはマウス、タッチパネル等を介して所望のスコープを指定できるようになされている。ユーザが選択したスコープ、割込み処理が発生したスコープ等の欄を、その他の欄の表示形式と異ならせることにより強調表示してもよい。
【００５１】
結果表示領域１１８は、スコープ指定領域１１７Ａにおいて指定されたスコープにおける割込み処理の実行状況を示すグラフを表示する。
【００５２】
図１８は、第３の実施形態における第４の例の表示画像１１４を例示する図である。本例のスコープ指定領域１１７Ｂにおいては、プログラム５２に含まれる複数のスコープが、それらの包含関係を把握できるように表示されている。本例では、左側からプログラム全体を示す「ｒｏｏｔ」のボックス、プログラム内のファイルを示すボックス、各ファイルに記述されている関数を示すボックス、各関数に包含される条件分岐「ＣＯＮＤ」及びループ「ＬＯＯＰ」を示すボックスが、階層的に表示されている。これにより、ユーザはスコープの包含関係を考慮しながら指定を行うことができる。
【００５３】
図１９は、第３の実施形態における第５の例の表示画像１１５を例示する図である。本例の表示画像１１５は、第１のスコープ指定領域１１７Ｃ、第２のスコープ指定領域１１７Ｄ、及び結果表示領域１１８を含む。このとき、生成部１４は、コールツリー１２０のスコープの呼び出し関係を示す情報（後述する）から、第２のスコープ指定領域１１７Ｄの横軸に表示すべき項目を決定する。
【００５４】
コールツリー１２０は、プログラム５２のスコープをノードとして表示し、それらの呼び出し関係を示している。各ノードの右上に書かれた数字は、そのノード内で発生した割込みの回数を示している。第１のスコープ指定領域１１７Ｃは、プログラム５２内の比較的広い区間（スコープ）を指定するための領域である。第２のスコープ指定領域１１７Ｄは、第１のスコープ指定領域１１７Ｃより詳細な区間を指定するための領域である。結果表示領域１１８には、第２のスコープ指定領域１１７Ｄで指定された区間における割込み処理の実行状況を示すグラフが表示される。これにより、コールツリー１２０に示されたスコープの呼び出し関係を示す情報を用いて、広い区間の指定からより詳細な区間の指定へと２段階でスコープの指定を行うことができる。また、表示制御部１０２は、コールツリー１２０を表示部に表示させてもよい。
【００５５】
第１段階の区間指定について説明する。第１のスコープ指定領域１１７Ｃの横軸には、ファイル、関数等のプログラムにおいて比較的広い区間を示す項目が列挙されている。縦軸には、各項目の区間の実行中に発生した全ての割込み処理の合計回数が示されている。ここで、ある区間の実行中に発生した全ての割込み処理の合計回数を取得するためには、当該区間を実行中に呼び出された全ての区間において発生した割込み処理の回数を取得する必要がある。コールツリーには、そのような取得すべき全ての割込み処理の回数が示されている。例えば、ＦｕｎｃＡにおける割込み発生回数は、分岐部１２２に示されるように、ＦｕｎｃＡとその全ての子孫のノード：ＦｕｎｃＡ＿ｉｆ及びＦｕｎｃＡ＿ｅｌｓｅで発生した割り込み発生回数の合計値である。従って、ＦｕｎｃＡの実行中に発生した割込み処理の合計回数は、５＋３０＋１５＝５０となる。このような情報を参考にして、ユーザは第１のスコープ指定領域１１７Ｃの中から比較的広い区間を指定する。
【００５６】
上記のような第１段階の区間指定が終了すると、より詳細な区間を指定する第２段階へと移行する。本例では、第１段階においてＦｕｎｃＡが指定された場合が示されている。第２のスコープ指定領域１１７Ｄの横軸には、ＦｕｎｃＡの実行中に動作する全ての区間を示す項目が列挙される。これらの列挙される項目は、コールツリー１２０のＦｕｎｃＡノードの子孫のノードから読み取ることができる。本例では、ＦｕｎｃＡ、ＦｕｎｃＡ＿ｉｆ、及びＦｕｎｃＡ＿ｅｌｓｅの３つの項目が表示される。縦軸には、各項目の区間の実行中に発生した全ての割込み処理の合計回数が示されている。第２のスコープ指定領域１１７Ｄの縦軸は、第１のスコープ指定領域１１７Ｃとは異なり、別の区間で発生した割込み回数を含まない。第２のスコープ指定領域１１７Ｄから所望の区間、例えばＦｕｎｃＡ＿ｉｆを指定すると、ＦｕｎｃＡ＿ｉｆにおける割込み処理の実行状況を示すグラフが結果表示領域１１８に表示される。
【００５７】
なお、上記プログラム割込み位置情報８６及び表示画像１１１〜１１５は、単なる例示であり、これらに限られるものではない。図１４に示すプログラム割込み位置情報８６は割込み回数８７を含んでいるが、図１０に示すような割込み回数８７を含まないプログラム割込み位置情報７１であっても、例えばプログラム割込み位置情報７１の数をカウントすること等によって、上記のような表示画像１１１，１１２を生成することができる。上記プログラム割込み位置情報７１，８６の内容を適宜変更することにより、様々な表示画像を生成することができる。
【００５８】
上記第３の実施形態によれば、指定部８２による指定結果及び生成部１４により生成されたプログラム割込み位置情報８６を利用して、ユーザが所望するスコープにおける割込み命令コード５６の実行状況を視覚的に表現する表示画像１１１〜１１５を生成することが可能となる。
【００５９】
（第４の実施形態）
図２０は、第４の実施形態におけるプログラム１２１、動作情報１３１、及びプログラム割込み位置情報１４１〜１４３を例示する図である。第１〜第３の実施形態におけるプログラム５２は、１つの割込み命令コード５６を含むものであったが、本実施形態におけるプログラム１２１は、複数（３つ）の割込み命令コード１２５〜１２７を含む。これに伴い、１つの動作情報１３１は３つの動作割込み位置１３５〜１３７を含み、３つのプログラム割込み位置情報１４１〜１４３が生成される。
【００６０】
第１の割込み命令コード１２５は、ラベル５４：「ｈａｎｄｌｅｒ＿１」が付された２つの命令コード５０：「ｍｏｖ」及び「ｓｔ」からなる。第２の割込み命令コード１２６は、ラベル５４：「ｈａｎｄｌｅｒ＿２」が付された３つの命令コード５０：「ｍｏｖ」、「ａｄｄ」、及び「ｓｔ」からなる。第３の割込み命令コード１２７は、ラベル５４：「ｈａｎｄｌｅｒ＿３」が付された３つの命令コード５０：「ｍｏｖ」、「ｓｕｂ」、及び「ｓｔ」からなる。
【００６１】
第１の動作割込み位置１３５は、第１の割込み命令コード１２５に対応する。第２の動作割込み位置１３６は、第２の割込み命令コード１２６に対応する。第３の動作割込み位置１３７は、第３の割込み命令コード１２７に対応する。各動作割込み位置１３５〜１３７は、各割込み命令コード１２５〜１２７について第１の実施形態と同様の処理を行うことにより判定することができる。
【００６２】
第１のプログラム割込み位置情報１４１は、第１の動作割込み位置１３５に対応する。第２のプログラム割込み位置情報１４２は、第２の動作割込み位置１３６に対応する。第３のプログラム割込み位置情報１４３は、第３の動作割込み位置１３７に対応する。各プログラム割込み位置１４１〜１４３は、各動作割込み位置１３５〜１３７について第１の実施形態と同様の処理を行うことにより生成することができる。
【００６３】
図２１は、第４の実施形態における第１の例の表示画像１４５を例示する図である。本例の表示画像１４５においては、３種類の回数オブジェクト１５５〜１５７（第１の回数オブジェクト１５５〜第３の回数オブジェクト１５７）が各直前命令コードＩＤ７２（割込み発生位置）において並列に描画されている。第１の回数オブジェクト１５５は、第１の割込み命令コード１２５に対応する。第２の回数オブジェクト１５６は、第２の割込み命令コード１２６に対応する。第３の回数オブジェクト１５７は、第３の割込み命令コード１２７に対応する。例えば、直前命令コードＩＤ７２：「４」が示す割込み発生位置において、第１の割込み命令コード１２５が２回実行され、第２の割込み命令コード１２６が１回実行され、第３の割込み命令コード１２７が４回実行されたことが示されている。このような表示方法によれば、各割込み発生位置における割込み回数を、各割込み命令コード１２５〜１２７毎に容易に把握することができる。
【００６４】
図２２は、第４の実施形態における第２の例の表示画像１４６を例示する図である。本例の表示画像１５２においては、３種類の回数オブジェクト１５５〜１５７が各直前命令コードＩＤ７２において直列に描画されている。このような表示方法によれば、各割込み発生位置における割込み回数を、全ての割込み命令コード１２５〜１２７の割込み回数の合計として容易に把握することができる。
【００６５】
なお、上記表示画像１４５，１４６は、単なる例示であり、これらに限られるものではない。例えば、図１６に示す強調オブジェクト１１６が更に描画されてもよい。
【００６６】
上記第４の実施形態によれば、複数の割込み命令コード１２５〜１２７が存在する場合に、割込み命令コード１２５〜１２７毎に割込み発生位置を確認することができる。また、割込み命令コード１２５〜１２７毎に割込み回数を比較することが容易になるため、１つの動作情報１３１における複数の割込み命令コード１２５〜１２７の各挙動を容易に比較することが可能となる。
【００６７】
（第５の実施形態）
図２３は、第５の実施形態におけるプログラム８８、動作情報１５１〜１５３、及びプログラム割込み位置情報１５８〜１６０を例示する図である。本実施形態においては、プログラム８７に１つの割込み命令コード１２５が含まれ、複数（３つ）の動作情報１５１〜１５３が取得される。これに伴い、各動作情報１５１〜１５３に対応して３つのプログラム割込み位置情報１５８〜１６０が生成される。
【００６８】
３つの動作情報１５１〜１５３は、例えばプログラム８８を異なる条件下で３回実行させることにより取得される。第１の動作情報１５１における第１の動作割込み位置１４８と、第２の動作情報１５２における第２の動作割込み位置１４９と、第３の動作情報１５３における第３の動作割込み位置１５０とは、互いに異なっている。
【００６９】
第１のプログラム割込み位置情報１５８は、第１の動作情報１５１（第１の動作割込み位置１４８）に対応する。第２のプログラム割込み位置情報１５９は、第２の動作情報１５２（第１の動作割込み位置１４９）に対応する。第３のプログラム割込み位置情報１６０は、第３の動作情報１５３（第３の動作割込み位置１５０）に対応する。
【００７０】
図２４は、第５の実施形態における第１の例の表示画像１６１を例示する図である。本例の表示画像１６１においては、３種類の回数オブジェクト１６５〜１６７（第４の回数オブジェクト１６５〜第６の回数オブジェクト１６７）が各直前命令コードＩＤ７２において並列に描画されている。第４の回数オブジェクト１６５は、第１の動作情報１５１に対応する。第５の回数オブジェクト１６６は、第２の動作情報１５２に対応する。第６の回数オブジェクト１６７は、第３の動作情報１５３に対応する。このような表示方法によれば、各割込み発生位置における割込み回数を、各動作情報１５１〜１５３毎に容易に把握することができる。
【００７１】
図２５は、第５の実施形態における第２の例の表示画像１６２を例示する図である。本例の表示画像１６２においては、３種類の回数オブジェクト１６５〜１６７が各直前命令コードＩＤ７２において直列に描画されている。このような表示方法によれば、各割込み発生位置における割込み回数を、全ての動作情報１５１〜１５３における割込み回数の合計として容易に把握することができる。
【００７２】
なお、上記表示画像１６１，１６２は、単なる例示であり、これらに限られるものではない。例えば、図１６に示す強調オブジェクト１１６が更に描画されてもよい。
【００７３】
上記第５の実施形態によれば、複数の動作情報１５１〜１５３が存在する場合に、動作情報１５１〜１５３毎に割込み位置を確認することができる。また、動作情報１５１〜１５３毎に割込み回数を比較することが容易になるため、１つの割込み命令コード１２５の複数の動作情報１５１〜１５３における挙動を容易に比較することが可能となる。
【００７４】
（第６の実施形態）
図２６は、第６の実施形態におけるプログラム１２１、動作情報１７１〜１７３、及びプログラム割込み位置情報１８１〜１８４を例示する図である。本実施形態においては、プログラム１２１に複数（３つ）の割込み命令コード１２５〜１２７が含まれ、複数（３つ）の動作情報１７１〜１７３が取得される。これに伴い、各割込み命令コード１２５〜１２７と各動作情報１７１〜１７３との組み合わせに対応して複数（本例では４つ）のプログラム割込み位置情報１８１〜１８４が生成される。
【００７５】
本実施形態においては、第１の動作情報１７１には第１の割込み命令コード１２５に対応する第１の動作割込み位置１７５が含まれる。第２の動作情報１７２には第２の割込み命令コード１２６に対応する第２の動作割込み位置１７６が含まれる。第３の動作情報１７３には第１の割込み命令コード１２５に対応する第３の動作割込み位置１７７と、第３の割込み命令コード１２７に対応する第４の動作割込み位置１７８とが含まれる。
【００７６】
第１のプログラム割込み位置情報１８１は、第１の動作割込み位置情報１７５に対応する。第２のプログラム割込み位置情報１８２は、第２の動作割込み位置情報１７６に対応する。第３のプログラム割込み位置情報１８３は、第３の動作割込み位置情報１７７に対応する。第４のプログラム割込み位置情報１８４は、第４の動作割込み位置情報１７８に対応する。
【００７７】
図２７は、第６の実施形態における表示画像１９１を例示する図である。本例の表示画像１９１においては、９種類の回数オブジェクト２０１〜２０９（第７の回数オブジェクト２０１〜第１５の回数オブジェクト２０９）が各直前命令コードＩＤ７２（割込み発生位置）において描画されている。第７の回数オブジェクト２０１は、第１の動作情報１７１と第１の割込み命令コード１２５との組み合わせに対応する。第８の回数オブジェクト２０２は、第１の動作情報１７１と第２の割込み命令コード１２６との組み合わせに対応する。第９の回数オブジェクト２０３は、第１の動作情報１７１と第３の割込み命令コード１２７との組み合わせに対応する。第１０の回数オブジェクト２０４は、第２の動作情報１７２と第１の割込み命令コード１２５との組み合わせに対応する。第１１の回数オブジェクト２０５は、第２の動作情報１７２と第２の割込み命令コード１２６との組み合わせに対応する。第１２の回数オブジェクト２０６は、第２の動作情報１７２と第３の割込み命令コード１２７との組み合わせに対応する。第１３の回数オブジェクト２０７は、第３の動作情報１７３と第１の割込み命令コード１２５との組み合わせに対応する。第１４の回数オブジェクト２０８は、第３の動作情報１７３と第２の割込み命令コード１２６との組み合わせに対応する。第１５の回数オブジェクト２０９は、第３の動作情報１７３と第３の割込み命令コード１２７との組み合わせに対応する。このような表示方法によれば、各割込み発生位置における割込み回数を、各割込み命令コード１２５〜１２７と各動作情報１７１〜１７３との組み合わせ毎に容易に把握することができる。
【００７８】
なお、上記表示画像１９１は、単なる例示であり、これらに限られるものではない。例えば、図１６に示す強調オブジェクト１１６が更に描画されてもよい。
【００７９】
上記第６の実施形態によれば、複数の割込み命令コード１２５〜１２７及び複数の動作情報１７１〜１７３が存在する場合に、各割込み発生位置における割込み回数を両者の組み合わせ毎に確認することができる。また、複数の割込み命令コード１２５〜１２７と複数の動作情報１７１〜１７３とに基づくプログラム割込み位置情報１８１〜１８４を生成することにより、多様な割込み発生パターンを調査することが可能となる。
【００８０】
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【図１】
2017022016.tif 000003
【図２】
2017022016.tif 000004
【図３】
2017022016.tif 000005
【図４】
2017022016.tif 000006
【図５】
2017022016.tif 000007
【図６】
2017022016.tif 000008
【図７】
2017022016.tif 000009
【図８】
2017022016.tif 000010
【図９】
2017022016.tif 000011
【図１０】
2017022016.tif 000012
【図１１】
2017022016.tif 000013
【図１２】
2017022016.tif 000014
【図１３】
2017022016.tif 000015
【図１４】
2017022016.tif 000016
【図１５】
2017022016.tif 000017
【図１６】
2017022016.tif 000018
【図１７】
2017022016.tif 000019
【図１８】
2017022016.tif 000020
【図１９】
2017022016.tif 000021
【図２０】
2017022016.tif 000022
【図２１】
2017022016.tif 000023
【図２２】
2017022016.tif 000024
【図２３】
2017022016.tif 000025
【図２４】
2017022016.tif 000026
【図２５】
2017022016.tif 000027
【図２６】
2017022016.tif 000028
【図２７】
2017022016.tif 000029
【国際調査報告】
2017022016.tif 000030
2017022016.tif 000031