www.mikrocontroller.net

Forum: Compiler & IDEs Hardware-Multiplizierer im GCC nutzen


Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe jetzt schon fleißig im Forum und bei Google gesucht, aber 
leider nicht herausbekommen, ob oder wie man den Hardware-Multiplizierer 
des AVR im GCC nutzen kann?!

Wäre super, wenn ihr mir helfen könntet!

Gruß,
Mathias

Autor: Bernd M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zorry,

aber welchen Hardware-Multiplexer in welchem AVR?

Grz.

Bernd M.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Indem man im Quellcode zwei Operanden mit * verknüpft und beim
Kompilieren den richtigen Prozessortyp angibt.

Der Compiler macht das automatisch richtig, im Zweifelsfall den
erzeugte Assemblercode zu Rate ziehen.

Autor: Bernd M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch mal Zorry,

habe wohl etwas zu schnell auf Multiplexer getriggert.
Tja, wer richtig lesen kann ist klar im Vorteil.

Bernd M.

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, danke, also doch so einfach ;-)

Eigentlich hätte ich auch selbst auf die Idee mit dem Disassembler 
kommen können?!

Ich habe eigentlich nur gefragt, weil der IAR-Compiler (Demo) für den 
MSP430 dessen Hardwaremultiplizierer nicht korrekt verwendet.
Da scheint auf den GCC also schon mehr Verlass zu sein...

Gruß,
Mathias

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Mathias (Gast):
Beim MSP430 ist der Multiplizierer AFAIK ein Peripheriegerät, beim AVR 
gehört der aber zur ALU :)

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joerg X. wrote:
> @ Mathias (Gast):
> Beim MSP430 ist der Multiplizierer AFAIK ein Peripheriegerät, beim AVR
> gehört der aber zur ALU :)

Das spielt keine Rolle. Wenn der Compiler an den betreffenden 
Prozessortyp angepaßt ist, erzeugt er für a * b automatisch den 
Maschinencode, der eine Multiplikation bewirkt.

Wenn der Prozessor keinen Multiplizierer hat, wird stattdessen eine 
Bibliotheksroutine aufgerufen, die den Hardwaremultiplizierer 
nachbildet.

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Uhu Uhuhu (uhu)
Ich meinte damit, dass die "mul"-befehle beim AVR einfacher im Compiler 
zu implementieren sind, als die entsprechenden load/store Befehle beim 
MSP430.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich meinte damit, dass die "mul"-befehle beim AVR einfacher im
> Compiler zu implementieren sind, als die entsprechenden load/store
> Befehle beim MSP430.

So viel einfacher ist das nicht immer.

Auch bei eingebautem mul-Befehl kann eine C-Multiplikation aus
mehreren Befehlen zusammengesetzt sein, je nach Größe der Operanden.
Während eine char-Multiplikation noch mit einem einzelnen mul-Befehl
auskommt, sind es bei einer int-Multiplikation schon 3 mul- und 2
add-Befehle und bei einer long-Multiplikation sogar 10 mul-, 8 add-
und 6 adc-Befehle. Für letztere wird auf Grund des umfangreicheren
Programmcodes eine Bibliotheksroutine aufgerufen.

Aber wie Uhu Uhuhu schon erwähnte: Diese Befehlssequenzen denkt sich
der Compiler nicht aus, sondern sind vom Compiler-Entwickler
(ggf. parametrierbar) vorgegeben.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wen Du mit AVR-Studio arbeitest, solltest Du auf jeden falls die "libm" 
hinzufügen, die ist per default nicht beigefüg. Das ist eine für den AVR 
optimierte Math-Lib anbstelle der generischen GNU Lib.

[Project] => [Configuration Options] => [Libraries] => [libm.a]
=> [add Object]

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.