Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:deep:dev:start [2014-02-27 13:49] – graf | software:deep:dev:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Project deep ====== | ||
- | Under the name of **deep** a new cross development platform for Java was created. The project was initiated and is maintained by the Institut for Computer Science at the Fachhochschule für Technik, NTB, Buchs, Switzerland. | ||
- | <box 40% right | Components> | ||
- | * [[.: | ||
- | * [[.: | ||
- | * [[.: | ||
- | * [[.: | ||
- | * [[.: | ||
- | * [[.: | ||
- | * [[.: | ||
- | * [[.: | ||
- | * [[.: | ||
- | </ | ||
- | ===== Goals ===== | ||
- | * Development platform for Java including compiler, linker and runtime system. | ||
- | * Focus on efficiency, for the core of the compiler very lightweight data structures are used, the powerful but slow Java library is solely used for odd tasks. | ||
- | * Supports newest Java version. | ||
- | * Integration into eclipse, but can be run stand-alone as well. | ||
- | * "Java on the metal": | ||
- | * No object files, a launch translates all necessary classes into target image | ||
- | * Runtime library is simplified standard library. | ||
- | * A fast and lightweight path to the underlying hardware with registers and absolute memory locations is provided. | ||
- | |||
- | ===== Overview ===== | ||
- | A Java compiler converts a Java file into a class file. A class file represents the original program in a compact binary form and could be interpreted by a JVM or, as in our case, will be translated directly in the target machine code. Bytecode is strictly defined in [[http:// | ||
- | |||
- | ===== Crosscompiler ===== | ||
- | Our **deep** compiler translates Bytecode into machine code for a certain processor. To optimize for speed and code size and to make use of register based architecture - such as PPC - we transform the Bytecode in a first step into [[.: | ||
- | |||
- | ==== Frontend ==== | ||
- | The product of the frontend is the code in SSA form. Every necessary class with all its methods are parsed (see [[.: | ||
- | |||
- | ==== Backend ==== | ||
- | For each supported architecture a specific backend is necessary. As a first step, registers are assigned for all SSA instruction results. After this machine instructions can be issued for the target. Finally the linker combines everything into a executable target image.\\ | ||
- | Currently, PowerPC code can be generated. As target processors we use mpc555 and mpc5200. | ||
- | |||
- | ===== Further Components ===== | ||
- | In order to work efficiently with **deep** some more tools and components are useful. | ||
- | |||
- | ==== Class File Browser ==== | ||
- | When working extensively with class files our **Class File Browser** might be advantageous. It displays all information of a class file in easily readable form. It can downloaded as an eclipse plugin from [[https:// | ||
- | |||
- | ==== Runtime System ==== | ||
- | The [[.: | ||
- | |||
- | ==== Configurations ==== | ||
- | The configuration files describe the properties of the used architecture and the memory layout of a target board. This information might be used by the compiler and the linker as well as by the kernel (see [[.: | ||
- | |||
- | ==== Class Tree View ==== | ||
- | This eclipse view shows all the compiled and linked classes with their methods together with their CFG, SSA and machine code. The placement of each method and variable in the target memory is also visible. | ||
- | |||
- | ==== Debugger ==== | ||
- | Many views in eclipse support the viewing of variables, objects, registers and memory sections. We also deploy the debugger framework of eclipse to support target debugging with setting breakpoints and single-stepping (see [[.: |