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!
.section .data (für Konstanten) .section .bss (für uninitialisiertes SRAM)
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.