028
07.10.2004, 14:33 Uhr
ao
(Operator)
|
Zitat von ao: |
[quote derphilipder]Zitat aus einem Buch zur Infineon XC16X-Mikrocontroller-Programmierung:
[quote Verfasser] C-Code versus Assembler-Code
....
|
[/quote]
Hier gibt sich aber jemand Mühe, eine Lanze für Assembler zu brechen. Ich seh das anders.
C-Compiler für Microcontroller sind auch ziemlich gut in der Unterstützung der Peripherie. Das ist einer der Gründe, weshalb sie verhältnismäßig teuer sind, denn hier fließt Spezialwissen ein. Es ist also bei weitem nicht so, dass man in C nur schnarchlangsame und speicherfressende Monster schreiben kann.
Klar, handoptimierter Assemblercode kann schneller sein als C-Code, vor allem dann, wenn es um kurze Routinen geht, und die meisten Peripherie-Routinen sind kurz. Aber Handoptimierung ist teuer, weil da viel Zeit reingeht. Es ist ja nicht damit getan, die Lösung einfach hinzutippen, sie muss gesucht werden, und wenn sie gefunden ist, muss noch verifiziert werden, dass sie frei von Seiteneffekten ist usw. Besonders wenn man an irgendwelchen Registern herumoptimiert, schießt man leicht einen Bock. Ich bin froh, dass ich sowas meinem Compiler überlassen kann.
Zum Thema Portierbarkeit: Angenommen, ich habe ein Software-Team von vier Leuten, das meine Microcontroller-Firmware schreibt und die Projekte komplett in Assembler abwickelt. Jetzt migrieren wir auf eine neue Hardware-Plattform, d.h. vier Leute müssen geschult werden und die Software wird von vorn bis hinten neu geschrieben, denn Mitnehmen alter Codeteile ist nicht möglich. Bis was Lauffähiges fertig ist, vergehen locker sechs Monate, d.h. nur die Hardware-Migration (ohne Weiterentwicklung) kostet mindestens zwei Mannjahre Softwareentwicklung plus Schulungskosten für 4 Leute.
Habe ich aber einen Mann im Team, der nur die Lowest-Level-Funktionen in Assembler schreibt, und die anderen programmieren die höheren Teile - d.h. alles, was nicht auf Hardware zugreift - in C, dann muss ich nur den einen Mann fortbilden, damit der seine Low-Level-Routinen in vier Wochen portiert. Die anderen brauchen keine Schulung, die kriegen neue C-Compiler, das kostet ungefähr dasselbe. Damit recompilieren die nur ihren Quellcode (gut, ganz ohne Verifikation gehts auch nicht, aber vom Neuschreiben sind wir weit weg), und nach wenigen Wochen steht das alte Produkt auf einer neuen Plattform. Ich hatte nicht nur weniger Lohnkosten, ich bin auch schneller fertig und komme schon ans Verkaufen, wenn die Konkurrenz noch wild am Entwickeln ist.[/quote] Dieser Post wurde am 07.10.2004 um 14:34 Uhr von ao editiert. |