image
{
  header  header
  item[]  items   // each item aligned by swSize
}
header
{
  0:   u4    magic: 0x5ED0BA07 for big endian, 0x07BAD05E for little endian
  4:   u1    majorVer: 1
  5:   u1    minorVer: 0
  6:   u1    blockSize:  addr = blockIndex*blockSize + codeBaseAddr
  7:   u1    refSize: num bytes in address pointers
  8:   u4    imageSize: num bytes of whole image including full header
  12:  u4    dataSize: num bytes for static field data
  16:  bix   main method block index
  18:  bix   test table
  20:  bix   kits array block index
  22:  u1    number of kits in kits array
}
                                
item
{
  vtable | kit | type | int | float | long | double | str | 
  slot | log | method | tests | qnameType | qnameSlot
}
vtable
{
  u2[]  block indexes to each virtual method
}
kit
{
  // see sys::Kit field memory layout
}
type
{
  // see sys::Type field memory layout
}
slot
{
  // see sys::Slot field memory layout
}
log
{
  // see sys::Log field memory layout
}
int
{
  0: s4  32-bit integer constants
}
long
{
  0: s8  64-bit integer constants
}
float
{
  0: f4  32-bit float constants
}
double
{
  0: f8  64-bit double constants
}
str
{
  0: u1[]  ASCII char string terminated by 0 (C string literal)
}
method
{
  0: u1      numParams (including implicit this)
  1: u1      numLocals
  2: u1[]    opcodes
}
tests
{
  u2     count
  test[] table
}
test
{
  u2:  qnameSlot
  u2:  test method
}
qnameType
{
  u2:  kit name str index
  u2:  type name str index
}
qnameSlot
{
  u2:  qnameType index
  u2:  slot name str index
}