Assembling Pi

A.4 Datentypen

4.3.2 Komplexe Datentypen: Structs (Strukturen)

Ein Struct ist ein komplexer Datentyp und gruppiert mehrere Elemente unterschiedlichen Typs unter einem gemeinsamen Namen. Im Speicher werden Structs als zusammenhängende Datenblöcke mit festen Offsets für jedes Feld abgelegt.

Beispiel: Eine Struct struct_bsp die eine Ganzzahl i_zahlund eine Fließkommazahl f_wert enthält, wird im Speicher wie folgt organisiert:

Speicheradresse Inhalt
struct_bsp + 0x00 i_zahl
struct_bsp + 0x04 f_wert

Das Label struct_bsp repräsentiert hier die Basisadresse der Struktur im Speicher.

C-Code Beispiel für eine solche Struct:

struct struct_bsp {
    int   i_ zahl;        // 4 Bytes
    float f_wert;         // 4 Bytes
};

Deklaration einer Struct in Assembler:

In Assembler wird das Struct durch die Verwaltung von Speicheradressen und Offsets realisiert.

.data
@ offsets für den Zugriff auf die Elemente
    .equ i_zahl, 0
    .equ f_wert, 4        

struct_bsp:
    .space 8                @ Reserviere 8 Bytes für das Struct

Zugriff auf die Struct:

    LDR r0, =struct_bsp     @ Lade die Basisadresse des Structs in Register r0
    LDR r1, [r0, #i_Zahl]   @ Lade die Ganzzahl (Offset 0) in Register r1
    LDR r2, [r0, #f_wert]   @ Lade die Fließkommazahl (Offset 4) in Register r2
zurück Hauptmenü weiter
4.3 Komplexe Datentypen
4.3.1 Intro
4.3.2 Structs (Strukturen)
4.3.3 Arrays in Assembler
4.3.4 Zugriffsberechnung bei einem eindimensionalen Array
4.3.5 Lookup-Tables
4.3.6 Mehrdimensionalen Arrays