Gast
#3515105
Hallo zusammen, ich versuche gerade unter Ubuntu ein kurzes Assembly-Listing für den ATtiny10 zu übersetzen. Hierbei stoße ich nun auf ein Problem, welches ich selbst nicht mehr lösen kann. Folgende Datei (main.S): .equ DDRB, 0x01 .equ PORTB, 0x02 .org 0x0000 rjmp main main: ldi r16, 0xFF out DDRB, r16 loop: sbi PORTB, 2 nop cbi PORTB, 2 nop rjmp loop Übersetzen mit: avr-as -mmcu=avrtiny10 main.S Dump zeigen: avr-objdump -d a.out Ergebnis: 00000000 <main-0x2>: 0: 00 c0 rjmp .+0 ; 0x2 <main> 00000002 <main>: 2: 0f ef ldi r16, 0xFF ; 255 4: 01 b9 out 0x01, r16 ; 1 00000006 <loop>: 6: 12 9a sbi 0x02, 2 ; 2 8: 00 00 nop a: 12 98 cbi 0x02, 2 ; 2 c: 00 00 nop e: 00 c0 rjmp .+0 ; 0x10 <loop+0xa> Warum ist hier das "rjmp" am Ende der Loop inkorrekt? Dort sollte doch ein relativer Jump zurück stehen. Habe ich evtl. noch einen Schritt vergessen wie Linken o.ä.? Über den "avr-gcc" kann ich nicht gehen, da dieser den ATtiny10 nicht unterstützt: -mmcu=avrtiny10 sowie -mmcu=attiny10 kann ich nicht angeben bzw. wird mit Fehler abgebrochen. Gibt es andere Alternativen für Linux? Das AVR-Studio will ich ungern einsetzen. Die verwendeten Versionen: gcc version 4.7.2 (GCC) GNU assembler version 2.20.1 (avr) using BFD version (GNU Binutils) 2.20.1.20100303 Gruß Sven