Hallo,
ich habe hier eine Hex-Datei aus einem Eprom Baustein. Ich würde
interessenhalber gerne wissen wie sowas aussieht. Wie muss ich mir das
vorstellen. Einfach nur Speicheradressen mit Inhalt? den rechnen kann
der eprom ja nicht. Habe mir das mit ReAVR mal in Assembler angesehen.
Dort sieht es aber nach ziemlicher rechnerei aus....
REAVR zeigt mir z.b. sowas
L003D:
ldi r26,k32
fmuls r17,r18
L003F:
rcall L05E2
ldi r25,k92
ldd r7,Z+o25
rjmp L0243
; ----------- jump on last line
andi r29,k45
st X+,r17
; --------- this is skippy
sbrs r27,b4
muls r16,r19
; --------- last may be skipped
; pc=0x47(0x8E)
Grüße
HI
>ich habe hier eine Hex-Datei aus einem Eprom Baustein.
Was willst du dann mit einem Disassembler. Da steht mit Sicherheit kein
Programm drin.
MfG Spess
>Wie muss ich mir das>vorstellen. Einfach nur Speicheradressen mit Inhalt?
Ja.
> den rechnen kann>der eprom ja nicht.
Stimmt.
>Habe mir das mit ReAVR mal in Assembler angesehen.>Dort sieht es aber nach ziemlicher rechnerei aus....
Blödsinn. Im Eprom steht ein Programm für irgendeinen
Prozessor, aber nicht für einen AVR.
>Was willst du dann mit einem Disassembler. Da steht mit Sicherheit kein>Programm drin.
So ein Quatsch.
Wenn dort Maschinencode für irgendetwas anderes als einen AVR drinsteht,
oder Daten, dann ist das für einen AVR Disassembler absolut zufälliger
Quatsch.
Wenn Du weisst wo der EPROM her ist versuch es mit einem Disassembler
für die entsprechende Prozessorfamilie.
Sonst probier mal Disassembler für 8085, Z80 (diese beiden sind ähnlich
aber nicht gleich im Maschinencode), 6502, 6800 und 8051.
Wenn Du ein einzelnes normales EPROM aus einem 16/32-Bit-System hast:
Vergiss es (68k mit DBS ausgenommen ;).
>Die Logik dahinter war, das ich gedacht habe das ReAvr den Hex-code>(also fast maschinencode) in assembler darstellt.>War das komplett falsch?
Nö, es gibt nur ungefähr 10 Millionen verschiedene Prozessoren
die jeweils eigene Assemblercodes haben.
Nils S. schrieb:> Dann schick den Inhalt durch einen 8051 disassembler.
Haben nicht alle Disassembler den gleichen Nachteil, den Hexcode von
enthaltenen ASCII-Zeichen als OP-codes zu interpretieren? Damit wird das
Vorhaben für den TO ziemlich sinnlos.
Ingolf O. schrieb:> Nils S. schrieb:>> Dann schick den Inhalt durch einen 8051 disassembler.>> Haben nicht alle Disassembler den gleichen Nachteil, den Hexcode von> enthaltenen ASCII-Zeichen als OP-codes zu interpretieren? Damit wird das> Vorhaben für den TO ziemlich sinnlos.
Kann sein, kann aber auch nicht sein.
Kommt halt drauf an, was da tatsächlich im EPROM enthalten ist: Code
oder Daten.
Ein Disassembler-Lauf schadet nicht. Ob das sinnvollen Code ergibt
erkennt ein etwas erfahrener Assembler Programmierer meistens sehr
schnell.
Oft hilft es auch, sich den Inhalt erst mal in Hex-Form anzusehen. Daten
haben meistens irgendeine Form von wiederkehrenden Mustern.
> Dann schick den Inhalt durch einen 8051 disassembler.
NACHDEM er überprüft hat, welche Datenleitungen des EPROMs an welche
Datenleitungen des Prozessors gehen, und welche Adressleitungen des
EPROMs an welche Adressleitungen des Prozessors gehen, denn das muss
nicht 1:1 verbunden sein, und eventuell entsprechend durch
Bitpositionsvertauschung korrigiert hat.
Frank schrieb:> Ich finde allerdings trotzdem arithmetikbefehle in dieser datei wie zb> ADDC. kann das ein eprom?
Auch wenn man den Inhalt ausdruckt, kann das Papier nicht rechnen.
Das EPROM speichert doch nur das Programm bzw. Daten wie z.B. Diskette.
Frank schrieb:> Ok, das bedeutet aber dann, das mir der Dissasembler nicht das anzeigt> was wirklich im eeprom steht ..richtig?!
Klar tut er das.
Schau. Ein EPROM ist nur ein Speicher.
Stell dir eine Maschine vor, die mit Nadeln Löcher in einem
Papierstreifen abtastet. Für jede Kombination von Löchern oder
Nicht-Löchern macht die Maschine etwas spezielles. Die Maschine ist die
ausführende Einheit. Du schaust dir gerade den Papierstreifen an und
versuchst aus dem Muster der Löcher schlau zu werden. Damit man diesen
Löchern Sinn zuordnen kann, muss man wissen, wie die Maschine diese
Löcher interpretiert. Die Maschine vom Nachbarn macht etwas ganz anderes
mit genau demselben Papierstreifen mit genau diesen Löchern.
Und dann gibt es noch spezielle Maschinen, die ebenfalls die Löcher
abtasten, aber anstelle von Aktionen ordnen sie jedem Lochmuster einen
textuellen Begriff zu und drucken ihn aus. Weil wir Menschen uns nun mal
mit Text leichter tun als mit dem merken vno Löchern in Papierstreifen.
Genau das macht der Disassembler. Ist diese rAusdruck nun etwas anderes
als die Löcher auf dem Papierstreifen? Ja und nein. Natürlich ist es
etwas anderes, denn dsa eine sind Löcher und das andere ist Text. Aber:
Es existiert eine 1:1 Beziehung zwischen den beiden. Kennt man das eine,
kennt man auch das andere. Aus den löchern kann man den Text erzeugen
aus dem Text kann man die Löcher erzeugen. Also kann man mit Fug und
Recht behaupten: Der Text SIND die Löcher, nur in einer anderen Form
präsentiert.
Wozu brauchst du das Ganze überhaupt?
nein, er interpretiert genau das was Du ihm gibst. Wenn das der
EPROM-Inhalt ist, dann nimmt er den als Maschinencode.
Dein Prozessor macht das selbe, er liest das EPROM aus und arbeitet die
Befehle nacheinander ab. Wenn da im EPROM als Opcode ADD drinnen steht
dann macht das nicht das EPROM, sondern der Prozessor der den Befehl
ausliest.
Stell Dir das EPROM wie n CD-Rohling vor, der spielt auch keine Musik
von sich aus ab, sondern die brennst Du drauf und der CD-Spieler liest
die CD wieder ab und erzeugt den Ton, der auf der CD gespeichert ist.
> Ich finde allerdings trotzdem arithmetikbefehle in dieser datei wie zb> ADDC. kann das ein eprom?
Ein Disassembler muß nicht in jedem Fall RICHTIG das ausgeben, was mal
einer programmiert hat. In einigen Fällen werden auch simple Daten als
Befehl mißverstanden.
Mit einem Debugger kann man einige Befehle schrittweise nachvollziehen
wenn man ausreichend Durchblick hat.
http://de.wikipedia.org/wiki/Debugger#Funktionen_eines_Debuggers
Auf Deinen EPROM stehen nur Befehle und ein paar Daten, die dann in der
CPU verarbeitet werden. Wozu das alles ist, weißt Du sicher eher, weil
Du die Herkunft des EPROMS besser kennst als wir.
Ah, ok jetzt habe ich's verstanden. Dankean euch.
Das einzige was ich mich jetzt noch frage. Wo konstante werte hinterlegt
sind. Ich würde jetzt erwarten das zeilenweise adressen mit inhalt
angegeben sind.
Frank schrieb:> Ah, ok jetzt habe ich's verstanden. Dankean euch.> Das einzige was ich mich jetzt noch frage. Wo konstante werte hinterlegt> sind.
Das kann man nur erraten oder man findet es raus, in dem man das
Programm in allen Einzelheiten analysiert und feststellt von wo aus dem
EPROM Daten gelesen werden, wenn eine ausführende Einheit die Befehle im
Programm ausführt und Daten von irgendwo aus dem EPROM liest.
Wozu brauchst du das Ganze überhaupt? Es sieht nicht so aus, als ob du
weißt was du da tust oder worauf du dich da einlässt.
Frank schrieb:> ok, danke erstmal.> wie gesagt ich wollte nur wissen was in soeinem eprom vorgeht,
das was in jedem Speicherbaustein vorgeht.
* Der Prozessor legt eine Adresse an.
* Der Prozessor legt noch ein paar Steuersignale an
* grummel grummel grummel.
* Der Speicherbaustein schaltet die entsprechenden Speicherzellen auf
den Datenbus von wo sich der Prozessor das Datenbyte (oder welche
Organisation der Speicherbaustein dann auch immer hat) abholt.
That's it. Mehr geht in einem Speicherbaustein der Sorte EPROM nicht
vor.
Sei nicht böse, aber Du gehst das ganz falsch an. Als ob Du versuchen
würdest, Arzt zu werden, indem Du einfach mal beim Metzger eine Sau
kaufst, sie ausschlachtest und in den Eingeweiden rumwühlst.
Du hast dann vor Dir die Milz, siehst, wie sie aussieht und riechst, wie
sie riecht, aber was sie tut, weisst Du deswegen noch kein bisschen
besser.
Hol Dir doch lieber mal ein paar Bücher und/oder lies Dich in das Thema
ein. Denn Deine Fragen lasse erahnen, dass Du ganz grundlegende Dinge
noch nicht ganz verstanden hast (sonst wäre es Dir nämlich so was von
egal, was in einem EEPROM so drin steht, um es von einem AVR ansteuern
zu können (was immer Du damit meinst).
Nichts für Ungut - ging mir genau so. Nur gab's damals
mikrocontroller.net noch nicht. ;-)
Simon
> Du hast dann vor Dir die Milz, siehst, wie sie aussieht und riechst, wie> sie riecht, aber was sie tut, weisst Du deswegen noch kein bisschen> besser.
Der EPROM ist besser. Der hat ein Fenster. Da braucht Frank den Bauch
nicht aufschneiden. :-)
http://de.wikipedia.org/wiki/Erasable_Programmable_Read-Only_Memory