We translate all necessary Classfiles directly into executable target code. There is no need for object files. However, we use files to specify the target configuration (Configuration), to run target commands (Target Commands) and for the target image.
All file formats start with a 8 byte keyword.
#XXXX-Y\n
Where XXXX gives the format and Y stands for a single digit version number. The number sign # is used in all our file formats for comments. When openening any file the keyword dictates which parser to use and also which version of the parser. This makes it possible to change the syntax of the configuration file. When loading the file the proper parser has to be used.
The configuration of the target platform is described in detail in Configuration.
The Target Command Table is a list with all methods which can be used as commands. Commands are parameterless methods with no return value. The Target Command Table lists this commands sorted according to classes and holds for each method its address in the memory. The file has the following structure:
#dtct-0 cmdAddr@ADDRESS >CLASSNAME@ADDRESS { !METHODNAME@ADDRESS !METHODNAME@ADDRESS !METHODNAME@ADDRESS }
cmdAddr is the address in the memory where address of a certain command has to be written in order to be executed by the scheduler.
As an example:
>org/deepjava/runtime/mpc555/demo/Test@8458068 { !doubleValue@8456880 !halfValue@8456984 !startTask@8457604 !stopTask@8457688 }
The Launcher creates an executable image which can be downloaded to the target. On demand this image can also be written into a file on the disk. This could be useful if the image is downloaded by an external debugger. The image file lists all memory segments with base address and size in a linear fashion.
#dtim-0\n 4 byte base address 4 byte segment size (in byte) n byte segment data 4 byte base address 4 byte segment size (in byte) n byte segment data . . .