XEC 1.2.2
XEC - the eXperimental Estelle Compiler

Frequently Asked Questions


What is XEC?

XEC is an acronym for "eXperperimental Estelle Compiler" It is a tool to create executable implementations from specifications written in the language Estelle. These implementations can run stand-alone, or as part of a larger (automatically or manually created) context.

The XEC toolkit currently consists of the following components: XEC was created as a platform for implementation and optimization experiments with Estelle. Therefore the generated code is run time efficient, allows static and dynamic optimizations and supports software monitoring and performace analysis.

What is the language supported by XEC?

XEC supports the complete Estelle language defined in [ISO97], except the following restrictions: (The latter two restrictions will be removed in near future.)

Furthermore, the following extensions to the Estelle language defined in [ISO97] are implemented by XEC: Some of these extensions (e.g. Open Estelle) will require our enhanced version 2.0 of PET (included in the XEC toolkit).

On which (hardware/software) platforms will XEC work?

The compiler XEC (as well as its frontend PET) will work on any platform with a C++-Compiler supporting ANSI/ISO-C++ (according to X3J16/96-0225, WG21/N1043, final draft, December 2, 1996).

On UNIX platforms GNU g++ 2.7 and 2.8 come very close to this requirement, although both have several severe bugs, but in most cases it will work. Perhaps you will need a new linker (from the GNU "binutils" package) to be able to compile XEC.

The generated code and most of the runtime-library can be compiled under the same conditions as XEC itself. All platform dependent elements (e.g. "gettime...()" funtion-calls) are collected in the library source file "xecrt_context.cxx". Porting to non-UNIX platforms (and even to some UNIX platforms) may require some adaptions in this module. Currently XEC and the generated code have been ported to and tested under Ports to the following platforms will (or may) be developed in near future: EGD will work on any platform with a JAVA VM supporting JAVA 1.1 and JAVA SWING or JAVA 1.2.

PATO (at least the graphical backend) uses MOTIF (i.e. AFAIK only X11/UNIX).

How do I use XEC?

There are basically 3 steps from a specification to an implementation:
  1. The Estelle specification (x.stl) is translated by the separate compiler frontend PET into an equivalent binary representation (x.obj).

  2. XEC translates this binary representation into object oriented C++ code (x.cxx and x.hxx) and a "make"-file (x.mak).

  3. Under control of the "make"-file a common C++ compiler (e.g. g++) can translate the generated C++ code and the XEC run-time library into an executable file (x).

How do I use the generated implementations?


What's the difference between XEC and other Estelle compilers?

Currently there are 3 other Estelle compilers:

Research-Activities Estelle XEC XEC-FAQ