JP6462615B2 - プログラム情報生成システム、方法、及びプログラム - Google Patents

プログラム情報生成システム、方法、及びプログラム Download PDF

Info

Publication number
JP6462615B2
JP6462615B2 JP2016056914A JP2016056914A JP6462615B2 JP 6462615 B2 JP6462615 B2 JP 6462615B2 JP 2016056914 A JP2016056914 A JP 2016056914A JP 2016056914 A JP2016056914 A JP 2016056914A JP 6462615 B2 JP6462615 B2 JP 6462615B2
Authority
JP
Japan
Prior art keywords
interrupt
instruction
program
information
prohibition
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.)
Active
Application number
JP2016056914A
Other languages
English (en)
Other versions
JP2017173974A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2016056914A priority Critical patent/JP6462615B2/ja
Publication of JP2017173974A publication Critical patent/JP2017173974A/ja
Application granted granted Critical
Publication of JP6462615B2 publication Critical patent/JP6462615B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明の実施形態は、プログラム情報生成システム、方法、及びプログラムに関する。
プログラム(ソフトウェア)の開発、検査等を行うために、プログラムの実行状況を示す情報を生成するシステムが利用される。例えば、シミュレーションにおいて実行されたプログラムの実行順序及び実行結果を時間軸上に表示するシステムであって、非割込み処理の実行タイミングと割込み処理の実行タイミングとが同一の時間軸上に表示されるシステムがある。
特開2010−282444号公報
従来のシステムにおいては、割込み処理が発生した位置がシミュレーションの結果を表示する際に用いられる時間軸上に表示される。すなわち、割込み発生位置がプログラムの動作情報(トレース情報)のレベルで特定される。
割込み処理が発生するプログラムには、割込み処理の発生を禁止する割込み禁止区間が設定される場合がある。しかし、従来のシステムにおいては、割込み禁止区間が割込み処理の発生にどのような影響を与えているかについて把握することは困難である。
そこで、以下の実施形態では、割込み発生位置をプログラムの命令コードのレベルで特定するシステムにおいて、割込み禁止区間が割込み処理の発生に与える影響を容易に把握できるようにすることを目的とする。
実施形態のプログラム情報生成システムは、取得部と、判定部と、生成部とを含む。取得部は、割込み処理を発生させる割込み命令、割込み命令の実行を禁止する割込み禁止命令、及び割込み命令の実行を許可する割込み許可命令を含むプログラムと、プログラム内における割込み処理が発生した割込み発生位置を示す割込み位置情報とを取得する。判定部は、割込み禁止命令及び割込み許可命令に基づいて、プログラム内における割込み禁止区間を判定する。生成部は、割込み位置情報と割込み禁止区間を示す割込み禁止区間情報とに基づいて、割込み処理の発生状況を表示するための表示情報を生成する。
第1の実施形態にかかるプログラム情報生成システムの機能的構成を例示する図。 第1の実施形態にかかるプログラム情報生成システムのハードウェア構成を例示する図。 第1の実施形態にかかる情報処理端末及びサーバの内部構成を例示する図。 第1の実施形態にかかるプログラム情報生成システムによる処理の流れを例示するフローチャート。 第1の実施形態にかかるソースコード及びプログラムを例示する図。 第1の実施形態の第1の例にかかる割込み位置情報を例示する図。 第1の実施形態の第2の例にかかる割込み位置情報を例示する図。 第1の実施形態にかかる割込み禁止区間情報を例示する図。 第1の実施形態の第1の例にかかる表示情報を例示する図。 第1の実施形態の第2の例にかかる表示情報を例示する図。 第1の実施形態の第3の例にかかる表示情報を例示する図。 第2の実施形態にかかるプログラム情報生成システムの機能的構成を例示する図。 第2の実施形態の第1の例にかかる表示画像を例示する図。 第2の実施形態の第2の例にかかる表示画像を例示する図。 第2の実施形態の第3の例にかかる表示画像を例示する図。 第3の実施形態にかかるプログラム及び割込み禁止区間情報を例示する図。 第3の実施形態にかかる割込み位置情報を例示する図。 第3の実施形態にかかる表示情報を例示する図。 第3の実施形態にかかる表示画像を例示する図。
(第1の実施形態)
図1は、第1の実施形態にかかるプログラム情報生成システム1の機能的構成を例示する図である。プログラム情報生成システム1は、取得部11、判定部12、及び生成部13を含む。
図2は、第1の実施形態にかかるプログラム情報生成システム1のハードウェア構成を例示する図である。本例のプログラム情報生成システム1は、情報処理端末21、サーバ22、及びネットワーク23を含む。情報処理端末21は、ユーザが使用するPC(Personal Computer)、タブレット、スマートフォン等であり得る。サーバ22は、プログラム情報生成システム1の管理者が管理するサーバコンピュータ等であり得る。情報処理端末21とサーバ22とは、インターネット、LAN(Local Area Network)等のネットワーク23を介して接続されている。なお、同図においては、情報処理端末21及びサーバ22がそれぞれ1つずつ記載されているが、それらの両方又は一方が複数存在してもよい。
図3は、第1の実施形態にかかる情報処理端末21及びサーバ22の内部構成を例示する図である。情報処理端末21及びサーバ22は、CPU(Central Processing Unit)31、ROM(Read Only Memory)32、RAM(Random Access Memory)33、入力デバイス34、出力デバイス35、通信IF(Interface)36、及びバス37を含む。CPU31は、ROM32等に記憶された制御プログラムに従ってRAM33をワーキングエリアとして所定の演算処理を行う。入力デバイス34は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス35は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信IF36は、ネットワークを介して外部の装置との間で情報の送受信を可能にするデバイスである。
取得部11は、検査対象となるプログラムと、当該プログラム内における割込み発生位置を示す割込み位置情報とを取得する。プログラムは、複数の命令コードを含んで構成される。本実施形態にかかるプログラムは、割込み処理を実行させる割込み命令コード(割込み命令)、割込み処理の実行を禁止する割込み禁止命令コード(割込み禁止命令)、及び割込み処理の実行を許可する割込み許可命令コード(割込み許可命令)を含む。プログラムが実行されると、プログラム内の所定の位置で割込み命令コードが実行される。割込み命令コードは、割込み処理の発生が禁止されている割込み禁止区間では実行されない。割込み発生位置は、プログラム内における割込み処理が発生した(割込み命令コードが実行された)位置である。取得部11は、例えばCPU31、制御プログラム、ロジックIC(Integrated Circuit)、RAM33等を利用して構成される。ここでの「取得」には、外部からデータを受信すること、及び内部でデータを生成することが含まれる。すなわち、プログラム及び割込み位置情報は、プログラム情報生成システム1以外のシステム(装置)によって生成されてもよいし、プログラム情報生成システム1内で生成されてもよい。プログラム及び割込み位置情報の生成方法は特に限定されるものではなく、プログラム及び割込み位置情報は周知又は新規な技術を用いて適宜生成されればよい。
判定部12は、割込み禁止命令コード及び割込み許可命令コードに基づいて、プログラム内における割込み禁止区間を判定する。割込み禁止区間とは、割込み命令コードの実行が禁止される区間である。判定部12は、例えばCPU31、制御プログラム、ロジックIC、RAM33等を利用して構成される。
生成部13は、割込み位置情報と割込み禁止区間を示す割込み禁止区間情報とに基づいて、割込み処理の発生状況を表示するための表示情報を生成する。表示情報は、例えば割込み処理の発生状況を視覚的に示す表示画像を生成するため等に使用される。生成部13は、例えばCPU31、制御プログラム、ロジックIC、RAM33等を利用して構成される。
図4は、第1の実施形態にかかるプログラム情報生成システム1による処理の流れを例示するフローチャートである。先ず、取得部11がプログラム及び割込み位置情報を取得する(S101)。その後、判定部12が割込み禁止命令コード及び割込み許可命令コードに基づいて、プログラム内における割込み禁止区間を判定する(S102)。その後、生成部13が割込み位置情報と割込み禁止区間情報とに基づいて、割込み処理の発生状況を表示するための表示情報を生成する(S103)。
図5は、第1の実施形態にかかるソースコード51及びプログラム52を例示する図である。ソースコード51及びプログラム52は互いに対応している。プログラム52は、特定の処理を実行するための命令を記述した情報である。本例のプログラム52は、命令の内容を示す複数の命令コード(add、st、ld、b、cmp、bne、movs等)、1つ以上の連続した命令コードを含むスコープを特定するラベル(funcA、_funcA_if、_funcA_else、_funcA_end、handler等)、及び各命令コードに割り当てられたアドレス値(0x000〜0x038)を含む。
複数の命令コードには、非割込み命令コード55及び割込み命令コード56が含まれる。割込み命令コード56は、割込み発生時に割込み処理として実行される命令コードである。非割込み命令コード55は、割込み命令コード56以外の命令コードである。
本例のプログラム52は、ソースコード51の関数funcA及び割込み関数handlerに対応している。本例の非割込み命令コード55は、funcA,_funcA_if,_funcA_else,_funcA_endの4つのラベルが付された複数の命令コードから構成されている。関数funcAには分岐処理が含まれている。分岐を含まない3つの命令コード(ld、cmp、及びbne)にfuncAのラベルが付されている。関数funcAのif節内部の処理を示す2つの命令コード(movs及びb)に_funcA_ifのラベルが付されている。関数funcAのelse節内部の処理を示す6つの命令コード(di_interrupt、ld、add、st、en_interrupt、及びmovs)に_funcA_elseのラベルが付されている。関数funcAのリターン処理を示す1つの命令コード(bx)に_funcA_endのラベルが付されている。
ソースコード51の関数handlerは、割込み処理が発生する際に実行される関数である。プログラム52に含まれる割込み命令コード56は、handlerのラベルが付された複数の命令コード(ld、sub、及びst)から構成されている。
プログラム52には、割込み禁止命令コード(di_interrupt)57及び割込み許可命令コード(en_interrupt)58が含まれている。割込み命令コード56は、割込み禁止命令コード57が実行されてから割込み許可命令コード58が実行されるまでの間には実行されない。すなわち、0x014から0x020までの各命令コードの実行直後に割込み命令コード56が実行されることはない。すなわち、本例では0x014から0x020までの区間が割込み禁止区間65となる。0x000から0x010までの区間及び0x024から0x02cまでの区間は、割込み命令コード56の実行が可能な区間である。すなわち、0x000から0x010までの各命令コードの実行直後及び0x024から0x02cまでの各命令コードの実行直後には割込み命令コード56が実行される可能性がある。
なお、本実施形態においては、割込み禁止命令及び割込み許可命令を実現するためにそれぞれ単独の割込み禁止命令コード57及び割込み許可命令コード58が用いられているが、割込み禁止命令及び割込み許可命令は複数の命令コードから構成されてもよい。
図6は、第1の実施形態の第1の例にかかる割込み位置情報71を例示する図である。割込み位置情報71は、プログラム52における割込み発生位置61,62を示す情報である。割込み発生位置61,62は、プログラム52内における割込み処理が発生した(割込み命令コード56が実行された)位置である。本例の一方の割込み発生位置61は、0x00cの命令コード(movs)が実行された直後の位置である。本例の他方の割込み発生位置62は、0x024の命令コード(en_interrrupt)が実行された直後の位置である。
本例の割込み位置情報71は、割込み発生位置61,62の直前の命令コードである直前命令コード67に対応するアドレス値75を含む。本例の割込み位置情報71によれば、当該アドレス値75が割り当てられた直前命令コード67の実行直後に割込み処理が発生したことがわかる。本例においては、割込み処理は、アドレス値「0x00c」が割り当てられたラベル「_funcA_if」内の命令コード「movs」の実行直後、及びアドレス値「0x024」が割り当てられたラベル「_funcA_else」内の命令コード「en_interrupt」の実行直後の2か所において発生したことを示されている。
図7は、第1の実施形態の第2の例にかかる割込み位置情報72を例示する図である。本例の割込み位置情報72は、上記アドレス値75に加え、割込み発生回数76を含む。割込み発生回数76は、割込み発生位置61,62毎に割込み処理が発生した回数を示す数値である。本例の割込み位置情報72によれば、割込み発生位置61,62の特定と共に、各割込み発生位置61,62における割込み処理の発生回数を認識することができる。本例においては、割込み処理は、アドレス値「0x00c」が割り当てられたラベル「_funcA_if」内の命令コード「movs」の実行直後に1回発生し、アドレス値「0x024」が割り当てられたラベル「_funcA_else」内の命令コード「en_interrupt」の実行直後に10回発生したことが示されている。
なお、割込み位置情報71,72は上記例に限られるものではなく、プログラム52内における割込み発生位置61,62を特定することができることを条件として様々な構成を取ることができるものである。また、割込み位置情報71,72の取得(生成)方法は特に限定されるものではなく、割込み位置情報71,72は周知又は新規な技術を用いて適宜取得されればよい。例えば、割込み位置情報71,72は、プログラム52を実行させたときに得られるトレース情報に基づいて取得されたり、割込み処理の発生をハードウェア的に検出するスコアボードを利用して取得されたりすることができる。
図8は、第1の実施形態にかかる割込み禁止区間情報81を例示する図である。図1に示す判定部12は、プログラム52に含まれる割込み禁止命令コード57及び割込み許可命令コード58に基づいてプログラム52内における割込み禁止区間65を判定する。割込み禁止区間65内では割込み命令コード56が実行されない。判定部12はプログラム52に含まれる複数の命令コードの中から割込み禁止命令コード57を検出し、検出された位置を禁止開始位置と定義する。本例では0x014が禁止開始位置となる。また、判定部12は禁止開始位置以降に実行される命令コードの中から割込み許可命令コード58を検出し、検出された位置を禁止終了位置と定義する。本例では0x024が禁止終了位置となる。
割込み禁止区間情報81は禁止開始位置情報85及び禁止終了位置情報86を含む。禁止開始位置情報85は上記禁止開始位置を特定するアドレス値(本例では「0x014」)を含む情報である。禁止終了位置情報86は上記禁止終了位置を特定するアドレス値(本例では「0x024」)を含む情報である。本例の割込み禁止区間情報81によれば、禁止開始位置情報85が示すアドレス値と禁止終了位置情報86が示すアドレス値との間の区間が割込み禁止区間65であると判定することができる。
なお、禁止開始位置及び禁止終了位置の検出、割込み禁止区間情報81の構成、割込み禁止区間65の定義等は特に限定されるべきものではく、周知又は新規な技術を適宜利用して行われればよい。例えば、本例では割込み許可命令コード58(en_interrput)の位置を禁止終了位置としているが、直後に割込み処理が発生しないアドレス値「0x020」で示される位置を禁止終了位置と定義してもよい。
図9は、第1の実施形態の第1の例にかかる表示情報91を例示する図である。図1に示す生成部13は、割込み位置情報71,72及び割込み禁止区間情報81に基づいて、割込み処理の発生状況を表示するための表示情報91を生成する。表示情報91は、割込み発生位置61,62と割込み処理の発生頻度との関係を示す頻度情報等を含む。
本例の表示情報91は割込み発生率95を含む。割込み発生率95は、ラベル(本例ではfuncA,_funcA_if,_funcA_else,_funcA_end)で特定されるスコープ毎に、スコープに含まれる命令コードの数に対する割込み位置61,62に対応する命令コードの数の割合を示している。割込み位置61,62に対応する命令コードとは、例えば直前命令コード67であるが、これに限られるものではない。例えば、_funcA_ifのスコープの割込み発生率95は、スコープに含まれる命令コードの数が2(movs,b)であり、直前命令コード67の数が1(movs)であるから、50%となる。
上記「スコープに含まれる命令コードの数」を求める際には、割込み禁止区間65に含まれる命令コードの数が除外される。本例の_funcA_elseのスコープにはdi_interrupt,ld,add,st,en_interrupt,movsの6つの命令コードが含まれている。しかし、割込み発生率95を算出する際には、これらの6つの命令コードから割込み禁止区間65に含まれる4つの命令コードdi,ld,add,stが除外される。これにより、_funcA_elseのスコープの割込み発生率95は、スコープに含まれる命令コードの数が2(en_interrupt,movs)であり、直前命令コード67の数が1(en_interrupt)であるから、50%となる。仮に割込み禁止区間65を考慮せずに算出すると、_funcA_elseのスコープの割込み発生率95は、スコープに含まれる命令コードの数が6つとなることから、約16.7%となる。
上記表示情報91によれば、割込み処理が発生する可能性が高いスコープを容易に発見することが可能となる。このとき、割込み禁止処理による影響を除外した検査結果を取得することが可能となる。
なお、上記においては割込み発生率95をスコープ毎に算出する例を示したが、これに限られるものではない。割込み発生率95は、例えばプログラム52毎に算出されてもよいし、複数のスコープ毎に算出されてもよいし、スコープ以外のモジュール毎に算出されてよいし、複数のモジュール毎に算出されてもよい。
図10は、第1の実施形態の第2の例にかかる表示情報92を例示する図である。本例の表示情報92は、スコープ毎に示された直前命令コード数96、割込み可能命令コード数97、及び割込み不可命令コード数98を含む。割込み不可命令コードとは、割込み禁止区間65に含まれる命令コードである。割込み可能命令コードとは、割込み禁止区間65に含まれない命令コードのうち直前命令コード67でない命令コードである。例えば、_funcA_elseのスコープにおいては、直前命令コード数96が1(en_interrupt)であり、割込み可能命令コード数97が1(movs)であり、割込み不可命令コード数98が4(di,ld,add,st)である。
上記表示情報92によれば、スコープ毎の割込み処理の発生回数を容易に把握することが可能となる。このとき、割込み可能な命令コードの数と割込み不可能な命令コードの数とを参照することができるので、割込み禁止区間65の影響を考慮することが可能となる。
なお、上記においては直前命令コード数96、割込み可能命令コード数97、及び割込み不可命令コード数98をスコープ毎に算出する例を示したが、これに限られるものではない。これらの数96〜98は、例えばプログラム52毎に算出されてもよいし、複数のスコープ毎に算出されてもよい。また、割込み可能命令コード数97に代えて、スコープ内に含まれる全ての命令コードの数が含まれてもよい。また、プログラム52に含まれる全ての命令コードの数から割込み不可命令コード数98を減算した数が含まれてもよい。また、割込み処理の発生回数が所定値以上の直前命令コード67のみを集計した数が含まれてもよい。また、割込み処理の発生回数が0である命令コードのみを集計した数が含まれてもよい。
図11は、第1の実施形態の第3の例にかかる表示情報93を例示する図である。本例の表示情報93は、アドレス値(命令コード)毎に示された、割込み発生回数99及び禁止区間表示100を含む。表示情報93中の「0x00c:1」は、アドレス値「0x00c」の命令コード「movs」の実行直後に割込み処理が1回発生したことを示している。「0x024:10」は、アドレス値「0x024」の命令コード「en_interrupt」の実行直後に割込み処理が10回発生したことを示している。禁止区間表示100は、対応するアドレス値の命令コードが割込み禁止区間65に含まれていることを示している。割込み発生回数99が「0」であるアドレス値に対応する命令コードは、割込み禁止区間65に含まれておらず、その直後に割込み処理が発生しなかった命令コードである。
上記表示情報93によれば、命令コード毎に割込み処理の発生状況を把握することが可能となる。このとき、割込み禁止区間65に含まれる命令コードを認識することができるので、割込み処理の非発生が割込み禁止区間65によるものであるか否かを判断することが可能となる。
なお、上記においてはアドレス値が昇順となるように全データが並べられているが、これに限られるものではない。例えば、これらのデータを、割込み処理が発生した命令コード(0x00c,0x024)毎、割込み処理が発生しなかった命令コード(0x000,0x004,0x008,0x010,0x028,0x02c)毎、及び割込み禁止区間65に含まれる命令コード(0x014,0x018,0x01c,0x020)毎に並べ替えてもよい。また、割込み禁止区間65に含まれる命令コードに対応するデータを表示させなくてもよい。
上記のように、本実施形態にかかる表示情報91〜93は割込み禁止区間65の位置及び大きさを示す情報を含んで構成されている。これにより、割込み禁止区間65が割込み処理の発生に与える影響を容易に把握することが可能となる。
なお、図2及び図3に示すハードウェア構成は一例であり、プログラム情報生成システム1は、様々なハードウェア構成により実現することができる。例えば、プログラム情報生成システム1は、単体の汎用コンピュータ、組み込みプロセッサを有する専用装置等により構成されてもよい。
また、図1には、プログラム情報生成システム1の最も基本的な機能ブロックである取得部11、判定部12、及び生成部13を処理の順序で接続した構成が示されているが、実施形態はこれに限らない。例えば、各機能ブロックが協調しながら並列的に動作を行う構成、機能ブロックの順序を入れ替える構成、1つの機能ブロックを複数の機能ブロックに分割する構成、これら3つの構成を組み合わせた構成等であってもよい。
プログラム情報生成システム1の機能を実現させる制御プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、制御プログラムは、ネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めROM等に組み込まれて所定の情報処理装置に提供されてもよい。また、制御プログラムは、上記取得部11、判定部12、及び生成部13の機能を実現する複数のモジュールから構成されてもよい。
以下に、他の実施形態について図面を参照して説明するが、上記第1の実施形態と同一又は同様の箇所については同一の符号を付してその説明を省略する場合がある。
(第2の実施形態)
図12は、第2の実施形態にかかるプログラム情報生成システム101の機能的構成を例示する図である。プログラム情報生成システム101は、第1の実施形態にかかるプログラム情報生成システム1の構成に加え、表示制御部105を含む。
表示制御部105は、生成部13により生成された表示情報91〜93に基づいて、割込み処理の発生状況を示す表示画像が表示されるように表示部を制御する。表示部とは、画像を出力するデバイスであり、ディスプレイ、プリンタ等である。表示制御部105は、例えばCPU31、制御プログラム、ロジックIC、RAM33等を利用して構成される。
図13は、第2の実施形態の第1の例にかかる表示画像111を例示する図である。本例の表示画像111は、図9に示す表示情報91に基づいて生成される画像である。表示画像111には、各スコープの割込み発生率95を示す画像オブジェクト115が描画されている。このような表示画像111により、スコープ毎の割込み発生率95を視覚的に把握することが可能となる。
図14は、第2の実施形態の第2の例にかかる表示画像121を例示する図である。本例の表示画像121は、図10に示す表示情報92に基づいて生成される画像である。表示画像121には、直前命令コード数96に対応する画像オブジェクト125、割込み可能命令コード数97に対応する画像オブジェクト126、及び割込み不可命令コード数98に対応する画像オブジェクト127が描画されている。このような表示画像121により、直前命令コード数96(割込み処理の発生回数)と割込み可能命令コード数97と割込み不可命令コード数98との関係を視覚的に把握することが可能となる。
図15は、第2の実施形態の第3の例にかかる表示画像131を例示する図である。本例の表示画像131は、図11に示す表示情報93に基づいて生成される画像である。表示画像131には、アドレス値、割込み発生回数99、及び禁止区間表示100の関係が示されており、割込み発生回数99に対応する画像オブジェクト135及び禁止区間表示100(割込み禁止区間65)に対応する画像オブジェクト136が描画されている。このような表示画像131により、命令コード毎の割込み処理の発生状況と割込み禁止区間65との関係を視覚的に把握することが可能となる。
(第3の実施形態)
図16は、第3の実施形態にかかるプログラム201及び割込み禁止区間情報231を例示する図である。本実施形態にかかるプログラム201においては、割込み禁止命令及び割込み許可命令が複数の命令コードによって実現される。
本実施形態にかかる判定部12は、プログラム201に含まれる割込み禁止処理(割込み禁止命令)及び割込み許可処理(割込み許可命令)に基づいて割込み禁止区間65を判定する。割込み禁止処理及び割込み許可処理は、1つ以上の命令コードによって構成される一連の処理である。
割込み禁止処理は、制御用レジスタControlRegの最下位ビットを0にすることにより実現される。すなわち、di_interrupt関数において、0x03cのcrr命令によりControlRegの値をレジスタr0に読み出し、0x040のand命令によりr0レジスタの最下位ビットの値を0とし、0x044のcrw命令により最下位ビットが0となったr0の値をControlRegに書き込むことにより、割込み処理が禁止される。
割込み許可処理は、制御用レジスタControlRegの最下位ビットを1にすることにより実現される。すなわち、en_interrupt関数において、0x04cのcrr命令によりControlRegの値をレジスタr0に読み出し、0x050のor命令によりr0レジスタの最下位ビットの値を1とし、0x054のcrw命令により最下位ビットが1となったr0をControlRegに書き込むことにより、割込み処理が許可される。関数funcA内での割込み処理の禁止は0x014においてdi_interrupt関数を呼び出すことにより実現される。関数funcA内での割込み処理の許可は0x024においてen_interrupt関数を呼び出すことにより実現される。
本実施形態にかかる判定部12はプログラム201に含まれる複数の命令コードの中から割込み禁止処理を検出し、検出された位置を禁止開始位置と定義する。また、判定部12は禁止開始位置以降に実行される命令コードの中から割込み許可処理を検出し、検出された位置を禁止終了位置と定義する。これらの禁止開始位置及び禁止終了位置に基づいて割込み禁止区間65が判定され、割込み禁止区間情報231が生成される。
割込み禁止区間情報231は、関数毎に示された禁止開始位置情報235及び禁止終了位置情報236を含む。割込み禁止区間情報231は、関数funcA内にStart:で示される禁止開始位置0x014(call di_interrupt)及びEnd:で示される禁止終了位置0x024(call en_interrupt)が含まれることを示している。すなわち、関数funcA内の0x014,0x018,0x01c,0x020の直後には割込み処理が発生しないことが示されている。また、割込み禁止区間情報231は、関数di_interrupt内にStart:で示される禁止開始位置0x044(crw ControlReg,r0)が含まれ、禁止終了位置が含まれない(この関数外に禁止終了位置が存在する)ことを示している。すなわち、関数di_interrupt内の0x044,0x048の直後には割込み処理が発生しないことが示されている。また、割込み禁止区間情報231は、関数en_interrupt内に禁止開始位置が含まれず(この関数外に禁止開始位置が存在し)、End:で示される禁止終了位置0x054(crw ControlReg,r0)が含まれることを示している。すなわち、関数en_interrupt内の0x04c,0x050の直後には割込み処理が発生しないことが示されている。
なお、割込み禁止区間情報231の構成は上記例に限られるものではない。上記例では、直後に割込み処理の発生が可能である命令コード(例えば0x054のcrw)の位置を禁止終了位置としたが、直後に割込みが発生しない命令コード(例えば0x058のbx)の位置を禁止終了位置としてもよい。また、割込み禁止区間情報231内に割込み禁止区間65に含まれる全ての命令コードを列挙してもよい。また、直後に割込み処理の発生が可能である命令コードを特定する情報を用い、その他の命令コードを割込み禁止区間65に含まれる命令コードと判断してもよい。
本例のプログラム201には5つの割込み発生位置211〜215が含まれている。第1の割込み発生位置211は0x00cの直後であり、0x00cの命令コード(movs #1)が第1の直前命令コード221となる。第2の割込み発生位置212は0x024の直後であり、0x024の命令コード(call en_interrupt)が第2の直前命令コード222となる。第3の割込み発生位置213は0x03cの直後であり、0x03cの命令コード(crr r0,ControlReg)が第3の直前命令コード223となる。第4の割込み発生位置214は0x040の直後であり、0x040の命令コード(and r0,#0xfffffffe)が第4の直前命令コード224となる。第5の割込み発生位置215は0x054の直後であり、0x054の命令コード(crw ControlReg,r0)が第5の直前命令コード225となる。
図17は、第3の実施形態にかかる割込み位置情報241を例示する図である。本例の割込み位置情報241は、図7に示す割込み位置情報72と同様に、各直前命令コード221〜225のアドレス値75と、各割込み発生位置211〜215における割込み回数76とを含む。本例においては、割込み処理は、_funcA_if内の0x00cの命令コード(movs)の実行直後に1回、_funcA_else内の0x024の命令コード(call)の実行直後に10回、di_interrupt内の0x03cの命令コード(crr)の実行直後に1回、di_interrupt内の0x040の命令コード(and)の実行直後に2回、及びen_interrupt内の0x054の命令コード(crw)の実行直後に1回発生している。割込み処理の合計の発生回数は15回である。
図18は、第3の実施形態にかかる表示情報251を例示する図である。本例の表示情報251は、図11に示す表示情報93と同様に、アドレス値(命令コード)毎に示された、割込み発生回数99及び禁止区間表示100を含む。本例においては、割込み処理が0x00cの直後に1回、0x024の直後に10回、0x03cの直後に1回、0x040の直後に2回、及び0x054の直後に1回発生したことが示されている。また、区間0x014〜0x020及び区間0x044〜0x050が割込み禁止区間65であることが示されている。なお、割込み発生回数99が「0」であるアドレス値に対応する命令コードは、割込み禁止区間65に含まれておらず、その直後に割込み処理が発生しなかった命令コードである。
図19は、第3の実施形態にかかる表示画像301を例示する図である。本例の表示画像301は、図18に示す表示情報251に基づいて生成される画像である。本例の表示画像301には、図15に示す表示画像131と同様に、アドレス値、割込み発生回数99、及び禁止区間表示100の関係を示すグラフが描画されている。本例においては、グラフが関数(funcA,di_interrupt,en_interrupt)毎に形成されている。各グラフには割込み発生回数99に対応する画像オブジェクト135及び禁止区間表示100(割込み禁止区間65)に対応する画像オブジェクト136が描画されている。
上記第3の実施形態においては、割込み禁止処理及び割込み許可処理を検出し、関数の呼び出し関係に基づいて割込み禁止区間65を判定している。これにより、関数を利用して割込み禁止処理及び割込み許可処理を実現しているプログラムにおいても適切に表示情報251を生成することが可能となる。
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1,101 プログラム情報生成システム
11 取得部
12 判定部
13 生成部
21 情報処理端末
22 サーバ
23 ネットワーク
31 CPU
32 ROM
33 RAM
34 入力デバイス
35 出力デバイス
36 通信IF
37 バス
51 ソースコード
52,201 プログラム
55 非割込み命令コード
56 割込み命令コード
57 割込み禁止命令コード
58 割込み許可命令コード
61,62,211,212,213,214,215 割込み発生位置
65 割込み禁止区間
67,221,222,223,224,225 直前命令コード
71,72,241 割込み位置情報
75 アドレス値
76 割込み発生回数
81,231 割込み禁止区間情報
85,235 禁止開始位置情報
86,236 禁止終了位置情報
91,92,93,251 表示情報
95 割込み発生率
96 直前命令コード数
97 割込み可能命令コード数
98 割込み不可命令コード数
99 割込み発生回数
100 禁止区間表示
105 表示制御部
111,121,131,301 表示画像
115,125,126,127,135,136 画像オブジェクト

Claims (10)

  1. 割込み処理を発生させる割込み命令、前記割込み命令の実行を禁止する割込み禁止命令、及び前記割込み命令の実行を許可する割込み許可命令を含むプログラムと、前記プログラム内における前記割込み処理が発生した割込み発生位置を示す割込み位置情報とを取得する取得部と、
    前記割込み禁止命令及び前記割込み許可命令に基づいて、前記プログラム内における割込み禁止区間を判定する判定部と、
    前記割込み位置情報と前記割込み禁止区間を示す割込み禁止区間情報とに基づいて、前記割込み処理の発生状況を表示するための表示情報を生成する生成部と、
    を備えるプログラム情報生成システム。
  2. 前記表示情報は、前記プログラム内における前記割込み禁止区間の位置及び大きさを示す情報を含む、
    請求項1に記載のプログラム情報生成システム。
  3. 前記表示情報は、前記割込み発生位置と前記割込み処理の発生頻度との関係を示す頻度情報を含む、
    請求項1又は2に記載のプログラム情報生成システム。
  4. 前記頻度情報は、前記割込み命令の実行が可能な区間に含まれる命令コードの数に対する前記割込み発生位置に対応する命令コードの数の割合を含む、
    請求項3に記載のプログラム情報生成システム。
  5. 前記頻度情報は、前記割込み命令の実行が可能な区間に含まれる命令コードの数、前記割込み禁止区間に含まれる命令コードの数、及び前記割込み発生位置に対応する命令コードの数を含む、請求項3に記載のプログラム情報生成システム。
  6. 前記頻度情報は、前記プログラムのスコープ毎に生成される、
    請求項3〜5のいずれか1項に記載のプログラム情報生成システム。
  7. 前記頻度情報は、前記プログラムに含まれる命令コード毎に生成される、
    請求項3〜5のいずれか1項に記載のプログラム情報生成システム。
  8. 前記表示情報に基づいて、前記発生状況を示す表示画像が表示されるように表示部を制御する表示制御部、
    を更に備える請求項1〜7のいずれか1項に記載のプログラム情報生成システム。
  9. 割込み処理を発生させる割込み命令、前記割込み命令の実行を禁止する割込み禁止命令、及び前記割込み命令の実行を許可する割込み許可命令を含むプログラムと、前記プログラム内における前記割込み処理が発生した割込み発生位置を示す割込み位置情報とを取得するステップと、
    前記割込み禁止命令及び前記割込み許可命令に基づいて、前記プログラム内における割込み禁止区間を判定するステップと、
    前記割込み位置情報と前記割込み禁止区間を示す割込み禁止区間情報とに基づいて、前記割込み処理の発生状況を表示するための表示情報を生成するステップと、
    を備えるプログラム情報生成方法。
  10. コンピュータに、
    割込み処理を発生させる割込み命令、前記割込み命令の実行を禁止する割込み禁止命令、及び前記割込み命令の実行を許可する割込み許可命令を含むプログラムと、前記プログラム内における前記割込み処理が発生した割込み発生位置を示す割込み位置情報とを取得する処理と、
    前記割込み禁止命令及び前記割込み許可命令に基づいて、前記プログラム内における割込み禁止区間を判定する処理と、
    前記割込み位置情報と前記割込み禁止区間を示す割込み禁止区間情報とに基づいて、前記割込み処理の発生状況を表示するための表示情報を生成する処理と、
    を実行させるプログラム情報生成プログラム。
JP2016056914A 2016-03-22 2016-03-22 プログラム情報生成システム、方法、及びプログラム Active JP6462615B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016056914A JP6462615B2 (ja) 2016-03-22 2016-03-22 プログラム情報生成システム、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016056914A JP6462615B2 (ja) 2016-03-22 2016-03-22 プログラム情報生成システム、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2017173974A JP2017173974A (ja) 2017-09-28
JP6462615B2 true JP6462615B2 (ja) 2019-01-30

Family

ID=59973002

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016056914A Active JP6462615B2 (ja) 2016-03-22 2016-03-22 プログラム情報生成システム、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6462615B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63106843A (ja) * 1986-10-24 1988-05-11 Hitachi Ltd プログラム実行表示方式
JPH05151002A (ja) * 1991-11-27 1993-06-18 Mitsubishi Electric Corp 計算機システム
JP2001142749A (ja) * 1999-11-18 2001-05-25 Matsushita Electric Ind Co Ltd 割込みタイミング検証装置
JP2011191843A (ja) * 2010-03-12 2011-09-29 Toyota Central R&D Labs Inc 割込干渉解析装置、割込干渉解析方法、及び割込干渉解析プログラム

Also Published As

Publication number Publication date
JP2017173974A (ja) 2017-09-28

Similar Documents

Publication Publication Date Title
JP6239661B2 (ja) フォーマット維持ベースマスキングシステムおよび方法
JP2017010476A (ja) 類似判定装置、類似判定方法及び類似判定プログラム
JP6258159B2 (ja) プログラム情報生成システム、方法、及びプログラム
US8984461B1 (en) Visualization constraints for circuit designs
US20170075665A1 (en) Program information generation system, method, and computer program
US20160085901A1 (en) Linear complexity prioritization of timing engineering change order failures
US8813036B2 (en) Visual representation of a difference between Cartesian product models
JP6462615B2 (ja) プログラム情報生成システム、方法、及びプログラム
JP6532762B2 (ja) 情報生成システム、装置、方法、及びプログラム
JP2018060421A (ja) 情報生成システム、装置、方法、及びプログラム
CN107291614B (zh) 文件异常检测方法和电子设备
JP6209985B2 (ja) 製品設計支援プログラム、製品設計支援方法および製品設計支援装置
JP2014120138A (ja) 異常原因推定プログラム、異常原因推定装置及び異常原因推定方法
JP6661500B2 (ja) 情報生成システム、装置、方法、及びプログラム
US20170083699A1 (en) Dynamic inline assistance messaging
WO2017022016A1 (ja) プログラム情報生成システム、方法、及びプログラム
WO2018016554A1 (ja) 障害内容特定装置、障害内容特定方法、及び、障害内容特定プログラムが格納された記録媒体
JP6931517B2 (ja) 校正支援装置、校正支援方法および校正支援プログラム
JP7353539B2 (ja) 定常範囲決定システム、定常範囲決定方法、および、定常範囲決定プログラム
JP2019159406A (ja) データ解析システム、データ解析方法、及びプログラム
JP5790047B2 (ja) 支援プログラム、支援装置および支援方法
US20170371664A1 (en) Program information generation system, method, and computer program product
JP2021033567A (ja) 電子制御装置
JP2010147514A (ja) アラーム処理回路及びアラーム処理方法
JP5370257B2 (ja) 検証支援プログラム、検証支援装置および検証支援方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181126

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: 20181204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181227

R151 Written notification of patent or utility model registration

Ref document number: 6462615

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151