JP7050587B2 - 違反依存検出装置および違反依存検出プログラム - Google Patents

違反依存検出装置および違反依存検出プログラム Download PDF

Info

Publication number
JP7050587B2
JP7050587B2 JP2018110946A JP2018110946A JP7050587B2 JP 7050587 B2 JP7050587 B2 JP 7050587B2 JP 2018110946 A JP2018110946 A JP 2018110946A JP 2018110946 A JP2018110946 A JP 2018110946A JP 7050587 B2 JP7050587 B2 JP 7050587B2
Authority
JP
Japan
Prior art keywords
violation
dependency
area
dependent
list
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
JP2018110946A
Other languages
English (en)
Other versions
JP2019215607A (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 JP2018110946A priority Critical patent/JP7050587B2/ja
Publication of JP2019215607A publication Critical patent/JP2019215607A/ja
Application granted granted Critical
Publication of JP7050587B2 publication Critical patent/JP7050587B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ソースコードに含まれるルール違反の依存関係を検出する技術に関するものである。
組込み機器の開発において、ソースコード内の各要素(関数または変数等)の配置先領域をファイルレベルまたは関数レベルで指定することが可能である。
これにより、1チップマイクロコンピュータに内蔵されるメモリのどのアドレス空間に各要素を配置するかを制御できる。
例えば、ARM社のコンパイラが使用される場合、スキャッタファイルと呼ばれるリンカ設定ファイルを用いて各要素の配置先領域を設定することができる。
組込み機器のROMに書かれたF/W(ファームウェア)を更新するF/Wアップデートと呼ばれる機能がある。
通常、1チップマイクロコンピュータのフラッシュメモリにプログラムが書き込まれる場合、ライターと呼ばれる機器が1チップマイクロコンピュータの外部端子に接続され、プログラムが1チップマイクロコンピュータのフラッシュメモリに直接書き込まれる。
一方、F/Wアップデートでは、1チップマイクロコンピュータに内蔵されるシリアルコミュニケーションインターフェイスを介して、マイクロコンピュータのフラッシュメモリにプログラムが書き込まれる。
F/Wアップデートが実施される場合、ライターを用いてアップデート実施プログラムとアップデート対象プログラムとが一つのフラッシュメモリに書き込まれる。そして、アップデート実施プログラムがフラッシュメモリからRAMにロードされ、フラッシュメモリ内のアップデート対象プログラムに対して消去または書き込みが実施される。
特許文献1は、プログラムの更新箇所のみをフラッシュメモリに書き込む技術が開示されている。
特許文献2は、1つのフラッシュメモリをプログラム領域とデータ領域とに使用する技術が開示されている。
特開平11-265283号公報 特許第3727485号公報
上記のような技術を用いて組込みF/Wが開発される場合、配置先領域間にルール違反の依存関係があると、プログラムが想定どおりの動作をしない場合またはプログラムが実行時異常となる場合がある。
例えば、F/Wアップデートにおいてフラッシュメモリ内のアップデート対象プログラムに対して消去または書き込みが実施される際に、RAM内のアップデート実施プログラムから消去済み領域の関数が呼び出された場合、その関数の実体が存在しないため実行時異常が発生する。
また、明示的に配置先エリアが記載された要素以外の要素についてはコンパイラのリンクルールに従って自動的に配置先エリアが決定されるため、問題の原因を解明することが難しい。
本発明は、配置先領域間のルールに違反する依存関係を検出できるようにすることを目的とする。
本発明の違反依存検出装置は、
ソースコードに含まれる1つ以上のプログラム要素である1つ以上の依存元要素と、1つ以上の依存元要素が配置される1つ以上の記憶領域である1つ以上の依存元配置領域と、1つ以上のプログラム要素であり1つ以上の依存元要素に依存する1つ以上の依存先要素と、1つ以上の依存先要素が配置される1つ以上の記憶領域である1つ以上の依存先配置領域と、が互いに対応付けられた依存領域組リスト、及び、1つ以上の記憶領域である1つ以上の依存元違反領域と、1つ以上の記憶領域である1つ以上の依存先違反領域と、が互いに対応付けられた違反領域組リストに基づいて、依存元違反領域に配置される依存元要素と依存先違反領域に配置される依存先要素との組を1つ以上示す違反要素組リストを生成する違反解析部を備える。
本発明によれば、違反要素組リストを生成することができる。違反要素組リストは、配置先領域間のルールに違反する依存関係を有する要素組のリストに相当する。そのため、配置先領域間のルールに違反する依存関係を検出することが可能となる。
実施の形態1における違反依存検出装置100の構成図。 実施の形態1における違反依存検出方法の概要図。 実施の形態1における違反依存検出方法のフローチャート。 実施の形態1における配置先領域リスト121の具体例を示す図。 実施の形態1における1チップマイクロコンピュータの記憶領域の具体例を示す図。 実施の形態1における依存要素組リスト122の具体例を示す図。 実施の形態1における依存領域組リスト123の具体例を示す図。 実施の形態1における関係解析処理(S120)のフローチャート。 実施の形態1における違反領域組リスト124の具体例を示す図。 実施の形態1における違反要素組リスト125の具体例を示す図。 実施の形態1における違反解析処理(S140)のフローチャート。 実施の形態2における違反依存検出装置100の構成図。 実施の形態2における違反依存検出方法の概要図。 実施の形態2における違反依存検出方法のフローチャート。 実施の形態2における配置先アドレスリスト126の具体例を示す図。 実施の形態2における記憶領域リスト127の具体例を示す図。 実施の形態2における領域解析処理(S220)のフローチャート。 実施の形態3における違反依存検出装置100の構成図。 実施の形態3における違反依存検出方法の概要図。 実施の形態3における違反依存検出方法のフローチャート。 実施の形態4における違反依存検出装置100の構成図。 実施の形態4における違反依存検出方法の概要図。 実施の形態4における違反依存検出方法のフローチャート。 実施の形態5における違反依存検出装置100の構成図。 実施の形態5における違反依存検出方法の概要図。 実施の形態5における違反依存検出方法のフローチャート。 実施の形態6における違反依存検出装置100の構成図。 実施の形態6における違反依存検出方法の概要図。 実施の形態6における違反依存検出方法のフローチャート。 実施の形態6における装飾処理(S660)のフローチャート。 実施の形態における違反依存検出装置100のハードウェア構成図。
実施の形態および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
実施の形態1.
配置先領域ルールに違反する依存関係を検出するための形態について、図1から図11に基づいて説明する。
***構成の説明***
図1に基づいて、違反依存検出装置100の構成を説明する。
違反依存検出装置100は、プロセッサ101とメモリ102とストレージ103と通信装置104と入出力インタフェース105といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ101は、演算処理を行うIC(Integrated Circuit)であり、他のハードウェアを制御する。例えば、プロセッサ101は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、またはGPU(Graphics Processing Unit)である。
メモリ102は揮発性の記憶装置である。メモリ102は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ102はRAM(Random Access Memory)である。具体的には、RAMは、SRAM(Static RAM)またはDRAM(Dynamic RAM)である。メモリ102に記憶されたデータは必要に応じてストレージ103に保存される。
ストレージ103は不揮発性の記憶装置である。ストレージ103は補助記憶装置ともいう。例えば、ストレージ103は、ROM(Read Only Memory)、HDD(Hard Disk Drive)、またはフラッシュメモリである。ストレージ103は可搬記憶媒体であってもよい。ストレージ103に記憶されたデータは必要に応じてメモリ102にロードされる。
通信装置104はレシーバ及びトランスミッタである。例えば、通信装置104は通信チップまたはNIC(Network Interface Card)である。
入出力インタフェース105は入力装置および出力装置が接続されるポートである。例えば、入出力インタフェース105はUSB端子であり、入力装置はキーボードおよびマウスであり、出力装置はディスプレイである。USBはUniversal Serial Busの略称である。
違反依存検出装置100は、関係解析部111と違反解析部112といった要素を備える。これらの要素はソフトウェアで実現される。
ストレージ103には、関係解析部111と違反解析部112としてコンピュータを機能させるための違反依存検出プログラムが記憶されている。違反依存検出プログラムは、メモリ102にロードされて、プロセッサ101によって実行される。
さらに、ストレージ103にはOS(Operating System)が記憶されている。OSの少なくとも一部は、メモリ102にロードされて、プロセッサ101によって実行される。
つまり、プロセッサ101は、OSを実行しながら、違反依存検出プログラムを実行する。
違反依存検出プログラムを実行して得られるデータは、メモリ102、ストレージ103、プロセッサ101内のレジスタ、または、プロセッサ101内のキャッシュメモリといった記憶装置に記憶される。
ストレージ103は記憶部120として機能する。但し、他の記憶装置が、ストレージ103の代わりに、又は、ストレージ103と共に、記憶部120として機能してもよい。
違反依存検出装置100は、プロセッサ101を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ101の役割を分担する。
違反依存検出プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録(格納)することができる。
***動作の説明***
違反依存検出装置100の動作は違反依存検出方法に相当する。また、違反依存検出方法の手順は違反依存検出プログラムの手順に相当する。
図2に基づいて、違反依存検出方法の概要を説明する。
まず、関係解析部111は、配置先領域リスト121と依存要素組リスト122とに基づいて、依存領域組リスト123を生成する。
配置先領域リスト121は、1つ以上のプログラム要素と、1つ以上の配置先領域と、が互いに対応付けられたリストである。
プログラム要素は、プログラムにおいて使用される要素であり、ソースコードに含まれる。例えば、プログラム要素は、関数または変数などである。
配置先領域は、プログラム要素が配置される記憶領域である。
依存要素組リスト122は、1つ以上の依存元要素と、1つ以上の依存先要素と、が互いに対応付けられたリストである。
依存元要素は、依存先要素の依存元となるプログラム要素である。
依存先要素は、依存元要素に依存するプログラム要素である。
つまり、依存元要素と依存先要素との間には依存関係がある。依存先要素は依存元要素によって使用される。例えば、依存関係は、関数の呼び出しまたは変数の参照などである。依存関係が変数の参照である場合、依存元要素は変数を参照する関数であり、依存先要素は参照される変数である。
依存領域組リスト123は、1つ以上の依存元要素と、1つ以上の依存元配置領域と、1つ以上の依存先要素と、1つ以上の依存先配置領域と、が互いに対応付けられたリストである。
依存元配置領域は、依存元要素が配置される記憶領域である。
依存先配置領域は、依存先要素が配置される記憶領域である。
そして、違反解析部112は、依存領域組リスト123と違反領域組リスト124とに基づいて、違反要素組リスト125を生成する。
違反領域組リスト124は、1つ以上の依存元違反領域と、1つ以上の依存先違反領域と、が互いに対応付けられたリストである。
依存元違反領域は、依存先違反領域と対を成す記憶領域である。
依存先違反領域は、依存元違反領域と対を成す記憶領域である。
違反要素組リスト125は、依存元違反領域に配置される依存元要素と依存先違反領域に配置される依存先要素との組を1つ以上示すリストである。
図3に基づいて、違反依存検出方法の詳細を説明する。
ステップS110において、利用者は、通信装置104または入出力インタフェース105を介して、配置先領域リスト121と依存要素組リスト122とを違反依存検出装置100に入力する。
関係解析部111は、配置先領域リスト121と依存要素組リスト122とを受け付ける。そして、関係解析部111は、配置先領域リスト121と依存要素組リスト122とを記憶部120に記憶する。
図4に基づいて、配置先領域リスト121の具体例を説明する。
配置先領域リスト121には、4つのプログラム要素と4つの配置先領域とが互いに対応付けられている。
update()、func1()、func2()およびfunc3()は、それぞれ関数である。
例えば、update()は領域Aに対応付けられている。これは、update()がコンパイラによって領域Aに配置されることを意味する。また、func3()は領域Bに対応付けられている。これは、func3()がコンパイラによって領域Bに配置されることを意味する。
図5に基づいて、1チップマイクロコンピュータの記憶領域の具体例を説明する。
1チップマイクロコンピュータは、フラッシュメモリとRAMとを有している。
フラッシュメモリは、領域Aと領域Bとを有している。RAMは、領域Cを有している。
領域Aはアドレス0000Hからアドレス0100Hまでの記憶領域である。領域Bはアドレス0200Hからアドレス0300Hまでの記憶領域である。領域Cはアドレス1000Hからアドレス1100Hまでの記憶領域である。
領域Aには、アップデート実施プログラムが配置される。領域Bには、アップデート対象プログラムが配置される。領域Cには、コピーされたアップデート実施プログラムが配置される。
アップデート実施プログラムは、アップデート対象プログラムをアップデートするためのプログラムである。アップデート対象プログラムは、アップデートされるプログラムである。
図6に基づいて、依存要素組リスト122の具体例を説明する。
依存要素組リスト122には、3つの依存元要素と3つの依存先要素とが互いに対応付けられている。つまり、依存要素組リスト122には、3つの依存要素組が登録されている。
依存要素組は、依存元要素と依存先要素との組である。
例えば、2つ目の依存要素組は、update()とfunc3()との組である。この組は、update()からfunc3()への依存関係の存在を示している。
図3に戻り、ステップS120を説明する。
ステップS120において、関係解析部111は、配置先領域リスト121と依存要素組リスト122とに基づいて、依存領域組リスト123を生成する。
そして、関係解析部111は、依存領域組リスト123を記憶部120に記憶する。
図7に基づいて、図4の配置先領域リスト121と図6の依存要素組リスト122とに基づいて生成される依存領域組リスト123を説明する。
依存領域組リスト123には、3つの依存元要素と3つの依存元配置領域と3つの依存先要素と3つの依存先配置領域とが互いに対応付けられている。つまり、依存領域組リスト123には、3つの依存領域組が登録されている。
依存領域組は、依存元要素と依存元配置領域と依存先要素と依存先配置領域との組である。
例えば、2つ目の依存領域組は、update()と領域Aとfunc3()と領域Bとの組である。この組は、領域Aに配置されるupdate()から領域Bに配置されるfunc3()への依存関係の存在を示している。
図8に基づいて、関係解析処理(S120)の詳細を説明する。
ステップS121において、関係解析部111は、依存要素組リスト122から、未選択の依存要素組を1つ選択する。
例えば、関係解析部111は、図6の依存要素組リスト122から、2つ目の依存要素組を選択する。2つ目の依存要素組は、update()関数とfunc3()関数との組である。
ステップS122およびステップS123は、ステップS121で選択された依存要素組に対して実行される。
ステップS122において、関係解析部111は、依存元要素に対応付けられた配置先領域の名称を配置先領域リスト121から抽出する。抽出される名称を依存元配置領域名という。
例えば、依存元要素名が「update()」である場合、関係解析部111は、図4の配置先領域リスト121から「領域A」を抽出する。「領域A」が依存元配置領域名である。
さらに、関係解析部111は、依存先要素に対応付けられた配置先領域の名称を配置先領域リスト121から抽出する。抽出される名称を依存先配置領域名という。
例えば、依存先要素名が「func3()」である場合、関係解析部111は、図4の配置先領域リスト121から「領域B」を抽出する。「領域B」が依存先配置領域名である。
ステップS123において、関係解析部111は、依存元要素名と依存元配置領域名と依存先要素名と依存先配置領域名との組を依存領域組リスト123に登録する。
例えば、依存元要素名が「update()」であり、依存元配置領域名が「領域A」であり、依存先要素名が「func3()」であり、依存先配置領域名が「領域B」であると仮定する。この場合、関係解析部111は、図7において2つ目の依存領域組を依存領域組リスト123に登録する。
ステップS124において、関係解析部111は、未選択の依存要素組が有るか判定する。ステップS124において、未選択の依存要素組を未選択組という。
未選択組が有る場合、処理はステップS121に進む。
未選択組が無い場合、処理はステップS125に進む。
ステップS125において、関係解析部111は、依存領域組リスト123を記憶部120に記憶する。
図3に戻り、ステップS130を説明する。
ステップS130において、利用者は、通信装置104または入出力インタフェース105を介して、違反領域組リスト124を違反依存検出装置100に入力する。
違反解析部112は、違反領域組リスト124を受け付ける。そして、違反解析部112は、違反領域組リスト124を記憶部120に記憶する。
図9に基づいて、違反領域組リスト124の具体例を説明する。
違反領域組リスト124には、1つの依存元違反領域と1つの依存先違反領域とが互いに対応付けられている。つまり、違反領域組リスト124には、1つの違反領域組が登録されている。
違反領域組は、依存元違反領域と依存先違反領域との組である。
具体的には、違反領域組リスト124には、領域Aと領域Bとの組が登録されている。この組は、領域Aに配置される依存元要素から領域Bに配置される依存先要素への依存関係がルール違反であることを意味する。
図3に戻り、ステップS140を説明する。
ステップS140において、違反解析部112は、依存領域組リスト123と違反領域組リスト124とに基づいて、違反要素組リスト125を生成する。
そして、違反解析部112は、違反要素組リスト125を記憶部120に記憶する。また、違反解析部112は、通信装置104と入出力インタフェース105とを介して、違反要素組リスト125を出力する。
図10に基づいて、図7の依存領域組リスト123と図9の違反領域組リスト124とに基づいて生成される違反要素組リスト125を説明する。
違反要素組リスト125には、1つの依存元要素と1つの依存元配置領域と1つの依存先要素と1つの依存先配置領域とが互いに対応付けられている。つまり、違反要素組リスト125には、1つの違反要素組が登録されている。
違反要素組は、依存元要素と依存元配置領域と依存先要素と依存先配置領域との組である。
図11に基づいて、違反解析処理(S140)の詳細を説明する。
ステップS141において、違反解析部112は、依存領域組リスト123から、未選択の依存領域組を1つ選択する。
例えば、違反解析部112は、図7の依存領域組リスト123から、2つ目の依存領域組を選択する。2つ目の依存領域組は、update()と領域Aとfunc3()と領域Bとの組である。
ステップS142およびステップS143は、ステップS141で選択された依存領域組に対して実行される。
ステップS142において、違反解析部112は、依存領域組と一致する違反領域組が違反領域組リスト124に登録されているか判定する。
具体的には、違反解析部112は、依存領域組から依存元配置領域名と依存先配置領域名とを抽出する。そして、違反解析部112は、依存元配置領域名と同じ依存元違反領域名と依存先配置領域名と同じ依存先違反領域名との組が違反領域組リスト124に登録されているか判定する。
例えば、依存領域組における依存元配置領域が領域Aであり、依存領域組における依存先配置領域が領域Bであると仮定する。この場合、違反解析部112は、依存元違反領域が領域Aであり、且つ、依存先違反領域が領域Bである違反領域組が違反領域組リスト124に登録されているか判定する。図9の違反領域組リスト124には、該当する違反領域組が登録されている。したがって、違反解析部112は、依存領域組と一致する違反領域組が違反領域組リスト124に登録されていると判定する。
依存領域組と一致する違反領域組が違反領域組リスト124に登録されている場合、処理はステップS143に進む。
依存領域組と一致する違反領域組が違反領域組リスト124に登録されていない場合、処理はステップS144に進む。
ステップS143において、違反解析部112は、依存領域組と一致する違反領域組を違反要素組リスト125に登録する。
例えば、依存領域組がupdate()と領域Aとfunc3()と領域Bとの組であると仮定する。この場合、違反解析部112は、図10に示すように、依存領域組と一致する違反領域組を違反要素組リスト125に登録する。
ステップS144において、違反解析部112は、未選択の依存領域組が有るか判定する。ステップS144において、未選択の依存領域組を未選択組という。
未選択組が有る場合、処理はステップS141に進む。
未選択組が無い場合、処理はステップS145に進む。
ステップS145において、違反解析部112は、違反要素組リスト125を記憶部120に記憶する。
また、違反解析部112は、違反要素組リスト125を出力する。例えば、違反解析部112は、通信装置104を介して、違反要素組リスト125を他のコンピュータに送信する。または、違反解析部112は、入出力インタフェース105を介して、違反要素組リスト125をディスプレイに表示する。
***実施の形態1の補足***
配置先領域リスト121は、ソースコードとコンパイラの要素配置ルールとを元に生成される。配置先領域リスト121は、人によって手動で生成されてもよいし、ツールまたはスクリプトなどによって自動で生成されてもよい。
依存要素組リスト122は、ソースコードを元に生成される。依存要素組リスト122は、人によって手動で生成されてもよいし、ツールまたはスクリプトなどによって自動で生成されてもよい。
違反領域組リスト124は、ソースコードを元に生成される。違反領域組リスト124は、人によって手動で生成されてもよいし、ツールまたはスクリプトなどによって自動で生成されてもよい。
***実施の形態1の効果***
違反依存検出装置100は違反要素組リスト125を生成することができる。そのため、ソースコードにおいて違反要素組が使用されている箇所を、配置先領域に関する依存関係についての違反箇所として検出することが可能となる。
例えば、図5において、フラッシュメモリの領域Aに書き込まれたアップデート実施プログラムがRAMの領域Cに展開される。そして、フラッシュメモリの領域Bに書き込まれたアップデート対象プログラムに対して消去または書き込みが実施される。この際に、アップデート実施プログラムに含まれるupdate()がアップデート対象プログラムに含まれるfunc3()を呼び出してしまうと実行時異常が発生する。ただし、この異常はアップデート実施プログラムが動作して初めて気付くものであり、アップデート実施プログラムのソースコードをコーディング中に違反箇所を発見することは難しい。一方、実施の形態1により、アップデータ実施プログラムが動作する前に、ソースコード内の違反箇所を検出することが可能である。
また、ルール違反の依存関係が早期に発見されることにより、プログラムの実行時異常の防止とF/Wの開発工数の削減とを図ることができる。
***他の構成***
違反要素組は、依存元配置領域と依存先配置領域とを含まなくてもよい。つまり、違反要素組は、依存元要素と依存先要素との組であってもよい。
実施の形態2.
配置先領域リスト121を生成する形態について、主に実施の形態1と異なる点を図12から図17に基づいて説明する。
***構成の説明***
図12に基づいて、違反依存検出装置100の構成を説明する。
違反依存検出装置100は、さらに、領域解析部113という要素を備える。領域解析部113はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、領域解析部113としてコンピュータを機能させる。
***動作の説明***
図13に基づいて、違反依存検出方法の概要を説明する。
領域解析部113は、配置先アドレスリスト126と記憶領域リスト127とに基づいて、配置先領域リスト121を生成する。
配置先アドレスリスト126は、1つ以上のプログラム要素と1つ以上の配置先アドレスとが互いに対応付けられたリストである。
配置先アドレスは、プログラム要素が配置される記憶領域の位置を示す。具体的には、配置先アドレスは、プログラム要素が配置される記憶領域の先頭アドレスである。
記憶領域リスト127は、1つ以上の記憶領域と1つ以上のアドレス区間とが互いに対応付けられたリストである。
アドレス区間は、記憶領域の範囲を示す。具体的には、アドレス区間は、記憶領域の先頭アドレスと記憶領域の終了アドレスとで表される。
関係解析部111と違反解析部112とについては、実施の形態1で説明した通りである(図2参照)。
図14に基づいて、違反依存検出方法の詳細を説明する。
ステップS210において、利用者は、通信装置104または入出力インタフェース105を介して、配置先アドレスリスト126と記憶領域リスト127とを違反依存検出装置100に入力する。
領域解析部113は、配置先アドレスリスト126と記憶領域リスト127とを受け付ける。そして、領域解析部113は、配置先アドレスリスト126と記憶領域リスト127とを記憶部120に記憶する。
図15に基づいて、図4の配置先領域リスト121を生成するための配置先アドレスリスト126を説明する。
配置先アドレスリスト126には、4つのプログラム要素と4つの配置先アドレスとが互いに対応付けられている。
例えば、update()は「0010H」に対応付けられている。これは、update()が配置される記憶領域の先頭アドレスが「0010H」であることを意味する。
図16に基づいて、図4の配置先領域リスト121を生成するための記憶領域リスト127を説明する。
記憶領域リスト127には、4つの記憶領域と4つのアドレス区間とが互いに対応付けられている。
例えば、領域Aは「0000H~00FFH」に対応付けられている。これは、領域Aの先頭アドレスが「0000H」であり、領域Aの終了アドレスが「00FFH」であることを意味する。
図14に戻り、ステップS220を説明する。
ステップS220において、領域解析部113は、配置先アドレスリスト126と記憶領域リスト127とに基づいて、配置先領域リスト121を生成する。
そして、領域解析部113は、配置先領域リスト121を記憶部120に記憶する。
図17に基づいて、領域解析処理(S220)の詳細を説明する。
ステップS221において、領域解析部113は、配置先アドレスリスト126から、未選択のプログラム要素を1つ選択する。
例えば、領域解析部113は、図15の配置先アドレスリスト126から、update()を選択する。
ステップS222からステップS224は、ステップS221で選択されたプログラム要素に対して実行される。
ステップS222において、領域解析部113は、プログラム要素に対応付けられた配置先アドレスを配置先アドレスリスト126から抽出する。
例えば、プログラム要素がupdate()である場合、領域解析部113は、図15の配置先アドレスリスト126から「0010H」を抽出する。
ステップS223において、領域解析部113は、抽出した配置先アドレスが含まれるアドレス区間を記憶領域リスト127から選択する。
例えば、抽出した配置先アドレスが「0010H」である場合、領域解析部113は、図16の記憶領域リスト127から「0000H~00FFH」を選択する。
そして、領域解析部113は、選択したアドレス区間に対応付けられた記憶領域の名称を記憶領域リスト127から抽出する。抽出される名称を配置先領域名という。
例えば、選択したアドレス区間が「0000H~00FFH」である場合、領域解析部113は、図16の記憶領域リスト127から「領域A」を抽出する。
ステップS224において、領域解析部113は、プログラム要素名と配置先領域名との組を配置先領域リスト121に登録する。
例えば、プログラム要素名が「update()」であり、配置先領域名が「領域A」である場合、領域解析部113は、図4において1つ目の配置先領域情報を配置先領域リスト121に登録する。
ステップS225において、領域解析部113は、未選択のプログラム要素が有るか判定する。ステップS225において、未選択のプログラム要素を未選択要素という。
未選択要素が有る場合、処理はステップS221に進む。
未選択要素が無い場合、処理はステップS226に進む。
ステップS226において、領域解析部113は、配置先領域リスト121を記憶部120に記憶する。
図14に戻り、ステップS230からステップS260を説明する。
ステップS230において、利用者は、通信装置104または入出力インタフェース105を介して、依存要素組リスト122を違反依存検出装置100に入力する。
関係解析部111は、依存要素組リスト122を受け付ける。そして、関係解析部111は、依存要素組リスト122を記憶部120に記憶する。
ステップS240からステップS260は、実施の形態1におけるステップS120からステップS140と同じである(図3参照)。
***実施の形態2の効果***
違反依存検出装置100は、配置先アドレスリスト126と記憶領域リスト127とに基づいて配置先領域リスト121を自動的に生成する。これにより、利用者の負担を減らすことが可能となる。
***他の構成***
配置先アドレスリスト126が、配置先アドレスを示す情報として配置先区間を示してもよい。配置先区間は、プログラム要素が配置される記憶領域のアドレス区間である。具体的には、配置先区間は、先頭アドレスと終了アドレスとで表される。つまり、配置先アドレスリスト126が、配置先アドレスとして、先頭アドレスと終了アドレスとを示してもよい。
プログラム要素のアドレス区間が、記憶領域リスト127に登録されている複数の記憶領域に跨る場合、1つまたは複数の記憶領域がプログラム要素の配置先領域として配置先領域リスト121に登録される。
プログラム要素の複数の配置先領域が配置先領域リスト121に登録された場合、プログラム要素の配置先領域毎に、プログラム要素が含まれる依存領域組が依存領域組リスト123に登録される。つまり、プログラム要素が含まれる複数の依存領域組が依存領域組リスト123に登録される。
プログラム要素が含まれる複数の依存領域組の少なくともいずれかが違反領域組と一致する場合、プログラム要素が含まれる違反要素組が違反要素組リスト125に登録される。
実施の形態3.
配置先アドレスリスト126を生成する形態について、主に実施の形態2と異なる点を図18から図20に基づいて説明する。
***構成の説明***
図18に基づいて、違反依存検出装置100の構成を説明する。
違反依存検出装置100は、さらに、アドレス解析部114という要素を備える。アドレス解析部114はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、アドレス解析部114としてコンピュータを機能させる。
***動作の説明***
図19に基づいて、違反依存検出方法の概要を説明する。
アドレス解析部114は、ソースコード128を解析し、解析結果に基づいて配置先アドレスリスト126を生成する。
ソースコード128は、F/W、すなわち、コンピュータプログラムの元となる文字の羅列である。つまり、ソースコード128は、コンピュータに対する一連の指示が記述されたものである。
関係解析部111と違反解析部112と領域解析部113とについては、実施の形態2で説明した通りである(図13参照)。
図20に基づいて、違反依存検出方法の詳細を説明する。
ステップS310において、利用者は、通信装置104または入出力インタフェース105を介して、ソースコード128を違反依存検出装置100に入力する。
アドレス解析部114は、ソースコード128を受け付ける。そして、アドレス解析部114は、ソースコード128を記憶部120に記憶する。
ステップS320において、アドレス解析部114は、ソースコード128に基づいて、配置先アドレスリスト126を生成する。
そして、アドレス解析部114は、配置先アドレスリスト126を記憶部120に記憶する。
具体的には、アドレス解析部114は、配置先アドレスリスト126を以下のように生成する。
アドレス解析部114は、使用されるリンカに対応するソースコード記述方式に従って、ソースコード128を解析する。アドレス解析部114は、解析結果に基づいて、各プログラム要素の配置先アドレスを求める。そして、アドレス解析部114は、各プログラム要素の配置先アドレスをリスト化することによって、配置先アドレスリスト126を生成する。
ARMリンカが使用される場合、ソースコード128のファイル群はCファイルとスキャッタファイルとを含む。この場合、アドレス解析部114は、Cファイルを解析することによって、各プログラム要素の配置先セクションを求める。また、アドレス解析部114は、スキャッタファイル(の実行領域記述など)を解析することによって、各セクションの配置先アドレスを求める。そして、アドレス解析部114は、各プログラム要素の配置先セクションと各セクションの配置先アドレスとを互いに対応付けることによって、配置先アドレスリスト126を生成する。
プログラム要素の配置先セクションおよびプログラム要素の配置先アドレスが明示的にソースコード128に記述されていない場合、アドレス解析部114は、使用されるリンカの仕様に基づいて、プログラム要素の配置先アドレスを求める。例えば、依存先要素の配置先は依存元要素の配置先に従う、という仕様のリンクが使用される場合、アドレス解析部114は、ソースコード128を解析することによって依存元要素の配置先アドレスを求め、依存元要素の配置先アドレスに基づいて依存先要素の配置先アドレスを求める。
ステップS330において、利用者は、通信装置104または入出力インタフェース105を介して、記憶領域リスト127を違反依存検出装置100に入力する。
領域解析部113は、記憶領域リスト127を受け付ける。そして、領域解析部113は、記憶領域リスト127を記憶部120に記憶する。
ステップS340からステップS380は、実施の形態2におけるステップS220からステップS260と同じである(図14参照)。
***実施の形態3の効果***
違反依存検出装置100は、ソースコード128を解析することによって、配置先アドレスリスト126を自動的に生成する。これにより、利用者の負担を減らすことが可能となる。
***他の構成***
アドレス解析部114は、ソースコード128の解析結果に基づいて、記憶領域リスト127を生成してもよい。この場合、アドレス解析部114は、ソースコード128を解析することによって、各セクションのアドレス空間を求める。そして、アドレス解析部114は、各セクションのアドレス空間をリスト化することによって、記憶領域リスト127を生成する。
実施の形態4.
配置先領域リスト121を生成する形態について、主に実施の形態1と異なる点を図21から図23に基づいて説明する。
***構成の説明***
図21に基づいて、違反依存検出装置100の構成を説明する。
違反依存検出装置100は、さらに、領域解析部115という要素を備える。領域解析部115はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、領域解析部115としてコンピュータを機能させる。
***動作の説明***
図22に基づいて、違反依存検出方法の概要を説明する。
領域解析部115は、ソースコード128を解析し、解析結果に基づいて配置先領域リスト121を生成する。
ソースコード128は、F/W、すなわち、コンピュータプログラムの元となる文字の羅列である。つまり、ソースコード128は、コンピュータに対する一連の指示が記述されたものである。
関係解析部111と違反解析部112とについては、実施の形態1で説明した通りである(図2参照)。
図23に基づいて、違反依存検出方法の詳細を説明する。
ステップS410において、利用者は、通信装置104または入出力インタフェース105を介して、ソースコード128を違反依存検出装置100に入力する。
領域解析部115は、ソースコード128を受け付ける。そして、領域解析部115は、ソースコード128を記憶部120に記憶する。
ステップS420において、領域解析部115は、ソースコード128に基づいて、配置先領域リスト121を生成する。
そして、領域解析部115は、配置先領域リスト121を記憶部120に記憶する。
具体的には、領域解析部115は、配置先領域リスト121を以下のように生成する。
領域解析部115は、使用されるリンカに対応するソースコード記述方式に従って、ソースコード128を空き席する。領域解析部115は、解析結果に基づいて、各プログラム要素の配置先領域を求める。そして、領域解析部115は、各プログラム要素の配置先領域を配置先領域リスト121に登録する。
ARMリンカが使用される場合、ソースコード128のファイル群はCファイルとスキャッタファイルとを含む。この場合、領域解析部115は、Cファイルとスキャッタファイルとを解析することによって、各プログラム要素の配置先セクションを求める。配置先セクションは配置先領域に相当する。
プログラム要素の配置先セクションが明示的にソースコード128に記述されていない場合、違反要素組リスト125は、使用されるリンカの仕様に基づいて、プログラム要素の配置先セクションを求める。例えば、依存先要素の配置先は依存元要素の配置先に従う、という仕様のリンカが使用される場合、領域解析部115は、ソースコード128を解析することによって依存元要素の配置先セクションを求め、依存元要素の配置先セクションに基づいて依存先要素の配置先セクションを求める。
ステップS430において、利用者は、通信装置104または入出力インタフェース105を介して、依存要素組リスト122を違反依存検出装置100に入力する。
関係解析部111は、依存要素組リスト122を受け付ける。そして、関係解析部111は、依存要素組リスト122を記憶部120に記憶する。
ステップS440からステップS460は、実施の形態1におけるステップS120からステップS140と同じである(図3参照)。
***実施の形態4の効果***
違反依存検出装置100は、ソースコード128を解析することによって、配置先領域リスト121を自動的に生成する。これにより、利用者の負担を減らすことが可能となる。
実施の形態5.
依存要素組リスト122を生成する形態について、主に実施の形態1と異なる点を図24から図26に基づいて説明する。
***構成の説明***
図24に基づいて、違反依存検出装置100の構成を説明する。
違反依存検出装置100は、さらに、関係抽出部116という要素を備える。関係抽出部116はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、関係抽出部116としてコンピュータを機能させる。
***動作の説明***
図25に基づいて、違反依存検出方法の概要を説明する。
関係抽出部116は、ソースコード128から1つ以上の依存元要素と1つ以上の依存先要素とを抽出し、依存要素組リスト122を生成する。
ソースコード128は、F/W、すなわち、コンピュータプログラムの元となる文字の羅列である。つまり、ソースコード128は、コンピュータに対する一連の指示が記述されたものである。
関係解析部111と違反解析部112とについては、実施の形態1で説明した通りである(図2参照)。
図26に基づいて、違反依存検出方法の詳細を説明する。
ステップS510において、利用者は、通信装置104または入出力インタフェース105を介して、ソースコード128を違反依存検出装置100に入力する。
関係抽出部116は、ソースコード128を受け付ける。そして、関係抽出部116は、ソースコード128を記憶部120に記憶する。
ステップS520において、関係抽出部116は、ソースコード128に基づいて依存要素組リスト122を生成する。
そして、関係抽出部116は、依存要素組リスト122を記憶部120に記憶する。
具体的には、関係抽出部116は、依存要素組リスト122を以下のように生成する。
関係抽出部116は、ソースコード128から1つ以上の依存要素組を抽出する。そして、関係抽出部116は、抽出した1つ以上の依存要素組をリスト化することによって、依存要素組リスト122を生成する。
ステップS530において、利用者は、通信装置104または入出力インタフェース105を介して、配置先領域リスト121を違反依存検出装置100に入力する。
関係解析部111は、配置先領域リスト121を受け付ける。そして、関係解析部111は、配置先領域リスト121を記憶部120に記憶する。
ステップS540からステップS560は、実施の形態1におけるステップS120からステップS140と同じである(図3参照)。
***実施の形態5の効果***
違反依存検出装置100は、ソースコード128に基づいて依存要素組リスト122を自動的に生成する。これにより、利用者の負担を減らすことが可能となる。
***他の構成***
実施の形態5に実施の形態2および実施の形態3を適用してもよい。
つまり、違反依存検出装置100は、配置先アドレスリスト126と記憶領域リスト127とに基づいて配置先領域リスト121を生成する領域解析部113を備えてもよい。さらに、違反依存検出装置100は、ソースコード128に基づいて配置先アドレスリスト126を生成するアドレス解析部114を備えてもよい。
実施の形態5に実施の形態4を適用してもよい。
つまり、違反依存検出装置100は、ソースコード128に基づいて配置先領域リスト121を生成する領域解析部115を備えてもよい。
実施の形態6.
ソースコード128において違反要素組が使用される箇所にしるしを付ける形態について、主に実施の形態1と異なる点を図27から図30に基づいて説明する。
***構成の説明***
図27に基づいて、違反依存検出装置100の構成を説明する。
違反依存検出装置100は、さらに、装飾部117という要素を備える。装飾部117はソフトウェアによって実現される。
違反依存検出プログラムは、さらに、装飾部117としてコンピュータを機能させる。
***動作の説明***
図28に基づいて、違反依存検出方法の概要を説明する。
装飾部117は、違反要素組リスト125に基づいてソースコード128の中の違反箇所を見つけ、ソースコード128の中の違反箇所にしるしを付ける。
違反箇所は、依存元違反要素が依存先違反要素を使用する箇所である。
依存元違反要素は、違反要素組に含まれる依存元要素である。つまり、依存元違反要素は、依存元違反領域に配置される依存元要素である。
依存先違反要素は、違反要素組に含まれる依存先要素である。つまり、依存先違反要素は、依存先違反領域に配置される依存先要素である。
ソースコード128は、F/W、すなわち、コンピュータプログラムの元となる文字の羅列である。つまり、ソースコード128は、コンピュータに対する一連の指示が記述されたものである。
ソースコード129は、違反箇所にしるしが付けられたソースコード128である。
関係解析部111と違反解析部112とについては、実施の形態1で説明した通りである(図2参照)。
図29に基づいて、違反依存検出方法の詳細を説明する。
ステップS610からステップS640は、実施の形態1におけるステップS110からステップS140と同じである(図3参照)。
ステップS650において、利用者は、通信装置104または入出力インタフェース105を介して、ソースコード128を違反依存検出装置100に入力する。
装飾部117は、ソースコード128を受け付ける。そして、装飾部117は、ソースコード128を記憶部120に記憶する。
ステップS660において、装飾部117は、違反要素組リスト125に基づいてソースコード128の中の違反箇所を見つけ、ソースコード128の中の違反箇所にしるしを付ける。つまり、装飾部117は、ソースコード128の中の違反箇所に対してマーキングを行う。
そして、装飾部117は、ソースコード129を記憶部120に記憶する。また、装飾部117は、通信装置104と入出力インタフェース105とを介して、ソースコード129を出力する。ソースコード129は、違反箇所にしるしが付けられたソースコード128である。
図30に基づいて、装飾処理(S660)の詳細を説明する。
ステップS661において、装飾部117は、違反要素組リスト125から、未選択の違反要素組を1つ選択する。
例えば、装飾部117は、図10の違反要素組リスト125から、違反要素組を選択する。依存元違反要素はupdate()であり、依存先違反要素はfunc3()である。
ステップS662およびステップS663は、ステップS661で選択された違反要素組に対して実行される。
ステップS662において、装飾部117は、ソースコード128から、違反要素組に対応する違反箇所を見つける。
例えば、依存元違反要素はupdate()であり、依存先違反要素はfunc3()であると仮定する。この場合、装飾部117は、update()がfunc3()を呼び出す箇所をソースコード128から見つける。見つかった箇所が違反箇所である。
ステップS663において、装飾部117は、見つかった違反箇所にしるしを付ける。
例えば、装飾部117は、違反箇所に対して色付けを行う。
ステップS664において、装飾部117は、未選択の違反要素組が有るか判定する。ステップS664において、未選択の違反要素組を未選択組という。
未選択組が有る場合、処理はステップS661に進む。
未選択組が無い場合、処理はステップS665に進む。
ステップS665において、装飾部117は、ソースコード129を記憶部120に記憶する。ソースコード129は、違反箇所にしるしが付けられたソースコード128である。
また、装飾部117は、ソースコード129を出力する。例えば、装飾部117は、通信装置104を介して、ソースコード129を他のコンピュータに送信する。または、装飾部117は、入出力インタフェース105を介して、ソースコード129をディスプレイに表示する。
***実施の形態6の効果***
違反依存検出装置100は、ソースコード128の中の違反箇所に自動的にしるしを付けることができる。これにより、コーディングにおいて早期に違反箇所を検出することが可能となる。
***他の構成***
装飾部117は、ソースコード128から依存元違反要素と依存先違反要素とのそれぞれの定義箇所を見つけ、ソースコード128の中のそれぞれの定義箇所にしるしを付けてもよい。
また、装飾部117は、依存領域組リスト123に基づいて、依存元違反要素の定義箇所に依存元配置領域に対応するしるしを付けると共に、依存先違反要素の定義箇所に依存先配置領域に対応するしるしを付けてもよい。
装飾部117は、違反箇所リストを生成し、違反箇所リストを記憶部120に記憶してもよい。さらに、装飾部117は、違反箇所リストをソースコード129と同じように出力してもよい。違反箇所リストは、1つ以上の違反箇所を示すリストである。
実施の形態6に実施の形態2および実施の形態3を適用してもよい。
つまり、違反依存検出装置100は、配置先アドレスリスト126と記憶領域リスト127とに基づいて配置先領域リスト121を生成する領域解析部113を備えてもよい。さらに、違反依存検出装置100は、ソースコード128に基づいて配置先アドレスリスト126を生成するアドレス解析部114を備えてもよい。
実施の形態6に実施の形態4を適用してもよい。
つまり、違反依存検出装置100は、ソースコード128に基づいて配置先領域リスト121を生成する領域解析部115を備えてもよい。
実施の形態6に実施の形態5を適用してもよい。
つまり、違反依存検出装置100は、ソースコード128に基づいて依存要素組リスト122を生成する関係抽出部116を備えてもよい。
***実施の形態の補足***
違反依存検出装置100は、配置先領域リスト121と依存要素組リスト122と依存領域組リスト123と違反領域組リスト124と配置先アドレスリスト126と記憶領域リスト127とのそれぞれを違反要素組リスト125と同じように出力してもよい。さらに、違反依存検出装置100は、ソースコード128をソースコード129と同じように出力してもよい。出力タイミングは任意である。各リストおよびソースコード128が出力されることにより、利用者が途中経過を確認することが可能となる。
図31に基づいて、違反依存検出装置100のハードウェア構成を説明する。
違反依存検出装置100は処理回路109を備える。
処理回路109は、関係解析部111と違反解析部112と領域解析部113とアドレス解析部114と領域解析部115と関係抽出部116と装飾部117とを実現するハードウェアである。
処理回路109は、専用のハードウェアであってもよいし、メモリ102に格納されるプログラムを実行するプロセッサ101であってもよい。
処理回路109が専用のハードウェアである場合、処理回路109は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC、FPGAまたはこれらの組み合わせである。
ASICはApplication Specific Integrated Circuitの略称であり、FPGAはField Programmable Gate
Arrayの略称である。
違反依存検出装置100は、処理回路109を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路109の役割を分担する。
処理回路109において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
このように、処理回路109はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
100 違反依存検出装置、101 プロセッサ、102 メモリ、103 ストレージ、104 通信装置、105 入出力インタフェース、109 処理回路、111 関係解析部、112 違反解析部、113 領域解析部、114 アドレス解析部、115 領域解析部、116 関係抽出部、117 装飾部、120 記憶部、121 配置先領域リスト、122 依存要素組リスト、123 依存領域組リスト、124 違反領域組リスト、125 違反要素組リスト、126 配置先アドレスリスト、127 記憶領域リスト、128 ソースコード、129 ソースコード。

Claims (11)

  1. ソースコードに含まれる1つ以上のプログラム要素である1つ以上の依存元要素と、1つ以上の依存元要素が配置される1つ以上の記憶領域である1つ以上の依存元配置領域と、1つ以上のプログラム要素であり1つ以上の依存元要素に依存する1つ以上の依存先要素と、1つ以上の依存先要素が配置される1つ以上の記憶領域である1つ以上の依存先配置領域と、が互いに対応付けられた依存領域組リスト、及び、1つ以上の記憶領域である1つ以上の依存元違反領域と、1つ以上の記憶領域である1つ以上の依存先違反領域と、が互いに対応付けられた違反領域組リストに基づいて、依存元違反領域に配置される依存元要素と依存先違反領域に配置される依存先要素との組を1つ以上示す違反要素組リストを生成する違反解析部
    を備える違反依存検出装置。
  2. 1つ以上のプログラム要素と1つ以上のプログラム要素が配置される1つ以上の記憶領域である1つ以上の配置先領域とが互いに対応付けられた配置先領域リスト、及び、前記1つ以上の依存元要素と前記1つ以上の依存先要素とが互いに対応付けられた依存要素組リストに基づいて、前記依存領域組リストを生成する関係解析部を備える
    請求項1に記載の違反依存検出装置。
  3. 1つ以上のプログラム要素と1つ以上のプログラム要素が配置される1つ以上の記憶領域の位置を示す1つ以上の配置先アドレスとが互いに対応付けられた配置先アドレスリスト、及び、1つ以上の記憶領域と1つ以上の記憶領域の範囲を示す1つ以上のアドレス区間とが互いに対応付けられた記憶領域リストに基づいて、前記配置先領域リストを生成する領域解析部を備える
    請求項2に記載の違反依存検出装置。
  4. 前記配置先アドレスリストが、配置先アドレスとして、プログラム要素が配置される記憶領域の先頭アドレスとプログラム要素が配置される記憶領域の終了アドレスとを示す
    請求項3に記載の違反依存検出装置。
  5. 前記ソースコードを解析し、解析結果に基づいて前記配置先アドレスリストを生成するアドレス解析部を備える
    請求項3または請求項4に記載の違反依存検出装置。
  6. 前記ソースコードを解析し、解析結果に基づいて前記配置先領域リストを生成する領域解析部を備える
    請求項2に記載の違反依存検出装置。
  7. 前記ソースコードから前記1つ以上の依存元要素と前記1つ以上の依存先要素とを抽出し、前記依存要素組リストを生成する関係抽出部を備える
    請求項2から請求項6のいずれか1項に記載の違反依存検出装置。
  8. 前記違反要素組リストは、依存元違反領域に配置される依存元要素である依存元違反要素と依存先違反領域に配置される依存先要素である依存先違反要素との組を1つ以上示し、
    前記違反依存検出装置は、さらに、
    前記違反要素組リストに基づいて前記ソースコードから依存元違反要素が依存先違反要素を使用する違反箇所を見つけ、前記ソースコードの中の前記違反箇所にしるしを付ける装飾部を備える
    請求項1から請求項7のいずれか1項に記載の違反依存検出装置。
  9. 前記装飾部は、前記ソースコードから依存元違反要素と依存先違反要素とのそれぞれの定義箇所を見つけ、前記ソースコードの中のそれぞれの定義箇所にしるしを付ける
    請求項8に記載の違反依存検出装置。
  10. 前記装飾部は、前記依存領域組リストに基づいて、依存元違反要素の定義箇所に依存元配置領域に対応するしるしを付けると共に、依存先違反要素の定義箇所に依存先配置領域に対応するしるしを付ける
    請求項9に記載の違反依存検出装置。
  11. ソースコードに含まれる1つ以上のプログラム要素である1つ以上の依存元要素と、1つ以上の依存元要素が配置される1つ以上の記憶領域である1つ以上の依存元配置領域と、1つ以上のプログラム要素であり1つ以上の依存元要素に依存する1つ以上の依存先要素と、1つ以上の依存先要素が配置される1つ以上の記憶領域である1つ以上の依存先配置領域と、が互いに対応付けられた依存領域組リスト、及び、1つ以上の記憶領域である1つ以上の依存元違反領域と、1つ以上の記憶領域である1つ以上の依存先違反領域と、が互いに対応付けられた違反領域組リストに基づいて、依存元違反領域に配置される依存元要素と依存先違反領域に配置される依存先要素との組を1つ以上示す違反要素組リストを生成する違反解析部
    としてコンピュータを機能させるための違反依存検出プログラム。
JP2018110946A 2018-06-11 2018-06-11 違反依存検出装置および違反依存検出プログラム Active JP7050587B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018110946A JP7050587B2 (ja) 2018-06-11 2018-06-11 違反依存検出装置および違反依存検出プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018110946A JP7050587B2 (ja) 2018-06-11 2018-06-11 違反依存検出装置および違反依存検出プログラム

Publications (2)

Publication Number Publication Date
JP2019215607A JP2019215607A (ja) 2019-12-19
JP7050587B2 true JP7050587B2 (ja) 2022-04-08

Family

ID=68918700

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018110946A Active JP7050587B2 (ja) 2018-06-11 2018-06-11 違反依存検出装置および違反依存検出プログラム

Country Status (1)

Country Link
JP (1) JP7050587B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001052297A1 (fr) * 2000-01-14 2001-07-19 Hamamatsu Photonics K.K. Surface photoemettrice et photodetecteur utilisant cette surface photoemettrice

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325150A (ja) 2000-03-10 2001-11-22 Fujitsu Ltd アクセス監視装置及びアクセス監視方法
US20100131803A1 (en) 2008-11-25 2010-05-27 Express Logic Computation of stack usage in embedded computing systems
JP2016091138A (ja) 2014-10-31 2016-05-23 日立オートモティブシステムズ株式会社 ソースコード検証システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325150A (ja) 2000-03-10 2001-11-22 Fujitsu Ltd アクセス監視装置及びアクセス監視方法
US20100131803A1 (en) 2008-11-25 2010-05-27 Express Logic Computation of stack usage in embedded computing systems
JP2016091138A (ja) 2014-10-31 2016-05-23 日立オートモティブシステムズ株式会社 ソースコード検証システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001052297A1 (fr) * 2000-01-14 2001-07-19 Hamamatsu Photonics K.K. Surface photoemettrice et photodetecteur utilisant cette surface photoemettrice

Also Published As

Publication number Publication date
JP2019215607A (ja) 2019-12-19

Similar Documents

Publication Publication Date Title
US7231627B2 (en) Merging a hardware design language source file with a separate assertion file
JPH11242646A (ja) アクセサリ内資源オフセット機構
JP2006164240A (ja) データ処理装置および印刷設定処理方法およびコンピュータが読み取り可能な制御プログラムを格納した記憶媒体および制御プログラム
US20070101115A1 (en) Information processing device, bios processing method and program
JP5778296B2 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
JP2012530972A (ja) 管理されたシステム拡張子機能
US9489209B2 (en) Bios graphical setup engine
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
JP7050587B2 (ja) 違反依存検出装置および違反依存検出プログラム
JP2005250975A (ja) 情報処理装置とデバイスドライバのロード方法並びにプログラム
JP6567212B2 (ja) 等価性検証装置および等価性検証プログラム
JP6878707B2 (ja) 試験装置、試験方法および試験プログラム
CN107077365B (zh) 有选择地加载预编译的头部和/或其部分
US7080243B2 (en) Method and system for comparing firmware images
US7577831B2 (en) Relocating of system management interface code within an information handling system
US7831963B2 (en) Method for tracing a program executed on a system comprising a plurality of processing units, and a system comprising a plurality of processing units
JP2009020695A (ja) 情報処理装置及びシステム
TWI444824B (zh) 虛擬機器記憶體的鑑識方法與電腦系統
US20220147343A1 (en) Tranistionary firmware packages
JP2012018641A (ja) ソフトウェア開発システム
JP6482362B2 (ja) ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム
JP2007272303A (ja) メモリ破壊検出機能付きシミュレータ
JP5681956B2 (ja) Usbメモリに内蔵したプログラムをそのまま実行させる方法
JP3183398B2 (ja) 資源構成情報管理方式
JP6541912B2 (ja) 情報処理装置およびアクセス管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220218

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220329

R150 Certificate of patent or registration of utility model

Ref document number: 7050587

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150