Forum: Mikrocontroller und Digitale Elektronik Disassemblieren mit AVR Studio 4.19


von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Hallo Leute,
wenn ich meinen Mega8 auslese, bekomme ich ein Hexfile.
Wie kann ich dieses File disassemblieren,
Gruß Rolf.

: Bearbeitet durch User
von MWS (Gast)


Lesenswert?

Rolf G. schrieb:
> Wie kann ich dieses File disassemblieren,

Indem man die hex-Datei im Studio öffnet.

von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Danke,
Gruß Rolf.

von Karl B. (gustav)


Lesenswert?

Hi,
https://community.atmel.com/projects/reavr

klappt.
Label werden durchnummeriert.
Aussagekräftige Kommentare gibts allerdings nicht.
Wäre auch zu schön.
Ports und Register werden (leider) in Hex-Format angegeben.
Um die in Timer oder sowas umzubenennen, nimmt man die I/O View vom 
Studio
Beispiel: 0x36 -> OCR0A

Der boardeigene Disassembler vom Studio bringt zum Beispiel die Ansicht:
RJMP      PC+0x0002      ;Relative jump
RJMP      PC-0x0005      ;Relative jump
LDI       R24,0x10       ;Load immediate
LDI       R25,0x27       ;Load immediate
RCALL     PC+0x03A7      ;Relative call subroutine
das ist mir zu unübersichtlich.
reavr ist da besser.

ciao
gustav

: Bearbeitet durch User
von MWS (Gast)


Lesenswert?

Karl B. schrieb:
> klappt.

Zum schnellen Vergleich und zur Suche nach speziellen Opcodes recht 
nützlich, jedoch kann AS die hex auch simulieren.

von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Das Resultat scheint mir allerdings nicht plausibel:

+00000000:   E50F        LDI       R16,0x5F       Load immediate
+00000001:   BF0D        OUT       0x3D,R16       Out to I/O location
+00000002:   E004        LDI       R16,0x04       Load immediate
+00000003:   BF0E        OUT       0x3E,R16       Out to I/O Location

täusch ich mich, oder hat sich da was verschoben?
Gruß Rolf.

von Mario M. (thelonging)


Lesenswert?

Was soll verschoben sein? Da wird SP mit 0x45f (=Ram-Ende) geladen.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Rolf G. schrieb:
> täusch ich mich, oder hat sich da was verschoben?
> Gruß Rolf.
Hi,
nimm das andere Prog.
Alles unnötige Gerödel ist da nämlich weg.

so sieht das vergleichbare Display von ReAVR aus:
LDI       R24,0xDF       ;Load immediate
OUT       0x3D,R24       ;Out to I/O location Stack init
und ich hole mir aus der I/O-Ansicht dann die zum Target (AtTiny2313) 
gehörigen Klarnamen
und gehe in Studio Menü edit mark und replace all
ldi       R24, low(ramend); Stack init
out       SPL, R24
Damit kann ich dann IMHO schon mehr anfangen.

ciao
gustav

: Bearbeitet durch User
von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Hallo Gustav,
von früher bin ich noch auf das Z80 Disassembler-Format eingestellt, das 
hier
im Studio 4 in der Art auch angewendet wird! Damals hats jedenfalls mit 
dem zugehörigen Hex-Code gepasst. Ich werde mir mal dein Programm 
ansehen.
Danke, Rolf.

von Rolf G. (Firma: privat) (reglermax)


Lesenswert?

Karl B. schrieb:
> Hi,
> Der boardeigene Disassembler vom Studio bringt zum Beispiel die Ansicht:
> RJMP      PC+0x0002      ;Relative jump
> RJMP      PC-0x0005      ;Relative jump
> LDI       R24,0x10       ;Load immediate
> LDI       R25,0x27       ;Load immediate
> RCALL     PC+0x03A7      ;Relative call subroutine
> das ist mir zu unübersichtlich.
> reavr ist da besser.
>
> ciao
> Gustav


Ja, hab ihn getestet, das Resultat überzeugt,
Rolf.

von c-hater (Gast)


Lesenswert?

Rolf G. schrieb:

> Karl B. schrieb:
>> reavr ist da besser.

> Ja, hab ihn getestet, das Resultat überzeugt,

Und das ist ja nur die erste Iteration. Man kann das interaktiv noch 
sehr deutlich aufbessern, je mehr man von dem Code versteht, den man da 
analysiert.

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.