Skip to content
valenj18 edited this page Dec 8, 2012 · 13 revisions

Proti jazyku co zatim máme navržený to nepočítá s funkcemi mimo třídu a globálními proměnnými. V každém souboru je 1 třída a soubor má stejné jméno jako třída, stejně jako v javě.

ClassFile

  • CLASS NAME - char[25]
  • CONST POOL SIZE - uint16 - počet položek
  • CONST POOL - Const pool struct[CONST POOL SIZE]
  • FIELD COUNT - uint8
  • FIELDS - NAME[FIELD COUNT] (FIELD COUNT * char[25])
  • METHOD COUNT - uint8
  • METHODS - METHOD[METHOD COUNT]

Const pool struct

Různé typy struktur označené tagem uint8.

MethodRef

(Neobsahuje odkaz na metodu. Ten se zjišťuje dynamicky z typu proměnné. Typy parametrů nejsou potřeba.)

  • TAG - 1
  • NAME - char[25]
  • PARAM COUNT - uint8

ClassRef

  • TAG - 2
  • NAME - char[25]

StringConst

  • TAG - 3
  • LENGTH - uint16
  • VALUE - char[LENGTH]

IntConst

  • TAG - 4
  • VALUE - uint32

RealConst

  • TAG - 5
  • VALUE - double

FieldRef

  • TAG - 6
  • NAME - char[25]

Method

  • NAME - char[25]
  • FLAG - uint8 - metoda třídy 0, metoda objektu 1
  • PARAM COUNT - uint8
  • LOCALS COUNT - uint8
  • CODE SIZE - uint16
  • CODE - char[CODE SIZE]
Clone this wiki locally