|
ABSTRACT
Explicit state enumeration model checking for software is a kind of formal verification in which the reachable states of a software artifact are generated using an exhaustive search algorithm. The limiting factor in explicit software model checking is the size of the hash table of visited states used to avoid duplicate work and detect termination. The size of the hash table can be reduced by identifying and ignoring dead variables. We present a new kind of dead variable analysis that combines the usual static dead variable analysis with a specialized data flow analysis and an incomplete forward simulation to identify dead variables based on variable valuations at run time. The analysis is implemented in an explicit model checker for machine code programs on embedded processors. The analysis is most effective for code segments with pointers and nested conditional expressions in which disjoint sets of variables are used in each branch. Results for an ideal synthetic program are quite encouraging while results for three non-synthetic programs are more modest. The results suggest that the run-time portion of the analysis should only be performed on code segments which contain pointer dereferences and nested branches. Segments with these properties can be identified statically. The results also suggest that the analysis will result in a larger reduction using a specialized hash table.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
|
 |
3
|
|
 |
4
|
James C. Corbett , Matthew B. Dwyer , John Hatcliff , Shawn Laubach , Corina S. Păsăreanu , Robby , Hongjun Zheng, Bandera: extracting finite-state models from Java source code, Proceedings of the 22nd international conference on Software engineering, p.439-448, June 04-11, 2000, Limerick, Ireland
[doi> 10.1145/337180.337234]
|
 |
5
|
|
| |
6
|
|
| |
7
|
T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Software verification with Blast. In T. Ball and S. K. Rajamani, editors, Proceedings of the 10th International Workshop on Model Checking of Software (SPIN), volume 2648 of Lecture Notes in Computer Science, pages 235--239, Portland, OR, May 2003.
|
| |
8
|
G. J. Holzmann. State compression in Spin. In Proceedings of the Third Spin Workshop, Twente University, The Netherlands, April 1997.
|
| |
9
|
|
| |
10
|
Peter Leven, Tilman Mehler, and Stefan Edelkamp. Directed error detection in C++ with the assembley-level model checker StEAM. In Proceedings of 11th International SPIN Workshop, Barcelona, Spain, volume 2989 of Lecture Notes in Computer Science, pages 39--56. Springer, 2004.
|
| |
11
|
M. Lewis. Interrupt handlers in dead variable analysis. Technical Report SMC-BYU-0105, Software Model Checking Laboratory, Brigham Young U., October 2005.
|
| |
12
|
E. G. Mercer and M. Jones. Model checking machine code with the gnu debugger. In 12th International SPIN Workshop, pages 251--265, San Fancisco, USA, August 2005, Springer.
|
 |
13
|
|
 |
14
|
|
 |
15
|
|
| |
16
|
W. Visser, K. Havelund, G. Brat, and S. Park. Java PathFinder: Second generation of a Java model checker. In G. Gopalakrishnan, editor, Proceedings of the Workshop on Advances in Verification (WAVE'00), July 2000.
|
|