Keinesweg, das ist leider ein weit verbreiteter Irrtum.Zitat von ThunderD
Bei heutigen PC-Prozessoren wie P4 oder Athlon-XP (oder die 64-Bit-CPUs) ist es extrem schwer bis nahezu unmöglich, in Assembler schnelleren Code zu schreiben als den, den ein guter C/C++-Compiler generiert.
Wenn man nicht gerade ein Assembler-Guru ist und die Datenblätter dieser CPUs im Schlaf aufsagen kann, hat man kaum eine reale Chance einen optimierenden Compiler zu schlagen.
Auf Mikrocontroller lässt sich das natürlich (noch) nicht 100% übertragen, weil diese bei weitem noch nicht die Komplexität eines P4 aufweisen. Zur Zeit kann man daher auch mit grundlegenden Assembler-Kenntnissen schnelleren oder sparsameren Code erzeugen. Leider ist es so, dass Assembler nicht gerade die übersichtlichste der möglichen Programmiersprachen ist, weswegen es für größere Projekte doch häufig ausscheidet. Die Wartung des Codes wird einfach zu aufwändig. Manchmal eignet sich Assembler für zeitkritische Routinen, wenn der Compiler etwas zu viel des guten erzeugt.
Wenn man z.B. in C einen Funktionsaufruf in einer Interruptroutine macht, sollte man schon wissen was das auf Assemblerebene bedeutet.
Man darf aber auf gar keinen Fall den Fehler machen und die Codegenerierungs-Leistung von guten C/C++-Compilern unterschätzen.
Im Zweifelsfall kann man den C/C++-Compiler jederzeit überreden, Assembler-Code auszuspucken und selbst Hand anlegen.
Zu Bascom:
Ich habe Bascom nie benutzt. Nach dem, was ich davon gehört habe, vermute ich aber stark, dass der generierte AVR-Code ziemlich gut sein kann. Das liegt aber nicht gerade am optimierenden Bascom-Compiler, sondern eher daran, dass keine komplizierten Ausdrücke möglich sind. Die (man verzeihe mir den Ausdruck) relativ primitive Sprache lässt sich ziemlich einfach nach Assembler übertragen, viel optimieren muss man da gar nicht.
Es hängt bei Bascom IMHO also ziemlich am Programmierer, ob der Code schnell, sparsam oder beides ist. Langsamer als Assembler-Code ist er dabei nicht unbedingt (außer Bascom optimiert _gar nicht_ und übertragt wirklich stur 1:1 nach Assembler).
p.s.: Ein selbstgebauter ISP-Adapter ist normalerweise um einiges billiger als ein gekaufter. Allerdings hast du dann natürlich das Risiko, dass er nicht funktioniert. Bei einem sehr einfachen Adapter sollte dieses Risiko aber vernachlässigbar sein. Du baust ihn auf, wenn er nicht geht und du nicht lange nach dem Fehler suchen willst kannst du dir immer noch einen kaufen.
(*puh* Monster-Posting; ich sollte mich vielleicht mal registrieren)
Lesezeichen