- 3D-Druck Einstieg und Tipps         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 22 von 22

Thema: Parameterübergabe bei Inline-Assembler

  1. #21
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von ogni42
    ...Ist als Assembler Code schon erheblich länger...
    Hat es einen besonderen Grund, daß du avr-gcc deinen C-Code nicht optimieren lässt (zumindest sieht der erzeugte asm stark danach aus)?
    Disclaimer: none. Sue me.

  2. #22
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Doch, das lässt er natürlich Habe den C code mal in eine eigene Funktion gepackt:
    Code:
    uint16_t test( uint16_t op1, uint16_t op2, uint16_t op3)
    {
    	uint16_t result;
    
       	result = op1*op2+op3; // <- Das hier
    
    	return result;
    }
    Da kommt bei mir mit -O2 folgende Assemblercode raus:
    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) */
    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.

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test