(57)【特許請求の範囲】
【請求項１】
割込み処理を発生させる割込み命令、前記割込み命令の実行を禁止する割込み禁止命令、及び前記割込み命令の実行を許可する割込み許可命令を含むプログラムと、前記プログラム内における前記割込み処理が発生した割込み発生位置を示す割込み位置情報とを取得する取得部と、
前記割込み禁止命令及び前記割込み許可命令に基づいて、前記プログラム内における割込み禁止区間を判定する判定部と、
前記割込み位置情報と前記割込み禁止区間を示す割込み禁止区間情報とに基づいて、前記割込み処理の発生状況を表示するための表示情報を生成する生成部と、
を備えるプログラム情報生成システム。
【請求項２】
前記表示情報は、前記プログラム内における前記割込み禁止区間の位置及び大きさを示す情報を含む、
請求項１に記載のプログラム情報生成システム。
【請求項３】
前記表示情報は、前記割込み発生位置と前記割込み処理の発生頻度との関係を示す頻度情報を含む、
請求項１又は２に記載のプログラム情報生成システム。
【請求項４】
前記頻度情報は、前記割込み命令の実行が可能な区間に含まれる命令コードの数に対する前記割込み発生位置に対応する命令コードの数の割合を含む、
請求項３に記載のプログラム情報生成システム。
【請求項５】
前記頻度情報は、前記割込み命令の実行が可能な区間に含まれる命令コードの数、前記割込み禁止区間に含まれる命令コードの数、及び前記割込み発生位置に対応する命令コードの数を含む、請求項３に記載のプログラム情報生成システム。
【請求項６】
前記頻度情報は、前記プログラムのスコープ毎に生成される、
請求項３〜５のいずれか１項に記載のプログラム情報生成システム。
【請求項７】
前記頻度情報は、前記プログラムに含まれる命令コード毎に生成される、
請求項３〜５のいずれか１項に記載のプログラム情報生成システム。
【請求項８】
前記表示情報に基づいて、前記発生状況を示す表示画像が表示されるように表示部を制御する表示制御部、
を更に備える請求項１〜７のいずれか１項に記載のプログラム情報生成システム。
【請求項９】
割込み処理を発生させる割込み命令、前記割込み命令の実行を禁止する割込み禁止命令、及び前記割込み命令の実行を許可する割込み許可命令を含むプログラムと、前記プログラム内における前記割込み処理が発生した割込み発生位置を示す割込み位置情報とを取得するステップと、
前記割込み禁止命令及び前記割込み許可命令に基づいて、前記プログラム内における割込み禁止区間を判定するステップと、
前記割込み位置情報と前記割込み禁止区間を示す割込み禁止区間情報とに基づいて、前記割込み処理の発生状況を表示するための表示情報を生成するステップと、
を備えるプログラム情報生成方法。
【請求項１０】
コンピュータに、
割込み処理を発生させる割込み命令、前記割込み命令の実行を禁止する割込み禁止命令、及び前記割込み命令の実行を許可する割込み許可命令を含むプログラムと、前記プログラム内における前記割込み処理が発生した割込み発生位置を示す割込み位置情報とを取得する処理と、
前記割込み禁止命令及び前記割込み許可命令に基づいて、前記プログラム内における割込み禁止区間を判定する処理と、
前記割込み位置情報と前記割込み禁止区間を示す割込み禁止区間情報とに基づいて、前記割込み処理の発生状況を表示するための表示情報を生成する処理と、
を実行させるプログラム情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プログラム情報生成システム、方法、及びプログラムに関する。
【背景技術】
【０００２】
プログラム（ソフトウェア）の開発、検査等を行うために、プログラムの実行状況を示す情報を生成するシステムが利用される。例えば、シミュレーションにおいて実行されたプログラムの実行順序及び実行結果を時間軸上に表示するシステムであって、非割込み処理の実行タイミングと割込み処理の実行タイミングとが同一の時間軸上に表示されるシステムがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２８２４４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のシステムにおいては、割込み処理が発生した位置がシミュレーションの結果を表示する際に用いられる時間軸上に表示される。すなわち、割込み発生位置がプログラムの動作情報（トレース情報）のレベルで特定される。
【０００５】
割込み処理が発生するプログラムには、割込み処理の発生を禁止する割込み禁止区間が設定される場合がある。しかし、従来のシステムにおいては、割込み禁止区間が割込み処理の発生にどのような影響を与えているかについて把握することは困難である。
【０００６】
そこで、以下の実施形態では、割込み発生位置をプログラムの命令コードのレベルで特定するシステムにおいて、割込み禁止区間が割込み処理の発生に与える影響を容易に把握できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
実施形態のプログラム情報生成システムは、取得部と、判定部と、生成部とを含む。取得部は、割込み処理を発生させる割込み命令、割込み命令の実行を禁止する割込み禁止命令、及び割込み命令の実行を許可する割込み許可命令を含むプログラムと、プログラム内における割込み処理が発生した割込み発生位置を示す割込み位置情報とを取得する。判定部は、割込み禁止命令及び割込み許可命令に基づいて、プログラム内における割込み禁止区間を判定する。生成部は、割込み位置情報と割込み禁止区間を示す割込み禁止区間情報とに基づいて、割込み処理の発生状況を表示するための表示情報を生成する。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態にかかるプログラム情報生成システムの機能的構成を例示する図。
【図２】第１の実施形態にかかるプログラム情報生成システムのハードウェア構成を例示する図。
【図３】第１の実施形態にかかる情報処理端末及びサーバの内部構成を例示する図。
【図４】第１の実施形態にかかるプログラム情報生成システムによる処理の流れを例示するフローチャート。
【図５】第１の実施形態にかかるソースコード及びプログラムを例示する図。
【図６】第１の実施形態の第１の例にかかる割込み位置情報を例示する図。
【図７】第１の実施形態の第２の例にかかる割込み位置情報を例示する図。
【図８】第１の実施形態にかかる割込み禁止区間情報を例示する図。
【図９】第１の実施形態の第１の例にかかる表示情報を例示する図。
【図１０】第１の実施形態の第２の例にかかる表示情報を例示する図。
【図１１】第１の実施形態の第３の例にかかる表示情報を例示する図。
【図１２】第２の実施形態にかかるプログラム情報生成システムの機能的構成を例示する図。
【図１３】第２の実施形態の第１の例にかかる表示画像を例示する図。
【図１４】第２の実施形態の第２の例にかかる表示画像を例示する図。
【図１５】第２の実施形態の第３の例にかかる表示画像を例示する図。
【図１６】第３の実施形態にかかるプログラム及び割込み禁止区間情報を例示する図。
【図１７】第３の実施形態にかかる割込み位置情報を例示する図。
【図１８】第３の実施形態にかかる表示情報を例示する図。
【図１９】第３の実施形態にかかる表示画像を例示する図。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
図１は、第１の実施形態にかかるプログラム情報生成システム１の機能的構成を例示する図である。プログラム情報生成システム１は、取得部１１、判定部１２、及び生成部１３を含む。
【００１０】
図２は、第１の実施形態にかかるプログラム情報生成システム１のハードウェア構成を例示する図である。本例のプログラム情報生成システム１は、情報処理端末２１、サーバ２２、及びネットワーク２３を含む。情報処理端末２１は、ユーザが使用するＰＣ（Personal  Computer）、タブレット、スマートフォン等であり得る。サーバ２２は、プログラム情報生成システム１の管理者が管理するサーバコンピュータ等であり得る。情報処理端末２１とサーバ２２とは、インターネット、ＬＡＮ(Local  Area  Network）等のネットワーク２３を介して接続されている。なお、同図においては、情報処理端末２１及びサーバ２２がそれぞれ１つずつ記載されているが、それらの両方又は一方が複数存在してもよい。
【００１１】
図３は、第１の実施形態にかかる情報処理端末２１及びサーバ２２の内部構成を例示する図である。情報処理端末２１及びサーバ２２は、ＣＰＵ（Central  Processing  Unit）３１、ＲＯＭ（Read  Only  Memory）３２、ＲＡＭ（Random  Access  Memory）３３、入力デバイス３４、出力デバイス３５、通信ＩＦ（Interface）３６、及びバス３７を含む。ＣＰＵ３１は、ＲＯＭ３２等に記憶された制御プログラムに従ってＲＡＭ３３をワーキングエリアとして所定の演算処理を行う。入力デバイス３４は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス３５は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信ＩＦ３６は、ネットワークを介して外部の装置との間で情報の送受信を可能にするデバイスである。
【００１２】
取得部１１は、検査対象となるプログラムと、当該プログラム内における割込み発生位置を示す割込み位置情報とを取得する。プログラムは、複数の命令コードを含んで構成される。本実施形態にかかるプログラムは、割込み処理を実行させる割込み命令コード（割込み命令）、割込み処理の実行を禁止する割込み禁止命令コード（割込み禁止命令）、及び割込み処理の実行を許可する割込み許可命令コード（割込み許可命令）を含む。プログラムが実行されると、プログラム内の所定の位置で割込み命令コードが実行される。割込み命令コードは、割込み処理の発生が禁止されている割込み禁止区間では実行されない。割込み発生位置は、プログラム内における割込み処理が発生した（割込み命令コードが実行された）位置である。取得部１１は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ（Integrated  Circuit）、ＲＡＭ３３等を利用して構成される。ここでの「取得」には、外部からデータを受信すること、及び内部でデータを生成することが含まれる。すなわち、プログラム及び割込み位置情報は、プログラム情報生成システム１以外のシステム（装置）によって生成されてもよいし、プログラム情報生成システム１内で生成されてもよい。プログラム及び割込み位置情報の生成方法は特に限定されるものではなく、プログラム及び割込み位置情報は周知又は新規な技術を用いて適宜生成されればよい。
【００１３】
判定部１２は、割込み禁止命令コード及び割込み許可命令コードに基づいて、プログラム内における割込み禁止区間を判定する。割込み禁止区間とは、割込み命令コードの実行が禁止される区間である。判定部１２は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ、ＲＡＭ３３等を利用して構成される。
【００１４】
生成部１３は、割込み位置情報と割込み禁止区間を示す割込み禁止区間情報とに基づいて、割込み処理の発生状況を表示するための表示情報を生成する。表示情報は、例えば割込み処理の発生状況を視覚的に示す表示画像を生成するため等に使用される。生成部１３は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ、ＲＡＭ３３等を利用して構成される。
【００１５】
図４は、第１の実施形態にかかるプログラム情報生成システム１による処理の流れを例示するフローチャートである。先ず、取得部１１がプログラム及び割込み位置情報を取得する（Ｓ１０１）。その後、判定部１２が割込み禁止命令コード及び割込み許可命令コードに基づいて、プログラム内における割込み禁止区間を判定する（Ｓ１０２）。その後、生成部１３が割込み位置情報と割込み禁止区間情報とに基づいて、割込み処理の発生状況を表示するための表示情報を生成する（Ｓ１０３）。
【００１６】
図５は、第１の実施形態にかかるソースコード５１及びプログラム５２を例示する図である。ソースコード５１及びプログラム５２は互いに対応している。プログラム５２は、特定の処理を実行するための命令を記述した情報である。本例のプログラム５２は、命令の内容を示す複数の命令コード（ａｄｄ、ｓｔ、ｌｄ、ｂ、ｃｍｐ、ｂｎｅ、ｍｏｖｓ等）、１つ以上の連続した命令コードを含むスコープを特定するラベル（ｆｕｎｃＡ、＿ｆｕｎｃＡ＿ｉｆ、＿ｆｕｎｃＡ＿ｅｌｓｅ、＿ｆｕｎｃＡ＿ｅｎｄ、ｈａｎｄｌｅｒ等）、及び各命令コードに割り当てられたアドレス値（０ｘ０００〜０ｘ０３８）を含む。
【００１７】
複数の命令コードには、非割込み命令コード５５及び割込み命令コード５６が含まれる。割込み命令コード５６は、割込み発生時に割込み処理として実行される命令コードである。非割込み命令コード５５は、割込み命令コード５６以外の命令コードである。
【００１８】
本例のプログラム５２は、ソースコード５１の関数ｆｕｎｃＡ及び割込み関数ｈａｎｄｌｅｒに対応している。本例の非割込み命令コード５５は、ｆｕｎｃＡ，＿ｆｕｎｃＡ＿ｉｆ，＿ｆｕｎｃＡ＿ｅｌｓｅ，＿ｆｕｎｃＡ＿ｅｎｄの４つのラベルが付された複数の命令コードから構成されている。関数ｆｕｎｃＡには分岐処理が含まれている。分岐を含まない３つの命令コード（ｌｄ、ｃｍｐ、及びｂｎｅ）にｆｕｎｃＡのラベルが付されている。関数ｆｕｎｃＡのｉｆ節内部の処理を示す２つの命令コード（ｍｏｖｓ及びｂ）に＿ｆｕｎｃＡ＿ｉｆのラベルが付されている。関数ｆｕｎｃＡのｅｌｓｅ節内部の処理を示す６つの命令コード（ｄｉ＿ｉｎｔｅｒｒｕｐｔ、ｌｄ、ａｄｄ、ｓｔ、ｅｎ＿ｉｎｔｅｒｒｕｐｔ、及びｍｏｖｓ）に＿ｆｕｎｃＡ＿ｅｌｓｅのラベルが付されている。関数ｆｕｎｃＡのリターン処理を示す１つの命令コード（ｂｘ）に＿ｆｕｎｃＡ＿ｅｎｄのラベルが付されている。
【００１９】
ソースコード５１の関数ｈａｎｄｌｅｒは、割込み処理が発生する際に実行される関数である。プログラム５２に含まれる割込み命令コード５６は、ｈａｎｄｌｅｒのラベルが付された複数の命令コード（ｌｄ、ｓｕｂ、及びｓｔ）から構成されている。
【００２０】
プログラム５２には、割込み禁止命令コード（ｄｉ＿ｉｎｔｅｒｒｕｐｔ）５７及び割込み許可命令コード（ｅｎ＿ｉｎｔｅｒｒｕｐｔ）５８が含まれている。割込み命令コード５６は、割込み禁止命令コード５７が実行されてから割込み許可命令コード５８が実行されるまでの間には実行されない。すなわち、０ｘ０１４から０ｘ０２０までの各命令コードの実行直後に割込み命令コード５６が実行されることはない。すなわち、本例では０ｘ０１４から０ｘ０２０までの区間が割込み禁止区間６５となる。０ｘ０００から０ｘ０１０までの区間及び０ｘ０２４から０ｘ０２ｃまでの区間は、割込み命令コード５６の実行が可能な区間である。すなわち、０ｘ０００から０ｘ０１０までの各命令コードの実行直後及び０ｘ０２４から０ｘ０２ｃまでの各命令コードの実行直後には割込み命令コード５６が実行される可能性がある。
【００２１】
なお、本実施形態においては、割込み禁止命令及び割込み許可命令を実現するためにそれぞれ単独の割込み禁止命令コード５７及び割込み許可命令コード５８が用いられているが、割込み禁止命令及び割込み許可命令は複数の命令コードから構成されてもよい。
【００２２】
図６は、第１の実施形態の第１の例にかかる割込み位置情報７１を例示する図である。割込み位置情報７１は、プログラム５２における割込み発生位置６１，６２を示す情報である。割込み発生位置６１，６２は、プログラム５２内における割込み処理が発生した（割込み命令コード５６が実行された）位置である。本例の一方の割込み発生位置６１は、０ｘ００ｃの命令コード（ｍｏｖｓ）が実行された直後の位置である。本例の他方の割込み発生位置６２は、０ｘ０２４の命令コード（ｅｎ＿ｉｎｔｅｒｒｒｕｐｔ）が実行された直後の位置である。
【００２３】
本例の割込み位置情報７１は、割込み発生位置６１，６２の直前の命令コードである直前命令コード６７に対応するアドレス値７５を含む。本例の割込み位置情報７１によれば、当該アドレス値７５が割り当てられた直前命令コード６７の実行直後に割込み処理が発生したことがわかる。本例においては、割込み処理は、アドレス値「０ｘ００ｃ」が割り当てられたラベル「＿ｆｕｎｃＡ＿ｉｆ」内の命令コード「ｍｏｖｓ」の実行直後、及びアドレス値「０ｘ０２４」が割り当てられたラベル「＿ｆｕｎｃＡ＿ｅｌｓｅ」内の命令コード「ｅｎ＿ｉｎｔｅｒｒｕｐｔ」の実行直後の２か所において発生したことを示されている。
【００２４】
図７は、第１の実施形態の第２の例にかかる割込み位置情報７２を例示する図である。本例の割込み位置情報７２は、上記アドレス値７５に加え、割込み発生回数７６を含む。割込み発生回数７６は、割込み発生位置６１，６２毎に割込み処理が発生した回数を示す数値である。本例の割込み位置情報７２によれば、割込み発生位置６１，６２の特定と共に、各割込み発生位置６１，６２における割込み処理の発生回数を認識することができる。本例においては、割込み処理は、アドレス値「０ｘ００ｃ」が割り当てられたラベル「＿ｆｕｎｃＡ＿ｉｆ」内の命令コード「ｍｏｖｓ」の実行直後に１回発生し、アドレス値「０ｘ０２４」が割り当てられたラベル「＿ｆｕｎｃＡ＿ｅｌｓｅ」内の命令コード「ｅｎ＿ｉｎｔｅｒｒｕｐｔ」の実行直後に１０回発生したことが示されている。
【００２５】
なお、割込み位置情報７１，７２は上記例に限られるものではなく、プログラム５２内における割込み発生位置６１，６２を特定することができることを条件として様々な構成を取ることができるものである。また、割込み位置情報７１，７２の取得（生成）方法は特に限定されるものではなく、割込み位置情報７１，７２は周知又は新規な技術を用いて適宜取得されればよい。例えば、割込み位置情報７１，７２は、プログラム５２を実行させたときに得られるトレース情報に基づいて取得されたり、割込み処理の発生をハードウェア的に検出するスコアボードを利用して取得されたりすることができる。
【００２６】
図８は、第１の実施形態にかかる割込み禁止区間情報８１を例示する図である。図１に示す判定部１２は、プログラム５２に含まれる割込み禁止命令コード５７及び割込み許可命令コード５８に基づいてプログラム５２内における割込み禁止区間６５を判定する。割込み禁止区間６５内では割込み命令コード５６が実行されない。判定部１２はプログラム５２に含まれる複数の命令コードの中から割込み禁止命令コード５７を検出し、検出された位置を禁止開始位置と定義する。本例では０ｘ０１４が禁止開始位置となる。また、判定部１２は禁止開始位置以降に実行される命令コードの中から割込み許可命令コード５８を検出し、検出された位置を禁止終了位置と定義する。本例では０ｘ０２４が禁止終了位置となる。
【００２７】
割込み禁止区間情報８１は禁止開始位置情報８５及び禁止終了位置情報８６を含む。禁止開始位置情報８５は上記禁止開始位置を特定するアドレス値（本例では「０ｘ０１４」）を含む情報である。禁止終了位置情報８６は上記禁止終了位置を特定するアドレス値（本例では「０ｘ０２４」）を含む情報である。本例の割込み禁止区間情報８１によれば、禁止開始位置情報８５が示すアドレス値と禁止終了位置情報８６が示すアドレス値との間の区間が割込み禁止区間６５であると判定することができる。
【００２８】
なお、禁止開始位置及び禁止終了位置の検出、割込み禁止区間情報８１の構成、割込み禁止区間６５の定義等は特に限定されるべきものではく、周知又は新規な技術を適宜利用して行われればよい。例えば、本例では割込み許可命令コード５８（ｅｎ＿ｉｎｔｅｒｒｐｕｔ）の位置を禁止終了位置としているが、直後に割込み処理が発生しないアドレス値「０ｘ０２０」で示される位置を禁止終了位置と定義してもよい。
【００２９】
図９は、第１の実施形態の第１の例にかかる表示情報９１を例示する図である。図１に示す生成部１３は、割込み位置情報７１，７２及び割込み禁止区間情報８１に基づいて、割込み処理の発生状況を表示するための表示情報９１を生成する。表示情報９１は、割込み発生位置６１，６２と割込み処理の発生頻度との関係を示す頻度情報等を含む。
【００３０】
本例の表示情報９１は割込み発生率９５を含む。割込み発生率９５は、ラベル（本例ではｆｕｎｃＡ，＿ｆｕｎｃＡ＿ｉｆ，＿ｆｕｎｃＡ＿ｅｌｓｅ，＿ｆｕｎｃＡ＿ｅｎｄ）で特定されるスコープ毎に、スコープに含まれる命令コードの数に対する割込み位置６１，６２に対応する命令コードの数の割合を示している。割込み位置６１，６２に対応する命令コードとは、例えば直前命令コード６７であるが、これに限られるものではない。例えば、＿ｆｕｎｃＡ＿ｉｆのスコープの割込み発生率９５は、スコープに含まれる命令コードの数が２（ｍｏｖｓ，ｂ）であり、直前命令コード６７の数が１（ｍｏｖｓ）であるから、５０％となる。
【００３１】
上記「スコープに含まれる命令コードの数」を求める際には、割込み禁止区間６５に含まれる命令コードの数が除外される。本例の＿ｆｕｎｃＡ＿ｅｌｓｅのスコープにはｄｉ＿ｉｎｔｅｒｒｕｐｔ，ｌｄ，ａｄｄ，ｓｔ，ｅｎ＿ｉｎｔｅｒｒｕｐｔ，ｍｏｖｓの６つの命令コードが含まれている。しかし、割込み発生率９５を算出する際には、これらの６つの命令コードから割込み禁止区間６５に含まれる４つの命令コードｄｉ，ｌｄ，ａｄｄ，ｓｔが除外される。これにより、＿ｆｕｎｃＡ＿ｅｌｓｅのスコープの割込み発生率９５は、スコープに含まれる命令コードの数が２（ｅｎ＿ｉｎｔｅｒｒｕｐｔ，ｍｏｖｓ）であり、直前命令コード６７の数が１（ｅｎ＿ｉｎｔｅｒｒｕｐｔ）であるから、５０％となる。仮に割込み禁止区間６５を考慮せずに算出すると、＿ｆｕｎｃＡ＿ｅｌｓｅのスコープの割込み発生率９５は、スコープに含まれる命令コードの数が６つとなることから、約１６．７％となる。
【００３２】
上記表示情報９１によれば、割込み処理が発生する可能性が高いスコープを容易に発見することが可能となる。このとき、割込み禁止処理による影響を除外した検査結果を取得することが可能となる。
【００３３】
なお、上記においては割込み発生率９５をスコープ毎に算出する例を示したが、これに限られるものではない。割込み発生率９５は、例えばプログラム５２毎に算出されてもよいし、複数のスコープ毎に算出されてもよいし、スコープ以外のモジュール毎に算出されてよいし、複数のモジュール毎に算出されてもよい。
【００３４】
図１０は、第１の実施形態の第２の例にかかる表示情報９２を例示する図である。本例の表示情報９２は、スコープ毎に示された直前命令コード数９６、割込み可能命令コード数９７、及び割込み不可命令コード数９８を含む。割込み不可命令コードとは、割込み禁止区間６５に含まれる命令コードである。割込み可能命令コードとは、割込み禁止区間６５に含まれない命令コードのうち直前命令コード６７でない命令コードである。例えば、＿ｆｕｎｃＡ＿ｅｌｓｅのスコープにおいては、直前命令コード数９６が１（ｅｎ＿ｉｎｔｅｒｒｕｐｔ）であり、割込み可能命令コード数９７が１（ｍｏｖｓ）であり、割込み不可命令コード数９８が４（ｄｉ，ｌｄ，ａｄｄ，ｓｔ）である。
【００３５】
上記表示情報９２によれば、スコープ毎の割込み処理の発生回数を容易に把握することが可能となる。このとき、割込み可能な命令コードの数と割込み不可能な命令コードの数とを参照することができるので、割込み禁止区間６５の影響を考慮することが可能となる。
【００３６】
なお、上記においては直前命令コード数９６、割込み可能命令コード数９７、及び割込み不可命令コード数９８をスコープ毎に算出する例を示したが、これに限られるものではない。これらの数９６〜９８は、例えばプログラム５２毎に算出されてもよいし、複数のスコープ毎に算出されてもよい。また、割込み可能命令コード数９７に代えて、スコープ内に含まれる全ての命令コードの数が含まれてもよい。また、プログラム５２に含まれる全ての命令コードの数から割込み不可命令コード数９８を減算した数が含まれてもよい。また、割込み処理の発生回数が所定値以上の直前命令コード６７のみを集計した数が含まれてもよい。また、割込み処理の発生回数が０である命令コードのみを集計した数が含まれてもよい。
【００３７】
図１１は、第１の実施形態の第３の例にかかる表示情報９３を例示する図である。本例の表示情報９３は、アドレス値（命令コード）毎に示された、割込み発生回数９９及び禁止区間表示１００を含む。表示情報９３中の「０ｘ００ｃ：１」は、アドレス値「０ｘ００ｃ」の命令コード「ｍｏｖｓ」の実行直後に割込み処理が１回発生したことを示している。「０ｘ０２４：１０」は、アドレス値「０ｘ０２４」の命令コード「ｅｎ＿ｉｎｔｅｒｒｕｐｔ」の実行直後に割込み処理が１０回発生したことを示している。禁止区間表示１００は、対応するアドレス値の命令コードが割込み禁止区間６５に含まれていることを示している。割込み発生回数９９が「０」であるアドレス値に対応する命令コードは、割込み禁止区間６５に含まれておらず、その直後に割込み処理が発生しなかった命令コードである。
【００３８】
上記表示情報９３によれば、命令コード毎に割込み処理の発生状況を把握することが可能となる。このとき、割込み禁止区間６５に含まれる命令コードを認識することができるので、割込み処理の非発生が割込み禁止区間６５によるものであるか否かを判断することが可能となる。
【００３９】
なお、上記においてはアドレス値が昇順となるように全データが並べられているが、これに限られるものではない。例えば、これらのデータを、割込み処理が発生した命令コード（０ｘ００ｃ，０ｘ０２４）毎、割込み処理が発生しなかった命令コード（０ｘ０００，０ｘ００４，０ｘ００８，０ｘ０１０，０ｘ０２８，０ｘ０２ｃ）毎、及び割込み禁止区間６５に含まれる命令コード（０ｘ０１４，０ｘ０１８，０ｘ０１ｃ，０ｘ０２０）毎に並べ替えてもよい。また、割込み禁止区間６５に含まれる命令コードに対応するデータを表示させなくてもよい。
【００４０】
上記のように、本実施形態にかかる表示情報９１〜９３は割込み禁止区間６５の位置及び大きさを示す情報を含んで構成されている。これにより、割込み禁止区間６５が割込み処理の発生に与える影響を容易に把握することが可能となる。
【００４１】
なお、図２及び図３に示すハードウェア構成は一例であり、プログラム情報生成システム１は、様々なハードウェア構成により実現することができる。例えば、プログラム情報生成システム１は、単体の汎用コンピュータ、組み込みプロセッサを有する専用装置等により構成されてもよい。
【００４２】
また、図１には、プログラム情報生成システム１の最も基本的な機能ブロックである取得部１１、判定部１２、及び生成部１３を処理の順序で接続した構成が示されているが、実施形態はこれに限らない。例えば、各機能ブロックが協調しながら並列的に動作を行う構成、機能ブロックの順序を入れ替える構成、１つの機能ブロックを複数の機能ブロックに分割する構成、これら３つの構成を組み合わせた構成等であってもよい。
【００４３】
プログラム情報生成システム１の機能を実現させる制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、制御プログラムは、ネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めＲＯＭ等に組み込まれて所定の情報処理装置に提供されてもよい。また、制御プログラムは、上記取得部１１、判定部１２、及び生成部１３の機能を実現する複数のモジュールから構成されてもよい。
【００４４】
以下に、他の実施形態について図面を参照して説明するが、上記第１の実施形態と同一又は同様の箇所については同一の符号を付してその説明を省略する場合がある。
【００４５】
（第２の実施形態）
図１２は、第２の実施形態にかかるプログラム情報生成システム１０１の機能的構成を例示する図である。プログラム情報生成システム１０１は、第１の実施形態にかかるプログラム情報生成システム１の構成に加え、表示制御部１０５を含む。
【００４６】
表示制御部１０５は、生成部１３により生成された表示情報９１〜９３に基づいて、割込み処理の発生状況を示す表示画像が表示されるように表示部を制御する。表示部とは、画像を出力するデバイスであり、ディスプレイ、プリンタ等である。表示制御部１０５は、例えばＣＰＵ３１、制御プログラム、ロジックＩＣ、ＲＡＭ３３等を利用して構成される。
【００４７】
図１３は、第２の実施形態の第１の例にかかる表示画像１１１を例示する図である。本例の表示画像１１１は、図９に示す表示情報９１に基づいて生成される画像である。表示画像１１１には、各スコープの割込み発生率９５を示す画像オブジェクト１１５が描画されている。このような表示画像１１１により、スコープ毎の割込み発生率９５を視覚的に把握することが可能となる。
【００４８】
図１４は、第２の実施形態の第２の例にかかる表示画像１２１を例示する図である。本例の表示画像１２１は、図１０に示す表示情報９２に基づいて生成される画像である。表示画像１２１には、直前命令コード数９６に対応する画像オブジェクト１２５、割込み可能命令コード数９７に対応する画像オブジェクト１２６、及び割込み不可命令コード数９８に対応する画像オブジェクト１２７が描画されている。このような表示画像１２１により、直前命令コード数９６（割込み処理の発生回数）と割込み可能命令コード数９７と割込み不可命令コード数９８との関係を視覚的に把握することが可能となる。
【００４９】
図１５は、第２の実施形態の第３の例にかかる表示画像１３１を例示する図である。本例の表示画像１３１は、図１１に示す表示情報９３に基づいて生成される画像である。表示画像１３１には、アドレス値、割込み発生回数９９、及び禁止区間表示１００の関係が示されており、割込み発生回数９９に対応する画像オブジェクト１３５及び禁止区間表示１００（割込み禁止区間６５）に対応する画像オブジェクト１３６が描画されている。このような表示画像１３１により、命令コード毎の割込み処理の発生状況と割込み禁止区間６５との関係を視覚的に把握することが可能となる。
【００５０】
（第３の実施形態）
図１６は、第３の実施形態にかかるプログラム２０１及び割込み禁止区間情報２３１を例示する図である。本実施形態にかかるプログラム２０１においては、割込み禁止命令及び割込み許可命令が複数の命令コードによって実現される。
【００５１】
本実施形態にかかる判定部１２は、プログラム２０１に含まれる割込み禁止処理（割込み禁止命令）及び割込み許可処理（割込み許可命令）に基づいて割込み禁止区間６５を判定する。割込み禁止処理及び割込み許可処理は、１つ以上の命令コードによって構成される一連の処理である。
【００５２】
割込み禁止処理は、制御用レジスタＣｏｎｔｒｏｌＲｅｇの最下位ビットを０にすることにより実現される。すなわち、ｄｉ＿ｉｎｔｅｒｒｕｐｔ関数において、０ｘ０３ｃのｃｒｒ命令によりＣｏｎｔｒｏｌＲｅｇの値をレジスタｒ０に読み出し、０ｘ０４０のａｎｄ命令によりｒ０レジスタの最下位ビットの値を０とし、０ｘ０４４のｃｒｗ命令により最下位ビットが０となったｒ０の値をＣｏｎｔｒｏｌＲｅｇに書き込むことにより、割込み処理が禁止される。
【００５３】
割込み許可処理は、制御用レジスタＣｏｎｔｒｏｌＲｅｇの最下位ビットを１にすることにより実現される。すなわち、ｅｎ＿ｉｎｔｅｒｒｕｐｔ関数において、０ｘ０４ｃのｃｒｒ命令によりＣｏｎｔｒｏｌＲｅｇの値をレジスタｒ０に読み出し、０ｘ０５０のｏｒ命令によりｒ０レジスタの最下位ビットの値を１とし、０ｘ０５４のｃｒｗ命令により最下位ビットが１となったｒ０をＣｏｎｔｒｏｌＲｅｇに書き込むことにより、割込み処理が許可される。関数ｆｕｎｃＡ内での割込み処理の禁止は０ｘ０１４においてｄｉ＿ｉｎｔｅｒｒｕｐｔ関数を呼び出すことにより実現される。関数ｆｕｎｃＡ内での割込み処理の許可は０ｘ０２４においてｅｎ＿ｉｎｔｅｒｒｕｐｔ関数を呼び出すことにより実現される。
【００５４】
本実施形態にかかる判定部１２はプログラム２０１に含まれる複数の命令コードの中から割込み禁止処理を検出し、検出された位置を禁止開始位置と定義する。また、判定部１２は禁止開始位置以降に実行される命令コードの中から割込み許可処理を検出し、検出された位置を禁止終了位置と定義する。これらの禁止開始位置及び禁止終了位置に基づいて割込み禁止区間６５が判定され、割込み禁止区間情報２３１が生成される。
【００５５】
割込み禁止区間情報２３１は、関数毎に示された禁止開始位置情報２３５及び禁止終了位置情報２３６を含む。割込み禁止区間情報２３１は、関数ｆｕｎｃＡ内にＳｔａｒｔ：で示される禁止開始位置０ｘ０１４（ｃａｌｌ  ｄｉ＿ｉｎｔｅｒｒｕｐｔ）及びＥｎｄ：で示される禁止終了位置０ｘ０２４（ｃａｌｌ  ｅｎ＿ｉｎｔｅｒｒｕｐｔ）が含まれることを示している。すなわち、関数ｆｕｎｃＡ内の０ｘ０１４，０ｘ０１８，０ｘ０１ｃ，０ｘ０２０の直後には割込み処理が発生しないことが示されている。また、割込み禁止区間情報２３１は、関数ｄｉ＿ｉｎｔｅｒｒｕｐｔ内にＳｔａｒｔ：で示される禁止開始位置０ｘ０４４（ｃｒｗ  ＣｏｎｔｒｏｌＲｅｇ，ｒ０）が含まれ、禁止終了位置が含まれない（この関数外に禁止終了位置が存在する）ことを示している。すなわち、関数ｄｉ＿ｉｎｔｅｒｒｕｐｔ内の０ｘ０４４，０ｘ０４８の直後には割込み処理が発生しないことが示されている。また、割込み禁止区間情報２３１は、関数ｅｎ＿ｉｎｔｅｒｒｕｐｔ内に禁止開始位置が含まれず（この関数外に禁止開始位置が存在し）、Ｅｎｄ：で示される禁止終了位置０ｘ０５４（ｃｒｗ  ＣｏｎｔｒｏｌＲｅｇ，ｒ０）が含まれることを示している。すなわち、関数ｅｎ＿ｉｎｔｅｒｒｕｐｔ内の０ｘ０４ｃ，０ｘ０５０の直後には割込み処理が発生しないことが示されている。
【００５６】
なお、割込み禁止区間情報２３１の構成は上記例に限られるものではない。上記例では、直後に割込み処理の発生が可能である命令コード（例えば０ｘ０５４のｃｒｗ）の位置を禁止終了位置としたが、直後に割込みが発生しない命令コード（例えば０ｘ０５８のｂｘ）の位置を禁止終了位置としてもよい。また、割込み禁止区間情報２３１内に割込み禁止区間６５に含まれる全ての命令コードを列挙してもよい。また、直後に割込み処理の発生が可能である命令コードを特定する情報を用い、その他の命令コードを割込み禁止区間６５に含まれる命令コードと判断してもよい。
【００５７】
本例のプログラム２０１には５つの割込み発生位置２１１〜２１５が含まれている。第１の割込み発生位置２１１は０ｘ００ｃの直後であり、０ｘ００ｃの命令コード（ｍｏｖｓ  ＃１）が第１の直前命令コード２２１となる。第２の割込み発生位置２１２は０ｘ０２４の直後であり、０ｘ０２４の命令コード（ｃａｌｌ  ｅｎ＿ｉｎｔｅｒｒｕｐｔ）が第２の直前命令コード２２２となる。第３の割込み発生位置２１３は０ｘ０３ｃの直後であり、０ｘ０３ｃの命令コード（ｃｒｒ  ｒ０，ＣｏｎｔｒｏｌＲｅｇ）が第３の直前命令コード２２３となる。第４の割込み発生位置２１４は０ｘ０４０の直後であり、０ｘ０４０の命令コード（ａｎｄ  ｒ０，＃０ｘｆｆｆｆｆｆｆｅ）が第４の直前命令コード２２４となる。第５の割込み発生位置２１５は０ｘ０５４の直後であり、０ｘ０５４の命令コード（ｃｒｗ  ＣｏｎｔｒｏｌＲｅｇ，ｒ０）が第５の直前命令コード２２５となる。
【００５８】
図１７は、第３の実施形態にかかる割込み位置情報２４１を例示する図である。本例の割込み位置情報２４１は、図７に示す割込み位置情報７２と同様に、各直前命令コード２２１〜２２５のアドレス値７５と、各割込み発生位置２１１〜２１５における割込み回数７６とを含む。本例においては、割込み処理は、＿ｆｕｎｃＡ＿ｉｆ内の０ｘ００ｃの命令コード（ｍｏｖｓ）の実行直後に１回、＿ｆｕｎｃＡ＿ｅｌｓｅ内の０ｘ０２４の命令コード（ｃａｌｌ）の実行直後に１０回、ｄｉ＿ｉｎｔｅｒｒｕｐｔ内の０ｘ０３ｃの命令コード（ｃｒｒ）の実行直後に１回、ｄｉ＿ｉｎｔｅｒｒｕｐｔ内の０ｘ０４０の命令コード（ａｎｄ）の実行直後に２回、及びｅｎ＿ｉｎｔｅｒｒｕｐｔ内の０ｘ０５４の命令コード（ｃｒｗ）の実行直後に１回発生している。割込み処理の合計の発生回数は１５回である。
【００５９】
図１８は、第３の実施形態にかかる表示情報２５１を例示する図である。本例の表示情報２５１は、図１１に示す表示情報９３と同様に、アドレス値（命令コード）毎に示された、割込み発生回数９９及び禁止区間表示１００を含む。本例においては、割込み処理が０ｘ００ｃの直後に１回、０ｘ０２４の直後に１０回、０ｘ０３ｃの直後に１回、０ｘ０４０の直後に２回、及び０ｘ０５４の直後に１回発生したことが示されている。また、区間０ｘ０１４〜０ｘ０２０及び区間０ｘ０４４〜０ｘ０５０が割込み禁止区間６５であることが示されている。なお、割込み発生回数９９が「０」であるアドレス値に対応する命令コードは、割込み禁止区間６５に含まれておらず、その直後に割込み処理が発生しなかった命令コードである。
【００６０】
図１９は、第３の実施形態にかかる表示画像３０１を例示する図である。本例の表示画像３０１は、図１８に示す表示情報２５１に基づいて生成される画像である。本例の表示画像３０１には、図１５に示す表示画像１３１と同様に、アドレス値、割込み発生回数９９、及び禁止区間表示１００の関係を示すグラフが描画されている。本例においては、グラフが関数（ｆｕｎｃＡ，ｄｉ＿ｉｎｔｅｒｒｕｐｔ，ｅｎ＿ｉｎｔｅｒｒｕｐｔ）毎に形成されている。各グラフには割込み発生回数９９に対応する画像オブジェクト１３５及び禁止区間表示１００（割込み禁止区間６５）に対応する画像オブジェクト１３６が描画されている。
【００６１】
上記第３の実施形態においては、割込み禁止処理及び割込み許可処理を検出し、関数の呼び出し関係に基づいて割込み禁止区間６５を判定している。これにより、関数を利用して割込み禁止処理及び割込み許可処理を実現しているプログラムにおいても適切に表示情報２５１を生成することが可能となる。
【００６２】
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６３】
１，１０１  プログラム情報生成システム
１１  取得部
１２  判定部
１３  生成部
２１  情報処理端末
２２  サーバ
２３  ネットワーク
３１  ＣＰＵ
３２  ＲＯＭ
３３  ＲＡＭ
３４  入力デバイス
３５  出力デバイス
３６  通信ＩＦ
３７  バス
５１  ソースコード
５２，２０１  プログラム
５５  非割込み命令コード
５６  割込み命令コード
５７  割込み禁止命令コード
５８  割込み許可命令コード
６１，６２，２１１，２１２，２１３，２１４，２１５  割込み発生位置
６５  割込み禁止区間
６７，２２１，２２２，２２３，２２４，２２５  直前命令コード
７１，７２，２４１  割込み位置情報
７５  アドレス値
７６  割込み発生回数
８１，２３１  割込み禁止区間情報
８５，２３５  禁止開始位置情報
８６，２３６  禁止終了位置情報
９１，９２，９３，２５１  表示情報
９５  割込み発生率
９６  直前命令コード数
９７  割込み可能命令コード数
９８  割込み不可命令コード数
９９  割込み発生回数
１００  禁止区間表示
１０５  表示制御部
１１１，１２１，１３１，３０１  表示画像
１１５，１２５，１２６，１２７，１３５，１３６  画像オブジェクト
【図１】
0006462615.tif 000002
【図２】
0006462615.tif 000003
【図３】
0006462615.tif 000004
【図４】
0006462615.tif 000005
【図５】
0006462615.tif 000006
【図６】
0006462615.tif 000007
【図７】
0006462615.tif 000008
【図８】
0006462615.tif 000009
【図９】
0006462615.tif 000010
【図１０】
0006462615.tif 000011
【図１１】
0006462615.tif 000012
【図１２】
0006462615.tif 000013
【図１３】
0006462615.tif 000014
【図１４】
0006462615.tif 000015
【図１５】
0006462615.tif 000016
【図１６】
0006462615.tif 000017
【図１７】
0006462615.tif 000018
【図１８】
0006462615.tif 000019
【図１９】
0006462615.tif 000020