skip to main content
article

ATOM: a system for building customized program analysis tools

Published: 01 April 2004 Publication History
  • Get Citation Alerts
  • Abstract

    ATOM (Analysis Tools with OM) is a single framework for building a wide range of customized program analysis tools. It provides the common infrastructure present in all code-instrumenting tools; this is the difficult and time-consuming part. The user simply defines the tool-specific details in instrumentation and analysis routines. Building a basic block counting tool like Pixie with ATOM requires only a page of code.ATOM, using OM link-time technology, organizes the final executable such that the application program and user's analysis routines run in the same address space. Information is directly passed from the application program to the analysis routines through simple procedure calls instead of inter-process communication or files on disk. ATOM takes care that analysis routines do not interfere with the program's execution, and precise information about the program is presented to the analysis routines at all times. ATOM uses no simulation or interpretation.ATOM has been implemented on the Alpha AXP under OSF/1. It is efficient and has been used to build a diverse set of tools for basic block counting, profiling, dynamic memory recording, instruction and data cache simulation, pipeline simulation, evaluating branch prediction, and instruction scheduling.

    References

    [1]
    Digital Corporation, New Digital Spin-Off Eyes Huge Microsoft Developers' Market for X86 Platforms, http://wint.decsy.ru/internet/digital/v0000676.htm.
    [2]
    A. Eustace and A. Srivastava. ATOM: A Flexible Interface for Building High Performance Program Analysis Tools. USENIX Winter Conference, 1995, pp 303--314.
    [3]
    J. R. Larus and T. Ball, "Rewriting executable files to measure program behavior", Software Practice and Experience, vol. 24, no. 2, pp 197--218, Feb. 1994.
    [4]
    J. R. Larus and E. Schnarr, "EEL: Machine-Independent Executable Editing", Programming Language Design and Implementation, June 1995.
    [5]
    H. Lee and B. Zorn, "BIT: A Tool for instrumenting Java bytecodes", USENIX Symposium on Internet Technologies and Systems, Monterey, CA, 1997.
    [6]
    MIPS Computer Systems, Inc., Assembly Language Programmer's Guide, 1986.
    [7]
    T. Romer, G. Voelker, D. Lee, A. Wolman, W. Wong, H. Levy, B. Chen, and B. Bershad, "Instrumentation and Optimization of Win32/Intel Executables Using Etch", USENIX Windows NT Workshop, Aug. 1997.
    [8]
    A. Srivastava and J. Thiagarajan, "Effectively Prioritizing Tests in Development Environment", Proc. Int'l Symp. Software Testing and Analysis, July. 2002.
    [9]
    A. Srivastava, A. Edwards, and H. Vo, "Vulcan: Binary Transformation in a Distributed Environment", Microsoft Research Technical Report, MSR-TR-2001-50.
    [10]
    A. Srivastava and D. Wall. Link-Time Optimization of Address Calculation on a 64-bit Architecture. Symposium on Programming Language Design and Implementation, 1994, pp 49--60.
    [11]
    A. Srivastava and D. Wall. A Practical System for Intermodule Code Optimization at Link Time. Journal of Programming Language, 1(1):1--18, March 93.
    [12]
    D. Wall, "Systems for late code modification", Code Generation -- Concept, Tools, Techniques, pp 275--293, Springer-Verlag, 1992. Also available as WRL Research Report 92/3, May 1992.
    [13]
    Z. Wang, K. Pierce, and S. McFarling, "BMAT: A Binary Matching Tool for Stale Profile Propagation", The Journal of Instruction-Level Parallelism, vol. 2, May 2000.
    [14]
    Anant Agarwal, Richard Sites, and Mark Horwitz. ATUM: A New Technique for Capturing Address Traces Using Microcode. Proceedings of the 13th International Symposium on Computer Architecture, June 1986.
    [15]
    Robert Bedichek. Some Efficient Architectures Simulation Techniques. Winter 1990 USENIX Conference, January 1990.
    [16]
    Anita Borg, R. E. Kessler, Georgia Lazana, and David Wall. Long Address Traces from RISC Machines: Generation and Analysis, Proceedings of the 17th Annual Symposium on Computer Architecture, May 1990, also available as WRL Research Report 89/14, Sep 1989.
    [17]
    Eric A. Brewer, Chrysanthos N. Dellarocas, Adrian Colbrook, and William E. Weihl. PROTEUS: A High-Performance Parallel-Architecture Simulator. MIT/LCS/TR-516, MIT, 1991.
    [18]
    Robert F. Cmelik and David Keppel, Shade: A Fast Instruction-Set Simulator for Execution Profiling. Technical Report UWCSE 93-06-06, University of Washington.
    [19]
    Susan J. Eggers, David R. Keppel, Eric J. Koldinger, and Henry M. Levy. Techniques for Efficient Inline Tracing on a Shared-Memory Multi-processor. SIGMETRICS Conference on Measurement and Modeling of Computer Systems, vol 8, no 1, May 1990.
    [20]
    Stephen R. Goldschmidt and John L. Hennessy, The Accuracy of Trace-Driven Simulations of Multiprocessors. CSL-TR-92--546, Computer Systems Laboratory, Stanford University, September 1992.
    [21]
    James R. Larus and Thomas Ball. Rewriting executable files to measure program behavior. Software, Practice and Experience, vol 24, no. 2, pp 197--218, February 1994.
    [22]
    MIPS Computer Systems, Inc. Assembly Language Programmer's Guide, 1986.
    [23]
    Richard L. Sites, ed. Alpha Architecture Reference Manual Digital Press, 1992.
    [24]
    Amitabh Srivastava and David W. Wall. A Practical System for Intermodule Code Optimization at Link-Time. Journal of Programming Language, 1(1), pp 1--18, March 1993. Also available as WRL Research Report 92/6, December 1992.
    [25]
    Amitabh Srivastava and David W. Wall. Link-Time Optimization of Address Calculation on a 64-bit Architecture. Proceedings of the SIGPLAN'94 Conference on Programming Language Design and Implementation, to appear. Also available as WRL Research Report 94/1, February 1994.
    [26]
    Amitabh Srivastava. Unreachable procedures in object-oriented programming, ACM LOPLAS, Vol 1, #4, pp 355--364, December 1992. Also available as WRL Research Report 93/4, August 1993.
    [27]
    David W. Wall. Systems for late code modification. In Robert Giegerich and Susan L. Graham, eds, Code Generation - Concepts, Tools, Techniques, pp. 275--293, Springer-Verlag, 1992. Also available as WRL Research Report 92/3, May 1992.

    Cited By

    View all
    • (2023)Propeller: A Profile Guided, Relinking Optimizer for Warehouse-Scale ApplicationsProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3575693.3575727(617-631)Online publication date: 27-Jan-2023
    • (2021)RL-BIN++: Overcoming Binary Instrumentation Challenges in the Presence of Obfuscation Techniques and Problematic FeaturesProceedings of the 2021 10th International Conference on Software and Computer Applications10.1145/3457784.3457825(262-272)Online publication date: 23-Feb-2021
    • (2021)A Comparison of Different Source Code Representation Methods for Vulnerability Prediction in PythonQuality of Information and Communications Technology10.1007/978-3-030-85347-1_20(267-281)Online publication date: 25-Aug-2021
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 39, Issue 4
    20 Years of the ACM SIGPLAN Conference on Programming Language Design and Implementation 1979-1999: A Selection
    April 2004
    673 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/989393
    Issue’s Table of Contents

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 01 April 2004
    Published in SIGPLAN Volume 39, Issue 4

    Check for updates

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)15
    • Downloads (Last 6 weeks)0

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Propeller: A Profile Guided, Relinking Optimizer for Warehouse-Scale ApplicationsProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3575693.3575727(617-631)Online publication date: 27-Jan-2023
    • (2021)RL-BIN++: Overcoming Binary Instrumentation Challenges in the Presence of Obfuscation Techniques and Problematic FeaturesProceedings of the 2021 10th International Conference on Software and Computer Applications10.1145/3457784.3457825(262-272)Online publication date: 23-Feb-2021
    • (2021)A Comparison of Different Source Code Representation Methods for Vulnerability Prediction in PythonQuality of Information and Communications Technology10.1007/978-3-030-85347-1_20(267-281)Online publication date: 25-Aug-2021
    • (2019)A Survey of Phase Classification Techniques for Characterizing Variable Application BehaviorIEEE Transactions on Parallel and Distributed Systems10.1109/TPDS.2019.292978131:1(224-236)Online publication date: 17-Dec-2019
    • (2018)A novel lightweight hardware-assisted static instrumentation approach for ARM SoC using debug components2018 Asian Hardware Oriented Security and Trust Symposium (AsianHOST)10.1109/AsianHOST.2018.8607177(92-97)Online publication date: Dec-2018
    • (2015)Instrumentation and preservation of extra-functional properties of simulink modelsProceedings of the Symposium on Theory of Modeling & Simulation: DEVS Integrative M&S Symposium10.5555/2872965.2872972(47-54)Online publication date: 12-Apr-2015
    • (2015)Static slack-based instrumentation of programs2015 IEEE 20th Conference on Emerging Technologies & Factory Automation (ETFA)10.1109/ETFA.2015.7301505(1-8)Online publication date: Sep-2015
    • (2015)A Survey of Dynamic Program Analysis Techniques and ToolsProceedings of the 3rd International Conference on Frontiers of Intelligent Computing: Theory and Applications (FICTA) 201410.1007/978-3-319-11933-5_13(113-122)Online publication date: 2015
    • (2014)JP2Science of Computer Programming10.1016/j.scico.2011.11.00379(146-157)Online publication date: 1-Jan-2014
    • (2013)Dynamic profiling-based approach to identifying cost-effective refactoringsInformation and Software Technology10.1016/j.infsof.2012.12.00255:6(966-985)Online publication date: 1-Jun-2013
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media