Stefan Frenz

 
  Home /  Kempten University /  Ulm University /  Impressum  
 
SJC Compiler
PicOS

ATmega Projects
ATmega Demo

Publications
Mail

   

Compiler

Direct link to the latest files: source V0178, executables V0178, manual V038.

Versions after V0175 do no longer support the MARKER-specials. The corresponding functionallity is moved to a SJC-Annotation-special. If you need the old MARKERs, please use V0175.

Versions beginning with V0177 support interface arrays, please adopt your runtime environment.

Direct link to the nightly snapshot executables (caution - this may be a non-working development version) and the corresponding nightly snapshot sources. You can also look at the SVN-versions and the build log of the current nightly snapshot.



I wrote a small compiler that translates some kind of java-subset into native code, either to run in an ia32 compliant protected mode or an amd64 compliant long mode. Furthermore you can produce code for a virtual machine with an unlimited amount of registers allowing almost write-once semantics for the used registers. Patrick Schmidt worked on an emulator for this machine, and also he helped to set up the backend for an Atmel ATmega microcontroller, thank you very much. :-)

The compiler requires Sun-Java to be compiled, after boot-strapping the compiler is able to compile itself. There are only few special things (namely the pseudo-classes MAGIC and MARKER) that enable system programming in a typesafe language. The compiler is used to compile PicOS, Rainbow OS, parts of Wissenheim, the code for the ATmega demo board and a few private projects.

The design is straight forward and extensible. You are welcome to write a new frontend (perhaps some Pascal style?) or a new backend (perhaps for an ARM processor?). For sure there are several bugs in this piece of software. If you need help doing something with my compiler or if you found a bug, please do not hesitate to contact me.

There is a set of slides containing a short overview used at an invited speech on March 17th 2008.

The compiler is released under the GNU Public License, you can get the source code here. Please note that the copyright still belongs to me (Stefan Frenz) and, for the emulator and the basic ATmega backend, also to Patrick Schmidt, who is mentioned in the header of the regarding class files.

If you like to edit the source code with the same Eclipse code style, you can download it here.

All executable versions contain a small runtime environment and a README.TXT to get started.



There is a version 169 since 2009/02/21 with several bugfixes and extensions. This is also the first officially released version under GPL. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 169 there is a short manual in version 29 since 2009/02/21 describing the compiler's specials and some small examples. The manual is available only in German at the moment.

There is a version 170 since 2009/04/27 with several bugfixes and extensions. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 170 there is a short manual in version 30 since 2009/04/27 describing the compiler's specials and some small examples. The manual is available only in German at the moment.

There is a version 171 since 2009/05/16 with basic flow control and some bugfixes. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 171 there is a short manual in version 31 since 2009/05/16 describing the compiler's specials and some small examples. The manual is available only in German at the moment.

There is a version 172 since 2009/08/09 with more flow analysis and some bugfixes. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 172 there is a short manual in version 32 since 2009/08/09 describing the compiler's specials and some small examples. The manual is available only in German at the moment.

There is a version 173 since 2009/10/17 with support for automatic relation analysis and some bugfixes. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 173 there is a short manual in version 33 since 2009/10/17 describing the compiler's specials and some small examples. The manual is available only in German at the moment.

There is a version 174 since 2009/11/09 with support for line number debugging hints, better flow analysis, some bugfixes and a new tool called GetMthd for easy offline-debugging. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 174 there is a short manual in version 34 since 2009/11/09 describing the compiler's specials and some small examples. The manual is available only in German at the moment.

There is a version 175 since 2010/04/01 with support empty arrays, pre-initialized objects and some bugfixes. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 175 there is a short manual in version 35 since 2010/04/01 describing the compiler's specials and some small examples. The manual is available only in German at the moment.



Versions after V0175 do no longer support the MARKER-specials. The corresponding functionallity is moved to a SJC-Annotation-special. If you need the old MARKERs, please use V0175.

There is a version 176 since 2010/04/02 with SJC-Annotations instead of the MARKER-special class. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

There is a version 176a since 2010/04/09 with a major bugfix regarding instance variable initialization. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 176 and 176a there is a short manual in version 36 since 2010/04/02 describing the compiler's specials and some small examples. The manual is available only in German at the moment.

There is a version 177 since 2010/04/29 with support for interface arrays and the syntax of enhanced for loops. Now there is support for flash arrays (required for ATmega programming) and an option maker GUI. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 177 there is a short manual in version 37 since 2010/04/29 describing the compiler's specials and some small examples. The manual is available only in German at the moment.

There is a new version 178 since 2010/05/18 with lots of internal optimizations and several bugfixes. There is a new graphical option maker application in the ui-package named SCG in the Java-version. You can also download native executables for Windows and Linux (both 32 bit), these versions do not require any other java compiler or runtime environment to be installed (example program is attached, too).

For version 178 there is a short manual in version 38 since 2010/05/18 describing the compiler's specials and some small examples. The manual is available only in German at the moment.