Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | Letzte ÜberarbeitungBeide Seiten der Revision | ||
software:deep:dev:crosscompiler:linker32 [2014-02-10 13:19] – graf | software:deep:dev:crosscompiler:linker32 [2014-02-10 13:21] – graf | ||
---|---|---|---|
Zeile 93: | Zeile 93: | ||
Finally, the target image is put together. For each method of each class and for each constant block (one for each class, array or interface) a target segment is created and inserted into a list. | Finally, the target image is put together. For each method of each class and for each constant block (one for each class, array or interface) a target segment is created and inserted into a list. | ||
- | ---- | ||
- | ===== Verwendung von index, offset und address der Klasse Item ===== | ||
- | Die Felder //index//, //offset// und //address// der Klasse '' | ||
- | |||
- | **Bemerkung: | ||
- | |||
- | ==== Klassen [Class] ==== | ||
- | * //index//: Wird verwendet, um Interfaces für Interfacemethoden zu nummerieren. | ||
- | * //offset//: Wird nicht verwendet, ist immer -1. | ||
- | * // | ||
- | |||
- | ==== Arrays [Array] ==== | ||
- | * //index//: Wird nicht verwendet, ist immer -1. | ||
- | * //offset//: Offset des Typdescriptors im Segment. | ||
- | * // | ||
- | |||
- | ==== Methoden [Method] ==== | ||
- | * //index//: Bei Instanzmethoden der Index der Methode in der Methodentabelle (beginnend bei 0). Bei Klassenmethoden ist //index// immer -1. -> Wird vom CFR gesetzt. | ||
- | * //offset//: Byteoffset der Methode ausgehend von der Startadresse des Codes der Klasse. | ||
- | * // | ||
- | |||
- | ==== Felder [DataItem] ==== | ||
- | <box right 30% | IMPORTANT Konstante Referenzen> | ||
- | **Achtung: | ||
- | |||
- | **Beispiel: | ||
- | static final Object o = new Object(); | ||
- | </ | ||
- | - **Klassen-Felder [DataItem]: | ||
- | - Konstante Felder [NamedConst]: | ||
- | * //index//: Wird nicht verwendet, ist immer -1; | ||
- | * //offset//: Wird nicht verwendet, ist immer -1; | ||
- | * // | ||
- | - Nicht konstante Felder [DataItem]: | ||
- | * //index//: Wird nicht verwendet, ist immer -1. | ||
- | * //offset//: Byteoffset des Feldes (beginnend bei 0 für das erste Feld). | ||
- | * // | ||
- | - **Instanz-Felder [DataItem]: | ||
- | * //index//: Wird nicht verwendet, ist immer -1; | ||
- | * //offset//: Byteoffset des Feldes beginnend bei 0 (inkl. Berücksichtung der Felder der Oberklassen). | ||
- | * // | ||
- | |||
- | ==== Konstanten [Constant] ==== | ||
- | - **Zahlen [StdConstant]: | ||
- | * //index//: Wenn die Konstante vom Typ //float// oder //double// ist, ist //index// der Index der Konstante im Konstantenpool. Ansonsten immer -1; | ||
- | * //offset//: Wenn die Konstante vom Typ //float// oder //double// ist, ist //offset// der Byteoffset der Konstante im Konstantenpool. Ansonsten immer -1; | ||
- | * // | ||
- | - **Stings [StringLiteral]: | ||
- | * //index//: Wenn es sich bei der Konstante um einen String handelt, so wird in //index// der Index des Strings im Stringpool abgelegt. | ||
- | * //offset//: Wenn es sich bei der Konstante um einen String handelt, so wird in //offset// der Byteoffset des Strings im Stringpool abgelegt. | ||
- | * // |