CN106951303A - A kind of LLVM intermediate representation program dicing methods based on information flow analysis - Google Patents

A kind of LLVM intermediate representation program dicing methods based on information flow analysis Download PDF

Info

Publication number
CN106951303A
CN106951303A CN201710089472.2A CN201710089472A CN106951303A CN 106951303 A CN106951303 A CN 106951303A CN 201710089472 A CN201710089472 A CN 201710089472A CN 106951303 A CN106951303 A CN 106951303A
Authority
CN
China
Prior art keywords
program
sentence
variable
information flow
interprocedual
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.)
Granted
Application number
CN201710089472.2A
Other languages
Chinese (zh)
Other versions
CN106951303B (en
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.)
Nanjing Post and Telecommunication University
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing Post and Telecommunication University
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 Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN201710089472.2A priority Critical patent/CN106951303B/en
Publication of CN106951303A publication Critical patent/CN106951303A/en
Application granted granted Critical
Publication of CN106951303B publication Critical patent/CN106951303B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Abstract

The invention discloses a kind of LLVM intermediate representation program dicing methods based on information flow analysis.First, judge that certain program is process internal program or interprocedual program according to calling figure CG.Described interprocedual program uses following steps:(1) corresponding relation between call relation, argument and parameter between analysis program;(2) D of every call statement is calculated according to formulaS、PS、λS、μS、ρS;(3) each program is analyzed successively further according to the inverse topological order relation of CG calling figures, obtain the D of interprocedual programS、PS、λS、μS、ρS;(4) to the D of all programsS、PS、λS、μS、ρSIt is combined, obtains interprocedual slicing.The inventive method, can cut into slices to LLVM IR program class intermediate language programs, highly versatile, high precision of cutting into slices.

Description

A kind of LLVM intermediate representation program dicing methods based on information flow analysis
Technical field
The present invention relates to software analysis technology field, it is related to a kind of program slice method, it is particularly a kind of to be based on information flow The LLVM intermediate representation program dicing methods of analysis.
Background technology
With the fast development of computer technology, quantity and the scale of software systems are constantly expanding, complexity also companion The more and more higher with the progress of software systems, the program analysis technique arisen at the historic moment has become in software field and weighed very much The part wanted.
In various program analysis techniques, program slice is the very important technology of one of which.Program slice is a kind of Broken down into program technology, i.e., a kind of program analysis and understanding method.Program slicing technique and its analysis method have been widely used in reality The production and research on border and to fields such as the analysis and understanding of program, debugging and tests, also, to the maintenance of software systems With technical support is also provided in terms of measurement.In actual program development and maintenance process, program slicing technique can To help to develop preferably to clear program structure and effect with tester, more high-quality and the program simplified are createed, is carried significantly The high efficiency of work.
Mark Weiser et al. it has been found that, program some output only it is relevant with division statement in source program, delete it Its sentence has no effect on the result of the output.The program that this sentence relevant with some output is constituted is called source by they A kind of static slicing of program, and propose the program slice algorithm based on controlling stream graph (CFG).Ottenstein et al. is introduced The figure accessibility algorithm of program dependency graph (PDG) is based on, the section of calculating process internal program is come with this.Horwitz et al. with The two pass graph reachability algorithm (being abbreviated as HRB algorithms) based on system dependence graph (SDG) is proposed afterwards.For many years, people Program slice is had made extensive and intensive studies, many achievements in research are achieved so that it is in software debugging, test, dimension It is used widely, thus also receives vast in terms of shield, measurement, program parallelization, software inverse engineering and reengineer Software study, the great attention of developer.
Although people have been presented for multiple programs dicing method, the object of section is typically all C, C++, Python The program write Deng certain language-specific, and poor universality, section precision are undesirable.LLVM IR be it is a kind of between c language and The form of assembler language, the readability of existing high-level language, again can than more fully reflect computer bottom data computing and The situation of transmission, is refined and efficient.LLVMIR design is divided into three phases:Front end, optimization and rear end.If necessary to support A kind of new programming language, then only need to realize a kind of new front end.A kind of new hardware device is supported if desired, then only Need to realize a new rear end.And the optimizing phase, because being that have been directed to unified LLVM IR, it is a general rank Section, whether supports new programming language, or supports new hardware device, all without being made an amendment to the optimizing phase.Thus may be used To find out LLVM IR effect.
The content of the invention
It is an object of the invention to the defect for overcoming prior art, there is provided a kind of LLVM middle tables based on information flow analysis Show program slice method, LLVM IR program class intermediate language programs can be cut into slices, highly versatile, high precision of cutting into slices.
To solve the above-mentioned technical problem of prior art, the present invention uses following technical scheme.
A kind of LLVM intermediate representation program dicing methods based on information flow analysis of the present invention, it is characterised in that including Procedure below:
(1) judge that pre-cut sheets program is process internal program or interprocedual program according to calling figure CG;
(2) the pre-cut sheets program is process internal program, and its step includes:
(2-1) calculates the definition collection D of every sentence according to formulaS, protection collection PS, variable and expression formula relation λS, expression The relation μ of formula and variableS, variable and variable relation ρS
(2-2) and then the precedence relationship performed according to sentence in program, is combined to sentence, overall until obtaining program DS、PS、λS、μS、ρS, wherein DS、PSRepresentation be set, and λS、μS、ρSIt is a matrix respectively;
(2-3) is according to λSAnd μS, the forward slicing and backward slicing of any variable in single program can be obtained respectively;
(3) the pre-cut sheets program is interprocedual program, and its step includes:
(3-1) initializes the D of all sentencesS、PS、λS、μS、ρS
(3-2) updates the D of all call statementsS、PS、λS、μS、ρS
(3-3) is combined to the sentence of each subprogram, obtains the D at each program exitS、PS、λS、μS、ρS
The D of (3-4) to all programsS、PS、λS、μS、ρSIt is combined, obtains interprocedual slicing.
The detailed process of above-mentioned steps (3-1) is:
(3-101) obtains calling figure CG;Program's source code is put in one file as input, obtained using existing software The calling figure of program;
(3-102) initializes the D of all sentencesS、PS、λS、μS、ρS,
If sentence S is assignment statement v=e, DS={ v }, PS=V- { v }, λS=Γ (e) X { e }, μS={ (e, v) }, ρS =(Γ (e) × { v }) ∪ (ι-{ (v, v) }), wherein, V represent sentence S variable in a program set, Γ (e) represents occur The set of variable in e;
If sentence S is conditional statement if e then A else B, DS=DA∪DB, PS=PA∪PB, λS=(Γ (e) ×{e})∪λA∪λB, μS=({ e } × (DA∪DB))∪μA∪μB, ρS=(Γ (e) × (DA∪DB))∪ρA∪ρB
If sentence S is Do statement while e do A, DS=DA, PS=V, λSA*((Γ(e)×{e}∪λA), μS= ({e}×DA)∪μAρA*((Γ(e)×DA) ∪ ι), ρSA*((Γ(e)×DA) ∪ ι), wherein ρA*For ρATransitive closure, ι =(v, w) ∈ V*V | v=w };
If sentence S is other types sentence,PS=V,ρS=ι.
The detailed process of above-mentioned steps (3-2) is:
(3-201) finds each input argument VaiCorresponding input parameter Vfi
(3-202) updates call statement S DS、PS、λS、μS、ρS, DS=Vao∪{Vfi, PS=V-DS, λS={ Vai} × S, μS=(S × { Vao})∪(S×{Vfi), ρS=({ Vai}×{Vao})∪({Vai}×{Vfi), wherein, VaoFor call statement Export argument, VaiFor the input argument of call statement, VfiFor input argument VaiCorresponding input parameter.
The detailed process of above-mentioned steps (3-3) is:
(3-301) finds each output parameter VfoCorresponding output argument Vao
(3-302) takes out a program P not analyzed according to CG inverse topological order from CG;
The sequencing that (3-303) is performed according to sentence in P, P=((((((a are expressed as by program P;b);c);d);e); f);... ordered set j), wherein, a, b...j represents a sentence respectively;
(3-304) makes S=(a;B), according to DS=Da∪Db,PS=Pa∩Pb, λSa∪ρaλb, μSaρb∪μb, ρS= ρaρb, to S five kinds of relations, then by (S;C) regard a sequential statement collection as, be combined ... so circulation until obtaining P journeys The whole result D of sequenceP、PP、λP、μP、ρP
(3-305) is according to output parameter VfoWith output argument VaoCorresponding relation, update μPP∪{(s,Vao)|(s, Vfo)∈μP, s is certain sentence in P;
(3-306) repeat step (3-302), until all programs are all analyzed.
The detailed process of above-mentioned steps (3-4) is:
(3-401) to called program and is applied to debug and is combined successively, until all program compositions are into an entirety T, Obtain DT、PT、λT、μT、ρT
(3-402) a certain variable v forward slicing is λTMiddle variable v is expert at the set of all sentences, v backward slicing For μTThe set of middle all sentences of v columns.
Compared with prior art, the present invention has advantages below and beneficial effect:
1. the present invention cuts into slices to this intermediate languages of LLVM IR, rather than specific programming language, highly versatile;
2. use information flow analysis method so that slicing processes become clear so that the precision of section is greatly improved;
3. carrying out interprocedual slicing using information flow analysis method, the content of section is enriched.
Brief description of the drawings
Fig. 1 is a kind of method flow diagram of embodiment of the present invention.
Fig. 2 is a kind of method flow diagram cut into slices to interprocedual program of embodiment of the present invention.
Embodiment
The present invention provides a kind of LLVM intermediate representation program dicing methods based on information flow analysis, mainly to LLVM IR (Low Level Virtual Machine Intermediate Representation, underlying virtual machine intermediate representation) Program carries out the program slice based on information flow analysis.Information flow analysis method is a kind of static program based on information flow point Analysis mode, it check that out the mistake that many compilers can not also be found out.This method can also give people to provide very many Useful information, can not only judge the validity of sentence, can also be apparent from the relation for inputting and exporting, and it is a kind of important Program analysis method.Information flow analysis technology is suffered from many aspects such as program optimization, Program Static Analysis, program test Important application, the difference of application field, the attribute of analyze data is also different.The present invention passes through the acquisition to variate-value in program With the analysis of propagation, and then the relation of variable and program statement is described, program is cut into slices using such analysis method.
A kind of LLVM intermediate representation program dicing methods based on information flow analysis of the present invention, it is characterised in that including Procedure below:
(1) judge that pre-cut sheets program is process internal program or interprocedual program according to calling figure CG;
(2) the pre-cut sheets program is process internal program, and its step includes:
(2-1) calculates the definition collection D of every sentence according to formulaS, protection collection PS, variable and expression formula relation λS, expression The relation μ of formula and variableS, variable and variable relation ρS
(2-2) and then the precedence relationship performed according to sentence in program, is combined to sentence, overall until obtaining program DS、PS、λS、μS、ρS, wherein DS、PSRepresentation be set, and λS、μS、ρSIt is a matrix respectively;
(2-3) is according to λSAnd μS, the forward slicing and backward slicing of any variable in single program can be obtained respectively;
(3) the pre-cut sheets program is interprocedual program, and its step includes:
(3-1) initializes the D of all sentencesS、PS、λS、μS、ρS
(3-2) updates the D of all call statementsS、PS、λS、μS、ρS
(3-3) is combined to the sentence of each subprogram, obtains the D at each program exitS、PS、λS、μS、ρS
The D of (3-4) to all programsS、PS、λS、μS、ρSIt is combined, obtains interprocedual slicing.
The detailed process of above-mentioned steps (3-1) is:
(3-101) obtains calling figure CG;Program's source code is put in one file as input, obtained using existing software The calling figure of program;
(3-102) initializes the D of all sentencesS、PS、λS、μS、ρS,
If sentence S is assignment statement v=e, DS={ v }, PS=V- { v }, λS=Γ (e) X { e }, μS={ (e, v) }, ρS =(Γ (e) × { v }) ∪ (ι-{ (v, v) });
If sentence S is conditional statement if e then A else B, DS=DA∪DB, PS=PA∪PB, λS=(Γ (e) ×{e})∪λA∪λB, μS=({ e } × (DA∪DB))∪μA∪μB, ρS=(Γ (e) × (DA∪DB))∪ρA∪ρB
If sentence S is Do statement while e do A, DS=DA, PS=V, λSA*((Γ(e)×{e}∪λA), μS= ({e}×DA)∪μAρA*((Γ(e)×DA) ∪ ι), ρSA*((Γ(e)×DA) ∪ ι), wherein ρA*For ρATransitive closure;
If sentence S is other types sentence,PS=V,ρS=ι, wherein ι={ (v, w) ∈ V* V | v=w }, V is the set of all variables in program.
The detailed process of above-mentioned steps (3-2) is:
(3-201) finds each input argument VaiCorresponding input parameter Vfi
(3-202) updates call statement S DS、PS、λS、μS、ρS, DS=Vao∪{Vfi, PS=V-DS, λS={ Vai} × S, μS=(S × { Vao})∪(S×{Vfi), ρS=({ Vai}×{Vao})∪({Vai}×{Vfi), wherein, VaoFor call statement Export argument, VaiFor the input argument of call statement, VfiFor input argument VaiCorresponding input parameter.
The detailed process of above-mentioned steps (3-3) is:
(3-301) finds each output parameter VfoCorresponding output argument Vao
(3-302) takes out a program P not analyzed according to CG inverse topological order from CG;
The sequencing that (3-303) is performed according to sentence in P, P=((((((a are expressed as by program P;b);c);d);e); f);... ordered set j), wherein, a, b...j represents a sentence respectively;
(3-304) makes S=(a;B), according to DS=Da∪Db,PS=Pa∩Pb, λSa∪ρaλb, μSaρb∪μb, ρS= ρaρb, to S five kinds of relations, then by (S;C) regard a sequential statement collection as, be combined ... so circulation until obtaining P journeys The whole result D of sequenceP、PP、λP、μP、ρP
(3-305) is according to output parameter VfoWith output argument VaoCorresponding relation, update μPP∪{(s,Vao)|(s, Vfo)∈μP, s is certain sentence in P;
(3-306) repeat step (3-302), until all programs are all analyzed.
The detailed process of above-mentioned steps (3-4) is:
(3-401) to called program and is applied to debug and is combined successively, until all program compositions are into an entirety T, Obtain DT、PT、λT、μT、ρT
(3-402) a certain variable v forward slicing is λTMiddle variable v is expert at the set of all sentences, v backward slicing For μTThe set of middle all sentences of v columns.
In order to make the purpose , technical scheme and advantage of the present invention be clearer, it is right below in conjunction with drawings and Examples The present invention is further elaborated.
Fig. 1 is a kind of method flow diagram of embodiment of the present invention.As shown in figure 1, the present embodiment based on information flow point The step of LLVM intermediate representation program dicing methods of analysis is:First, judge that certain program is journey in process according to CG (calling figure) Sequence or interprocedual program.
If process internal program, is followed the steps below:1) the definition collection D of every sentence is calculated according to formulaS, protection collection PS、 The relation λ of variable and expression formulaS, expression formula and variable relation μS, variable and variable relation ρS;2) and then according in program The precedence relationship that sentence is performed, is combined to sentence, until obtaining the overall D of programS、PS、λS、μS、ρS, wherein DS、PS's Representation is set, and λS、μS、ρSIt is a matrix respectively;3) according to λSAnd μS, can obtain respectively any in single program The forward slicing and backward slicing of variable.
Fig. 2 is a kind of method flow diagram cut into slices to interprocedual program of embodiment of the present invention.
If interprocedual program, is followed the steps below:1) pair between call relation, argument and parameter between analysis program It should be related to;2) D of every call statement is calculated according to formulaS、PS、λS、μS、ρS;3) further according to the inverse topological order of calling figure (CG) Relation analyzes each program successively, obtains the D of each interprocedual programS、PS、λS、μS、ρS;4) then by each program successively Be combined two-by-two until all programs are combined into an entirety T;Finally according to λTAnd μTCan obtain any variable forward direction and Backward slicing.It implements step:
Step 1) calling figure (CG) is obtained,
Step 1.1) program's source code is put in one file as input, obtain calling for program using existing software Figure;
Step 1.2) if only one of which node, only one of which program P in CG, be that section goes to step 2 in process, otherwise for Interprocedual slicing, goes to step 3;
Step 2) cut into slices in process,
Step 2.1) according to the sequencing of sentence execution in P, program P is expressed as P=((((((a;b);c);d); e);f);... ordered set j), wherein, a, b...j represents a sentence respectively;
Step 2.2) make S=(a;B), according to DS=Da∪Db,PS=Pa∩Pb, λSa∪ρaλb, μSaρb∪μb, ρSaρb, obtain S five kinds of relations, then by (S;C) regard a sequential statement collection as, be combined ... so circulation until obtaining The whole result D of P programsP、PP、λP、μP、ρP
Step 2.3) a certain variable v forward slicing be λPMiddle variable v is expert at the set of all sentences, and the backward of v is cut Piece is μPThe set of middle all sentences of v columns.
Step 3) update call statement and the D at subroutine exitS、PS、λS、μS、ρS,
Step 3.1) find each input argument VaiCorresponding input parameter Vfi
Step 3.2) update all call statement S DS、PS、λS、μS、ρS, DS=Vao∪{Vfi, PS=V-DS, λS= {Vai} × S, μS=(S × { Vao})∪(S×{Vfi), ρS=({ Vai}×{Vao})∪({Vai}×{Vfi), wherein VaoTo adjust With the output argument of sentence, VaiFor the input argument of call statement, VfiFor input argument VaiCorresponding input parameter;
Step 3.3) find each output parameter VfoCorresponding output argument Vao,
Step 3.4) according to CG inverse topological order, a program P not analyzed is taken out from CG,
Step 3.5) according to the sequencing of sentence execution in P, program P is expressed as P=((((((a;b);c);d); e);f);... ordered set j), wherein, a, b...j represents a sentence respectively,
Step 3.6) make S=(a;B), according to DS=Da∪Db,PS=Pa∩Pb, λSa∪ρaλb, μSaρb∪μb, ρSaρb, obtain S five kinds of relations, then by (S;C) regard a sequential statement collection as, be combined ... so circulation until obtaining The whole result D of P programsP、PP、λP、μP、ρP,
Step 3.7) according to output parameter VfoWith output argument VaoCorresponding relation, update μPP∪{(s,Vao)|(s, Vfo)∈μP};
Step 3.8) repeat step 3.4, until all programs have all been analyzed.
Step 4) interprocedual slicing is carried out,
Step 4.1) to called program and apply to debug and be combined successively, until all program compositions are into an entirety T, Obtain DT、PT、λT、μT、ρT
Step 4.2) a certain variable v forward slicing be λTMiddle variable v is expert at the set of all sentences, and the backward of v is cut Piece is μTThe set of middle all sentences of v columns.

Claims (5)

1. a kind of LLVM intermediate representation program dicing methods based on information flow analysis, it is characterised in that including procedure below:
(1) judge that pre-cut sheets program is process internal program or interprocedual program according to calling figure CG;
(2) the pre-cut sheets program is process internal program, and its step includes:
(2-1) calculates the definition collection D of every sentence according to formulaS, protection collection PS, variable and expression formula relation λS, expression formula with The relation μ of variableS, variable and variable relation ρS
(2-2) and then the precedence relationship performed according to sentence in program, is combined to sentence, until obtaining the overall D of programS、 PS、λS、μS、ρS, wherein DS、PSRepresentation be set, and λS、μS、ρSIt is a matrix respectively;
(2-3) is according to λSAnd μS, the forward slicing and backward slicing of any variable in single program can be obtained respectively;
(3) the pre-cut sheets program is interprocedual program, and its step includes:
(3-1) initializes the D of all sentencesS、PS、λS、μS、ρS
(3-2) updates the D of all call statementsS、PS、λS、μS、ρS
(3-3) is combined to the sentence of each subprogram, obtains the D at each program exitS、PS、λS、μS、ρS
The D of (3-4) to all programsS、PS、λS、μS、ρSIt is combined, obtains interprocedual slicing.
2. a kind of LLVM intermediate representation program dicing methods based on information flow analysis according to claim 1, its feature It is that the detailed process of the step (3-1) is:
(3-101) obtains calling figure CG;Program's source code is put in one file as input, program is obtained using existing software Calling figure;
(3-102) initializes the D of all sentencesS、PS、λS、μS、ρS,
If sentence S is assignment statement v=e, DS={ v }, PS=V- { v }, λS=Γ (e) × { e }, μS={ (e, v) }, ρS= (Γ (e) × { v }) ∪ (ι-{ (v, v) }), wherein, V represent sentence S variable in a program set, Γ (e) represents to appear in The set of variable in e;
If sentence S is conditional statement if e then A else B, DS=DA∪DB, PS=PA∪PB, λS=(Γ (e) × { e }) ∪λA∪λB, μS=({ e } × (DA∪DB))∪μA∪μB, ρS=(Γ (e) × (DA∪DB))∪ρA∪ρB
If sentence S is Do statement while e do A, DS=DA, PS=V, λSA*((Γ(e)×{e}∪λA), μS=({ e } ×DA)∪μAρA*((Γ(e)×DA) ∪ ι), ρSA*((Γ(e)×DA) ∪ ι), wherein ρA*For ρATransitive closure, ι= (v, w) ∈ V × V | v=w };
If sentence S is other types sentence,PS=V,ρS=ι.
3. a kind of LLVM intermediate representation program dicing methods based on information flow analysis according to claim 1, its feature It is that the detailed process of the step (3-2) is:
(3-201) finds each input argument VaiCorresponding input parameter Vfi
(3-202) updates call statement S DS、PS、λS、μS、ρS, DS=Vao∪{Vfi, PS=V-DS, λS={ Vai} × S, μS= (S×{Vao})∪(S×{Vfi), ρS=({ Vai}×{Vao})∪({Vai}×{Vfi), wherein, VaoFor the output of call statement Argument, VaiFor the input argument of call statement, VfiFor input argument VaiCorresponding input parameter.
4. a kind of LLVM intermediate representation program dicing methods based on information flow analysis according to claim 1, its feature It is that the detailed process of the step (3-3) is:
(3-301) finds each output parameter VfoCorresponding output argument Vao
(3-302) takes out a program P not analyzed according to CG inverse topological order from CG;
The sequencing that (3-303) is performed according to sentence in P, P=((((((a are expressed as by program P;b);c);d);e); f);... ordered set j), wherein, a, b...j represents a sentence respectively;
(3-304) makes S=(a;B), according to DS=Da∪Db,PS=Pa∩Pb, λSa∪ρaλb, μSaρb∪μb, ρSaρb, To S five kinds of relations, then by (S;C) regard a sequential statement collection as, be combined ... so circulation until obtaining P programs Whole result DP、PP、λP、μP、ρP
(3-305) is according to output parameter VfoWith output argument VaoCorresponding relation, update μPP∪{(s,Vao)|(s,Vfo)∈ μP, s is certain sentence in P;
(3-306) repeat step (3-302), until all programs are all analyzed.
5. a kind of LLVM intermediate representation program dicing methods based on information flow analysis according to claim 1, its feature It is that the detailed process of the step (3-4) is:
(3-401) to called program and is applied to debug and is combined successively, until all program compositions are into an entirety T, is obtained DT、PT、λT、μT、ρT
(3-402) a certain variable v forward slicing is λTMiddle variable v is expert at the set of all sentences, and v backward slicing is μT The set of middle all sentences of v columns.
CN201710089472.2A 2017-02-20 2017-02-20 LLVM intermediate representation program slicing method based on information flow analysis Active CN106951303B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710089472.2A CN106951303B (en) 2017-02-20 2017-02-20 LLVM intermediate representation program slicing method based on information flow analysis

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710089472.2A CN106951303B (en) 2017-02-20 2017-02-20 LLVM intermediate representation program slicing method based on information flow analysis

Publications (2)

Publication Number Publication Date
CN106951303A true CN106951303A (en) 2017-07-14
CN106951303B CN106951303B (en) 2020-09-22

Family

ID=59467384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710089472.2A Active CN106951303B (en) 2017-02-20 2017-02-20 LLVM intermediate representation program slicing method based on information flow analysis

Country Status (1)

Country Link
CN (1) CN106951303B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111859383A (en) * 2020-06-08 2020-10-30 西安电子科技大学 Software automatic segmentation method, system, storage medium, computer equipment and terminal

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103559122A (en) * 2013-10-14 2014-02-05 西安交通大学 Test case reduction method based on program behavior slices
CN104077226A (en) * 2014-07-07 2014-10-01 西安交通大学 Multithreaded program output uniqueness detection and evidence generation method based on program constraint building
CN104572476A (en) * 2015-01-30 2015-04-29 南京邮电大学 Software safety testing method based on program slicing
CN105700893A (en) * 2016-02-23 2016-06-22 南京邮电大学 LLVM IR program slicing method based on improved system dependence graph
US9378377B1 (en) * 2013-03-13 2016-06-28 Hrl Laboratories, Llc System for information flow security inference through program slicing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378377B1 (en) * 2013-03-13 2016-06-28 Hrl Laboratories, Llc System for information flow security inference through program slicing
CN103559122A (en) * 2013-10-14 2014-02-05 西安交通大学 Test case reduction method based on program behavior slices
CN104077226A (en) * 2014-07-07 2014-10-01 西安交通大学 Multithreaded program output uniqueness detection and evidence generation method based on program constraint building
CN104572476A (en) * 2015-01-30 2015-04-29 南京邮电大学 Software safety testing method based on program slicing
CN105700893A (en) * 2016-02-23 2016-06-22 南京邮电大学 LLVM IR program slicing method based on improved system dependence graph

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
姚家宝: "一种基于信息流分析的程序切片方法", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
王良平 等: "基于程序切片的一种耦合度量改进算法", 《电子科技》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111859383A (en) * 2020-06-08 2020-10-30 西安电子科技大学 Software automatic segmentation method, system, storage medium, computer equipment and terminal
CN111859383B (en) * 2020-06-08 2021-08-06 西安电子科技大学 Software automatic segmentation method, system, storage medium, computer equipment and terminal

Also Published As

Publication number Publication date
CN106951303B (en) 2020-09-22

Similar Documents

Publication Publication Date Title
JP6526632B2 (en) Evaluation of the rules applied to the data
Ali et al. Microsoft CEP server and online behavioral targeting
Nayak et al. Automatic Test Data Synthesis using UML Sequence Diagrams.
CN108182063A (en) A kind of implementation method of big data analysis visual configuration
CN105700893A (en) LLVM IR program slicing method based on improved system dependence graph
CN106951303A (en) A kind of LLVM intermediate representation program dicing methods based on information flow analysis
Braun et al. An interactive and comprehensive working environment for high-energy physics software with python and jupyter notebooks
Cordes et al. Automatic extraction of task-level parallelism for heterogeneous MPSoCs
Wagner et al. Performance analysis of complex engineering frameworks
Willkomm et al. A new user interface for ADiMat: toward accurate and efficient derivatives of MATLAB programmes with ease of use
Alizadehsani et al. Modern integrated development environment (ides)
Tian et al. A comparison of measurement and defect characteristics of new and legacy software systems
Rugaber White paper on reverse engineering
Fahringer et al. Aksum: A performance analysis tool for parallel and distributed applications
Wolf et al. Catwalk: a quick development path for performance models
Bucker et al. Explicit loop scheduling in OpenMP for parallel automatic differentiation
Kuiper et al. Parallel attribute evaluation: structure of evaluators and detection of paralleism
Olszewska et al. Specification metrics for Event-B developments
Da Col et al. Large-scale benchmarks for the job shop scheduling problem
Cornaglia et al. JIT-based context-sensitive timing simulation for efficient platform exploration
Conserva Filho et al. Implementing tactics of refinement in CRefine
Parsons et al. Generating parallel programs from skeleton based specifications
Malloy et al. Using a molecular metaphor to facilitate comprehension of 3d object diagrams
Tang et al. SQL-SA for big data discovery polymorphic and parallelizable SQL user-defined scalar and aggregate infrastructure in Teradata Aster 6.20
Rao et al. SODA: A semantics-aware optimization framework for data-intensive applications using hybrid program analysis

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant