An Experimental Environment Validating the Suitability of CLI as an Effective Deployment Format for Embedded Systems

  • Marco Cornero
  • Roberto Costa
  • Ricardo Fernández Pascual
  • Andrea C. Ornstein
  • Erven Rohou
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4917)


Software productivity for embedded systems is greatly limited by the fragmentation of platforms and associated development tools. Platform virtualization environments, like Java and Microsoft .NET, help alleviate the problem, but they are limited to host functionalities running on the system microcontroller. Due to the ever increasing demand for processing power, it is desirable to extend their benefits to the rest of the system. We present an experimental framework based on GCC that validates the choice of CLI as a suitable processor-independent deployment format. In particular, we illustrate our GCC port to CLI and we evaluate the generated bytecode in terms of code size and performance. We inject it back into GCC through a CLI front-end that we also illustrate, and we complete the compilation down to native code. We show that using CLI does not degrade performance. Compared to other CLI solutions, we offer a full development flow for the C language, generating a subset of pure CLI that does not require any virtual machine support other than a JIT compiler. It is therefore well suited for deeply embedded media processors running high performance media applications.


Common Language Infrastructure embedded systems deployment GCC 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    DotGNU project,
  2. 2.
    Mono-compatible compilers,
  3. 3.
    The Mono Project,
  4. 4.
    Bona, A., Costa, R., Ornstein, A., Rohou, E.: GCC CLI back-end project,
  5. 5.
    Costa, R., Ornstein, A., Rohou, E.: CLI Back-End in GCC. In: GCC Developers’ Summit, pp. 111–116, Ottawa, Canada (July 2007)Google Scholar
  6. 6.
    Costa, R., Rohou, E.: Comparing the Size of .NET Applications with Native Code. In: Proceedings of the 3rd IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis, Jersey City, NJ, USA, pp. 99–104. ACM Press, New York (2005)CrossRefGoogle Scholar
  7. 7.
    ECMA International, Rue du Rhône 114, 1204 Geneva, Switzerland. Common Language Infrastructure (CLI) Partitions I to IV, 4th edn. (June 2006)Google Scholar
  8. 8.
    Free Software Foundation. The GNU Compiler Collection,
  9. 9.
    The GNU Compiler for the Java Programming Language.
  10. 10.
    Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, 2nd edn. Addison-Wesley, Reading (2000)Google Scholar
  11. 11.
    Guthaus, M.R., Ringenberg, J.S., Ernst, D., Austin, T.M., Mudge, T., Brown, R.B.: MiBench: A free, commercially representative embedded benchmark suite. In: IEEE 4th Annual Workshop on Workload Characterization, Austin, TX, USA (December 2001)Google Scholar
  12. 12.
    Hanson, D.R.: Lcc.NET: Targeting the .NET Common Intermediate Language from Standard C. Software: Practice and Experience 34(3), 265–286 (2003)CrossRefGoogle Scholar
  13. 13.
    International Organization for Standardization and International Electrotechnical Commission. International Standard ISO/IEC 23271:2006 - Common Language Infrastructure (CLI), Partitions I to VI, 2nd edn.Google Scholar
  14. 14.
    International Organization for Standardization and International Electrotechnical Commission. International Standard ISO/IEC 9899:TC2 - Programming languages - C (1999)Google Scholar
  15. 15.
  16. 16.
    Lee, C., Potkonjak, M., Mangione-Smith, W.H.: MediaBench: A Tool for Evaluating and Synthesizing Multimedia and Communications Systems. In: Proceedings of the 30th Annual IEEE/ACM International Symposium on Microarchitecture, pp. 330–335 (1997)Google Scholar
  17. 17.
    Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn. Addison-Wesley, Reading (1999)Google Scholar
  18. 18.
    Merill, J.: GENERIC and GIMPLE: A New Tree Representation for Entire Functions. In: GCC Developers’ Summit (2003)Google Scholar
  19. 19.
    Fernández Pascual, R.: HiPEAC PhD Internship – GCC CIL Frontend (2006),
  20. 20.
    Rabe, B.: Towards a CLI Assembly Format for Embedded Systems. In: International Conference on Embedded Systems and Applications, Las Vegas, NE, USA (June 2006)Google Scholar
  21. 21.
    Richter, S., Rasche, A., Polze, A.: Hardware-near Programming in the Common Language Infrastructure. In: Proceedings of the 10th IEEE International Symposium on Object and Component-oriented Real-time Distributed Computing, Santorini Island, Greece (May 2007)Google Scholar
  22. 22.
    Singer, J.: GCC .NET – a Feasibility Study. In: 1st International Workshop on C# and .NET Technologies on Algorithms, Computer Graphics, Visualization, Distributed and WEB Computing, Plzen, Czech Republic (2003)Google Scholar
  23. 23.
    Stallman, R.M., and the GCC Developer Community. GNU Compiler Collection Internals. Free Software FoundationGoogle Scholar
  24. 24.
    STMicroelectronics. STb7100-MBoard Datasheet – Single-chip, low-cost HD set-top box decoder for digital TV, digital set-top box or cable box (December 2005)Google Scholar
  25. 25.
    Operating Systems and Middleware Group. Lego.NET website,
  26. 26.
    Löwis, M.v., Möller, J.: A Microsoft .NET Front-End for GCC. In: Proceedings of .NET Technologies 2006, Plzen, Czech Republic (June 2006) ISBN 80-86943-11-9 Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Marco Cornero
    • 1
  • Roberto Costa
    • 1
  • Ricardo Fernández Pascual
    • 1
  • Andrea C. Ornstein
    • 1
  • Erven Rohou
    • 1
  1. 1.STMicroelectronics Advanced System TechnologyManno(Switzerland)

Personalised recommendations