My purpose in writing this application was twofold. First, I wanted to fully understand the structure of the Slim BinaryTM format, with all its strengths and weaknesses, as a springboard for further research. Secondly, the decoder demonstrates the ease with which high-level semantic information can be extracted (and plausibly used for module verification, optimization, etc.), given a properly designed portable code format.
Since there exists no formal (or even quasi-formal) specification for the Slim BinaryTM layout, the sb1d utility presented here cannot ever be viewed as being "complete" in any meaningful sense of the term. The application succesfully decompiles those Oberon-2 .Obj files, found in the Windows and MacOS distributions of Oberon System 3, that I had a chance to test out. Unfortunately, my little program can never be guaranteed to handle any and all such files (to say nothing of object files on other Oberon ports).
Should you encounter weird problems during compilation and/or execution,
please
let me know. Any feedback regarding
the usability and understandability of the system shall also
be appreciated.
The following items are available for download (the usual disclaimers
apply):
![]() |
The Slim BinaryTM Decompiler C++
Source Code (Ver 1.30: 24-Nov-1999.)
Use these to compile the decoder on your platform.
|
![]() |
The Slim BinaryTM Decompiler Win32
Executable (Ver 1.30: 24-Nov-1999.)
This is a pre-built executable (.exe) for 32-bit Windows platforms.
(I've tested it only on Windows NT 4.0, though.)
|
![]() new! |
The Slim BinaryTM Decompiler MacOS
PowerPC Executable (Ver 1.30: 24-Nov-1999.)
With the help of my friends, I have finally been able to figure out
how to build this thing for the Mac! :) It is packaged as a StuffIt
ExpanderTM document containing the actual sb1d application.
When you double-click on the resulting sb1d icon, you will be
prompted for the .Obj file name. For convenience, you may want
to place sb1d in the same directory as the files you want to decompile
(e.g., the :Obj: subfolder of your Oberon System 3 tree).
|