Table of Contents

Examining IL code

You can 'disassemble' an ooeu program using dis.ex. It takes one command line parameter, which is the file name to be disassembled. The file must be an ooeu shrouded file, with an oe extension. If the extension is omitted, dis.ex will append it. The output will be sent to a file with the same base name as the shrouded file, but with a 'dis' extension added. The numerical il code is given for each subprogram (including TopLevel), along with a mneumonic, assembler-like output on the right half of each line.

Variables and literals are shown in square brackets. After the name or value, a colon will appear, followed by a number. This number is the position of the symbol in the symbol table. Goto labels appear on the left side in the place of the il index, followed by a colon. Strings appear as quoted strings, while atoms appear as numbers, and variables appear as the variable names. Some constants are not assigned values at compile time (i.e., constants that are defined by an expression or a function call), so constants may appear as strings or atoms or as the name of the constant.

For a simple Hello, World application:

for i = 1 to 10 do
	puts( 1, "Hello, World!\n" )
end for

The disassembly looks like this:

SubProgram [_toplevel_:00103]
     1: 125 106 107 106 103 105 16       # FOR_I: inc [LIT 1:106], lim [LIT 10:107],
                                         #     initial [LIT 1:106], lv [i:105], jmp 0016
     8: 044 106 108                      # PUTS: [LIT 1:106], [LIT "Hello, World!\n":108]
    11: 054 8 107 105 106                # ENDFOR_INT_UP1: top 0008, lim: [LIT 10:107],
                                         #     lv [i:105]
    16: 034                              # RETURNT:
End SubProgram [_toplevel_:00103]