H8/300H mit IAR int Multiplikation

Gast #215002
Hallo zusammen!

Ich versuche gerade die folgende Gleichung auf einem H8/300H Controller
von Renesas zu implementieren:

x = 1/sqrt(3) * (y + 2*z)

Als Compiler verwende ich den von IAR.

Soweit ist auch alles klar wie ich das ganze Umsetzen muss und es
funktioniert auch schon. Nur macht der Compiler nicht so ganz das was
ich will, d.h. ich habe folgendes probiert um mit 1/sqrt(3) zu
multiplizieren:

#define PWM_SQRT3_INV_Q15    18919  //!< 1/sqrt(3) in q15 format  =>
1/sqrt(3)*2^15

lTemp_     = (long)iTemp_ * SQRT3_INV_Q15; //   * 1 / sqrt(3)
lTemp_   <<= 1;                   // format to q12 in high word
x = (int)(lTemp_ >> 16); // store high word to x


Der Compiler erzeugt nun im Listing einen Unterfunktionsaufruf um die
beiden 16Bit Integer im long-Format zu multiplizieren. Er könnte jedoch
auch einfach den mul-Befehl verwenden und temporär in einem
32Bit-Register arbeiten. Da ich Zeit sparen möchte würde ich dem
Compiler also gerne den Funktionsaufruf verbieten.
Ich habe das ganze auch mal auf einem Renesas-Compiler getestet und da
wird alles so genacht wie ich es erwartet hätte.

Hat vielleicht einer einen Tip wie ich den COmpiler überreden kann dass
zu tun was ich möchte? Ich habe schon mit den verschiedensten Castings
rumprobiert, allerdings ohne Erfolg :-(

Viele kB Grüße,

Ralf

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.