Forum: Mikrocontroller und Digitale Elektronik Tiny25 in AVR-GCC und MUL-Befehl


von Steffen B. (Gast)


Lesenswert?

Hallo zusammen, ich schon wieder.

Ich möchte von Atmel den Tiny25 in C programmieren mit dem AVR-GCC. Das 
müsste gehen da er ja über SRAM verfügt.

Meine Frage bezüglich der Multiplikation ist: Da der Tiny keinen 
MUL-Befehl hat (Ich habs nur gelesen; hat er keinen? Wo kann ich das 
sehen?), kann ich in AVR-GCC eine Division durchführen oder geht es auch 
mit C nicht?
1
ergebnis = summe / anzahl

von Falk B. (falk)


Lesenswert?

@ Steffen B. (Gast)

>Wo kann ich das sehen?

Im Datenblatt, dort stehen alle unterstützen Befehle drin.

>), kann ich in AVR-GCC eine Division durchführen oder geht es auch
>mit C nicht?

Ich denke das geht. Die Division wird emuliert. Ist zwar langsamer und 
braucht ein wenig Flash, geht aber.

MfG
Falk

von Steffen B. (Gast)


Lesenswert?

Recht schönen Dank für die schnelle Info.

von Peter D. (peda)


Lesenswert?

Steffen B. wrote:

> Meine Frage bezüglich der Multiplikation ist: Da der Tiny keinen
> MUL-Befehl hat (Ich habs nur gelesen; hat er keinen? Wo kann ich das
> sehen?), kann ich in AVR-GCC eine Division durchführen oder geht es auch
> mit C nicht?
>
>
1
ergebnis = summe / anzahl

Der MUL-Befehl ist für die Division vollkommen witzlos.

Allgemein können CPUs unbegrenzt komplexe Berechnungen ausführen, ohne 
dafür jeweils einen Befehl zu haben. Sowas wäre viel zu teuer.

Komplexe Berechnungen (Winkelfunktionen usw.) werden aus einfacheren 
zusammengesetzt.
Ein C-Compiler hat dafür entsprechende Bibliotheken.


Peter

von yalu (Gast)


Lesenswert?

Auch die "größeren" AVRs haben keinen Divisionsbefehl und auch keine
anderen zusätzlichen Befehle, mit denen eine Division effizienter
implementiert werden könnte. Deswegen verwenden alle die gleiche und -
im Vergleich zu anderen Rechenoperationen - langsame Bibliotheks-
routine.

Nur bei den Multiplikationen können die Megas mit ihrer erweiterten
Hardware die Tinys eindeutig ausstechen.

Zum Glück haben die Divisionen in den meisten Programmen (zumindest
bei geschickter Programmierung) den mit Abstand geringsten Anteil an
allen Rechenoperationen. Das ist auch der Grund, warum die Hersteller
bei vielen Prozessoren gar keinen Divisionsbefehl vorsehen.

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
Noch kein Account? Hier anmelden.