Efficient Construction of Over-approximated CFG on Esterel

Esterel에서 근사-제어 흐름그래프의 효율적인 생성

  • Published : 2009.11.15

Abstract

A control flow graph(CFG) is an essential data structure for program analyses based on graph theory or control-/data- flow analyses. Esterel is an imperative synchronous language and its synchronous parallelism makes it difficult to construct a CFG of an Esterel program. In this work, we present a method to construct over-approximated CFGs for Esterel. Our method is very intuitive and generated CFGs include not only exposed paths but also invisible ones. Though the CFGs may contain some inexecutable paths due to complex combinations of parallelism and exception handling, they are very useful for other program analyses.

프로그램에 대한 자료흐름분석(data flow analysis)를 수행하기 위해서는 입력된 프로그램에 대응하는 제어흐름그래프(control flow graph)가 필요하다. 본 논문에서는 동기(synchronous)식 절차(imperative)형 언어 중 하나인 Esterel로 작성된 프로그램에 대해서 단순하면서 입력 프로그램의 구조와 흡사한 형태로 표현되는 근사-제어흐름그래프(over-approximated CFG) 생성방법을 제안한다. 제안된 방법을 이용하면 병렬 제어흐름을 표현하는 부분에서 실행 불가능한 경우까지 포함할 수 있다. 그렇지만, 생성방법이 직관적이고, 실제 수행경로를 모두 포함하기 때문에 다른 분석을 수행하는데 매우 적차하다.

Keywords

References

  1. G. Berry, “The Esterel Primer,” Included in the Esterel distribution, Available on http://www.inria.fr/meije/personnel/Gerard.Berry.html, 1998
  2. G. Berry, "The Constructive Semantics of Pure ESTEREL," Draft book available at http://www.inria.fr/meije/esterel/esterel-eng.html, 1999
  3. G. Berry, “The Foundations of Esterel. Proof, Lan-guage and Interaction: Essays in Honour of Robin Mimer,” pp.425-454, 2000
  4. D. Potop-Butucaru, S. A. Edwards. and G. Berry, “Compiling ESTEREL,” Springer, 2007
  5. N. Halbwachs, “Synchronous Programming of Reactive Systems,” Kluwer Academic Publishers, Dordrecht, 1993
  6. A. Benveniste, P. Caspi, S.A. Edwards, N. Halb-wachs, P. Le Guernic, and R. de Simone, "The Synchronous Languages 12 Years Later," Embe-dded Systems, Proceedings of the IEEE, 91(1):64-83, 2003 https://doi.org/10.1109/JPROC.2002.805826
  7. S. Benvenistre and G. Berry, "The synchronous approach to reactive real-time systems," Another Look of Real Time Programming, Proceedings of the IEEE, 79(9):1270-1282, 1991 https://doi.org/10.1109/5.97297
  8. G. Berry, “Preemption in concurrent systems,” In Proceedings of the 13th Conference on Founda-tions of Software Technology and Theoretical Computer Sdence, pp.72-93, Springer-Verlag, London, UK, 1993
  9. "CEC: The columbia esterel compiler v0.4," http://www1.cs.columbia.edu/^~sedeards/cec/
  10. S. A. Edwards and Jia Zeng, “Code Generation in the Columbia Esterel Compiler,” EURASIP Journal On Embedded Systems, Volume 2007, Article ID 52651, pp.31, 2007
  11. D. Potop-Butucaru, “Optimizations for faster exe-cution of Esterel programs,” in Proceedings of the 1st International Conference on Formal Methods and Models for Codesign (MEMOCODE'03), pp.227-236, Mont St. Michel, France, June 2003
  12. K. Schneider, “Embedding Imperative Synchronous Languages in Interactive Theorem Provers,” ACSD, pp.143, Second International Conference on Application of Concurrency to System Design (ACSD'01), 2001
  13. S. Ramesh, A. Kulkarni, V. Kamat, “Slicing tools for synchronous reactive programs,” Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis, July 2004 https://doi.org/10.1145/1007512.1007541
  14. A. R. Kulkarni, S. Ramesh, "Static Slicing of Reactive Programs," scam, pages 98, Third IEEE International Workshop on Source Code Analysis and Manipulation, 2003
  15. “Estbench esterel benchmark suite,” http://www1.cs.columbia.edu/~sedwards/software/estbench-1.0.tar.gz
  16. S. Ramesh, Ramesh's homepage. http://www.cse.iitb.ac.in/~ramesh