Doch, das lässt er natürlichHabe den C code mal in eine eigene Funktion gepackt:
Da kommt bei mir mit -O2 folgende Assemblercode raus:Code:uint16_t test( uint16_t op1, uint16_t op2, uint16_t op3) { uint16_t result; result = op1*op2+op3; // <- Das hier return result; }
Ist also immer noch erheblich langsamer als die Fixpunktimplementierung. Kommt hinzu, dass, wie bereits gesagt, das Clipping in C nicht so einfach zu realisieren ist.Code:test: .LFB3: .LM7: /* prologue: frame size=0 */ /* prologue end (size=0) */ movw r18,r22 .LM8: mul r24,r18 movw r22,r0 mul r24,r19 add r23,r0 mul r25,r18 add r23,r0 clr r1 movw r24,r22 .LM9: add r24,r20 adc r25,r21 /* epilogue: frame size=0 */ ret /* epilogue end (size=1) */







Zitieren

Lesezeichen