- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 22

Thema: Compiler Multiplikation verbieten

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo zusammen,
    ein kleines Update der beschriebenen Problematik
    "Multiplikation verhindern"

    Ich wollte eben einen kleines PIC Progrämmchen schreiben
    und bin unter anderem wieder über die Multiplikation mit 3 gestoßen.
    Der ursprünglich "erfolgreiche" Code mit
    count = (count << 1) + count;
    war ja am kürzesten,
    doch plötzlich weigert sich der Compiler einen entsprechenden Code zu erzeugen.
    er benutzt generell ein Unterprogramm mit einer Multiplikation...

    Nach einigem herumprobieren habe ich nun festgestellt, dass ich eine neue Version vom XC8 auf dem Rechner habe
    und genau da liegt das Problem.

    V2.00 erzeugt "guten" kompakten Code
    V2.10 ungünstig, Berechnung generell über Unterprammaufruf Multiplikation
    V2.20 ungünstig, Berechnung generell über Unterprammaufruf Multiplikation

    Ich habe es auch mit verschiedenen Optimierungseinstellungen probiert,
    leider bisher ohne Erfolg.

    Anbei:
    hat sich auch mein Ausschiebecode für meine RGB LEDs verändert und funktioniert auch nicht mehr.
    Hier treten plötzlich erheblich längere Zeiten auf, weil der erzeugt Code anders und langsamer ist.

    Das stellt natürlich generell ein riesen Problem dar:
    Wenn man solch zeitkritischen Code in C (oder generell in einer Hochsprache) implementiert
    weiss man nicht was der Compiler daraus macht.
    Durch ein Compilerupdate hat dies unter Umständen katastrophale Folgen.

    Im Prinzip holt mich ein "ehemaliges" Problem wieder ein. Siehe Thread:
    https://www.roboternetz.de/community...line-Assembler
    Da hatte ich meinen Assembler Code in C umgesetzt....

    Code:
    Compiler ist der XC8 Version V2.00
    !  // damit keine Multiplikation verwendet wird:
    !  count = (count << 1) + count;  // 3 Bytes pro Led RGB
    0x463: LSLF count, W
    0x464: ADDWF count, W
    0x465: MOVWF __pcstackCOMMON
    0x466: MOVF __pcstackCOMMON, W
    0x467: MOVWF count
    -------------------
    Compiler ist der XC8 Version V2.10
    79:              // damit keine Multiplikation verwendet wird:
    80:              count = (count << 1) + count;  // 3 Bytes pro Led RGB   !! er nimmt einen Multiplikations 
    001F  3003     MOVLW 0x3
    0020  00C6     MOVWF 0x46
    0021  0846     MOVF 0x46, W
    0022  00C2     MOVWF multiplicand
    0023  084B     MOVF count, W
    0024  20A4     CALL 0xA4
    0025  00C7     MOVWF 0x47
    0026  0847     MOVF 0x47, W
    0027  00CB     MOVWF count
    ------------------------------
    Compiler ist der XC8 Version V2.20
    
    
    305:             // damit keine Multiplikation verwendet wird:
    306:             count = (count << 1) + count;  // 3 Bytes pro Led RGB
    03A9  3003     MOVLW 0x3
    03AA  00F4     MOVWF i
    03AB  0874     MOVF i, W
    03AC  00F0     MOVWF __pcstackCOMMON
    03AD  087A     MOVF count, W
    03AE  3185     MOVLP 0x5
    03AF  25D0     CALL 0x5D0
    03B0  3183     MOVLP 0x3
    03B1  00F5     MOVWF counter
    03B2  0875     MOVF counter, W
    03B3  00FA     MOVWF count
    Siro
    Geändert von Siro (15.08.2020 um 21:38 Uhr)

Ähnliche Themen

  1. Auch Hybridfahrzeuge betroffen: Großbritannien will Verbrenner ab 2040 verbieten
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 26.07.2017, 09:40
  2. Verkehr: Stadtrat in San Francisco will Lieferroboter verbieten
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 2
    Letzter Beitrag: 24.05.2017, 09:52
  3. Multiplikation falsch??
    Von fredyxx im Forum Arduino -Plattform
    Antworten: 8
    Letzter Beitrag: 20.05.2016, 09:21
  4. Multiplikation in ass
    Von haus51 im Forum Assembler-Programmierung
    Antworten: 9
    Letzter Beitrag: 20.03.2007, 12:48
  5. Vias unter Bauteilen verbieten (Eagle)
    Von Henrik hessert im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 2
    Letzter Beitrag: 16.12.2006, 17:34

Berechtigungen

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

LiFePO4 Speicher Test