Forum: Compiler & IDEs GNU Assembler und Daten im SRAM


von HubertB (Gast)


Lesenswert?

Hallo!

Ich versuche gerade folgendes (AVR-Studio Syntax) mit dem GNU Assembler 
(avr-gcc) zu machen:

.DSEG
MEIN_KLEINES_FELD:   .BYTE 32

Später im Code möchte ich dann mit

LDI XH, HIGH(MEIN_KLEINES_FELD)
LDI XL, LOW(MEIN_KLEINES_FELD)

darauf zurgreifen. Mittlerweile habe ich rausgefunden, dass man beim GNU 
Assembler (GAS) statt HIGH und LOW hi8 bzw. lo8 verwenden muss. Aber 
beim Rest komme ich leider nicht weiter. Wie gebe ich ihm das unter GNU 
Assembler an? .DSEG kennt er nämlich nicht :-(

Danke im Vorraus!

von Ulf R. (roolf)


Lesenswert?

.section .data (für Konstanten)
.section .bss (für uninitialisiertes SRAM)

von HubertB (Gast)


Lesenswert?

Super Danke!

Ich hab noch ne kleine Verständnisfrage: Sowohl .section .bss als auch 
.section .data liegen dann im SRAM und .section .text liegt dann im 
Flash (wäre also sowas wie .CSEG im AVR Studio).

Ist das so richtig?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ja, das ist so.  Wenn du den C-Startup-Code benutzt, dann würde
dieser .bss beim Start ausnullen, während er für .data hinter .text
die Initialisierungsdaten erwartet, die er aus dem Flash dahin
kopiert.

Wenn du das alles rein im Assembler machst, sind .bss und .data
für die praktisch dasselbe.  Du tust natürlich gut daran, wenn du
dich an die Konvention hälst, denn dann kann das auch mal jemand
anders nachvollziehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.