2015 · 45 citations · 16 references
EngineeringIso C StandardVerificationComputer ArchitectureMemory Model (Programming)Software AnalysisFormal VerificationMemory ManagementHigh-level Programming LanguageProgramming Language TheoryFormal SpecificationArithmetic OperationsCompiler SupportAbstract InterpretationComputer EngineeringComputer ScienceOptimizing CompilerProgram AnalysisAutomated ReasoningFormal MethodsInteger-pointer CastsSystem Software
The ISO C standard does not specify the semantics of many valid programs that use non-portable idioms such as integer-pointer casts. Recent efforts at formal definitions and verified implementation of the C language inherit this feature. By adopting high-level abstract memory models, they validate common optimizations. On the other hand, this prevents reasoning about much low-level code relying on the behavior of common implementations, where formal verification has many applications. We present the first formal memory model that allows many common optimizations and fully supports operations on the representation of pointers. All arithmetic operations are well-defined for pointers that have been cast to integers. Crucially, our model is also simple to understand and program with. All our results are fully formalized in Coq.
16
Finding and understanding bugs in C compilers
Xuejun Yang, Yang Chen, Eric Eide et al. · 2011 · 714 citations
Finding and understanding bugs in C compilers
Xuejun Yang, Yang Chen, Eric Eide et al. · ACM SIGPLAN Notices · 2011 · 582 citations
A Formally Verified Compiler Back-end
Xavier Leroy · Journal of Automated Reasoning · 2009 · 475 citations · Full text
An executable formal semantics of C with applications
Chucky Ellison, Grigore Roşu · ACM SIGPLAN Notices · 2012 · 185 citations
Jaroslav Ševčík, Viktor Vafeiadis, Francesco Zappa Nardelli et al. · Journal of the ACM · 2013 · 172 citations