Toward compiler implementation correctness proofs
ACM Transactions on Programming Languages and Systems (TOPLAS)
The C programming language
Semantics with applications: a formal introduction
Semantics with applications: a formal introduction
A framework for unifying reordering transformations
A framework for unifying reordering transformations
Lazy array data-flow dependence analysis
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Static analysis of upper and lower bounds on dependences and parallelism
ACM Transactions on Programming Languages and Systems (TOPLAS)
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
Transforming set data types to power optimal data structures
ISLPED '95 Proceedings of the 1995 international symposium on Low power design
Piton: a mechanically verified assembly-level language
Piton: a mechanically verified assembly-level language
ML for the working programmer (2nd ed.)
ML for the working programmer (2nd ed.)
Memory simulators and software generators
Proceedings of the 1997 symposium on Software reusability
DAC '98 Proceedings of the 35th annual Design Automation Conference
Advanced compiler design and implementation
Advanced compiler design and implementation
Real-time rendering
Program specification and development in standard ML
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
Automated data-member layout of heap objects to improve memory-hierarchy performance
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Program development by stepwise refinement
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Typed memory management via static capabilities
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
BI as an assertion language for mutable data structures
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Composing high-performance memory allocators
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Pointer analysis: haven't we solved this problem yet?
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Automatic data structure choice in a language of very high level
POPL '75 Proceedings of the 2nd ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Algebraic Semantics of Imperative Programs
Algebraic Semantics of Imperative Programs
Custom Memory Management Methodology: Exploration of Memory Organisation for Embedded Multimedia System Design
Data Structures and Algorithms
Data Structures and Algorithms
The range test: a dependence test for symbolic, non-linear expressions
Proceedings of the 1994 ACM/IEEE conference on Supercomputing
Separation Logic: A Logic for Shared Mutable Data Structures
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
C-: A Portable Assembly Language
IFL '97 Selected Papers from the 9th International Workshop on Implementation of Functional Languages
Reasoning about Hierarchical Storage
LICS '03 Proceedings of the 18th Annual IEEE Symposium on Logic in Computer Science
Automated Dynamic Memory Data Type Implementation Exploration and Optimization
ISVLSI '03 Proceedings of the IEEE Computer Society Annual Symposium on VLSI (ISVLSI'03)
Assertions: a personal perspective
Software pioneers
The secret history of information hiding
Software pioneers
Abstract data types, then and now
Software pioneers
Local reasoning about a copying garbage collector
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Separation and information hiding
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the conference on Design, automation and test in Europe - Volume 1
Array regrouping and structure splitting using whole-program reference affinity
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Experience with safe manual memory-management in cyclone
Proceedings of the 4th international symposium on Memory management
Transition predicate abstraction and fair termination
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Aspect Oriented Refactoring
Systematic dynamic memory management design methodology for reduced memory footprint
ACM Transactions on Design Automation of Electronic Systems (TODAES)
DiSTiL: a transformation library for data structures
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Memory-access-aware data structure transformations for embedded software with dynamic data accesses
IEEE Transactions on Very Large Scale Integration (VLSI) Systems - Special section on the 2002 international symposium on low-power electronics and design (ISLPED)
SAMOS'05 Proceedings of the 5th international conference on Embedded Computer Systems: architectures, Modeling, and Simulation
Memory management for embedded network applications
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
Hi-index | 0.00 |
In the computer science community, data structure design is mainly conducted at a high level of abstraction under the implicit assumption that the platform contains a monolithic memory. Exploiting platform-related knowledge such as available on-chip and off-chip memory sizes, the cache size, and the number of SDRAM banks is mainly conducted in the system engineering community when the refined data structure has already been chosen. A convergence of both communities is desirable since this can lead to powerful optimizations. To achieve the convergence mentioned above, data-related transformations have been researched extensively in the recent past. Many of these transformations have a direct and large impact on memory footprint, execution time and energy consumption. Unfortunately, however, the most effective transformations are applied manually (e.g. in C code) and these result in a very time-consuming and error-prone design process. To overcome this burden, our general research goal is to develop a computer-aided design tool, called EASY MAP, that helps the designer to correctly construct the C code of an efficient but difficult-to-understand data structure. The formal design of EASY MAP is the topic of this article with the emphasis on Cha, the internal language of EASY MAP. Cha is based on a novel extension of Separation Logic's spatial conjunction operator (*), allowing it to concisely describe access operations of an irregularly accessed complex data organization. Cha is the basic building block of EASY MAP; it serves the purpose of automating EASY MAP's refinement process and proving that it is correct by construction.