JP6193151B2 - 多分岐判断構文の最適化処理装置 - Google Patents

多分岐判断構文の最適化処理装置 Download PDF

Info

Publication number
JP6193151B2
JP6193151B2 JP2014037149A JP2014037149A JP6193151B2 JP 6193151 B2 JP6193151 B2 JP 6193151B2 JP 2014037149 A JP2014037149 A JP 2014037149A JP 2014037149 A JP2014037149 A JP 2014037149A JP 6193151 B2 JP6193151 B2 JP 6193151B2
Authority
JP
Japan
Prior art keywords
branch
syntax
determination
lexical
appearance frequency
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
JP2014037149A
Other languages
English (en)
Other versions
JP2014194759A (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 JP2014037149A priority Critical patent/JP6193151B2/ja
Priority to US14/771,993 priority patent/US9715374B2/en
Priority to PCT/JP2014/001116 priority patent/WO2014132668A1/ja
Publication of JP2014194759A publication Critical patent/JP2014194759A/ja
Application granted granted Critical
Publication of JP6193151B2 publication Critical patent/JP6193151B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明の実施形態は、多分岐判断構文の最適化処理装置に関する。
一般に、字句解析においては、まず処理すべき初めの文字を検査し、どのトークンを判定すればよいかを分けて、その後に詳細な判定を行っている。
リレーショナルデータベースマネジメントシステムでは、字句解析に要する処理時間の割合が小さいので、字句解析の処理速度は大きな問題とはならない。
しかし、いわゆるインメモリデータベースでは、I/O機器の処理速度も高速であるから、字句解析に要する処理時間の高速化が求められる。
字句解析で用いる多分岐判断構文ではジャンプテーブル(分岐先テーブル)が利用されることが多い。しかし、ジャンプテーブルでは、分岐先のアドレスをメモリからレジスタへロードするレジスタ間接ジャンプであるため、メモリを読むまで分岐先が決まらない。 このため分岐先の投機的実行ができず、結果として分岐前のパイプラインフラッシュ待ちやリロードのため時間を要し処理時間が長くかかるという問題があった。
特開平9−288581号公報 特開平7−160490号公報
本発明が解決しようとする課題は、投機的実行を上手く活用可能な多分岐判断構文の最適化処理装置を提供することである。
実施形態の多分岐判断構文の最適化処理装置は、トークンを含む多分岐判断構文を保持するメモリと、前記多分岐判断構文の最適化処理装置内に組み込まれるCPUに依存するパラメータであって、多分岐判断処理に要する時間に基づいて設定するCPUの能力情報と、予めソースコードを静的に分析し、字句解析するクエリの中で、出現頻度順に並び替えたトークンの種別と出現率を表した頻出字句表を保持するデータベース部と、前記CPUの能力情報と頻出字句表を参照して前記多分岐判断構文に対して判定を実行し、出現頻度の高いトークン種別では投機的実行可能な分岐をさせ、出現頻度の低いトークン種別ではジャンプテーブルを使用した分岐をさせるように変換した分岐コードを生成する変換部を備える。
投機的実行が可能/不可能な表現形式を説明する図である。 アセンブラレベルでのif-else型のswitch文とジャンプテーブルとの対比を説明する図である。 投機的実行による高速処理を説明する図である。 本発明の実施形態に係る多分岐判断構文の最適化処理装置の概略構成を示すブロック図である。 実施形態に係る多分岐判断構文の最適化処理装置における最適化処理の流れを示すフローチャートである。
以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。以下は本発明をSQLクエリの字句解析処理について実施した形態である。
まず、本実施形態で用いる主要な用語について説明する。
「字句解析」とは、プログラミング言語で記述されたプログラムを解析する処理であって、クエリ中の文字、スペース、記号を判別し、文字列をトークンに区切る作業をいう。
「構文解析」とは、プログラミング言語で記述されたプログラムを解析する処理であって、トークン列がプログラミング言語の文法に沿っているかを調べる処理をいう。
「クエリ」は、字句解析装置へ入力する文字列である。なお、以下では、クエリを構成する文字列中のアルファベットは大文字にあらかじめ統一しているものとする。
「トークン」とは、文字列の最小単位であって、構文解析装置が受理する予約語あるいは記号ID等をいう。トークンの種類には、他に、演算子、空白文字、テキスト、エスケープ、カッコ、コメント等がある。
「ジャンプテーブル」とは、分岐で用いる値に対して分岐先のアドレスが書いてある表をいう。
「投機的実行」:多分岐判断構文をコンパイルしてオブジェクトコードを生成する際の最適化処理の方法として、投機的実行がある。投機的実行は、プログラムが途中で分岐している場合に、分岐した先の処理を予め実行しておくことである。予測が当たっていれば処理の確定を待つことがないので、その分岐処理速度は高速化される。予測が外れたら投機的に実行された結果は破棄し、正しい分岐先の命令を実行する。
一般に、字句解析では、まず処理すべき初めの文字を検査して、どの種別のトークンを判定(例えば、アルファベットなのか数字なのか)すればよいかを分岐し、その後に詳細な判定(例えば、アルファベットであれば、“S”か“F”か等)を行っている。ここで、各トークン種別に対する分岐が発生する。
C言語などの手続き型プログラミング言語において、多分岐判断構文としてswitch 文がある。switch 文は、評価する変数の値に応じてその後の処理を異にするもので、コンパイラによって、ジャンプテーブルを用いた形に変換されることがある。後述するif-else 型の switch 文であれば、静的な分岐の連続なので、投機的実行が可能な表現形式である。図1は、投機的実行が可能/不可能な表現形式を説明する図である。図2は、アセンブラレベルでのif-else 型の switch 文とジャンプテーブルとの対比を説明する図である。図3は、投機的実行による高速処理を説明する図である。図3に示す例では、1億回、ほぼランダムに分岐するループを測定した場合を比較するもので、投機的実行の活用により処理時間が約3倍の差になっている。
本実施形態においては、投機的実行を有効なものとするため、字句解析におけるトークンの判断を行うswitch 文に対して、出現頻度の高いトークン種別では投機的実行可能な分岐をさせ、出現頻度の低いトークン種別ではジャンプテーブルを使用した分岐をするようにソースコードを変換する。
図4は、本発明の実施形態に係る多分岐判断構文の最適化処理装置の概略構成を示すブロック図である。この装置は汎用のコンピュータ(例えばパーソナルコンピュータ(PC)等)と、同コンピュータ上で動作するソフトウェアとを用いて実現される。コンピュータとしては、CAD(Computer Aided Design)やCAE(Computer Aided Engineering)に好適なエンジニアリングワークステーション(EWS)等も含む。本実施形態はこのようなコンピュータに、switch 文から出現頻度の高いトークン種別、分岐判定に係る一連の手続きを実行させるプログラムとして実施することもできる。
図4に示すように、本実施形態に係る多分岐判断構文の最適化処理装置は、主として、入力部11、メモリ12、データベース13、変換部14から構成されている。
入力部11は、多分岐判断構文であるswitch 文を入力する。入力したswitch 文は、メモリ12に保持される。メモリ12に保持したswitch 文は、変換部14に送られる。
データベース13は、“CPUの能力情報”と“頻出字句表”を保持する。
ここで、CPUの能力情報とは、CPU に依存するパラメータであって、多分岐判断処理に要する時間に基づいて設定する。CPUの能力情報=nとおくと、n回の比較命令の実行時間 =ジャンプテーブルのアクセス時間となるように決定する比較数である。
nの設定では、例えば、else 節が記述されている if 文であって、分岐の条件式が FALSE だった場合は else の直後に指定された文を実行するif−else 文による連続比較と、ジャンプテーブルを利用した場合を対比する。本発明者は、CPUとしてIntel社製の Core i7(登録商標)で実験した。それによれば、15分岐の場合:if文による処理時間は1874ミリ秒であり、一方、ジャンプテーブルによる処理時間は1892ミリ秒で、ほぼ同等であった。16分岐の場合:if文による処理時間は531ミリ秒であり、一方、ジャンプテーブルによる処理時間は804ミリ秒であった。さらに、32分岐の場合:if文による処理時間は1184ミリ秒であり、一方、ジャンプテーブルによる処理時間は873ミリ秒であった。実験から、16分岐までは、ジャンプテーブルによる処理の方が遅いことが分かった。以上のことから、CPUがIntel社製の Core i7(登録商標)の場合、CPUの能力情報=nは、16比較まで本実施形態による最適化の有効性判断に適しているということができる。
頻出字句表とは、字句解析するクエリの中で、どの字句が頻出するかを記述した表 (字句種類と確率のペア)である。例えば、SQLであれば、アルファベット、スペース、数字、*、+、−、 ( ) が頻出とする。
<頻出字句表の決め方>
一例として、次のSQLクエリで説明する。頻出字句表は、予めソースコードを読み込んで静的に分析した結果を受けて作成する。
“SELECT FUNC(*) FROM TABLE WHERE COND(P+1)=1 AND X=Y”
予約語の出現回数:4回 (SELECT, FROM, WHERE, AND)
IDの出現回数:6回 (FUNC, TABLE, COND, P, X, Y)
スペースの出現回数: 7回
()の出現回数: 合わせて4回
数字の出現回数:2回 (1が2回)
=の出現回数:2回
+の出現回数:1回
*の出現回数:1回
したがって、この例では、トークンの総数は27となる。
そして、トークン毎の出現率は、種別毎に以下のようになる。
アルファベットの出現率:37% (10/27)
スペースの出現率: 26% ( 7/27)
( )の出現率: 15% ( 4/27)
数字の出現率: 7%( 2/27)
= の出現率: 7% ( 2/27)
+の出現率: 3% ( 1/27)
*の出現率: 3% ( 1/27)
したがって、出現頻度順は、アルファベット、スペース、( )、数字、=、+、*となる。
次に、読み込んだソースコードにおいて、各トークンの種別を判定する場合を考える。例えば、ASCIIコードで表された文字が“アルファベット”であることを判定するには、“A”以上で“Z”以下であることを判定するため、計2回の比較が必要である。同様に、“数字”であることを判定するには、“0”以上“9”以下、2回の比較が必要である。また、“スペース”であることを判定するには、SQL 言語上における “スペース” がタブと改行コード2種類(キャリッジリターンCR、 ラインフィードLF) を含むため、4回の比較が必要である。したがって、出現頻度順に並べた頻出字句表からは、2回の比較判定で1個の種別(アルファベット)が判定可能であり、6回の比較判定で2個の種別(アルファベットとスペース)が判定可能である。上述した例では、頻出字句表における種別数は7となる。
本実施形態においては、巨大なswitch文のコンパイルにおいて、if−else型のswitch文として分岐させるのか、ジャンプテーブルを使用した分岐をさせるのが高速化できるかを、CPUの能力情報と頻出字句表を参照する。すなわち、n−比較に消費する回数=0になると、if−else型のswitch文として分岐させる方が遅くなる。換言すれば、出現頻度順に並べた頻出字句表からいくつかの種別を取り出し、それらの出現率の和がある閾値 (例えば60%) を超えなかったら、高速化の効果は薄いことになる。
そこで、例えば、出現率の高いトークンからそれら出現率を累積した合計が60% を超えるまでの種別数をmとする。上述した例では、アルファベットの出現率37%とスペースの出現率26%を合計すると63%となるから、mの最小値は2となる。CPUの能力を表すnがm以下であれば、if−else型のswitch文として分岐させることなく、ジャンプテーブルを使用した分岐をさせる方が高速となることを意味している。例えば、SQL文の場合には、文字cを例にとると、c>=‘A’、c<=‘Z’、c==‘ ’を判定しないと出現率が稼げないから、m は3以上となる。
変換部14は、データベース13に保持されているCPUの能力情報と頻出字句表を参照しつつ、switch文を解析して、switch文から頻出するトークンの種別を抽出し、出現頻度の高いトークン種別では投機的実行可能な分岐をさせ、出現頻度の低いトークン種別ではジャンプテーブルを使用した分岐をさせるように変換した分岐コードを生成する。尚、この分岐コードは、いわゆる高級言語に限られず、コンパイラが解釈する中間コードであってもよい。
<字句解析処理の流れ>
次に、以上のように構成された多分岐判断構文の最適化処理装置100における字句解析処理の流れについて説明する。
図5は、実施形態に係る多分岐判断構文の最適化処理装置100における字句解析処理の流れを示すフローチャートである。上述したように、頻出するトークンの種別として、アルファベット、スペース、数字がある。そこで、これらをif文で判定していく。尚、予め小文字は大文字に変換しておく方が判定の際に好適である。
まず、if文でアルファベットを判定する(ステップS51)。上述したように、アルファベットの特定には、3回の比較が必要である。
アルファベットであれば(ステップS51でYes)、続きの文字列と合わせて予約語を検索する(ステップS52)。
予約語であれば(ステップS52でYes)、トークンの種類は予約語であると決定(ステップS53)して、字句解析処理を終了する。予約語でなければ(ステップS52でNo)、トークンの種類はID名であると決定(ステップS54)して、字句解析処理を終了する。
ステップS51でアルファベットでなければ(ステップS51でNo)、if文で数字を判定する(ステップS55)。数字の特定には、c>=‘0’、c<=‘9’の2回の比較が必要である。
数字であれば(ステップS55でYes)、続きの文字列が数字か否かを判定(ステップS56)して、字句解析処理を終了する。
ステップS55で数字でなければ(ステップS55でNo)、if文で空白文字を判定する(ステップS57)。
空白文字であれば(ステップS57でYes)、空白が続く間、入力を読み飛ばし(ステップS58)て、字句解析処理を終了する。
ステップS57で空白文字でなければ(ステップS57でNo)、if−else型のswitch文で頻出字句を判定する(ステップS59)。
頻出字句であれば(ステップS59でYes)、各字句に応じた処理を行った(ステップS60)後、字句解析処理を終了する。上述の例で言えば、( )、=などの特定である。
ステップS59で頻出字句でなければ(ステップS59でNo)、ジャンプテーブルのswitch文で頻出でない字句を判定する(ステップS61)。
字句であれば(ステップS61でYes)、各字句に応じた処理を行った(ステップS60)後、字句解析処理を終了する。字句でなければ(ステップS61でNo)、エラーであり、字句解析処理を終了する。
<最適化の効果>
本実施形態による最適化の効果を、SQLite の字句解析ルーチンと比較した。SQLite の字句解析では、演算子、特殊記号の判定に switch 文を使用しており、分岐のcase が43個である。default 部で予約語とID名を判定し、文脈判定は構文解析器に任せている。
次のSQL文を100万回字句解析し、時間を測定した。
‘SELECT FUNC(*) FROM TABLE WHERE COND(P+1)=1 AND X=Y’
字句解析は、アルファベット、スペース、数字、 ( )、 =、*、+ を先に判定し、その他をジャンプテーブルで判定した。CPUは、Intel Core i7(登録商標)で、n=16とした。
その結果、SQLiteの字句解析ルーチンでは597ミリ秒であった。一方、本実施形態によれば381ミリ秒で、約36%速度が向上している。
以上説明したように、本実施形態によれば、投機的実行を上手く活用可能な多分岐判断構文を最適化することにより、字句解析の高速化が図られる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100・・・多分岐判断構文の最適化処理装置
11・・・入力部
12・・・メモリ
13・・・データベース
14・・・変換部

Claims (4)

  1. トークンを含む多分岐判断構文を保持するメモリと、
    前記多分岐判断構文の最適化処理装置内に組み込まれるCPUに依存するパラメータであって、多分岐判断処理に要する時間に基づいて設定するCPUの能力情報と、
    予めソースコードを静的に分析し、字句解析するクエリの中で、出現頻度順に並び替えたトークンの種別と出現率を表した頻出字句表を保持するデータベース部と、
    前記CPUの能力情報と頻出字句表を参照して前記多分岐判断構文に対して判定を実行し、出現頻度の高いトークン種別では投機的実行可能な分岐をさせ、出現頻度の低いトークン種別ではジャンプテーブルを使用した分岐をさせるように変換した分岐コードを生成する変換部を備える多分岐判断構文の最適化処理装置。
  2. 前記多分岐判断構文は、switch 文であり、前記投機的実行可能な分岐は、if−else型のswitch 文による分岐である請求項1記載の多分岐判断構文の最適化処理装置。
  3. 前記分岐コードは、コンパイラが解釈する中間コードである請求項1又は請求項2に記載の多分岐判断構文の最適化処理装置。
  4. トークンを含む多分岐判断構文を蓄積した第1ファイルと、
    CPUに依存するパラメータであって、多分岐判断処理に要する時間に基づいて設定するCPUの能力情報を蓄積した第2ファイルと、
    予めソースコードを静的に分析し、字句解析するクエリの中で、出現頻度順に並び替えたトークンの種別と出現率を表した頻出字句表を蓄積したデータベースファイルとを含んでおり、
    コンピュータに、前記CPUの能力情報と頻出字句表を参照して前記多分岐判断構文に対して判定を実行し、出現頻度の高いトークン種別では投機的実行可能な分岐をさせ、出現頻度の低いトークン種別ではジャンプテーブルを使用した分岐をさせるように変換した分岐コードを生成させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2014037149A 2013-03-01 2014-02-27 多分岐判断構文の最適化処理装置 Active JP6193151B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014037149A JP6193151B2 (ja) 2013-03-01 2014-02-27 多分岐判断構文の最適化処理装置
US14/771,993 US9715374B2 (en) 2013-03-01 2014-02-28 Multi-branch determination syntax optimization apparatus
PCT/JP2014/001116 WO2014132668A1 (ja) 2013-03-01 2014-02-28 多分岐判断構文の最適化処理装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013040932 2013-03-01
JP2013040932 2013-03-01
JP2014037149A JP6193151B2 (ja) 2013-03-01 2014-02-27 多分岐判断構文の最適化処理装置

Publications (2)

Publication Number Publication Date
JP2014194759A JP2014194759A (ja) 2014-10-09
JP6193151B2 true JP6193151B2 (ja) 2017-09-06

Family

ID=51427942

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014037149A Active JP6193151B2 (ja) 2013-03-01 2014-02-27 多分岐判断構文の最適化処理装置

Country Status (3)

Country Link
US (1) US9715374B2 (ja)
JP (1) JP6193151B2 (ja)
WO (1) WO2014132668A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11261894B2 (en) 2016-04-27 2022-03-01 Hilti Aktiengesellschaft Anchor having a wave-shaped sleeve

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10248394B2 (en) 2017-08-18 2019-04-02 International Business Machines Corporation Utilizing created character index for switch statements
CN110263223B (zh) * 2019-06-25 2023-10-20 深圳市元征科技股份有限公司 一种数据类型转化方法、装置、设备及介质
US11061652B1 (en) * 2020-03-26 2021-07-13 Cognizant Technology Solutions India Pvt. Ltd. System and a method for moving legacy applications to cloud
US12487828B2 (en) * 2023-05-23 2025-12-02 Microchip Technology Inc. Processor having switch instruction circuit

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2010068C (en) 1990-02-14 1993-10-26 Steven Murray Hoxey Partitioning case statements for optimal execution performance
JPH07160490A (ja) * 1993-12-01 1995-06-23 Nippondenso Co Ltd コーディング支援装置
JPH07160499A (ja) * 1993-12-09 1995-06-23 Nec Corp 多方向分岐命令の最適化方式
US6035123A (en) * 1995-11-08 2000-03-07 Digital Equipment Corporation Determining hardware complexity of software operations
JP3599888B2 (ja) * 1996-04-19 2004-12-08 株式会社東芝 オブジェクト生成装置及びその方法
US6381739B1 (en) * 1996-05-15 2002-04-30 Motorola Inc. Method and apparatus for hierarchical restructuring of computer code
US6412105B1 (en) * 1997-12-31 2002-06-25 Elbrus International Limited Computer method and apparatus for compilation of multi-way decisions
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US6986131B2 (en) * 2002-06-18 2006-01-10 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient code generation for modulo scheduled uncounted loops
US20060130016A1 (en) * 2003-03-17 2006-06-15 Wagner John R Method of kernal-mode instruction interception and apparatus therefor
JP4973101B2 (ja) * 2006-09-29 2012-07-11 日本電気株式会社 自動合成装置
US8001510B1 (en) * 2008-09-05 2011-08-16 Xilinx, Inc. Automated method of architecture mapping selection from constrained high level language description via element characterization
US8356165B2 (en) * 2009-09-14 2013-01-15 Advanced Micro Devices, Inc. Selecting regions of hot code in a dynamic binary rewriter
US20110219357A1 (en) * 2010-03-02 2011-09-08 Microsoft Corporation Compressing source code written in a scripting language
US9342303B2 (en) * 2013-03-15 2016-05-17 Intel Corporation Modified execution using context sensitive auxiliary code

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11261894B2 (en) 2016-04-27 2022-03-01 Hilti Aktiengesellschaft Anchor having a wave-shaped sleeve

Also Published As

Publication number Publication date
JP2014194759A (ja) 2014-10-09
US20150363177A1 (en) 2015-12-17
US9715374B2 (en) 2017-07-25
WO2014132668A1 (ja) 2014-09-04

Similar Documents

Publication Publication Date Title
US7711685B1 (en) Method and system for an extensible macro language
CN107844705B (zh) 基于二进制代码特征的第三方组件漏洞检测方法
US9239710B2 (en) Programming language transformations with abstract syntax tree extensions
US20150268940A1 (en) Automatic loop vectorization using hardware transactional memory
JP2014194759A (ja) 多分岐判断構文の最適化処理装置
US9495638B2 (en) Scalable, rule-based processing
Negrini et al. Twinning automata and regular expressions for string static analysis
JP7655397B2 (ja) 不正検知装置、不正検知方法、および不正検知プログラム
JP6309795B2 (ja) 情報処理装置、情報処理方法およびプログラム
US7228528B2 (en) Building inter-block streams from a dynamic execution trace for a program
KR102614967B1 (ko) 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법
CN108563561B (zh) 一种程序隐性约束提取方法及系统
CN112905232B (zh) 一种基于语法分析树的程序代码平行语料挖掘方法及系统
CN109816038B (zh) 一种物联网固件程序分类方法及其装置
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US7779049B1 (en) Source level optimization of regular expressions
JP5342407B2 (ja) プログラム解析方法、プログラム解析プログラムおよびプログラム解析装置
CN111158691B (zh) 实现规则引擎动态化的方法
Stanier et al. A study of irreducibility in C programs
Grigorev et al. GLR-based abstract parsing
JP6298785B2 (ja) 自然言語解析装置、方法、及びプログラム
Du et al. Revisiting the markov property for machine translation
JP2006031363A (ja) バッファオーバーフロー脆弱性検出プログラム及びバッファオーバーフロー脆弱性検出方法
Nakasho Development of a flexible Mizar tokenizer and parser for information retrieval system
KR101559651B1 (ko) 동적 분석 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160923

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170619

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170809

R151 Written notification of patent or utility model registration

Ref document number: 6193151

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313114

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350