JP2007018254A - 言語処理装置 - Google Patents

言語処理装置 Download PDF

Info

Publication number
JP2007018254A
JP2007018254A JP2005199047A JP2005199047A JP2007018254A JP 2007018254 A JP2007018254 A JP 2007018254A JP 2005199047 A JP2005199047 A JP 2005199047A JP 2005199047 A JP2005199047 A JP 2005199047A JP 2007018254 A JP2007018254 A JP 2007018254A
Authority
JP
Japan
Prior art keywords
object code
instruction
instruction sequence
execution
common
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.)
Pending
Application number
JP2005199047A
Other languages
English (en)
Inventor
Hiroaki Sato
弘明 佐藤
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
Kioxia Systems Co Ltd
Original Assignee
Toshiba Corp
Toshiba Memory Systems Co Ltd
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, Toshiba Memory Systems Co Ltd filed Critical Toshiba Corp
Priority to JP2005199047A priority Critical patent/JP2007018254A/ja
Publication of JP2007018254A publication Critical patent/JP2007018254A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 オブジェクトコードのコードサイズあるいは実行速度を実際に実行される命令の回数に基づいて最適化することが可能な言語処理装置を提供する。
【解決手段】 言語処理装置1は、オブジェクトコード100を探索して同じ実行順の並びからなる命令列の共通部分を抽出する共通命令列抽出部11と、オブジェクトコード100の実行結果が記録されたトレースデータ200を解析して共通命令列抽出部11で抽出された共通命令列の実行回数を計数する実行回数計数部12と、実行回数計数部12で計数された共通命令列の実行回数を予め定めたしきい値と比較する比較部13と、共通命令列の実行回数がしきい値以下のときは、オブジェクトコード100に対して共通命令列抽出部11で抽出された共通命令列を1箇所にまとめる命令共通化処理を行い、処理後オブジェクトコード300を出力する命令共通化処理部14とを有する。
【選択図】 図1

Description

本発明は、高級言語で書かれるプログラムの言語処理装置に関し、特にコンパイラから出力されるオブジェクトコードを処理する言語処理装置に関する。
C言語などの高級言語で記述されたソースプログラムは、コンパイラで実行形式のオブジェクトコードに変換される。このとき、オブジェクトコードのサイズができるだけ小さいことが望まれることがある。その場合、コンパイラは、ソースプログラムの複数の場所で同じ命令列が使用されていた場合、その命令列を1つにまとめることでオブジェクトコードのコードサイズを小さくすることができる。この場合、元の命令列の場所にはジャンプ命令などが挿入され、共通化された命令列に制御を移すようにすることが一般的に行われる。しかし、このようにして生成されたオブジェクトコードは、コードサイズは小さくなるが、ジャンプ命令などが挿入された分だけ実行速度が遅くなる。
これに対して、実行速度を速めるためのコンパイル処理として、関数のインライン化がある(例えば、特許文献1参照。)。インライン化処理では、関数の呼び出しの代わりに、関数のコードが関数の呼び出し位置に埋め込まれる。関数の呼び出しを行わないので実行速度は速くなるが、関数のコードが埋め込まれた分だけオブジェクトコードのコードサイズが大きくなる。
そこで、オブジェクトコードには、コードサイズと実行速度のバランスのとれた最適化が望まれる。しかし、従来のコンパイラはソースプログラムの静的解析により最適化を図っているため、実行速度の低下を防ぎながら同時に命令列の共通化を図ることができないという問題があった。これは、ソースプログラムの静的解析では、命令が実際に実行される回数が把握できないためである。
特開2004−62234号公報 (第4ページ、図1)
そこで、本発明の目的は、オブジェクトコードのコードサイズあるいは実行速度を実際に実行される命令の回数に基づいて最適化することが可能な言語処理装置を提供することにある。
本発明の一態様によれば、オブジェクトコードの実行結果を記録したトレースデータを解析して前記オブジェクトコード中に記述された同じ実行順の命令列の並びからなる共通部分の実行回数データを生成し、前記実行回数データに基づいて前記オブジェクトコードに対して前記共通部分をまとめる処理を行うことを特徴とする言語処理装置が提供される。
また、本発明の別の一態様によれば、オブジェクトコードを探索して同じ実行順の命令列の並びからなる共通部分を抽出する抽出手段と、前記オブジェクトコードの実行結果を記録したトレースデータを解析して前記共通部分の実行回数を計数する計数手段と、前記実行回数を予め定めたしきい値と比較する比較手段と、前記比較の結果、前記実行回数が前記しきい値以下のときは、前記共通部分を1箇所にまとめて記述するよう前記オブジェクトコードを書き直す命令共通化処理手段とを有することを特徴とする言語処理装置が提供される。
さらに、本発明の別の一態様によれば、オブジェクトコードの実行結果を記録したトレースデータを解析して命令列の実行回数データを生成し、前記命令列の実行回数データに基づいて前記オブジェクトコードに含まれる関数のインライン化処理を行うことを特徴とする言語処理装置が提供される。
また、本発明の別の一態様によれば、オブジェクトコードの実行結果を記録したトレースデータを解析して命令列ごとの実行回数を計数する計数手段と、前記実行回数を予め定めたしきい値と比較する比較手段と、前記実行回数が前記しきい値を超えた命令列が関数呼び出し命令を含むかどうかを検査する検査手段と、前記検査により前記関数呼び出し命令を含むことが判明した前記実行回数が前記しきい値を超える命令列に含まれる前記関数呼び出し命令をインライン化するよう前記オブジェクトコードを書き直すインライン化処理手段とを有することを特徴とする言語処理装置が提供される。
本発明によれば、実際に実行される命令の回数に基づいて命令の共通化あるいは関数のインライン化を行うので、オブジェクトコードのコードサイズあるいは実行速度を最適化することができる。
以下、本発明の実施例を図面を参照して説明する。
図1は、本発明の実施例1に係る言語処理装置の構成を示すブロック図である。
本実施例の言語処理装置1は、オブジェクトコード100をアドレスの小さい方から探索して同じ実行順の並びからなる命令列の共通部分を抽出する共通命令列抽出部11と、オブジェクトコード100の実行結果が記録されたトレースデータ200を解析して共通命令列抽出部11で抽出された共通命令列の実行回数を計数する実行回数計数部12と、実行回数計数部12で計数された共通命令列の実行回数を予め定めたしきい値と比較する比較部13と、共通命令列の実行回数がしきい値以下のときは、オブジェクトコード100に対して共通命令列抽出部11で抽出された共通命令列を1箇所にまとめる命令共通化処理を行い、処理後オブジェクトコード300を出力する命令共通化処理部14とを有する。
共通命令列抽出部11は、一般的な静的探索アルゴリズムを用い、共通部分として抽出する共通命令列の範囲が、予め指定された最小値以上のできるだけ広い範囲となるようオブジェクトコード100をアドレスの小さい方から探索する。ここで、探索範囲の最小値を指定するのは、偶然並んだ短いコード列の並びが共通部分として抽出されるのを防ぐためである。探索の結果として、共通命令列が配置されているアドレス範囲を総て記録する。すなわち、共通命令列が複数の場所に配置されているときは、その配置されている複数の場所のアドレス範囲を総て記録する。ただし、抽出する共通命令列には、ジャンプ命令、分岐命令は含まないようにする。
実行回数計数部12は、トレースデータ200に記録されているアドレスデータを解析し、共通命令列抽出部11で抽出された共通命令列が配置されているアドレス範囲の現れる回数を計数する。
比較部13は、実行回数計数部12で計数された共通命令列の実行回数を予め定めたしきい値と比較し、共通命令列の実行回数がしきい値以下のときは、命令共通化処理部14へ命令共通化を指示する。
このとき、しきい値は任意に定めることができる。このしきい値を大きくすると、命令共通化処理部14で共通化する命令列が増え、コードサイズを小さくすることができるが。しかし、共通化する命令列が増えると、実行時の共通命令列の呼び出しの回数が増加し、実行速度は低下する。そこで、実行速度の低下を抑えたいときは、比較部13に与えるしきい値を小さくする。
命令共通化処理部14は、オブジェクトコード100の中の複数の場所に記述されていた共通命令列を1つの共通命令列部分に記述する。その代わり、共通命令列が記述されていた元の場所には共通命令列部分へのジャンプ命令を記述する。また、共通命令列部分の処理が終了したときに共通命令列が記述されていた元の場所へ戻るためのリターン命令を共通命令列部分の最後に記述する。このようにオブジェクトコード100を書き直して、処理後オブジェクトコード300を生成する。
次に、本実施例の言語処理装置1の処理例を図2〜図6を用いて説明する。なお、ここでは、比較部13に与えるしきい値を10として説明する。
図2〜図4に、言語処理装置1が、オブジェクトコード100から共通命令列を抽出し、命令共通化処理を行って処理後オブジェクトコード300を生成したときの例を示す。
図2は、共通命令列抽出部11がオブジェクトコード100から共通命令列Aを抽出した例を示す。
共通命令列抽出部11は、図2(a)に示したオブジェクトコード100をアドレスの小さい方から探索し、アドレス0x0020〜アドレス0x0040の範囲に記述された処理A1、アドレス0x0060〜アドレス0x0080の範囲に記述された処理A2およびアドレス0x00a0〜アドレス0x00c0の範囲に記述された処理A3が、図2(b)に示す共通命令列Aであることを抽出する。
共通命令列抽出部11は、抽出結果として、処理A1、処理A2、処理A3が記述されていたアドレス範囲0x0020〜0x0040、0x0060〜0x0080、0x00a0〜0x00c0を記録する。これらのアドレス範囲は、オブジェクトコード100を実行するときに、各処理が配置されるメモリのアドレスを示す。
図3は、実行回数計数部12の動作を示す図である。
トレースデータ200に記録されているアドレスデータを解析し、共通命令列抽出部11の抽出結果として記録されたアドレス範囲0x0020〜0x0040、0x0060〜0x0080、0x00a0〜0x00c0が現れる回数を計数する。
図3に示す例では、アドレス範囲0x0020〜0x0040、0x0060〜0x0080、0x00a0〜0x00c0が1回ずつ現れたため、実行回数計数部12は計数結果3を出力する。
比較部13は、この計数結果3をしきい値10と比較する。計数結果3がしきい値10以下であるため、比較部13は命令共通化処理部14へ命令共通化を指示する。
この指示を受けて、命令共通化処理部14は、オブジェクトコード100に対して、共通命令列抽出部11で抽出された共通命令列Aを1箇所にまとめる命令共通化処理を行う。
図4は、命令共通化処理部14による命令共通化処理が行われて生成された処理後オブジェクトコード300の例を示す図である。
共通命令列Aに記述されていた命令列は、common_1というラベルが付けられた共通命令列部分に記述される。この共通命令列部分に共通命令列Aを記述する代わりに、元の処理A1、処理A2、処理A3が記述されていた場所には、common_1へのジャンプ命令(j common_1)が記述される。
これにより、処理A1、処理A2、処理A3でジャンプ命令(j common_1)が実行されると、処理はcommon_1に記述された共通命令列Aの処理に移る。この共通命令列Aの処理が終わると、処理A1、処理A2、処理A3の処理を戻す必要がある。そこで、共通命令列Aの後に処理A1、処理A2、処理A3へ処理を戻すためのリターン命令(jr r30)が追加される。ここで、r30は、戻り位置が書き込まれたレジスタの名前である。
このように、この例では、命令共通化処理部14による命令共通化処理が行われ、元のオブジェクトコード100では3箇所に書かれていた共通命令列Aは、処理後オブジェクトコード300では1箇所にまとめられる。従って、元のオブジェクトコード100に対して処理後オブジェクトコード300は小さくなる。一方、実行速度面で見ると、実行速度を低下させる要因となるジャンプ命令を3回しか使わない。そのため、実行速度の低下が少なくて済む。
これに対して、命令共通化処理部14による命令共通化処理が行われない例を図5〜図6に示す。
図5は、共通命令列抽出部11がオブジェクトコード100から共通命令列Bを抽出した例を示す。
共通命令列抽出部11は、図5(a)に示したオブジェクトコード100をアドレスの小さい方から探索し、アドレス0x0000〜アドレス0x0014の範囲に記述された処理B1、アドレス0x0028〜アドレス0x003cの範囲に記述された処理B2、アドレス0x0068〜アドレス0x007cの範囲に記述された処理B3およびアドレス0x00a8〜アドレス0x00bcの範囲に記述された処理B4が、図5(b)に示す共通命令列Bであることを抽出する。
共通命令列抽出部11は、抽出結果として、処理B1、処理B2、処理B3、処理B4が記述されていたアドレス範囲0x0000〜0x0014、0x0028〜0x003c、0x0068〜0x007c、0x00a8〜0x00bcを記録する。
図3は、実行回数計数部12の動作を示す図である。
トレースデータ200に記録されているアドレスデータを解析し、共通命令列抽出部11の抽出結果として記録されたアドレス範囲0x0000〜0x0014、0x0028〜0x003c、0x0068〜0x007c、0x00a8〜0x00bcが現れる回数を計数する。
図3に示す例では、アドレス範囲0x0020〜0x0040が12回、アドレス範囲0x0060〜0x0080、0x00a0〜0x00c0が各1回ずつ現れたため、実行回数計数部12は計数結果15を出力する。
比較部13は、この計数結果15をしきい値10と比較する。計数結果15がしきい値10を超えたため、比較部13は命令共通化処理部14に対して命令共通化の指示を出さない。したがって、この場合、処理後オブジェクトコード300は、元のオブジェクトコード100と同じものとなる。
このように、実行回数計数部12の計数結果がしきい値を超える場合に命令共通化を行わないのは、命令共通化に伴う多数回のジャンプ処理の挿入により実行速度が大幅に低下するのを防止するためである。
このような本実施例の言語処理装置によれば、命令共通化に伴って挿入されるジャンプ命令の回数を任意に設定可能なしきい値により制限できるため、命令共通化による実行速度の低下を所望の範囲内に収めることができる。
図7は、本発明の実施例2に係る言語処理装置の構成を示すブロック図である。
本実施例の言語処理装置2は、トレースデータ200を解析して命令列ごとの実行回数を計数する実行回数計数部21と、実行回数計数部21で計数された命令列ごとの実行回数を予め定めたしきい値と比較する比較部22と、実行回数がしきい値を超えた命令列が関数呼出し命令を含むかどうかを検査する関数呼び出し命令検査部23と、実行回数がしきい値を超えた命令列の関数呼び出し命令をインライン展開するようオブジェクトコード100を書き直して処理後オブジェクトコード400を出力するインライン化処理部24とを有する。
実行回数計数部21は、トレースデータ200に記録されているアドレスデータを解析し、命令列のアドレスごとの実行回数を計数する。
比較部22は、実行回数計数部21で計数された命令列の実行回数を予め定めたしきい値と比較し、命令列の実行回数がしきい値を超える命令列のアドレスを抽出する。
このとき、しきい値は任意に定めることができる。このしきい値を小さくすると、インライン化処理部24でインライン化する命令列が増え、実行速度を速くすることができる。しかし、インライン化する命令列が増えると、オブジェクトコードのコードサイズは増加する。そこで、コードサイズの増加を抑えたいときは、比較部22に与えるしきい値を大きくする。
関数呼び出し命令検査部23は、オブジェクトコード100に記述されているアドレスの値を探索し、比較部22で抽出されたアドレスに一致するアドレスに記述されている命令列が関数呼び出し命令を含むかどうかを検査する。
インライン化処理部24は、関数呼び出し命令検査部23の検査により関数呼び出し命令を含むことが判明した命令列に含まれる関数呼び出し命令をインライン化するよう前記オブジェクトコードを書き直して、処理後オブジェクトコード400を生成する。
次に、本実施例の言語処理装置2の処理例を図8〜図10を用いて説明する。なお、ここでは、比較部22に与えるしきい値を10として説明する。
図8は、実行回数計数部21が、トレースデータ200に記録されているアドレスデータ解析し、命令列のアドレスごとの実行回数を計数した例を示す。
図8(a)に示すトレースデータ200には、アドレス0x00c1〜0x00ccに配置される命令列C、アドレス0x00d1〜0x00ddに配置される命令列D、アドレス0x00e1〜0x00eeに配置される命令列Eの実行結果が記録されているものとする。
図8(b)に、実行回数計数部21がこのトレースデータ200を解析し、命令列のアドレスごとの実行回数を計数した例を示す。この例では、アドレス0x00c1〜0x00ccの命令列が13回、アドレス0x00d1〜0x00ddの命令列が11回、アドレス0x00e1〜0x00eeの命令列が2回実行されている。
比較部22は、実行回数計数部21で計数された命令列の実行回数を予め定めたしきい値10と比較し、命令列の実行回数がしきい値10を超える命令列のアドレス0x00c1〜0x00ccおよび0x00d1〜0x00ddを抽出する。
関数呼び出し命令検査部23は、オブジェクトコード100に記述されているアドレスの値を探索し、比較部22で抽出されたアドレス0x00c1〜0x00ccおよび0x00d1〜0x00ddに一致するアドレスに記述されている命令列が関数呼び出し命令を含むかどうかを検査する。
その結果、図9に示すように、アドレス0x00c1〜0x00ccに記述されている命令列Cは関数呼び出し命令を含み、アドレス0x00d1〜0x00ddに記述されている命令列Dは関数呼び出し命令を含まないことが判明する。
そこで、インライン化処理部24は、アドレス0x00c1〜0x00ccに記述されている命令列Cに含まれる関数呼び出し命令をインライン化する処理を行う。
図10は、インライン化処理部24によるインライン化処理が行われて生成された処理後オブジェクトコード400の例を示す図である。
このように、インライン化処理によりオブジェクトコードのコードサイズは増加するが、関数呼び出しの回数が減るため実行速度は向上する。
このような本実施例の言語処理装置によれば、インライン化する関数呼び出し命令の数を任意に設定可能なしきい値により制限できるため、関数呼び出し命令のインライン化によるコードサイズの増加を所望の範囲内に収めることができる。
本発明の実施例1に係る言語処理装置の構成を示すブロック図。 実施例1の言語処理装置における共通命令列の抽出例を示す図。 実施例1の言語処理装置における共通命令列の実行回数計数の例を示す図。 実施例1の言語処理装置による命令共通化処理後のオブジェクトコードの例を示す図。 実施例1の言語処理装置における共通命令列の抽出例を示す図。 実施例1の言語処理装置における共通命令列の実行回数計数の例を示す図。 本発明の実施例2に係る言語処理装置の構成を示すブロック図。 実施例2の言語処理装置における命令列ごとの実行回数計数の例を示す図。 実施例2の言語処理装置における関数呼び出し命令検査の例を示す図。 実施例2の言語処理装置によるインライン化処理後のオブジェクトコードの例を示す図。
符号の説明
1、2 言語処理装置
11 共通命令列抽出部
12、21 実行回数計数部
13、22 比較部
14 命令共通化処理部
23 関数呼び出し命令検査部
24 インライン化処理部

Claims (5)

  1. オブジェクトコードの実行結果を記録したトレースデータを解析して前記オブジェクトコード中に記述された同じ実行順の命令列の並びからなる共通部分の実行回数データを生成し、前記実行回数データに基づいて前記オブジェクトコードに対して前記共通部分をまとめる処理を行うことを特徴とする言語処理装置。
  2. オブジェクトコードを探索して同じ実行順の命令列の並びからなる共通部分を抽出する抽出手段と、
    前記オブジェクトコードの実行結果を記録したトレースデータを解析して前記共通部分の実行回数を計数する計数手段と、
    前記実行回数を予め定めたしきい値と比較する比較手段と、
    前記比較の結果、前記実行回数が前記しきい値以下のときは、前記共通部分を1箇所にまとめて記述するよう前記オブジェクトコードを書き直す命令共通化処理手段と
    を有することを特徴とする言語処理装置。
  3. 前記オブジェクトコードの前記探索範囲の最小値を予め指定することを特徴とする請求項2に記載の言語処理装置。
  4. オブジェクトコードの実行結果を記録したトレースデータを解析して命令列の実行回数データを生成し、前記命令列の実行回数データに基づいて前記オブジェクトコードに含まれる関数のインライン化処理を行うことを特徴とする言語処理装置。
  5. オブジェクトコードの実行結果を記録したトレースデータを解析して命令列ごとの実行回数を計数する計数手段と、
    前記実行回数を予め定めたしきい値と比較する比較手段と、
    前記実行回数が前記しきい値を超えた命令列が関数呼び出し命令を含むかどうかを検査する検査手段と、
    前記検査により前記関数呼び出し命令を含むことが判明した前記実行回数が前記しきい値を超える命令列に含まれる前記関数呼び出し命令をインライン化するよう前記オブジェクトコードを書き直すインライン化処理手段と
    を有することを特徴とする言語処理装置。
JP2005199047A 2005-07-07 2005-07-07 言語処理装置 Pending JP2007018254A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005199047A JP2007018254A (ja) 2005-07-07 2005-07-07 言語処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005199047A JP2007018254A (ja) 2005-07-07 2005-07-07 言語処理装置

Publications (1)

Publication Number Publication Date
JP2007018254A true JP2007018254A (ja) 2007-01-25

Family

ID=37755378

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005199047A Pending JP2007018254A (ja) 2005-07-07 2005-07-07 言語処理装置

Country Status (1)

Country Link
JP (1) JP2007018254A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269052A (ja) * 2007-04-17 2008-11-06 Nec Electronics Corp 演算処理回路、半導体集積回路、及びプログラムの変換方法
JP2011203960A (ja) * 2010-03-25 2011-10-13 Fujitsu Ltd テンプレートコンパイル方法及びテンプレートコンパイル装置
JP2012208615A (ja) * 2011-03-29 2012-10-25 Mitsubishi Electric Corp 命令実行分析装置及び命令実行分析方法及びプログラム
US9383980B2 (en) 2013-02-22 2016-07-05 International Business Machines Corporation Determining a method to inline using an actual footprint calculation
JP2018028777A (ja) * 2016-08-17 2018-02-22 Necプラットフォームズ株式会社 エミュレーション装置、エミュレーション方法、及び、エミュレーションプログラム
JP2018506761A (ja) * 2014-11-24 2018-03-08 オベルトゥル テクノロジOberthur Technologies Apduスクリプトにおける黙示的ファイル生成
WO2020166345A1 (ja) * 2019-02-15 2020-08-20 日立オートモティブシステムズ株式会社 検証装置および検証方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269052A (ja) * 2007-04-17 2008-11-06 Nec Electronics Corp 演算処理回路、半導体集積回路、及びプログラムの変換方法
JP2011203960A (ja) * 2010-03-25 2011-10-13 Fujitsu Ltd テンプレートコンパイル方法及びテンプレートコンパイル装置
JP2012208615A (ja) * 2011-03-29 2012-10-25 Mitsubishi Electric Corp 命令実行分析装置及び命令実行分析方法及びプログラム
US9383980B2 (en) 2013-02-22 2016-07-05 International Business Machines Corporation Determining a method to inline using an actual footprint calculation
JP2018506761A (ja) * 2014-11-24 2018-03-08 オベルトゥル テクノロジOberthur Technologies Apduスクリプトにおける黙示的ファイル生成
JP2018028777A (ja) * 2016-08-17 2018-02-22 Necプラットフォームズ株式会社 エミュレーション装置、エミュレーション方法、及び、エミュレーションプログラム
US10268462B2 (en) 2016-08-17 2019-04-23 Nec Platforms, Ltd. Emulation device, emulation method, and recording medium storing emulation program
WO2020166345A1 (ja) * 2019-02-15 2020-08-20 日立オートモティブシステムズ株式会社 検証装置および検証方法
JPWO2020166345A1 (ja) * 2019-02-15 2021-09-30 日立Astemo株式会社 検証装置および検証方法
JP7084505B2 (ja) 2019-02-15 2022-06-14 日立Astemo株式会社 検証装置および検証方法
US11487649B2 (en) 2019-02-15 2022-11-01 Hitachi Astemo, Ltd. Verification device and method for verifying a program using a tree structure of common and non-common test scenario phases

Similar Documents

Publication Publication Date Title
US8806464B2 (en) Process flow optimized directed graph traversal
US20110119660A1 (en) Program conversion apparatus and program conversion method
JP2007018254A (ja) 言語処理装置
US7237229B2 (en) Debugging aid parallel execution of a plurality of iterations with source lists display corresponding to each iteration
US20130318504A1 (en) Execution Breakpoints in an Integrated Development Environment for Debugging Dataflow Progrrams
JP5303795B2 (ja) アプリケーションの解析方法、解析システム及び解析プログラム
US8458671B1 (en) Method and system for stack back-tracing in computer programs
KR101837337B1 (ko) 네이티브코드에서 기본 블록들 간의 모든 상대주소 점프를 간접 점프로 변환하여 분석도구의 cfg 생성을 방해하는 방법 및 장치
US9639370B1 (en) Software instructed dynamic branch history pattern adjustment
JP5846581B2 (ja) コードを投機的に最適化するための方法、並びにそのコンピュータ及びコンピュータ・プログラム
JP2010122959A (ja) テスト支援システム、方法、及び、プログラム
US20170364054A1 (en) Numerical controller and variable determining method
Heitman et al. BARF: a multiplatform open source binary analysis and reverse engineering framework
KR20080045545A (ko) 조건부 영역을 전처리하는 방법
JP2009258796A (ja) プログラム開発装置及びプログラム開発方法
JP4860564B2 (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
JP2008269529A (ja) デバッグ支援装置
JPH0887417A (ja) コンパイラ装置
JP2007257397A (ja) 競合状態検出処理追加プログラム、競合状態検出処理追加装置、競合状態検出処理追加方法
US20170344351A1 (en) Information processing apparatus, compiling management method, and recording medium
JP2004171064A (ja) バッファオーバーフロー静的解析方法およびプログラム
JP2007265098A (ja) マクロ定義情報取得装置
KR102207775B1 (ko) 네트워크 스위치 병렬화를 위한 데이터 의존성 기반의 데이터 평면 정적 분석 방법 및 이를 이용한 병렬화 장치
Mubarak-Ali et al. Enhancing Generic Pipeline Model for Code Clone Detection using Divide and Conquer Approach.
KR101225577B1 (ko) 어셈블리 언어 코드의 분석 장치 및 방법