Wenn ich per .def einen Aliasnamen für ein Register festlege, zb. leds, spielt es dann eine Reolle, ob ich im Code LEDS schreibe oder ist das egal? MfG
Das ist egal. Groß oder Kleinschreibung spielt da keine Rolle. Auch bei den ASM befejlen kannst es Dir aussuchen, ob Du sie groß oder klein schreibst. Zumindest ist das beim AVR-Studio so. Falls du ein anderen Compiler benutzt, probiere es einfach aus. Wenn es nicht egal ist, dann wird schon eine Fehlermeldung beim compilieren bekommen...
In der aktuellen Version von AVR Studio 4.18 SP2 kann man mit -c aber auch Unterscheidung beim Assembler erzwingen.
avr-as (der zur gcc-Toolchain gehörige Assembler) ist case-sensitiv. Der unterscheidet also zwischen led und LED.
Da habe ich mal Glück gehabt, ich dachte schon, ich muss mein 251kB (kompiliert) großes Programm noch mal schreiben.
QQQ schrieb: > Da habe ich mal Glück gehabt, ich dachte schon, ich muss mein 251kB > (kompiliert) großes Programm noch mal schreiben. Nimm dir trotzdem einen Editor und bereinige das mittels 'Suchen & Ersetzen'. Auf lange Sicht ist das nämlich immer ein Stein der Verwirrung. Und wer darauf baut, dass 'led' und 'LED' 2 unterschiedliche Labels sind, sollte * am Obfuscated Assembler Code Contest teilnehmen * mit dem nassen Fetzen erschlagen werden
QQQ schrieb: > Da habe ich mal Glück gehabt, ich dachte schon, ich muss mein 251kB > (kompiliert) großes Programm noch mal schreiben. Wer kommt denn nur auf so verrückte Ideen, 251kB in Assembler zu schreiben? Meine Schmerzgrenze liegt bei 2kB, darüber ist C deutlich besser. Irgendwann verliert man in Assembler den Überblick und pusht/popt sich zu Tode oder hat nen riesen Wust an Spaghetticode. 251kB Assembler-Monster in C umgeschrieben, würden höchstens halb so groß sein und doppelt so schnell laufen. Von der besseren Fehlersuche, Wartbarkeit und Erweiterbarkeit ganz abgesehen. Peter
Peter Dannegger schrieb: > 251kB Assembler-Monster in C umgeschrieben, würden höchstens halb so > groß sein und doppelt so schnell laufen. > Von der besseren Fehlersuche, Wartbarkeit und Erweiterbarkeit ganz > abgesehen. Glaube ich nicht, ausserdem würde es in C kaum funktionieren. Es handelt sich um ein automatisches Steuersystem für meine Jacht, mit GPS, Radar, Sonar, Mp3-Player und Fersteuerung fürs Funkgerät mit Packetradiodecoder. Dazu noch Grafikausgabe mit 800*600 auf einem VGA Monitor mit 1024 Farben und Maussterung. Das alles läuft auf einem Atmega256. Daher die Größe.
QQQ schrieb: > Peter Dannegger schrieb: >> 251kB Assembler-Monster in C umgeschrieben, würden höchstens halb so >> groß sein und doppelt so schnell laufen. >> Von der besseren Fehlersuche, Wartbarkeit und Erweiterbarkeit ganz >> abgesehen. > > Glaube ich nicht, glaub ich schon. > ausserdem würde es in C kaum funktionieren. Wahrscheinlich besser, als das was du da hast. > Es handelt > sich um ein automatisches Steuersystem für meine Jacht, mit GPS, Radar, > Sonar, Mp3-Player und Fersteuerung fürs Funkgerät mit > Packetradiodecoder. Das schreit geradezu danach in einer Hochsprache gemacht zu werden. > Dazu noch Grafikausgabe mit 800*600 auf einem VGA > Monitor mit 1024 Farben und Maussterung. Das alles läuft auf einem > Atmega256. Daher die Größe. Aha. Dein Programm ist also 256KB gross, weil das Flash deines Mega 256K gross ist. Alles klar
236kB nach Optimierungen Und nun bitte schließen, das eigentliche Problem ist gelöst, daher möchte ich nicht, dass hier ein Krieg über ASM und C ausbricht.
Das will niemand. Eines muss ich noch los werden: Wer 250 K Assembler programmiert und vor allen Dingen debuggt, hat meinen Respekt verdient. Also: Respekt
@ Karl heinz Buchegger (kbuchegg) (Moderator) >Eines muss ich noch los werden: >Wer 250 K Assembler programmiert und vor allen Dingen debuggt, hat >meinen Respekt verdient. Also: Respekt Du lässt dich wohl auch von großen Zahlen beeindrucken, was? 250K sagt nicht viel. Ausserdem ist scheinbar dein Ironiedetektor kaputt. >Glaube ich nicht, ausserdem würde es in C kaum funktionieren. Es handelt >sich um ein automatisches Steuersystem für meine Jacht, mit GPS, Radar, >Sonar, Mp3-Player und Fersteuerung fürs Funkgerät mit >Packetradiodecoder. Dazu noch Grafikausgabe mit 800*600 auf einem VGA >Monitor mit 1024 Farben und Maussterung. Das alles läuft auf einem >Atmega256. Daher die Größe. Hier will uns mal wieder jemand ordentlich veräppeln. Mal abgesehen davon, dass so ein Wust an Funktion auch locker in C zu machen ist, glaub ich kaum, dass jemand das programmiert und DANCH fragt, ob der Assembler case sensitive ist . . . Von der Sinnhaftigkeit dieses Wundergeräts mal ganz zu schweigen. Ich ordne das mal unter Seemansgarn ein ;-) Ahoi Falk
Falk Brunner schrieb: > Von der Sinnhaftigkeit dieses Wundergeräts mal ganz zu schweigen. Ein einfaches All-in-one Display, welches (hoffentlich) wesentlich weniger störanfällig ist, als würde man das alles auf einem PC machen.
QQQ schrieb: > Falk Brunner schrieb: >> Von der Sinnhaftigkeit dieses Wundergeräts mal ganz zu schweigen. > > Ein einfaches All-in-one Display, welches (hoffentlich) wesentlich > weniger störanfällig ist, als würde man das alles auf einem PC machen. Das stellt wohl niemand in Frage. Alleine das "(hoffentlich)" macht mich stutzig. Aber das ist deine Sache, dein Leben hängt davon ab. Genau aus zb diesem Grund sieht PeDa das genauso wie ich. Bei derartigen Codegrößen ist es schon extrem schwer in Assembler noch den Überblick über Registerbenutzung, was liegt wo am Stack etc. zu behalten. Wir überlassen solche Dinge dann lieber einem Compiler. Der macht das zuverlässiger als wir das je könnten.
QQQ schrieb: > Glaube ich nicht, ausserdem würde es in C kaum funktionieren. Es handelt > sich um ein automatisches Steuersystem für meine Jacht, mit GPS, Radar, > Sonar, Mp3-Player und Fersteuerung fürs Funkgerät mit > Packetradiodecoder. Dazu noch Grafikausgabe mit 800*600 auf einem VGA > Monitor mit 1024 Farben und Maussterung. Das alles läuft auf einem > Atmega256. Daher die Größe. Warum diese paar Aufgaben einen so großen Code benötigen sollen, kann ich nicht nachvollziehen. Und solange der AVR nicht die MP3-Dekodierung macht, sieht das auch nicht sonderlich CPU-lastig aus. Daten von einer SD-Karte zum MP3-Chip zu schaufeln, macht man üblicher Weise in C, weil die FAT-Libs alle schon in C geschrieben sind. Wenn ich mich recht erinnere, gibts MP3-Player Beispiele mit ATmega8. Eventuell könnte es Sinn machen, das Timing für die Grafiksteuerung in Assembler zu schreiben, wenn der AVR es selber machen muß und kein Grafikchip benutzt wird. Aber das sind dann nur wenige Assemblerzeilen im Interrupthandler. Es sei denn, von den 236kB sind >200kB nur Bitmaps, dann ist die Größe nachvollziehbar. Peter
@ Peter Dannegger (peda) >Es sei denn, von den 236kB sind >200kB nur Bitmaps, dann ist die Größe >nachvollziehbar. Du bist aber auch ein Schelm ;-) MfG Falk
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.