Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
software:deep:dev:crosscompiler:fields_of_item [2014-02-10 13:39] grafsoftware:deep:dev:crosscompiler:fields_of_item [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== Use of Index, Offset and Address of the 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 ''ch.ntb.inf.deep.classItems.Class''. 
- 
-==== Classes [Class] ==== 
-  * //index//: Used to number interfaces, which contain methods called by //invokeinterface//. 
-  * //offset//: Not used, always -1. 
-  * //address//: Contains the absolute address of the type descriptor (field //size//). 
- 
-==== Arrays [Array] ==== 
-  * //index//: Not used, always -1. 
-  * //offset//: Offset des Typdescriptors im Segment. 
-  * //address//: Die absolute Adresse des Typdescriptors. 
- 
-==== 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. 
-  * //address//: Absolute Adresse der Methode. 
- 
-==== Felder [DataItem] ==== 
-<box right 30% | IMPORTANT Konstante Referenzen> 
-**Achtung:** bei konstanten, statischen Referenzen ist das Const-Flag (dpfConst) __nicht__ gesetzt, da diese wie normale, nicht konstante statische Felder zu behandeln sind. Dies weil auf solche Felder ein einmaliger Zugriff aus dem Klassenkonstruktor stattfindet! 
- 
-**Beispiel:** 
-  static final Object o = new Object(); 
-</box> 
-  - **Klassen-Felder [DataItem]:** 
-    - Konstante Felder [NamedConst]: 
-      * //index//: Not used, always -1. 
-      * //offset//: not used, always -1. 
-      * //address//: not used, always -1. 
-    - Nicht konstante Felder [DataItem]: 
-      * //index//: not used, always -1. 
-      * //offset//: Byteoffset des Feldes (beginnend bei 0 für das erste Feld). 
-      * //address//: Absolute Adresse des Feldes. 
-  - **Instanz-Felder [DataItem]:** 
-    * //index//: Wird nicht verwendet, ist immer -1; 
-    * //offset//: Byteoffset des Feldes beginnend bei 0 (inkl. Berücksichtung der Felder der Oberklassen). 
-    * //address//: Not used, always -1. 
- 
-==== 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; 
-    * //address//: Wenn es sich um eine Konstante vom Typ //float// oder //double// handelt, ist //address// die absolute Adresse der Konstante (direkt im Konstantenblock). 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. 
-    * //address//: Absolute Adresse des konstanten Strings (direkt im Konstantenblock).