PicNick - tolle Arbeit !!
Habe auch mal die Disassambler-Outputs zwischen avr_dis.eXE und DisAVR.eXE verglichen. Das hornalte AVR-Tool kennt nicht mal den vollen Atmega-Befehlssatz und sagt immer NOP.
Hier ein Code-Schnipsel (Atmega169):
AVR-Studio:
Code:
+00000126: 3007 CPI R16,0x07
+00000127: F410 BRCC PC+0x03
+00000128: 940C0134 JMP 0x00000134
+0000012A: 91800124 LDS R24,0x0124
avr_dis.eXE (Picnicks Hexhacker)
Code:
CPI r16,0x07
BRCC L_0x0254
JMP L_0x0268
L_0x0254:
LDS r24,0x0124
und jetzt kommt Schrott: DisAVR.eXE
Code:
cpi r16, 0x07 ; 0126 3007
brsh AVR012A ; 0127 F410
; 0128 940C
nop ; 0129 0134
AVR012A: lds r24, 0x0124 ; 012A 9180 0124
An einem brauchbaren Source-Bezug bin ich noch am Arbeiten.
Wäre nicht ein AfterBurner für den AVR-Studio-Ausgabefile einfacher zu programmieren? Immerhin steckt da alles schon drin - es fehlen nur die Labels!
Beispiel:
Code:
265: If Len(lcd_textbuffer) >= 7 Then
+00000125: 2F08 MOV R16,R24 Copy register
+00000126: 3007 CPI R16,0x07 Compare with immediate
265: If Len(lcd_textbuffer) >= 7 Then
+00000127: F410 BRCC PC+0x03 Branch if carry cleared
+00000128: 940C0134 JMP 0x00000134 Jump
266: Lcd_scrollmode = 1 'Scroll If Text Is Longer Than Display Size
+0000012A: 91800124 LDS R24,0x0124 Load direct from data space
Lesezeichen