代写CS5218 Principles and Practice of Program Analysis Semester II, 2024/2025代写留学生Matlab语言

CS5218

Principles and Practice of Program Analysis

Semester II, 2024/2025

Program Analysis

A process of automatically analyzing the runtime behavior. of a computer program.

• TRADITIONAL USES: Program optimization (compilers)

To improve the program’s performance while reducing the resource usage

• MODERN USES: Verification, Testing, Debugging, Synthesis, Vulnerabilities, Performance estimation, ...

To ensure “correctness”: that the program will do what it is supposed to

Program analysis can be performed without executing the program (static program analysis), during runtime (dynamic program analysis), or in a combination of both.

Static and Dynamic Program Analysis

• STATIC

SPA is performed without actually executing programs, usually on some representation of the source code or low-level code. The most common representation is the Control Flow Graph.

• DYNAMIC

DPA is the analysis of computer software that is performed by executing programs on a real or virtual processor. For DPA to be effective, the target program must be executed with sufficient test inputs to produce interesting behavior. Use of software testing measures such as code coverage helps ensure that an adequate slice of the program’s set of possible behaviors has been observed.

Static Analysis

Some Traditional Analyses

• PEEPHOLE OPTIMIZATION (LOW LEVEL)

Examine a few adjacent instructions (like "looking through a peephole" at the code) to see whether they can be replaced by a single instruction or a shorter sequence of instructions. Eg. For multiplication by 2 is more efficiently executed by left-shifting or by adding.

• LOOP OPTIMIZATION

The idea is to move loop-invariant code within a loop body to outside the loop. Eg. the assignment to x is loop invariant in the loop below and thus can be moved before the loop.

for (i=0; i

Note that it is generally very difficult to discover loop invariants.

• REGISTER ALLOCATION

To assign a large number of target program variables onto a small number of CPU registers. Not all variables are in use (or "live") at the same time, so some registers may be assigned to more than one variable. Liveness analysis can construct a graph of variables, with edges indication pairwise simultaneous liveness. To determine the minimum number K of registers then is reduced to K-Coloring Problem (NP-complete).

Some Modern Analyses

• Are arrays always accessed within their bounds? (Common error)

• Can a secret value flow into an observable variable? (Information leakage)

• At which program points could x be assigned its current value? (common for program understanding)

• How large can the heap become during execution? (Important for emdedded systems, IoT)

• Does the program contain dead code? (Can make program smaller)

• Does there exist an input that leads to a null pointer dereference, division by zero, or arithmetic overflow? (Runtime error)

• Are all variables initialized before they are read? (If not, the program may be vulnerable to attacks by malicious users.)

• Can the value of certain “secret” variables be learnt from running the program?

(Information leakage via Side-Channel attack)

• Can there be dangling references, e.g. pointers to memory that has been freed? (Cause for security)

Related Areas

• PROGRAM VERIFICATION

To ensure that a given property is never violated in any execution of the program. Often it is impossible to build a complete program verifier.

• RUNTIME VERIFICATION

Runtime verification is a computing system analysis and execution approach based on extracting information from a running system and using it to detect and possibly react to observed behaviors satisfying or violating certain properties.

• TESTING

A set of tests can be obtained by random or systematic methods. Blackbox testing considers the program as a “black box” and does not scrutinize the source code. Whitebox testing on other hand considers the program structure in considering the test cases.

• QUANTITATIVE ANALYSIS

There is a class of analyses which serves to determine the resource usage of a program. Typically for embedded systems, resources of interest involve time, size of (dynamic) memory (maximum size or high-water-mark), or energy.

Challenges to Program Analysis

• DECIDABILITY

All interesting questions about program properties are undecidable.

(Rice 1953)

• COMPLEXITY

Most interesting questions about programs are intractable (NP-hard or worse)

• SCALABILITY

In order to analyze large programs, program analyzers need to have near linear complexity

The General Approach

Program analysis is usually an approximate process.

• OVER-APPROXIMATE

To compute more properties than is true.

(Eg. to say a variable x is less than 10, when in fact it is binary.)

Analysis is sound if it never returns a wrong answer.

• UNDER-APPROXIMATE

To compute less properties than is true.

The process of verification is no longer possible.

We can however do program testing.

to show the existence of an execution with some property.

BUT: Program testing can be used to show the presence of bugs, but never to show their absence. (Dijkstra 1970)




热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图