AVR GCC und inline Assembler

Gast #40077
Hallo zusammen

Ich beschäftige mich erst seit kurzem mit dem AVR /GCC und habe ein paar 
Fragen zum inline-Assembler.

Ich will mit einem Zeiger auf einen 16Bit Wert im PRGMEM zugreifen. Also 
so etwas wie PRG_RDB() aber für 16bit
Ich habe es auch fast geschafft, kann aber das zweite Register nicht 
ansprechen.

lengthMin ist die in einem Register liegende Zielvariable, aktRectP der 
Zeiger auf den Programmspeicher.

  _asm_ (        \
    "lpm %[reg0in],z+" "\n\t"      \
    "lpm %[reg1in],z+" "\n\t"      \
    : [reg0out] "=r" (lengthMin)    \
    : [inAdr] "z" (aktRectP), [reg0in] "r" (lengthMin), [reg1in] "r" 
(lengthMin)    \
  );

reg1in sollte das Register über reg0in sein. Wie bekomme Ich das hin?

Gibt eine Möglichkeit die Warnung  über das uninitialisierte lengthMin 
weg zu bekommen, ohne dieser Variablen vorher einen Wert zuweisen zu 
müssen?

Dann habe Ich noch ein Problem in prgmspace.h. Dort wird ein define 
'__AVR_ENHANCED__' angesprochen, das Ich nirgendwo finden kann, das aber 
wohl gesetzt ist. Ich arbeite auf einem Mega16.
Wo kann Ich diese Definition finden?

Vielen Dank schon mal fürs nachdenken.

gruß Klaus
Gast
Zum inline-Assembler kann ich Dir nicht viel sagen außer daß
Du Dir vielleicht mal Eric Weddington's vorgeschlagenes neues
Interface für pgmspace.h ansehen kannst.  Hat er meines Wissens
an die avr-libc-dev Liste geschickt, und in deren Archiven kannst
Du über die Homepage des Projektes suchen.

_AVR_ENHANCED_ wird für den »enhanced core« IMHO durch den
Compiler selbst gesetzt.  Das sind alle ATmegas außer dem
ATmega103.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 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.