<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://deepjava.org/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://deepjava.org/feed.php">
        <title>deep dev:crosscompiler</title>
        <description></description>
        <link>https://deepjava.org/</link>
        <image rdf:resource="https://deepjava.org/lib/tpl/deepjava-tpl/images/favicon.ico" />
       <dc:date>2026-04-14T22:23:16+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/arrays?rev=1671531867&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/cfg?rev=1592508583&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/cfr?rev=1671531646&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/class_initialization?rev=1620669160&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/fields_of_item?rev=1664526004&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/interfaces?rev=1562866486&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/objects?rev=1542810346&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/ssa?rev=1671532295&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/start?rev=1541176096&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/strings?rev=1456403585&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/type_checking?rev=1671533008&amp;do=diff"/>
                <rdf:li rdf:resource="https://deepjava.org/dev/crosscompiler/type_descriptor?rev=1562865126&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://deepjava.org/lib/tpl/deepjava-tpl/images/favicon.ico">
        <title>deep</title>
        <link>https://deepjava.org/</link>
        <url>https://deepjava.org/lib/tpl/deepjava-tpl/images/favicon.ico</url>
    </image>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/arrays?rev=1671531867&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-20T11:24:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:arrays</title>
        <link>https://deepjava.org/dev/crosscompiler/arrays?rev=1671531867&amp;do=diff</link>
        <description>Arrays

The following figure demonstrates how arrays are implemented in the memory. 
Implementation of an array
An array extends java/lang/object. The field Tag points to the type descriptor of this array ([ClassA for this example). The single array elements themselves are of type</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/cfg?rev=1592508583&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-18T21:29:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:cfg</title>
        <link>https://deepjava.org/dev/crosscompiler/cfg?rev=1592508583&amp;do=diff</link>
        <description>Control Flow Graph

The Control Flow Graph is an intermediate form where the instructions and the control flow are shown as a directed graph. It enables certain optimizations. For each method of a class an own CFG is built. Nodes in such a CFG represent a sequence of instructions with no branches. Further, there must be no branch target within a node. Branches in a method are represented by directed edges which connect the nodes. Each node has n predecessors and m successors as well as an index …</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/cfr?rev=1671531646&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-20T11:20:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:cfr</title>
        <link>https://deepjava.org/dev/crosscompiler/cfr?rev=1671531646&amp;do=diff</link>
        <description>Class File Reader

Course of Action

Build

System classes as indicated by the configuration are loaded first. After this the root classes are loaded. For each class all other classes which are referenced in the constant pool and which have a class file (arrays may be referenced but have no class files) are kept in an import list and subsequently loaded.</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/class_initialization?rev=1620669160&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-10T19:52:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:class_initialization</title>
        <link>https://deepjava.org/dev/crosscompiler/class_initialization?rev=1620669160&amp;do=diff</link>
        <description>Initialization

Initialize Classes

The Java compiler packes all initialization of static variables into a method called clinit. This is the class constructor. As an example the following source file with blocks 1 to 4 will be converted into Bytecode and is put linearly into</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/fields_of_item?rev=1664526004&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-30T10:20:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:fields_of_item</title>
        <link>https://deepjava.org/dev/crosscompiler/fields_of_item?rev=1664526004&amp;do=diff</link>
        <description>Use of Index, Offset and Address of an Item

These fields have different meanings according to what a given item represents. 
Note: Statements in brackets denote a type, e.g. [Class] means an item of type org.deepjava.classItems.Class.

Classes [Class]</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/interfaces?rev=1562866486&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-07-11T19:34:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:interfaces</title>
        <link>https://deepjava.org/dev/crosscompiler/interfaces?rev=1562866486&amp;do=diff</link>
        <description>Interfaces

Interfaces generally don&#039;t have to be translated. All fields are constant and the methods are abstract. Interfaces don&#039;t need a type descriptor with a single exception as mentioned in Type Descriptors. They also don&#039;t need a constant block and don&#039;t have to be included in the system table compared to regular classes (see</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/objects?rev=1542810346&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-11-21T15:25:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:objects</title>
        <link>https://deepjava.org/dev/crosscompiler/objects?rev=1542810346&amp;do=diff</link>
        <description>Objects

Objects on the heap need a reference to their type descriptor (Tag) and information for the garbage collection.
Implementation of an object
The field size allows for a faster sweep phase during garbage collection. size includes the size of the object plus heap field and</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/ssa?rev=1671532295&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-20T11:31:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:ssa</title>
        <link>https://deepjava.org/dev/crosscompiler/ssa?rev=1671532295&amp;do=diff</link>
        <description>Static Single Assignment Form

The Static Single Assignment Form (SSA) is an intermediate form which allows various optimizations and facilitates register allocation. The main point of the SSA is that each variable is assigned a value only once. Each new assignment leads to a new instance of this variable (indicated by i</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/start?rev=1541176096&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2018-11-02T17:28:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:start</title>
        <link>https://deepjava.org/dev/crosscompiler/start?rev=1541176096&amp;do=diff</link>
        <description>Crosscompiler

The crosscompiler comprises three main steps which are platform independent as shown in the next figure. Further entries treat how arrays or interfaces are handled or how type checking is performed. 
Steps of cross compilation Components, platform independent</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/strings?rev=1456403585&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2016-02-25T13:33:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:strings</title>
        <link>https://deepjava.org/dev/crosscompiler/strings?rev=1456403585&amp;do=diff</link>
        <description>Implementation of Strings

In Java a string like


String str = new String(&quot;abc&quot;);


causes the allocation of two objects. Strings in Java are immutable. With the field offset it is possible to form substrings in the constant string.  
A string in Java</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/type_checking?rev=1671533008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-20T11:43:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:type_checking</title>
        <link>https://deepjava.org/dev/crosscompiler/type_checking?rev=1671533008&amp;do=diff</link>
        <description>Type Checking

For Bytecode instructions checkcast and instanceof the type must be checked during runtime. Two cases must be considered: checking for an array class or checking for a regular class. Checking for interfaces is discussed below. 

Since the dynamic type of an object cannot be known the type checking for any type must work properly. The following table shows all possible casses. ClassA is a regular class,</description>
    </item>
    <item rdf:about="https://deepjava.org/dev/crosscompiler/type_descriptor?rev=1562865126&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-07-11T19:12:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dev:crosscompiler:type_descriptor</title>
        <link>https://deepjava.org/dev/crosscompiler/type_descriptor?rev=1562865126&amp;do=diff</link>
        <description>Type Descriptor

Each class needs a type descriptor in the constant block of this class (see Linker32). This type descriptor will be needed to find instance methods or to do type checking. All arrays - even arrays with elements being of an interface type - need a type descriptor. Interfaces themselves need no type descriptor because there cannot be instances of interfaces.</description>
    </item>
</rdf:RDF>
