Verständnisfrage: Heap Initialisierung im Assembler Startup-Code

OP #1660377
Lesenswert?
• ▲
▼
Hallo,

habe eine eigene Startup-Routine für der ARM Cortex A8 geschrieben, aber 
ich verstehe nicht, wie ich den Heap Sektor initialisieren soll.
Nun habe ich aus einen anderen Projekt(für den ARM9) folgenden Code 
gefunden:

  LDR r0, = _heap_start_;
  LDR r1, = _heap_end_;
  SUB r1, r1, r0;
  CMP r1, #8;
  MOVGE r2, #0;
  STRGE r2, [r0], #+4;
  STRGE r1, [r0];

aber ich weiss leider nicht ob diese Initialisierung richtig und 
überhaupt nötig ist.
Ich benutze den gcc vom CodeSourcery zum compilieren.
Habe leider keine Infos zu meinem Problem gefunden. Weiß vielleicht 
jemand etwas darüber oder wo ich Informationen dazu finden kann ?

Vielen Dank im Voraus

Jerome
OP #1662293
Lesenswert?
• ▲
▼
Hallo nochmal,

habe mich warsch. etwas umständlich in meiner Frage ausgedrückt. 
Eigentlich sollte meine Frage nur lauten:
Wenn ich den GCC benutze, wie muss mein Heap-Speicher aussehen, bevor 
das erste mal malloc() o.ä. aufgerufen wird? Muss es mit Nullen gefüllt 
sein oder irgendetwas am Anfang? Ich denke, dass der GCC Compiler da 
keine Untescheidung macht ob es sich um einen ARM9 oder ARM Cortex A8 
ist, oder?

Vielen Dank im Voraus

Jerome
Gast #1662442
Lesenswert?
• ▲
▼
Vielleicht ein bischen mehr Info:

Malloc fordert X Bytes per "Systemcall" an. Zumindest beim ARM7 und GCC 
laufen solche Dinge über die newlib und die will Systemcalls 
implementiert haben. Der Systemcall gibt dann einen Zeiger auf den 
Speicherplatz zurück.
Da muss nichts großartig initialisiert werden.
Im einfachsten Fall ist der Anfang des Heaps der Anfang des freien 
Speicherplatz. Jedesmal wenn per Malloc Speicher angefragt wird, wird 
die zu verwendende Speicheradresse hoch gezählt.
In komplexeren Systemem muss man sich allerdings etwas anderes 
ausdenken.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.