====== Java Crosscompiler ====== Currently our compiler has the following limitations: * Arrays are supported up to three dimensions. * Array size in any dimension must not exceed 216 bytes. * ''synchronized'' not yet implemented. * Bytecode instruction ''invokedynamic'' not yet implemented. Used for lambda functions from Java 8 onwards. A Java compiler converts a Java file into Bytecode which is stored in a class file. A class file represents the original program in a compact binary form and could be interpreted by a JVM. Our deep compiler translates this Bytecode directly into target machine code. To optimize for speed and code size and to make use of register based architecture - such as the Power-PC or ARM microarchitecture - we transform the Bytecode in a first step into Static Single Assignment Form (SSA). This form is simple and platform independent and can be used for various optimizations. In a second step registers are allocated and code is generated * [[Deep Projects]] \\ * [[Hardware|Accessing the Hardware]] \\ * [[Lowlevel|Low-level Routines]] \\ * [[Donts| Do's and Don'ts]] \\