Archiv verlassen und diese Seite im Standarddesign anzeigen : Code Analysis / Reverse engineering
Hi Freaks !
Um mir für die Diskussionen um Compiler-Geschwindigkeiten Argumente zu verschaffen, hab ich begonnen, mir einen HEX-file Analyzer zu schreiben, der mir den vom Compiler generierten Code ein bißchen auftröselt
Im Attachment als Beispiel eine Vergleich dreier Schleifen-Konstruktionen (FOR, DO, WHILE) und was der BasCom daraus macht.
Wenn eine ein bißchen Assembler kann, ist das Zeugs ganz gut lesbar.
--> Moderator: Vielleicht ist das ja auch eine "Projekt-Vorstellung", was weiß denn ich ß
kannste denn den anhang nochmal reinstelln? der iss nicht mit drinne
Als Gast siehst du nix. Du mußt dich registrieren lassen
(tut garnicht weh, hab' ich gehört)
Obwohl der WinAvr die *.lss Liste erzeugt, in der er den generierten Code darstellt, hab ich trotzdem zum Vergleich die C-Variante erzeugt.
Ich hab aber keinen "print" in die Bodies reingestellt, da der ja als Funktionsaufruf zuviel Zusätzliches generieren und das Schleifenkonstrukt schwerer erkennbar machen würde.
Und den Optimizer hab ich natürlich abgedreht.
Man sieht schon einige Unterschiede, wie die Herren Compiler das so im Detail machen.
Hallo,
schön aufgedröselt !
Stell doch noch den RAM / Flash Verbrauch, und die Laufzeit gegenüber.
Und evtl. noch zum Vergleich, was man in Assembler schreiben würde.
Gruß Jan
Hi, Jan
Ich werd auch ein Programm in Bascom UND C schreiben, da kann man das dann in etwa vergleichen. Laufzeit ist so 'ne Sache, wahrscheinlich einfach unterm Strich über den PC, nach genügend Cycles.
Was ich aber schon gesehen habe, beim Interuppt ist der BasCom ein Tier, er pusht und popt wirklich alle register von links nach rechts.
Und bei "Nosave" gleich garnix. Na ja.
Hi Robert,
bei so kleinen Schleifen kannst du die Laufzeit doch
über die Anzahl der Takte feststellen. Die meisten
Avr-Befehle brauchen einen Taktzyklus.
Manche brauchen zwei oder drei, das steht im Datenblatt.
Oder du lässt die Schleifen im Simulator von AVR-Studio laufen,
der zählt die Takte mit.
Gruß Jan
Ah so, Schleifen/Detail bezogen. Ja klar, das geht natürlich ganz präzise.
Derweil kämpf ich noch, wie ich am besten solche Sequenzen wie:
LDI XL, $78
LDI XH, $01
zu der Aussage: Load X, $0178
bringen kann, damit ich dann Namen vergeben kann.
Na ja, ist wie Kreuzworträtsel.
Du kennst Dich ja aus, was erzähl' ich dir
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.