Hallo,
 
so jetzt habe ich mir die Fixpoint.c wieder angeschaut, und nach Alternativen gesucht.
 
Das beste was ich gefunden habe ist der algo über div 10 und der rest ergibt die ziffer.
Div 10 kann man als Multiplikation mit (0,1*2^19)>>19 optimieren.
 
Die kleinst Codegrösse für fixpoint.c ist dann 190 Byte (Atmega8 minimalsystem mit zBus+OW -> 7226 Byte)
Das spart dann ca 74 Bytes gegenüber dem Orginal.
 
Alle Versuche mit Array {1,10,100,1000,10000} usw. sind grösser, offenbar ist der Arrayzugriff aufwendig.
Auch der if-else-Tests unten ist grösser.
(Alles in C, Assembler habe ich nicht getestet)
 
Bietet jemand weniger ?
 
Taru
 
 
 
Gesendet: Montag, 02. Juni 2014 um 19:10 Uhr
Von: e...@users.sourceforge.net
An: t...@gmx.de
Betreff: Re: [ethersex-devel] patch for overflow in fixpoint.c
Hallo Taru,

vielleicht besuchst Du uns im IRC. Ebenda hatten wir gerade die
Diskussion, ob man die erste Schleife nicht durch if-else-Tests
ersetzen sollte:
http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10Obvious
 
_______________________________________________
Ethersex-devel mailing list
Ethersex-devel@list.zerties.org
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel

Antwort per Email an