Hallo fredyxx,
1970? Was für einen Computer hast du da programmiert?
Grundsätzlich hat aber der Programmierspiel etwas mit Erfahrung zu tun und nur ganz wenig mit der verwendeten Sprache.
Insofern spielt es keine Rolle, dass dies dein erstes Projekt auf einem Arduino ist
Früher konnten 8-Bit CPUs gerade mal zwei 8-Bit Werte addieren oder subtrahieren, grössere Werte musste man in einem Unterprogramm mit den 8-Bit Befehlen zusammensetzen.
Multiplikation und Division waren nur mit einem Unterprogramm möglich.
Später wurde dann auch die Multiplikation (8x8 Bit mit 16-Bit Resultat) und Division (16/8 Bit) als Befehl umgesetzt.
Heute können viele 8-Biter auch mit 16-Bit direkt rechnen.
Entsprechendes gilt für 16-Biter, nus das sie grundsätzlich mit 16-Bit am Stück rechnen könne und meistens auch teilweise mit 32-Bit
Floating Point (FP) ist da etwas komplizierter. Das einfache Format besteht aus 32-Bit welches aus Mantisse, Exponent und Vorzeichen zusammengesetzt ist. Das andere Standardformat hat 64-Bit und ein gebräuchliches internes Zwischenformat hat 80-Bit.
Bei den Grundrechenarten müssen Mantisse, Exponent und Vorzeichen getrennt verarbeitet und die Mantisse meist noch entsprechend geschoben (normalisiert) werden. Zuerst muss man die Teile aber auspacken.
Ergibt also eine Menge an Unterprogrammen.
Manche CPUs haben deshalb eine FPU, welche die FP-Operationen berechnet und meist auch noch ein paar Integer-Operationen beherrscht.
Der 8087, das war die zusätzlich FPU beim 8086, benötiget mehr Transistoren als der 8086, obwohl die ganze Speicher-Zugrifflogik vom 8086 ausgeführt wurde. Der 8086 bestand aus etwa 29'000 Transistoren, der 8087 aus etwa 40'000. Bei Intel ist die FPU erst seit dem 80386 mit auf dem CPU-Chip.
µC haben meistens keine FPU, da verwendet man die Transistoren lieber für die Peripherie.
FPU-Operationen benötigen meist ein paar Takte mehr als die entsprechenden Integer-Operationen.
Muss man die FPU per Software emulieren, ist man mindestens etwa 100x langsamer als die FPU.
Wenn man keine FPU hat, sollte man FP möglichst meiden, zudem kann man sich damit auch die ganze FP-Bibliothek sparen. OK, ist heute nicht mehr so wichtig, aber als man nur 4 oder 8 KByte ROM hatte, machten 1-2 KByte für die FP-Unterstützung einen grossen Unterschied.
Neben der eigentlichen FP-Bibliothek sind dann auch printf() und scanf() entsprechend grösser.
MfG Peter(TOO)
Lesezeichen