Mit Sprungmarke in Assembler rechnen

Gast #421768
Lesenswert?
• ▲
▼
Ich versuche ein Assembler Programm mit einer Sprungtabelle als
Assemblerprogramm in ein C Programm (AVR GCC 4.1.1) einzubinden.
Im orginalen Programm in AVR Studio Assembler funktionierte das:

subi ZL, low(-comp)
sbci ZH, high(-comp)

comp ist eine Sprungmarke ein paar Zeilen weiter unten in derselben
Funktion.

Das ganze habe ich schon an den GCC Assembler angepasst:

subi ZL, lo8(-comp)
sbci ZH, hi8(-comp)

aber anscheinend kann das der Assembler nicht auswerten:

tvgen.S:40: Error: can't resolve `L0' {*ABS* section} - `com {.text
section}
tvgen.S:40: Error: expression too complex
tvgen.S:41: Error: can't resolve `L0' {*ABS* section} - `com'
{.text section}
tvgen.S:41: Error: expression too complex

Ohne das - vor comp funktioniert das ganze (was aber eben ein falsches
Ergebnis liefert).

Als workaround könnte ich comp über ldi erst in Register laden und dann
aufaddieren, aber wiso soll ich Rechenzeit und Register für Operationen
verschwenden die schon zu Compilezeit feststehen ?
Gast #421771
Lesenswert?
• ▲
▼
Die Klammern bringen leider überhaupt nichts, das war das erste was ich
ausprobiert hatte. Auch das Makro pm() funktioniert nicht. (Dieses
scheint den Wert nur durch 2 zu teilen, da die Sprungmarken
Byteadressen sind, IJMP aber Wordadressen braucht.
Gast #421773
Lesenswert?
• ▲
▼
In Zeile 47&48 auskommentiert.
Ich habe dieses vorübergehend durch den Code in Zeilen 39-45 ersetzt.
Das Ergebnis ist das selbe, nur dass ich das ganze jetzt zur Laufzeit
berechne, was mir nicht wirklich gefällt.
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.