R32C Floating Point Rechnungen (C-Compiler)

Postby 00andi » Wed May 06, 2009 12:00 am

Hi,

bei den Float Operationen habe ich das Problem das es so aussieht aus ob Bibliotheksfunktionen für Addition, Multiplikation verwenden werden. Wieso?

Aus
float a,b;
a=0.3;
b=1.6;
a=a+b;

wird dann

JSR.A $_f4add FFFF00E8H

für die Addition.

Ich hätte erwartet das der Befehl "ADDF" verwendet wird.

Zumal der Bibliotheks Aufruf dann eine Instruktionen beinhaltet.

Liegt dies am C-Compiler bzw. daran das es eine Evaluierungs Version ist?

Danke,

Andi
00andi
 
Posts: 33
Joined: Fri Jan 03, 2014 1:48 pm

Postby 00andi » Wed May 06, 2009 12:00 am

Gefunden.
Es muss im HEW im Menü Build und dann Renesas R32C/1000 Standard Toolchain ... ausgewählt werden.
Im folgenden Dialog dann auf den Reiter C und dor unter Options C dann "-fUF" eintragen.

Damit wird dem Comipler laut Doku mitgeteilt FPU instructions zu verwenden und nicht Bibliotheksfunktionen.

Wieso ist dies denn überhaupt default so eingestellt wo doch der Chip ne FPU hat. Was ich ja gerade das interessante an dem Chip finde. Haben nicht viele in der Liga. Oder kennt ihr welche?

Andi
00andi
 
Posts: 33
Joined: Fri Jan 03, 2014 1:48 pm

Postby 00andi » Wed May 06, 2009 12:00 am

Ergänzung:

Es wird dann aus

a=a+b;

statt

JSR.A $_f4add FFFF00E8H

ADDF R3R1, R2R0

Laut Doku werden wenn beide Operaten Register sind "nur" 4 Taktzyklen verwendet! Mit dem Lib Aufruf sind es glaube ich einige Zyklen mehr ...
00andi
 
Posts: 33
Joined: Fri Jan 03, 2014 1:48 pm

Postby geonid » Sun Oct 11, 2009 12:00 am

Danke für diesen Beitrag.
Hat mir sehr geholfen das schnell zum laufen zu kriegen.

Ich wollte den controller auch wegen der FPU haben.
Ist nach meinen Messungen ca. 20 mal schneller
mit der MULF Instruktion als mit der Bibliotheks-Mltiplikation.
geonid
 
Posts: 1
Joined: Fri Jan 03, 2014 1:48 pm


Return to R32C-Projekt

Who is online

Users browsing this forum: No registered users and 1 guest