Verstehe die Darstellung von: "rjmp .+6" im Flash nicht? Aus einer .lss-Datei: 78: 03 c0 rjmp .+6 ; 0x80 <adc_getvalue+0x12> D.h. also, die Darstellung von rjmp .+6 ergibt 03c0 im Prog.-Speicher. Die Beschreibung im Instruction-Set von rjmp lautet: rjmp k 16-Bit OP-Code: 1100 kkkk kkkk kkkk 0b1100=0xC Hex C entspricht also rjmp. Das C ist in 03c0 nicht an erster Stelle, sollte es aber lt. OP-Code sein. Okay, kann ich ja, (warum auch immer) die Bytes tauschen, habe ich: C003 Mein Problem ist, wo ist die 6? Das ".+6" soll heißen 6 im Zweierkomplement? (Oder wozu der Punkt?) - Ist ja positiv also ändert sich die zahl zu einer vorzeichenlosen nicht. Also würde ich C006 (ohne Drehung im Maschinen-Code) erwarten... Was mach ich falsch?
hallo, ich weis es zwar auch gerade nicht genau, aber der speicher für intruktionen ist im AVR wordweise organisiert, so werden aus 6 Byte 3 Words. Kann aber auch sein das es falsch ist. CA Dirk
In Intel-Hex wird das Low-Byte vor dem High-Byte abgelegt (also bei der niedrigeren Adresse).
Man sollte dabei noch beachten, dass Atmels Assembler den Code in Worten rechnet, der GNU-Assembler aber in Bytes.
Zu beachten ist auch noch, dass beim Assembler der . bedeutet: die Adresse des aktuelle (RJMP)-Befehls, wogegen der Prozessor die Bytes vom nächsten Befehl aus zählt. Das erklärt zwar den Unterschied zwischen 3 und 6 noch nicht ganz, aber sollte Dir troztden weiterhelfen, mit den obengenannten Posts den Code zu verstehen. Ist der Code Ergebnis eines Compilers? Wenn ja, dann kann es auch sein, dass der Compiler bei einem bedingten Sprung die Bedingung umkehrt und andere Sprünge verwendet. z.B. brne label1 rjmp label2 wird zu breq label2 rjmp label1 Wie schauen denn die umliegenden Befehle (und der Sourcecode) aus?
Hi! > ich weis es zwar auch gerade nicht genau, aber der speicher für > intruktionen ist im AVR wordweise organisiert, so werden aus 6 Byte 3 > Words. Kann aber auch sein das es falsch ist Nö, stimmt exakt. Wenn Du Dich noch weiter für AVR assembler interessierst, dann kannst ja den von Jonas Diemer geschriebenen (und von mir partiell erweiterten) AVR simulator ansehen: http://sourceforge.net/projects/avrsimu/ Ist ein reines commandline tool (und dzt nur für ATtinys), aber im Code kann man viele Infos rauslesen. LieGrü, strub
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.