LUSTRE: a declarative language for real-time programming
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Implementation of the data-flow synchronous language SIGNAL
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Advanced compiler design and implementation
Advanced compiler design and implementation
Types and programming languages
Types and programming languages
Mode-automata: a new domain-specific construct for the development of safe critical systems
Science of Computer Programming - Special issure on formal methods for industrial critical systems (FMICS 2000)
Type-based initialization analysis of a synchronous dataflow language
International Journal on Software Tools for Technology Transfer (STTT) - Special section on tool integration applications and frameworks
A conservative extension of synchronous data-flow with state machines
Proceedings of the 5th ACM international conference on Embedded software
Formal verification of a c compiler front-end
FM'06 Proceedings of the 14th international conference on Formal Methods
Modular code generation from synchronous block diagrams: modularity vs. code size
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modular static scheduling of synchronous data-flow networks: an efficient symbolic representation
EMSOFT '09 Proceedings of the seventh ACM international conference on Embedded software
Machine-Checked Sequencer for Critical Embedded Code Generator
ICFEM '09 Proceedings of the 11th International Conference on Formal Engineering Methods: Formal Methods and Software Engineering
Use of formal methods for building qualified code generator for safer automotive systems
Proceedings of the 1st Workshop on Critical Automotive applications: Robustness & Safety
Reactive parallel processing for synchronous dataflow
Proceedings of the 2010 ACM Symposium on Applied Computing
Divide and recycle: types and compilation for a hybrid synchronous language
Proceedings of the 2011 SIGPLAN/SIGBED conference on Languages, compilers and tools for embedded systems
Semantic adaptation using CCSL clock constraints
MODELS'11 Proceedings of the 2011th international conference on Models in Software Engineering
Proceedings of the 13th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, Tools and Theory for Embedded Systems
Programming parallelism with futures in lustre
Proceedings of the tenth ACM international conference on Embedded software
Formal verification of synchronous data-flow program transformations toward certified compilers
Frontiers of Computer Science: Selected Publications from Chinese Universities
Hi-index | 0.00 |
The compilation of synchronous block diagrams into sequential imperative code has been addressed in the early eighties and can now be considered as folklore. However, separate, or modular, code generation, though largely used in existing compilers and particularly in industrial ones, has never been precisely described or entirely formalized. Such a formalization is now fundamental in the long-term goal to develop a mathematically certified compiler for a synchronous language as well as in simplifying existing implementations. This article presents in full detail the modular compilation of synchronous block diagrams into sequential code. We consider a first-order functional language reminiscent of LUSTRE, which it extends with a general n-ary merge operator, a reset construct, and a richer notion of clocks. The clocks are used to express activation of computations in the program and are specifically taken into account during the compilation process to produce efficient imperative code. We introduce a generic machine-based intermediate language to represent transition functions, and we present a concise clock-directed translation from the source to this intermediate language. We address the target code generation phase by describing a translation from the intermediate language to JAVA and C.