Slim Binaries for Intel Processors

Erwin Brandenberger

Diploma Thesis Winter 1995/96
Supervisors: Th. Kistler, Prof. M. Franz
Institute for Computer Systems, ETH Zürich


A Oberon Module Interchange (OMI) was developed at the institut for computer systems. With OMI, it's possible to generate machine code with high speed. Files coded in this way are portable object files. A first implementation exists for Apple-Macintosh computers. It's to make another implementation for Intel-80x86-Processors for Microsoft Windows. If it's possible, it's to use the already existing program sources. Firstly, it's to converse the Windows-Oberon to the OMI symbol file format. This means already a real progress for Windows Oberon. Secondly, it's to implement a code generator at program loading time with already existing sources of the Intel-Compiler.


Firstly, the conversion of the Windows-Oberon to the OMI symbol file format was implemented. Because OMI uses the object model, this conversion already means a real progress for Windows-Oberon. This progress is a decrease in the number of the required recompilations to a theoretical average value. This leads to an enormous saving of time when compiling a project, because it's possible to skip consistent modules. Another gain are the practical advantages of the commercial run time libraries. Extensions of selfmade libraries are always compatible to older client moduls of other manufacturers. The costs of time of the compilation and loading of the modules can almost be neglected. The increase in size of the object file lies in an acceptable range. The recompilation of already consistent modules can be avoided by adding a new compiler option (\u). With the extended interface browser the consistence of a collection of modules can be checked. It also shows the differences between varied modules.

Secondly, the oberon module interchange was implemented. A programmer has to get used to apply OMI compatible program code. This statement is supported by the fact, that the code generator at program loading time is loaded during the boot time of the WinOberon system. However, this is only useful, when it's standard that the compiler generates machine independent object code. Although the generation of machine dependent object code must be supported. Therefore a new compiler option (\N) has been introduced.

OMI on the Intel processors leads to a lot of new applications. Many tools, which have been or will be developed for Oberon at ETH, have to be written and compiled just once. All adaptations for all other computer systems vanish. To reach this goal, it's necessary to standardize the program language Oberon and the interfaces of the standard modules. It's necessary that the compiler displays an error message, if a non standard object is used. This asks for an improvement in the skills of the compiler.

With OMI it's possible to distribut even programs on the internet, instead of only texts and pictures. The consequences can't be judged at the moment. Depending on the offered run time libraries, the safety and integrity of the computers could be in danger. On the other side, procedures can possibly be developed to improve the exchange of keys and increase the safety of computer systems.


The full report of the project is available in German as a GZIP-compressed PostScript file.

[ Computer Science-Department | Institut for Computer Systems | Student Projects ]
ETH Zürich: Department of Computer Science
Comments to Jacques Supcik <>