Forum: Mikrocontroller und Digitale Elektronik Inline Assembler


von kuki (Gast)


Lesenswert?

asm volatile ("ldi R30,low(Sprungtabelle)"::);
asm volatile ("ldi R31,high(Sprungtabelle)"::);

Fehlermelung: C:\...\ccQVaaaa.s:1673: Error: garbage at end of line

ich habe dies alles in Assembler programmiert und compaliert, da 
funktioniert das ohne Probleme, jetzt wollt ich den Code in C 
transportieren und dann krieg ich diese Fehlermeldung... Was mach ich 
falsch?

kann ich aus C auf ne Assemlberfunktion zugreifen?!

von mr.chip (Gast)


Lesenswert?

Hallo

Garbage at end of line heisst es so praktisch immer, wenn einfach etwas 
nicht funktioniert.

Konkret vermute ich mal, dass deine Funktionen low(...) und high(...) 
nicht funktionieren. Versuche es mal mit lo8(...) und hi8(...).

Gruss

Michael

von kuki (Gast)


Lesenswert?

das wars danke

;-)

von kuki (Gast)


Lesenswert?

Hallo, zu früh gefreut...
ich wollte den Zeiger Z R30 (low) R31 (high)
auf das Label Sprungtabelle zeigen lassen, wenn ich
asm volatile ("ldi R30,lo8(Sprungtabelle)"::);
asm volatile ("ldi R31,hi8(Sprungtabelle)"::);

ausführe, dann zeigt der Pointer irgendwo hin, aber nicht auf die 
Sprungtabelle :-(

ich hab das mit
ldi R30,low(Sprungtabelle)
ldi R31,high(Sprungtabelle)

in Assembler probiert und da funktioniert die Zuweisung

hat wer noch ein tipp für mich?

von Michael Wilhelm (Gast)


Lesenswert?

Warum machst du diese Anweisungen noch in Assembler? Das geht doch auch 
recht problemlos in C.

MW

von Philipp (Gast)


Lesenswert?

Wo genau ist denn "irgendwo"? Wenn da ein Faktor 2 falsch ist, dann ist 
das wieder die alte Geschichte, daß die Adresse in 16-Bit-Worten 
angegeben wurde, im Z-Register aber in Bytes stehen muß. Könnte es das 
sein?

von kuki (Gast)


Lesenswert?

@ Mciahel Wilhelm: der Assembler-Code sind etwa 600 Zeilen, aber diese 
beiden Funktionieren nicht
@ Philipp:
also er sollte auf 0x057A zeigen
aber zeigt auf 0x0AF4

da ist der Faktor 2 dazwischen...

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.