Forum: Compiler & IDEs Neuer ReAVR in Aussicht


von J. A. (j_a)


Lesenswert?

Hallo ReAVR-Freunde,
es freut mich zu lesen, dass mein AVR-Dis- oder vielmehr Reassembler 
(weil er direkt wiederverwertbaren Assemblercode erzeugt) auch in den 
2020ern noch immer wieder einmal Thema ist.
Vielleicht freut es Euch dann auch, dass ich ihn Ende des letzten Jahres 
noch einmal angepackt habe, um ihm nun auch den Umgang mit den vielen 
neuen AVRs seit den XMegas beizubringen. Das hat sich zwar als ein etwas 
umfangreicheres Unterfangen herausgestellt, aber ich bin dabei und 
hoffe, in den nächsten Monaten eine erste Testversion auf meine Website 
stellen zu können.
Über den Namen bin ich mir noch nicht klar - "ReAVR_II" oder "ReAVRplus" 
- doch einen neuen Namen wird die neue Version auf jeden Fall erhalten.
Außerdem wird es ein Companion-Tool geben, das die 
avrasm-*def.inc-Dateien aus den Studio-7- oder MPLAB-Repositories liest 
und in die ReAVR-internen Listen mit MCU-Spezifikationen und 
IORegister-Adressen umwandelt.
Nicht zu vergessen die Möglichkeit, eigene Kommentare einzufügen, 
wahlweise am Ende einer Zeile oder als neue Zeile, wegen derer ich die 
ganzen Änderei überhaupt angefangen hatte... ;)
Ich werde die neue Version ASAP veröffentlichen. Also "stay tuned."
Beste Grüße
Johannes

von Peter D. (peda)


Lesenswert?

Ich wüßte nicht, wozu man so etwas gebrauchen könnte.
Interessante Geräte sind gelockt, da kommt man also an den Code nicht 
ran.
Und größere Projekte sind in Hochsprachen geschrieben, da sieht der 
Assembler wie Kraut und Rüben aus.
Bei komplexen Projekten ist neu programmieren oftmals einfacher als 
reassemblieren.

von Oliver S. (oliverso)


Lesenswert?

Peter D. schrieb:
> Ich wüßte nicht, wozu man so etwas gebrauchen könnte.

In dem Moment, in dem du das Ding brauchst, weißt du, wofür du das 
brauchst.

Oliver

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Oliver S. schrieb:
> In dem Moment, in dem du das Ding brauchst, weißt du, wofür du das
> brauchst.

Hä?

von Sebastian R. (sebastian_r569)


Lesenswert?

Ich bin gespannt!

Wie schaut es mit der Unterstützung der ATTiny4/5/9/10 aus?
Da hätte ich das ein oder andere Projekt, bei dem das super nützlich 
wäre!

von Harald K. (kirnbichler)


Lesenswert?

... Windows-Only, closed-source.

http://www.jassenbaum.de/ja-tools/reavr.html

von Falk B. (falk)


Lesenswert?

Oliver S. schrieb:
>> Ich wüßte nicht, wozu man so etwas gebrauchen könnte.
>
> In dem Moment, in dem du das Ding brauchst, weißt du, wofür du das
> brauchst.

Und Apfelmus ist Mus aus Äpfeln!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ghidra … auch wenn es ausgerechnet von der NSA kommt, es ist Opensource, 
und es zimmert gleich noch ein C-Code-Gerippe zurecht.

Hab's gerade mal auf einem aktuellen AVR-Projekt (mit ATtiny204) 
probiert. Gut, die Vektortabelle, die sie benutzen, hat nicht die 
korrekten Namen (und Länge), muss man halt korrigieren. Aber ansonsten 
schon durchaus beeindruckend, was sie da aus dem Stand heraus erkennen.

Das das nicht ohne Interaktionen geht, ist natürlich klar.

J. A. schrieb:
> weil er direkt wiederverwertbaren Assemblercode erzeugt

Geht auch mit dem ganz normalen Disassembler aus den Binutils. Man muss 
nur die Headerzeilen und die Spalten mit Adressen und Opcodes wegwerfen. 
Gerade probiert:
1
avr-objdump -d myfile.hex --disassemble-zeroes -b ihex -m avr5 -j .sec1 | sed -e '1,7d' -e 's/^..................//'> foo.s
2
avr-as -mavr5 -o foo.o foo.s
3
avr-ld -o foo.elf foo.o
4
avr-objcopy -O ihex foo.elf foo.hex
5
diff -u myfile.hex foo.hex
6
# -> keine Unterschiede gefunden

: Bearbeitet durch Moderator
von Lotta  . (mercedes)


Lesenswert?

Ey, @Folks,

macht doch bitte J.A. nicht nieder.

Das Programm ist kostenlos benutzbar, hat ne
freie Lizenz und ist unter anderem in Delphi
geschrieben.
Als Hacker oder reverse engineer ist man bei
seinem Hobby auf jeden "Strohhalm" angewiesen,
der einem gereicht wird, da ist das Proggy dann
doch gut!

@J.A., wie willst Du das Millitär von Deinem
Proggy fernhalten?
Hast Du da ne besondere Strategie? ;-O  ;-)))

mfg

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

J. A. schrieb:
> Über den Namen bin ich mir noch nicht klar - "ReAVR_II" oder "ReAVRplus"

Üblich ist die Vergabe von Versionsnummern: An erster Stelle für 
Mayor-Releases (hochgezählt bei wesentlichen Änderungen, 
Inkompatibilitäten) und danach Minor (Bugfixes, Tippos in der Doku, 
etc.).

Ansonsten wird's irgendwann komisch

Tool
ToolII
ToolPlus
ToolBesser
ToolNochBesser
ToolSuperGutUndNochViiielBesser
ToolSuperHypeMegaUnglaublichHyperGutBestEverII

von Harald K. (kirnbichler)


Lesenswert?

Lotta  . schrieb:
> und ist unter anderem in Delphi geschrieben.

Macht das irgendwas besser, außer daß es mancher Leute religiöse Gefühle 
bedient?

von Lotta  . (mercedes)


Lesenswert?

Harald K. schrieb:
> Lotta  . schrieb:
>> und ist unter anderem in Delphi geschrieben.
>
> Macht das irgendwas besser, außer daß es mancher Leute religiöse Gefühle
> bedient?

Hey, Du hast es genau erfasst:
Philippe Kahn hat damals in der Wende den "Raubkopier-Ossis"
nicht juristisch nachgestellt, sondern Ihnen ne kostenlose Lizenz
gegeben, also ihre Raubkopien legalisiert.
Das hat natürlich Auswirkungen auf die Loyalität der
Leuts zu Borland bis heute, auch wenn Borland ja
inzwischen leider zigmal umfirmiert wurde.

Hatte bestimmt auch mit guten Beziehungen des Ostblocks mit
Frankreich zu tun, (der osten hat zb. das Secam Fensehsystem übernommen) 
Philippe war ja Franzose.

mfg

von Harald K. (kirnbichler)


Lesenswert?

Muss man nicht verstehen.

von Lotta  . (mercedes)


Lesenswert?

Harald K. schrieb:
> Muss man nicht verstehen.

Es war einfach ne geile, interessante Zeit damals.
Philippe hat damals einfach den "Ossis" geholfen,
die mit 100 DM Begrüßngsgeld in ne neue Gesellschaftsordnung
mit "keiner Ahnung von Tuten und Blasen" gestoßen wurden.

Heut machen die Superreichen und Politiker
lieber Bombenangriffe auf Krankenhäuser und Kindergärten.
das macht ja auch mehr Spass. :-(((((((


mfg

: Bearbeitet durch User
von J. A. (j_a)


Lesenswert?

Echt fantastisch, was ich so alles zu lesen bekomme.

Na dann stelle ich mal in den Raum, dass ich von Geburt Niedersachse bin 
und mein ganzes bisheriges Leben dort verbracht habe, von gelegentlichen 
Ausflügen in andere Gegenden Deutschlands und Europas abgesehen. Dass 
ich etliche Programme in 8080- und Z80-Hex-Code geschrieben und meinen 
HD64180-CP/M-Computer erst aufgegeben habe, als ich mich, von außen 
gedrängt, in die AT-kompatible Welt begab. Da waren dann schon alle 
8088-, 8086-, 80186- und 80286-Maschinen an mir vorbei gegangen, und das 
damals noch übliche MS-DOS hatte schon die Version 5 erreicht. Von 
Windows war in der Zeit noch allenfalls gerüchteweise zu hören, bis 
Windows 3.0 herauskam, und als soweit erschwingliche höhere 
Programmierumgebung gab es nur TurboPascal. Linux und Open-Source waren 
damals noch überhaupt kein Thema.

Ich war damals und bin es bis heute in einem Betrieb der produktiven 
Industrie beschäftigt und hatte/habe daher einige Möglichkeiten, stellte 
aber irgendwann fest, dass ich beim Programmieren durcheinander kam, als 
ich versuchte, alle meine Aufgaben in C zu erledigen. Weshalb ich mich 
entschloss, C nur für meine AVR-Projekte zu verwenden, und für meine 
PC-Anwendungen Pascal, im weiteren dann Delphi. Diese Entscheidung war 
rein pragmatisch und hat nichts mit religiösen Gefühlen zu tun. Wenn 
derlei je im Spiel gewesen wäre, hätte ich mich auch wohl kaum darauf 
eingelassen, für den c't68000 Anwendungen in Pearl zu schreiben, oder 
die Testprogramme für ein Transputer-Projekt in Occam.

Im Übrigen bin ich am Überlegen, den neuen ReAVR, wenn er erstmal alles 
so tut wie gewünscht, in ein Lazarus-Projekt umzuwandeln und ihn 
anschließend dem Open-Source-Verfechter aus der Runde zur weiteren 
Betreuung zu übergeben. Dann wären seine Mäkeleien mit einem Schlag aus 
der Welt. Und ich hätte nichts mehr damit zu tun.

Ein paar Anmerkungen zu speziellen Kommentaren noch:

Die erste zum Namen. Klar ist die übliche Methode, einfach die Version 
hochzuzählen, und das habe ich in der Vergangenheit auch immer so 
gehalten. Nur gehen diesmal die Änderungen so weit, dass ich mir einfach 
solche Fragen ersparen möchte wie "Warum geht dies und das auf einmal 
nicht mehr?"

Die zweite dazu, wozu ReAVR gut ist. Lieber Kommentator, es wird Dich 
wahrscheinlich überraschen, wie viele AVRs für professionelle embedded 
Anwendungen ungelockt sind. Tatsächlich sind mir bei meinen 
Untersuchungen zu meiner eigenen Überraschung nur wenige gelockte 
untergekommen. Ansonsten kann man sich, wenn man mit Assembler so weit 
vertraut ist, problemlos in den Hex-Code eines Compilers einlesen. Ok, 
bei größeren Codes ab 8 oder 16KB wird das zeitaufwändig, und man muss 
entscheiden, ob man es wirklich vertreten kann.

Und zu den binutils: Klar bekommt man damit mit etwas Editor-Gefummle 
auch ein wieder assemblierbares Disassembly hin. Aber auch nur das, mit 
allen kryptischen Labels, wie sie sind. Und wenn man dann zum Beispiel 
bei den in/out-Instruction die richtigen IO-Namen haben will, muss man 
für jeden einzeln ein Suchen/Ersetzen anstoßen. Genau das macht aber ein 
Reassembler wie ReAVR von sich aus automatisch - und interaktiv.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

J. A. schrieb:
> Genau das macht aber ein Reassembler wie ReAVR von sich aus automatisch
> - und interaktiv.

Wie geschrieben, Ghidra letztlich auch, und das erzeugt auch gleich noch 
ein C-Code-Gerippe.

Man könnte den Aufwand also eigentlich auch da reinstecken, dass Ghidra 
von Haus aus noch möglichst viele AVRs mit all ihren Register-Details 
kennt, damit man diese automatisiert konvertieren kann.

> Nur gehen diesmal die Änderungen so weit,

ReAVR NG :-)

Aber auch das hätte natürlich das Problem, was Johann beschreibt: wenn 
die übernächste Version wieder alles über den Haufen wirft, suchst du 
wieder einen neuen Namen. Daher die übliche Konvention, dass man bei 
inkompatiblen Änderungen die major number hochzählt. Aber seit 
Feuerfüchse und dergleichen alle nasenlang die Nummern komplett 
hochzählen, ist das natürlich auch irgendwie Vergangenheit.

von Peter D. (peda)


Lesenswert?

J. A. schrieb:
> Ok,
> bei größeren Codes ab 8 oder 16KB wird das zeitaufwändig, und man muss
> entscheiden, ob man es wirklich vertreten kann.

Ja, bei Anwendungen über das Anfängerniveau hinaus wird das schnell 
unhandlich.
Ich habe schon lange keine Hemmungen mehr, float, printf, scanf zu 
verwenden, um bequem programmieren zu können.
Auch Structs und Arrays sehen in Assembler extrem kryptisch aus, erhöhen 
aber in C erheblich die Lesbarkeit und Flexibilität.
Den typischen Spaghetticode möchte man eigentlich nicht mehr haben.

Und um Fehler zu suchen oder Abläufe zu verstehen, ist es oftmals 
einfacher, das Programm im Debugger laufen zu lassen.

von Georg M. (g_m)


Lesenswert?

Jörg W. schrieb:
> Wie geschrieben, Ghidra letztlich auch, und das erzeugt auch gleich noch
> ein C-Code-Gerippe.

Und was ist mit den Kommentaren und selbsterklärenden Namen?

von J. A. (j_a)


Lesenswert?

Noch ein paar Anmerkungen, bevor ich mich verabschiede, bis der neue 
ReAVR fertig ist:

@Jörg: Ich habe kurz bei Ghidra vorbei gesehen und festgestellt, dass da 
im Prinzip dasselbe Schema verfolgt wird wie bei Microchips MPLAB - der 
Code ist Java-basiert und damit recht einfach auf alle drei "großen" 
OSse anzupassen (Linux, MacOS und Windows). Was die includes angeht, 
habe ich noch nicht weiter geforscht und kann deshalb nicht sagen, ob 
die geradeaus oder vielleicht etwas skurril sind. Vielleicht magst Du 
mir einmal ein Beispiel zukommen lassen, gerne auch als PN? Die 
"NG"-Idee ist übrigens nicht schlecht ;) Und keine Sorge. Es wird danach 
keine weitere so tiefgreifende Änderung von ReAVR mehr geben.

@Peter: Wie kommst Du eigentlich darauf, dass 8 bis 16KB AVR-Code 
Anfängerniveau sind? Aber vielleicht hast Du bisher einfach nie eine 
kostenkritische embedded Anwendung programmieren müssen, bei der die 
gehobenen Funktionen uninteressant waren, weil es dort weder floats noch 
Schnittstellen gab, auf die printf oder scanf angewendet werden konnten. 
Ansonsten finde ich C-Code im Disassembly keineswegs kryptisch. Ich 
brauche mich nur etwas einzulesen und dabei vielleicht ein Dutzend 
Aufruf-Labels global zu ändern. Was mit ReAVR ganz einfach geht... Nach 
meiner Erfahrung gibt es nur einen Compiler, der wirklich kryptischen 
Assemblercode erzeugt, und das ist Bascom.

@Georg: Genau. Dazu hat bisher keiner etwas beigetragen.

Beste Grüße
Johannes

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.