ABSTRACT
Many abstract value domains such as intervals, bitwise, constants, and value-sets have been developed to support dataflow analysis. Different domains offer alternative tradeoffs between analysis speed and precision. Furthermore, some domains are a better match for certain kinds of code than others. This paper presents the design and implementation of cXprop, an analysis and transformation tool for C that implements "conditional X propagation," a generalization of the well-known conditional constant propagation algorithm where X is an abstract value domain supplied by the user. cXprop is interprocedural, context-insensitive, and achieves reasonable precision on pointer-rich codes. We have applied cXprop to sensor network programs running on TinyOS, in order to reduce code size through interprocedural dead code elimination, and to find limited-bitwidth global variables. Our analysis of global variables is supported by a novel concurrency model for interrupt-driven software. cXprop reduces TinyOS application code size by an average of 9.2% and predicts an average data size reduction of 8.2% through RAM compression.
- Phil Buonadonna, Joseph Hellerstein, Wei Hong, David Gay, and Samuel Madden. TASK: Sensor network in a box. In Proc. of the European Workshop on Wireless Sensor Networks, Istanbul, Turkey, 2005.]]Google Scholar
- Caml language Web site. http://caml.inria.fr/.]]Google Scholar
- Jong-Deok Choi, R. Cytron, and J. Ferrante. On the efficient engineering of ambitious program analysis. IEEE Trans. Softw. Eng., 20(2):105--114, 1994.]] Google Scholar
Digital Library
- Michael Codish, Anne Mulkers, Maurice Bruynooghe, Maria Garcia de la Banda, and Manuel Hermenegildo. Improving abstract interpretations by combining domains. ACM Transactions on Programming Languages and Systems, 17(1):28--44, 1995.]] Google Scholar
Digital Library
- Patrick Cousot and Radhia Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proc. of the 4th Symp. on Principles of Programming Languages (POPL), pages 238--252, Los Angeles, CA, January 1977.]] Google Scholar
Digital Library
- Crossbow Technology, Inc. http://xbow.com.]]Google Scholar
- Ron Cytron, Jeanne Ferrante, Barry Rosen, Mark Wegman, and F. Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems, 13(4):451--490, October 1991.]] Google Scholar
Digital Library
- Matthew B. Dwyer and Lori A. Clarke. A flexible architecture for building data flow analyzers. In Proc. of the 18th Intl. Conf. on Software Engineering (ICSE), pages 554--564, Berlin, Germany, March 1996.]] Google Scholar
Digital Library
- Matthew B. Dwyer, Lori A. Clarke, Jamieson M. Cobleigh, and Gleb Naumovich. Flow analysis for verifying properties of concurrent software systems. In ACM Transactions on Software Engineering and Methodology (TOSEM), pages 359--430, October 2004.]] Google Scholar
Digital Library
- Chien-Liang Fok, Gruia-Catalin Roman, and Chenyang Lu. Mobile agent middleware for sensor networks: An application case study. In Proc. of the 4th Intl. Conf. on Information Processing in Sensor Networks (IPSN 05), pages 382--387, Los Angeles, CA, April 2005.]] Google Scholar
Digital Library
- David Gay, Phil Levis, Robert von Behren, Matt Welsh, Eric Brewer, and David Culler. The nesC language: A holistic approach to networked embedded systems. In Proc. of the Conf. on Programming Language Design and Implementation (PLDI), pages 1--11, San Diego, CA, June 2003.]] Google Scholar
Digital Library
- Philippe Granger. Improving the results of static analyses of programs by locally decreasing iterations. In Proc. of the Conf. on Foundations of Software Technology and Theoretical Computer Science (FSTTCS), pages 68--79, New Delhi, India, December 1992.]] Google Scholar
Digital Library
- Matthew R. Guthaus, Jeffrey S. Ringenberg, Dan Ernst, Todd M. Austin, Trevor Mudge, and Richard B. Brown. MiBench: A free, commercially representative embedded benchmark suite. In Proc. of Workshop on Workload Characterization, pages 3--14, Austin, TX, December 2001. http://www.eecs.umich.edu/mibench.]] Google Scholar
Digital Library
- John L. Henning. SPEC CPU2000: Measuring CPU performance in the new millennium. IEEE Computer, 33(7), July 2000.]] Google Scholar
Digital Library
- Ákos Lédeczi, András Nádas, Péter Völgyesi, György Balogh, Branislav Kusy, János Sallai, Gábor Pap, Sebestyén Dóra, Károly Molnár, Miklós Maróti, and Gyula Simon. Countersniper system for urban warfare. ACM Trans. Sen. Netw., 1(2):153--177, November 2005.]] Google Scholar
Digital Library
- Philip Levis, David Gay, Vlado Handziski, Jan-Hinrich Hauer, Ben Greenstein, Martin Turon, Jonathan Hui, Kevin Klues, Cory Sharp, Robert Szewczyk, Joe Polastre, Philip Buonadonna, Lama Nachman, Gilman Tolle, David Culler, and Adam Wolisz. T2: A Second Generation OS For Embedded Sensor Networks. Technical Report TKN-05-007, Telecommunication Network Group, Technische Universität Berlin, November 2005.]]Google Scholar
- David Malan, Matt Welsh, and Michael Smith. A Public-Key Infrastructure for Key Distribution in TinyOS Based on Elliptic Curve Cryptography. In Proc. of the Intl. Conf. on Sensor and Ad hoc Communications and Networks (SECON), Santa Clara, CA, October 2004.]]Google Scholar
- Florian Martin. PAG-An efficient program analyzer generator. International Journal on Software Tools for Technology Transfer, 2(1):46--67, 1998.]]Google Scholar
Cross Ref
- Antoine Miné. The Octagon abstract domain. In Proc. of the 8th Working Conf. on Reverse Engineering (WCRE), Stuttgart, Germany, October 2001.]] Google Scholar
Digital Library
- Moteiv Corporation. http://www.moteiv.com.]]Google Scholar
- George C. Necula, Scott McPeak, S. P. Rahul, and Westley Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. In Proc. of the Intl. Conf. on Compiler Construction (CC), pages 213--228, Grenoble, France, April 2002.]] Google Scholar
Digital Library
- Alessandra Di Pierro and Herbert Wiklicky. Measuring the precision of abstract interpretations. In Proc. of the Intl. Workshop on Logic Based Program Synthesis and Transformation (LOPSTR), pages 147--164, London, UK, July 2001. Springer-Verlag.]] Google Scholar
Digital Library
- John Regehr and Usit Duongsaa. Deriving abstract transfer functions for analyzing embedded software. In Proc. of the 2005 Conf. on Languages, Compilers, and Tools for Embedded Systems (LCTES), Ottawa, Canada, June 2006.]] Google Scholar
Digital Library
- Martin C. Rinard. Analysis of multithreaded programs. In Proc. of the 8th Static Analysis Symposium, Paris, France, July 2001.]] Google Scholar
Digital Library
- Mark Stephenson, Jonathan Babb, and Saman Amarasinghe. Bitwidth analysis with application to silicon compilation. In Proc. of the Conf. on Programming Language Design and Implementation (PLDI), pages 108--120, Vancouver, Canada, June 2000.]] Google Scholar
Digital Library
- Ben L. Titzer, Daniel Lee, and Jens Palsberg. Avrora: Scalable sensor network simulation with precise timing. In Proc. of the 4th Intl. Conf. on Information Processing in Sensor Networks (IPSN), Los Angeles, CA, April 2005.]] Google Scholar
Digital Library
- Bryan Turner. RandomProgramGenerator, 2005. http://www.fractalscape.org/RandomProgramGenerator.]]Google Scholar
- Clark Verbrugge, Phong Co, and Laurie Hendren. Generalized constant propagation a study in C. In Proc. of the Intl. Conf. on Compiler Construction (CC), Linkoping, Sweden, April 1996.]] Google Scholar
Digital Library
- Mark N. Wegman and F. Kenneth Zadeck. Constant propagation with conditional branches. ACM Transactions on Programming Languages and Systems (TOPLAS), 13(2):181--210, April 1991.]] Google Scholar
Digital Library
- Daniel S. Wilkerson. Delta, 2003. http://delta.tigris.org/.]]Google Scholar
- Andreas Zeller and Ralf Hildebrandt. Simplifying and isolating failure-inducing input. IEEE Transactions on Software Engineering, 28(2):183--200, February 2002.]] Google Scholar
Digital Library






Comments