-
-
Erfahrener Benutzer
Robotik Visionär
Es ist nicht so das Basic prinzipiell langsamer ist als C. Das hängt vom Compiler ab. Tendenzmäßig sind Basiccomplier aber mehr auf Anfänger zugeschnitten, wo die Geschwindigkeit nicht so wichtig ist. So ist der BSCOM basic Compiler für den AVR nicht besonders schnell. Dagegen ist GCC schon recht gut, die kommerziellen C Compiler sollten eher noch schneller sein, sonst würde die kaum einer nutzen.
Im Wiki Bereich gibt es da ein paar Vergleiche. Es hängt aber immer sehr vom Programm ab, welcher compiler besser ist.
GCC kennt z.B. nur 32 BIT Fließkommazahlen. Mehr Auflösung müßte man von Hand machen. Auch das Rechenen mit Byte Werten ist nicht optimal: da wird oft unnötig auf 16 Bit erweitert.
Bascom hat ein ziehmlich lange Liste von speziellen Funktionen die gut optimiert sein können. In C wird man da mehr echten C Code nutzen müssen. Der andere Vorteil den ich bei Bascom sehe, ist das es da leichter ist die wirklich zeitkritischen Funktionen per inline ASM zu schreiben. Das inline ASM interface von GCC ist recht komliziert, aber auch sehr mächtig.
Dafür schreibt Bascom die Variablem immer zurück ins RAM. Sonst würde man ohne ein "volatile" zum markieren von variablen die auch in einer ISR genutzt werden auch nicht klar kommen. GCC kann Zwischenergebnisse auch im Register halten und so teilweise viel schneller werden.
Wenn man schon ein Verständniss davon hat, wie eine CPU arbeitet, dann ist ASM nicht unbedingt schwerer zu lernen. In gewisserweise ist es sogar einfacher, denn der Spachumfang ist eher begrenzt und klar begrenzt. Auch braucht man sich nicht mit Compiler BUGs rumschlagen, ein Assembler ist normalerweise ohne wirkliche BUGs, höchstens mal was in der Oberfläche. So wie ich das sehe, ist es auch nicht so schwer ein kurzes Porgramm besser als die Compiler hinzukreigen. Das Problem ist nur, das ASM Code recht schwer lesbar ist und das längere Programme deutlich erschwert.
Bis auf wenige Ausnahmen muss man längere Programme auch nicht mehr in ASM Schreiben. Der größte Teil geht über den Compliler und für wirklich Zeitkritische Dinge per INLINE ASM.
Der Vorteil von kürzerem Code in ASM (bzw. C gegen BASCOM) hat an Bedeutung verloren, seit auch µCs mit viel Speicher erschwinglich sind.
Einen weiteren Vorteil hat C noch: die Prgramme sind besser auf andere Hardware übertragbar. Auch wenn es Bascom nun gerade für AVR und die 8051 Falmilie gibt.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen