Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1040294.1040303acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article

Type-based verification of sssembly language for compiler debugging

Published: 10 January 2005 Publication History
  • Get Citation Alerts
  • Abstract

    It is a common belief that certifying compilation, which typically verifies the well-typedness of compiler output, can be an effective mechanism for compiler debugging, in addition to ensuring basic safety properties. Bytecode verification is a fairly simple example of this approach and derives its simplicity in part by compiling to carefully crafted high-level bytecodes. In this paper, we seek to push this method to native assembly code, while maintaining much of the simplicity of bytecode verification. Furthermore, we wish to provide experimental confirmation that such a tool can be accessible and effective for compiler debugging. To achieve these goals, we present a type-based data-flow analysis or abstract interpretation for assembly code compiled from a Java-like language, and evaluate its bug-finding efficacy on a large set of student compilers.

    References

    [1]
    Andrew W. Appel and Amy P. Felty. A semantic model of types and machine instructions for proof-carrying code. In Proc. of the 27th ACM Symposium on Principles of Programming Languages (POPL'00), pages 243--253, January 2000.
    [2]
    Alexander Aiken. Cool: A portable project for teaching compiler construction. ACM SIGPLAN Notices, 31(7):19--24, July 1996.
    [3]
    Kim B. Bruce, Jon Crabtree, Thomas P. Murtagh, Robert van Gent, Allyn Dimock, and Robert Muller. Safe and decidable type checking in an object-oriented language. In Proc. of the 8th Annual ACM Conference on Object-oriented Programming Systems, Languages, and Applications (OOPSLA'93), pages 29--46, October 1993.
    [4]
    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 ACM Symposium on Principles of Programming Languages, pages 234--252, January 1977.
    [5]
    Bor-Yuh Evan Chang, Adam Chlipala, George C. Necula, and Robert R. Schneck. The Open Verifier framework for foundational verifiers. In Proc. of the 2nd ACM Workshop on Types in Language Design and Implementation (TLDI'05), January 2005.
    [6]
    Bor-Yuh Evan Chang and K. Rustan M. Leino. Abstract interpretation with alien expressions and heap structures. In Proc. of the 6th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI'05), volume 3385 of LNCS, January 2005.
    [7]
    Christopher Colby, Peter Lee, George C. Necula, Fred Blau, Mark Plesko, and Kenneth Cline. A certifying compiler for Java. In Proc. of the ACM 2000 Conference on Programming Language Design and Implementation (PLDI), pages 95--107, May 2000.
    [8]
    Karl Crary. Toward a foundational typed assembly language. In Proc. of the 30th ACM Symposium on Principles of Programming Languages (POPL'03), pages 198--212, January 2003.
    [9]
    Juan Chen and David Tarditi. A simple typed intermediate language for object-oriented languages. In Proc. of the 32nd ACM Symposium on Principles of Programming Languages (POPL'05), January 2005.
    [10]
    Andrew D. Gordon and Don Syme. Typing a multi-language intermediate code. In Proc. of the 28th ACM Symposium on Principles of Programming Languages (POPL'01), pages 248--260, January 2001.
    [11]
    Sumit Gulwani, Ashish Tiwari, and George C. Necula. Join algorithms for the theory of uninterpreted functions. In Proc. of the 24th Conference on Foundations of Software Technology and Theoretical Computer Science (FSTTCS'04), LNCS, December 2004.
    [12]
    Nadeem A. Hamid, Zhong Shao, Valery Trifonov, Stefan Monnier, and Zhaozhong Ni. A syntactic approach to foundational proof-carrying code. In Proc. of the 17th Annual IEEE Symposium on Logic in Computer Science, pages 89--100, July 2002.
    [13]
    J. R. Larus. Assemblers, linkers, and the SPIM simulator. In Computer Organization and Design: The Hardware/Software Interface, Appendix A. Morgan Kaufmann, 1994.
    [14]
    Xavier Leroy. Java bytecode verification: algorithms and formalizations. Journal of Automated Reasoning, 30(3--4):235--269, 2003.
    [15]
    Christopher League, Zhong Shao, and Valery Trifonov. Type-preserving compilation of Featherweight Java. ACM Transactions on Programming Languages and Systems, 24(2):112--152, 2002.
    [16]
    Christopher League, Zhong Shao, and Valery Trifonov. Precision in practice: A type-preserving Java compiler. In Proc. of the 12th International Conference on Compiler Construction (CC'03), April 2003.
    [17]
    Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification. The Java Series. Addison-Wesley, Reading, MA, USA, January 1997.
    [18]
    Greg Morrisett, David Walker, Karl Crary, and Neal Glew. From system F to typed assembly language. ACM Transactions on Programming Languages and Systems, 21(3):527--568, May 1999.
    [19]
    George C. Necula. Proof-carrying code. In Proc. of the 24th Annual ACM Symposium on Principles of Programming Languages (POPL'97), pages 106--119, January 1997.
    [20]
    George C. Necula. Translation validation for an optimizing compiler. In Proc. of the ACM 2000 Conference on Programming Language Design and Implementation (PLDI), pages 83--94, June 2000.
    [21]
    Amir Pnueli, Michael Siegel, and Eli Singerman. Translation validation. In Bernhard Steffen, editor, Proc. of 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems(TACAS'98), volume 1384 of LNCS, pages 151--166, March 1998.
    [22]
    Martin Rinard and Darko Marinov. Credible compilation. In Proc. of the Run-Time Result Verification Workshop, July 1999.
    [23]
    Robert R. Schneck. Extensible Untrusted Code Verification. PhD thesis, University of California, Berkeley, May 2004.
    [24]
    Hongwei Xi and Robert Harper. A dependently typed assembly language. In Proc. of the International Conference on Functional Programming (ICFP'01), pages 169--180, September 2001.

    Cited By

    View all
    • (2019)Compiler bug isolation via effective witness test program generationProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3338906.3338957(223-234)Online publication date: 12-Aug-2019
    • (2010)Inferable object-oriented typed assembly languageACM SIGPLAN Notices10.1145/1809028.180664445:6(424-435)Online publication date: 5-Jun-2010
    • (2010)Inferable object-oriented typed assembly languageProceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/1806596.1806644(424-435)Online publication date: 5-Jun-2010
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    TLDI '05: Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
    January 2005
    122 pages
    ISBN:1581139993
    DOI:10.1145/1040294
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 10 January 2005

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. abstract interpretation
    2. assembly code
    3. bytecode verification
    4. certified compilation
    5. dependent types

    Qualifiers

    • Article

    Conference

    TLDI05
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 11 of 26 submissions, 42%

    Upcoming Conference

    POPL '25

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

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

    Other Metrics

    Citations

    Cited By

    View all
    • (2019)Compiler bug isolation via effective witness test program generationProceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3338906.3338957(223-234)Online publication date: 12-Aug-2019
    • (2010)Inferable object-oriented typed assembly languageACM SIGPLAN Notices10.1145/1809028.180664445:6(424-435)Online publication date: 5-Jun-2010
    • (2010)Inferable object-oriented typed assembly languageProceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/1806596.1806644(424-435)Online publication date: 5-Jun-2010
    • (2006)Analysis of low-level code using cooperating decompilersProceedings of the 13th international conference on Static Analysis10.1007/11823230_21(318-335)Online publication date: 29-Aug-2006
    • (2005)The open verifier framework for foundational verifiersProceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation10.1145/1040294.1040295(1-12)Online publication date: 10-Jan-2005
    • (2005)Typed compilation against non-manifest base classesProceedings of the Second international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices10.1007/11741060_5(77-98)Online publication date: 8-Mar-2005
    • (2005)Using dependent types to certify the safety of assembly codeProceedings of the 12th international conference on Static Analysis10.1007/11547662_12(155-170)Online publication date: 7-Sep-2005

    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