[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2554850.2555012acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

Complexity checking of ARM programs, by deduction

Published: 24 March 2014 Publication History

Abstract

In this paper we address two main questions: how to reason about the correctness of unstructured programs (particularly programs written in ARM Assembly) and how to use a proof-based system to check computational complexity of such programs. We approach the correctness issue by applying a flow sequentialization methodology and a formalized semantics of ARM instructions. An annotated ARM program is turned into a set of purely sequential programs, then each instruction is mapped into the corresponding formalized opcodes and finally Why3's VCGen is employed to generate proper Verification Conditions. Regarding complexity checking, we propose a methodology, based on the sequentialization process, by encoding instructions CPU-cost into their semantics and checking the program's calculated cost against user-supplied cost information (cost properties will be treated as normal functional annotations). Along with the formalization of correctness and complexity reasoning techniques, a prototype tool has been implemented and used to verify both the correctness and complexity of some practical examples.

References

[1]
Jade Alglave, Anthony Fox, Samin Ishtiaq, Magnus O. Myreen, Susmit Sarkar, Peter Sewell, and Francesco Zappa Nardelli. The semantics of power and arm multiprocessor machine code. In Proc. of the 4th workshop on Declarative aspects of multicore programming, pages 13--24, New York, NY, USA, 2009.
[2]
Mike Barnett, K. Leino, and Wolfram Schulte. The spec# programming system: An overview. In Construction and Analysis of Safe, Secure, and Interoperable Smart Devices. 2005.
[3]
Mike Barnett and K. Rustan M. Leino. Weakest-precondition of unstructured programs. SIGSOFT Softw. Eng. Notes, 31(1): 82--87, September 2005.
[4]
Jean-Christophe Filliâtre. One logic to use them all. pages 1--20.
[5]
Jean-Christophe Filliâtre. Formal Verification of MIX Programs. In Journées en l'honneur de Donald E. Knuth, October 2007.
[6]
Jean-Christophe Filliâtre. Deductive Program Verification. Thèse d'habilitation, Université Paris-Sud, December 2011.
[7]
Jean-Christophe Filliâtre. Deductive software verification. International Journal on Software Tools for Technology Transfer (STTT), 13(5): 397--403, August 2011.
[8]
Jean-Christophe Filliâtre and Andrei Paskevich. Why3 --- where programs meet provers. In Proc. of the 22nd European Symposium on Programming, March 2013.
[9]
Jonas B. Jensen, Nick Benton, and Andrew Kennedy. High-level separation logic for low-level code. In Proc. 40th annual ACM symposium on Principles of programming languages, pages 301--314, New York, NY, USA, 2013.
[10]
Xavier Leroy. The CompCert verified compiler, software and commented proof, March 2012.
[11]
ARM Limited. ARM7TDMI Data Sheet, 1995.
[12]
Zhaozhong Ni and Zhong Shao. Certified assembly programming with embedded code pointers. In Proc. 33rd ACM symposium on Principles of programming languages, pages 320--333, 2006.
[13]
François Pottier. Types for complexity-checking, March 2011. Talk given at ENS, Lyon, France.
[14]
Xiaomu Shi, Jean-François Monin, Frédéric Tuong, and Frédéric Blanqui. First steps towards the certification of an arm simulator using compcert. CoRR, abs/1202.6472, 2012.
[15]
Konrad Slind and Michael Norrish. A brief overview of hol4. In TPHOLs, pages 28--32, 2008.
[16]
Reinhard Wilhelm, Jakob Engblom, Andreas Ermedahl, Niklas Holsti, Stephan Thesing, David Whalley, Guillem Bernat, Christian Ferdinand, Reinhold Heckmann, Tulika Mitra, Frank Mueller, Isabelle Puaut, Peter Puschner, Jan Staschulat, and Per Stenström. The worst-case execution-time problem - overview of methods and survey of tools. ACM Trans. Embed. Comput. Syst., 7(3): 36:1--36:53, May 2008.

Cited By

View all
  • (2017)Verifying Branch-Free Assembly Code in Why3Verified Software. Theories, Tools, and Experiments10.1007/978-3-319-72308-2_5(66-83)Online publication date: 15-Dec-2017

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
SAC '14: Proceedings of the 29th Annual ACM Symposium on Applied Computing
March 2014
1890 pages
ISBN:9781450324694
DOI:10.1145/2554850
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: 24 March 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. ARM
  2. complexity checking
  3. deductive software verification
  4. hoare logic
  5. unstructured control flow graph
  6. why3

Qualifiers

  • Research-article

Funding Sources

Conference

SAC 2014
Sponsor:
SAC 2014: Symposium on Applied Computing
March 24 - 28, 2014
Gyeongju, Republic of Korea

Acceptance Rates

SAC '14 Paper Acceptance Rate 218 of 939 submissions, 23%;
Overall Acceptance Rate 1,650 of 6,669 submissions, 25%

Upcoming Conference

SAC '25
The 40th ACM/SIGAPP Symposium on Applied Computing
March 31 - April 4, 2025
Catania , Italy

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)1
Reflects downloads up to 07 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2017)Verifying Branch-Free Assembly Code in Why3Verified Software. Theories, Tools, and Experiments10.1007/978-3-319-72308-2_5(66-83)Online publication date: 15-Dec-2017

View Options

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