-
Thread
GCC, Word statt Byte Zugriffe, Optimierung?
Erst mal sorry für den komplizierten Betreff, aber mir fiel nix besseres ein. Ich erleichtere mir oft das Layout, indem ich die Port-Pins nach gutdünken verteile und nachher in Software entsprechend darauf zugreife. Das funktioniert sowohl in C als auch in Assembler bestens (solange man natürlich nichts zeitkritisches vor hat). Mir ist nun beim GCC aufgefallen, daß bei der Umsetzung unnötigerweise einige Byte-Operationen als Word ausgeführt werden. Zum Beispiel: void set_outputs(uint8_t data) { PORTC = (PORTC & 0xF7) | ((data & 0x01)<<3); PORTD = (PORTD & 0x03) | ((data & 0x7E)<<1
-
Thread
dspic ausreichend für Audio Effekte ?
verarbeiten möchte. Und, warum soll der Compiler Geld kosten, es gibt doch Freeware, dann halt ohne Optimierung. Soll nach allem was ich gelesen habe aber noch ganz adäquat sein. Grüße Axel
Wer? Ich arbeite unter Linux mit arm-gcc und Makefiles + Editor nach Wahl.
-
Thread
Informationen zu C vs C++ / aka Futter für die Diskussion
Ah gut zu wissen. Muss demnächst mal checkn ob das keyword im gcc oder clang trunk schon existiert.
anschauen): https://www.youtube.com/watch?v=KJW_DLaVXIY Die entsprechenden Warnungen sind im gcc-trunk schon umgesetzt, was ich sehr lobenswert finde.
-
Thread
Compilerfehler Programm springt aus der Initialisierung zum Start zurück
ahnung warum, aber jetzt springt das programm richtig. kanns sein, dass der compiler durch die optimierung durcheinanderkommt wo der die variablen ablegt?
Bernhart schrieb im Beitrag #1852196: > kanns sein, dass der compiler durch die optimierung durcheinanderkommt > wo der die variablen ablegt? Sorry, aber 99% aller postulierten Compilerfehler sitzen vor dem Bildschirm. Ja, es gibt sie und hier im Forum wurden auch schon welche gefunden
-
Thread
Inline Assembler übersetztung
"sbic %2,1" "\n" "rjmp waitEEW" "\n" "ret; Problematisch bei Inline-Optimierung!" : : "M" (_SFR_IO_ADDR(EEAR)), "M" (_SFR_IO_ADDR(EEDR)), "M" (_SFR_IO_ADDR(EECR)), "r" (uiAddress), "r" (data) ); } #ifdef TEST int main
ja, welcher? Und nach deiner Änderung zu asm()-Variante funktioniert es? Wenn ja, dann: Welchen GCC hast du? Bei mir wird durch WinAVR 20070122 (GCC 4.1.1) bei beiden Varianten der gleiche Code produziert. Einstellungen im Makefile s. Anhang (Optimierung: s) Mein Listing (test.lss, Ausschnitt):
-
Thread
Ganzes Objekt oder nur einzelne Attribute volatile?
Hier haben globale memory-barrier bzw. selektives "clobbern" einzelner Variablen einen Fehler im avr-gcc, der andere Optimierungen verhindert. Dass habe ich auch hier in einem Thread mal beschrieben. Wenn Du mit volatile und einem Atomaritätskonzept arbeiten willst, danns würde ich nicht das Objekt
gehören. Nur wenn der Inline-Assembly-Block einen memory-Clobber enthält, wie oben gezeigt (beim GCC).
-
Thread
ARM (STM32F4) - eigene Interrupt Routine-> umbiegen des Funktionspointer
wenn du gcc verwendest, funktioniert auch ein "alias"-attribute [code] alias ("target") The alias attribute causes the declaration to be emitted as an alias for another symbol, which must be specified. For
Dr. Sommer schrieb im Beitrag #4870258: > Wenn du den GCC verwendest und LTO aktivierst, wird beim Linken noch ein > Optimierungsschritt durchgeführt. Dabei werden u.a. (fast?) alle > Funktionen geinlined, die nur 1x aufgerufen werden. Somit verschwindet
-
Thread
Problem mit Interrupts und Optimierung
Hallo, ich bin nicht ganz fit in GCC, und hätte da mal eine Frage zu Optimierungen. In meinem kleinen Testprogramm möchte ich für Versuchsmessungen die sechs möglich Zustände an einem BLDC-Motor via Taster durchschalten. Eine LED zeigt
scheinbar meinen durch den Taster an PD2 generiert Interrupt weg... In der Simulation laufen alle Optimierungen, aber auf dem Atmega8 nur das unoptimierte Programm O0. Da das spätere Programm etwas umfangreicher seien soll, wäre es gut, wenn die Optimierung laufen würde. Vielleicht kann mir ja jemand
-
Thread
STM32Fxxxx: Kurze Frage zu GPIO Bitbanging
befüllen. Mangels freier SPI schiebe ich die Bits einzeln heraus. Frage: Muss man bei eingeschalteter GCC Optimierung -Os beim Toggeln eines Portpins einen Delay einlegen? Ich kenne die interne Schaltung des Cortex nicht, weiss nicht wie Piplines oder Caching da reinfummeln können, denn das physikalische
Christian J. schrieb im Beitrag #4880199: > Frage: Muss man bei eingeschalteter GCC Optimierung -Os beim Toggeln > eines Portpins einen Delay einlegen? [...] 72 MHz Ja, aber nur weil der Pin sonst nicht hinterher kommt. Ich würde einfach ein oder zwei __NOP(); einfügen - und
-
Thread
Wohin entwickelt sich microcontroller.net?
Xmega-Thread durchgelesen, der ist wirklich lesenswert. Es gibt auch oft relativ kurze Threads im GCC-Forum, in denen wirklich viel über C-Grundlagen, Compilerbau, Optimierung, ... auf einem sehr hohen Niveau geredet wird. Ich kann mich im Grossen und Ganzen nicht beklagen, ausser man pampt mich
freiwillig sei und man keine Ansprüche stellen dürfe. > Es gibt auch oft relativ kurze Threads im > GCC-Forum, in denen wirklich viel über C-Grundlagen, Compilerbau, > Optimierung, ... auf einem sehr hohen Niveau geredet wird. Es gibt gerade im GCC-Forum ein paar ziemliche Spezialisten und dafür im
-
Thread
genaues Delay in gcc
benötigten Zeit überhaupt nichts. Wenn du Interrupts laufen hast, dann schon. Und wenn du die Optimierung durch den Compiler vergisst, dann erst recht. > Da der TO aber eine Abweichung bei 250ms delay-Zeit mit einen Oszi > messen kann, liegt diese wohl eher im Bereich einiger %. Also ist da was
Overhead für einen Timer nicht lohnt. Mit einem Patch, den Eric Weddington gern auch in den AVR-GCC hinein bekommen will, kann der Compiler eine eingebaute Funktion __delay_cycles anbieten, bei der er in der Tat in der Lage ist, zyklengenaue Verzögerungen für praktisch beliebig kleine oder große
-
Thread
delay und Optimierung im AVR Studio
Hallo, ich habe mal eine ganz allgemaine Frage: Es heißt, man sollte die Optimierung im AVRStudio ausschalten, da sonst für die Funktion des Codes benötigte Teile "wegoptimiert" werden. Für eine funktionierende Delay-Funktion soll die Optimierung aber eingeschaltet werden.
>Es heißt, man sollte die Optimierung im AVRStudio ausschalten, da sonst >für die Funktion des Codes benötigte Teile "wegoptimiert" werden. Da werden dann nur Teile wegoptimiert die keine Funktion haben, oder Teile die falsch programmiert
-
Thread
Versuch einer Millis Funktion für AVR
einfach eine avr-g++ Toolchain basteln. Siehe auch dortige Bugreports. Dass der Code nicht zu GCC beigetragen wurde lässt auch tief blicken (Wakely ist ja GCC Maintainer).
". Die Beschreibung ist gültig bis avr-gcc 14.x.
-
Thread
Lambda in C++
Zum Thema Lambdas würde ich mal etwas mehr ausholen: In C (nicht C++) erlaubt gcc verschachtelte Funktionen. Eine verschachtelte Funktion ist nichts weiter als eine normale Top-Level-Funktion mit verstecktem Bezeichner und Zugriff auf die lokalen Variablen der umgebenden Funktion. Dazu übergibt gcc einen (unsichtbaren) Zeiger auf den Stackframe, kann aber auch entsprechende Optimierungen vornehmen. Genauso tut es Turbo Pascal und ähnliche Programmiersprachen mit verschachtelten Funktionen. Sogar
-
Thread
C Programm in asm umwandeln
Du brauchst den AVR GCC. Gibt es bei Atmel auf der Seite auch als separaten Download (AVR GCC Toolchain)
Timmo H. schrieb im Beitrag #3434511: > Du brauchst den AVR GCC. Gibt es bei Atmel auf der Seite auch als > separaten Download (AVR GCC Toolchain) und dann bekomm ich es in asm ? in AVR studio steht was von GCC Ich hab einfach mal jetzt die main.c aufgemacht
-
Thread
SPWM auf Atmega8, bitte um Feedback hinsichtlich Optimierung
Feedback >bitten, was am Code optimiert werden könnte. http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung >(1) Ich möchte meine Programmierkenntnisse festigen, verfeinern und >ausbauen Gut. Deine Sinustabelle gehört NICHT in eine Headerdatei sondern
den PROGMEN, sonst verschwendet man nur sinnlos RAM. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29 Deine Funktion void CarrierCalculation(void) hat einen irreführenden Namen, das ist eine Initialisierung, sonst nix. [[Strukturierte Programmierung auf Mikrocontrollern
-
Thread
Verständnisfrage: Woher kennt gcc den AVR32?
geben? Bei den AVRs gibt es ja avr-gcc...
wegen des dateinamens.. nahm ich an das avr-gcc mehr/besonders ist gegenüber anderen gcc's für target xy
-
Thread
GCC: Konstant oder nicht konstant?
Auf godbolt zeigt auch ein gcc 8.3 das gleiche Verhalten wie der 5.1 (und auch Versionen dazwischen). Oliver
Oliver S. schrieb im Beitrag #5775635: > Auf godbolt zeigt auch ein gcc 8.3 das gleiche Verhalten wie der 5.1 https://godbolt.org/z/l7550g Bei mir zeigt der GCC in beiden Versionen das optimierungsabhängige Verhalten.
-
Thread
Ticks für Optimierung von C-Programmen in ASM
Ich muss ein paar Interrupt Routinen von C nach Assembler konvertieren, da die Ausführungszeit zu lang ist (soll bei mir kleiner 300 Takte sein). Dabei ist mir aufgefallen, dass der C-Code (gcc, -Os) schon recht gut optimiert ist. Welche Tricks gibt es, um den ASM Code trotzdem noch weiter zu optimieren? Was mir eingefallen ist: a) 24-bit Datentypen anstelle von 32-bit Datentypen benutzen Ist oft möglich und spart bei jeder Operation ca 1/4. b) Register über längere Zeit gültig halten, bzw. besser ausnutzen Bringt immer wieder mal ein paar Takte. GCC nutzt nur die untere
-
Thread
AVR JTD setzen
Genau /das/ ist jedenfalls dein Problem. Ohne Optimierung generiert der Compiler Code, der so schnarchlahm ist, dass die 4-Zyklen- Bedingung nicht eingehalten wird. Wenn's partout ohne Optimierung sein muss: http://www.avrfreaks.net/index.php?name
Codeschnippsel den ich nur zum debuggen aufgebläht hatte habe ich jetzt durch diesen erstzt und die Optimierung im GCC auf Os gestellt jetzt funkt es. ************* MCUCR |= (1<<JTD); MCUCR |= (1<<JTD); *************
-
Thread
Problem mit Inline Assembler Routine (es wird zu viel optimiert)
Hallo, IDE: AtmelStudio 7.0.1931 (Optimierung steht auf -Os) MCU: ATXMega128A1U mit ext. SDRAM Ich habe mir ein paar Routinen (Write/Read Byte/Word/DWord/Block, Copy Block, ...) in Inline Assembler geschrieben, um auf den externen Speicher
#5790689: > Wie kann ich den Compiler zwingen hier gefälligst nicht zu optimieren? [c] #pragma GCC push_options #pragma GCC optimize ("O0") your code #pragma GCC pop_options [/c] oder [c] void __attribute__((optimize("O0"))) foo(unsigned char data) { // unmodifiable compiler code
-
Thread
LPC1788 - startup / .ld-script
schrieb im Beitrag #2645881: > Compiliert mit der NXP CodeRed, läuft auf dem LPC1769. Welcher GCC ist das? Mit welcher Optimierung? Könntest Du bitte in Deiner Version eine Division einbauen und den Part posten, in welchem die Division aufgerufen wird? [code] ull /= 10 [/code] Bei mir
Datentypen auf uint32_t ab, ist alles in Ordnung. Das gleiche Bild. Auch hier die Frage, welcher GCC, welche Optimierung, Assembler listing? Tobias Neumann schrieb im Beitrag #2645230: > Hier der Link zur CMSIS mit 64bit uints: War diese Teil der "Code Red Tool chain" oder wurde diese später
-
Thread
Verwendung des Steacks bei MSP und AVR.
was da algebraisch abgeht, dient die "GNU algebraic uniform symbol semantic", kurz Gauss. In gcc 5.x werden dann die "Extended uniform level expression rules" implementiert sein, die auch Optimierungen wie [math] e^{2 \pi i} = 1 [/math] ermöglichen werden.
Rande... Prinzipiell sind der Phantasie (oder inzwischen Fantasi?) keine Grenzen gesetzt was Optimierungen bzw. Codetransformationen angeht. Nehmen wir mal folgendes C-Progrämmle, das 5! ausrechnen soll. gcc 4.3 macht in main() effektiv ein return 120. [c] unsigned int fak (unsigned int n) {
-
Thread
ATmega8: sprintf & float liefert nur "?"
avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=10000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT LIB_TWI_Master.o -MF dep/LIB_TWI_Master.o.d -c ../LIB_TWI_Master.c avr-gcc -mmcu=atmega8 -Wl,-u,vfprintf -Wl,-Map=sprintf_float_test.map sprintf_float_test.o LIB_PCF2119x.o LIB_TWI_Master.o -lc -lprintf_flt -lm -o sprintf_float_test.elf avr-objcopy -O ihex -R .eeprom
-
Thread
switch(Funktion()) möglich?
#5419713: > Keine Ahnung, woher ich das habe. Soso. > Es gilt jedenfalls nicht nur für den > gcc, soviel ist sicher. Überhaupt nichts ist sicher. Das ist _kein_ garantiertes Verhalten. Auch der gcc generiert if-else-if für switch, wenn er sich dazu entscheidet.
> baue und nicht einen WinAvr2010 benutze? Nein, denke genaues Lesen ist angesagt: https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
-
Thread
Zukunft des GCC-Forums
GCC-Unterforum (https://www.mikrocontroller.net/forum/gcc) zusammengefasst. Heute sieht die Situation etwas anders aus: andere Controllerfamilien spielen eine größere Rolle; es gibt viele kostenlose Entwicklungsumgebungen, manche basierend auf GCC, manche nicht, und oft bekommt der Nutzer das gar nicht mit; nur in den wenigsten Fällen kommt man mal in die Verlegenheit, einen GCC selbst kompilieren zu müssen. Entsprechend ist der Traffic im GCC-Unterforum
-
Thread
Dumme Frage zum "C" mit AVR's
Die Optimierung mit den CBI und SBI Befehlen nutzt GCC am AVR schon - zumindest wenn einzelne Bits gesetzt oder gelöscht werden. Man muss aber auch da Aufpassen: nicht alle Register sind per CBI / SBI ansprechbar
in I/O Register I/O(P,b) <-- 0 Flags:None Clocks:2 > > Stimmt, ganz vergessen... Nur ist der gcc klug genug, das so zu > optimieren? Ja. Lurchi schrieb im Beitrag #4096217: > Die Optimierung mit den CBI und SBI Befehlen nutzt GCC am AVR schon - > zumindest wenn einzelne Bits gesetzt oder
-
Thread
AVR Studio 5.0 und 5.1 Version GCC/Toolchain?
Welche Version wird denn bei avr-gcc -v angezeigt?
pre] oder sowas: [pre]avr-gcc (GCC) 4.8.0 20120521 (experimental)[/pre] mit avr-gcc -v kommen etwas mehr Informationen, aber auch daraus ist die GCC-Version erkennbar. Allerdings hatte Atmel auf Bugs durch eigene Patches;
-
Thread
Mit AVR Studio 4.15 und GCC debuggen
Hallo zusammen, hab mir das Net-IO-Board von Pollin zusammen gelötet und die Software von Ulrich Radig mit dem AVR-Studio aufgespielt. Funktioniert alles wunderbar. Um die Software an meine Bedürfnisse anzupassen, will ich mit dem AVR-Studio mal durch den ganzen Quellcode steppen. Leider kommt es hierbei zu äußerst seltsamen Effekten. Beispiel: Datei 'main.c' bei Aufruf von usart_init(BAUDRATE); Es wird die Datei udp_lcd.c aufgerufen, die Eingabemarke springt in die Funktion void udp_lcd_init (void) auf die abschliessende geschweifte Klammer der Funktion. Das obwohl ich alles was mit
-
Thread
Kein Warnung bei Zuweisung mit Verlust???
Hallo, danke für die Antworten. Aber ich dachte eigentlich, daß der GCC mit -Wall -Wextra so(!) pingelig wäre. Grüße Thomas
Übrigens werden manche Warnungen erst generiert, wenn man auch Optimierungen einschaltet. Hängt damit zusammen, dass die entsprechende Programmflussanalyse Bestandteil der Optimierung ist.
-
Thread
Probleme mit float Berechnung
ja im Debugger. Hab keine Optimierung an!
wissens dürfte er mit volatile deklarierte variablen nicht wegoptimieren, also liegts nicht an der Optimierung. :(
-
Thread
unable to find a register to spill in class 'POINTER_REGS'
Es gibt den Bug schon. Aber wenn ich die Optimierung von 3 auf 0 stelle geht es einwandfrei.
> Es gibt den Bug schon. Aber wenn ich die Optimierung von 3 auf 0 stelle > geht es einwandfrei. Es liegt in der Natur der Sache, dass manche Compilerbugs nur mit eingeschalteter Optimierung auftreten.
-
Thread
Display Programmierung mit GCC 16x4 Display
Website gehalten und den Code fürs erste 1:1 übernommen: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung Auch bei der Anschlussbelegung des Displays habe ich mich genau an das Tutorial gehalten. Nun habe ich das Programm auf meinen Mikrocontroller geladen. Ohne Programm zeigt
Ich habe eine Frequenz von 3686400 eingestellt, falls du das meinst. Bei der Optimierung habe ich die Option -Os ausgewählt, so wie es in dem Tutorial steht.
-
Thread
IIR Implementation: C-Code verschnellern
nicht die Stärke des AVR und auch nicht im Zusammenhang mit dem avr gcc, das ist etwas stiefmütterlich umgesetzt. static int32_t wnHP = 0; static int32_t wn1HP = 0; static int32_t wn2HP = 0; static int32_t HPout = 0; > TIFR1 |= 0xFF
ADCwert + ((3746 * wn1TP - 1726 * wn2TP)/2048); Hier würde ich im .lss File prüfen, ob der avr gcc schlau genug war, das als Bitschiebung umzusetzen. Mit etwas Pech ist das eine echte Division. > TPout = (wnTP + (wn1TP*2) + wn2TP); > TPout = TPout/1024; Hier das Gleiche.
-
Thread
Bilineare Interpolation mit Festkomma
Mit avr-gcc (WinAVR 20100110) 4.3.3 und Optimierung -Os wird bei mir sowohl das Schieben um Acht Bits als auch die Multiplkation mit 256 zu Highbyte kopieren und Lowbyte löschen umgesetzt... (und bei der Division
Egal was für eine Optimierung. Der GCC scheint garnicht so blöd... [c] thomas@quark:~/workspace/injektor test/Release$ diff div.lss shift.lss thomas@quark:~/workspace/injektor test/Release$ gcc -v Using built-in specs
-
Thread
Optimierungs einstellung des GCC (LINUX) verändert verhalten
bekomme ich für "friendly_name" keine vernünftigen Werte (Überprüft im Debugger). Schalte ich die Optimierung aus, bekomme ich lesbare Namen. Füge ich bei eingeschalteter Optimierung die Zeile [c] cout << friendly_name << endl; [/c] hinter gupnp_device_info_get_friendly_name ein, bekomme
Lies Dir mal das hier durch: http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Debugging-Optimized-Code.html
-
Thread
Optimierung: Löst gcc oder AVR struct- Adressen auf
Hi zusammen, kurze Frage: Wenn ich im Programm mit statischen structs arbeite und ich auf die struct- Elemente ohne Pointer zugreifen will, wer löst die Adressen der Elemente auf? Kann das der avr-gcc schon beim Compilieren oder muss der uC dies zur Laufzeit berechnen ? Gruß und Dank Gerd
-
Thread
Probleme bei der Programmcodeerstellung zwischen -O0 und -Os Einstellung
>Ich habe nun versucht die Optimierung von -O0 auf -Os umzustellen. >Dabei hagelte es einige Fehler die ich mit einem Eintrag in >Projekt->Config.Options->Custom Options->Custom Compilation Options >"-lc" und "-lm" beheben konnte.
jetzt weis werde ich es in Zukunft heherzigen, jetzt ist es zu spät. LEIDER :-( Mit der -O1 Optimierung sollte mir jedoch der Speicher reichen. Trotzdem ist es komisch. Thomas
-
Thread
GCC -fstack-usage
Servus miteinander, Um den benötigten Stack abschätzen zu können habe ich mich mal mit der GCC-Option -fstack-usage beschäftigt. Der GCC generiert dann zu jeder .o-Datei eine .su-Datei, in der zu jeder Funktion die Stackbenutzung angegeben wird. z.B. bekommt man für ein leicht abgeändertes
printf("The answer to everything is %d\n",i); return 0; } [/c] mit [code] arm-none-eabi-gcc -O0 -fstack-usage -c main.c [/code] eine main.su mit dem Inhalt [code] main.c:3:5:magic_number 24 static main.c:14:5:main 16 static [/code] Mal abgesehen davon, dass der
-
Thread
die Betty-Fernbedienung von Pollin als ARM-Eval Board
Segmentänderung für den Startup (bisher .text, jetzt .text.startup) in den asm-Dateien angepasst. 2. gcc Umgebung für BettyApp hier wurden für die neuen APIs die .global Deklarationen in BettyApiGcc.asm ergänzt. Gruß Siegfried
aktuellste Version? - Spricht etwas dagegen, den Ansatz mittels Batch-Dateien zu entfernen, um damit die GCC-basierte Kompilierung auf einen Weg zu reduzieren? Zwei Varianten ARM/GCC sind die Mühe sicherlich wert, aber zwei Varianten im GCC-Bereich bergen die Gefahr, dass es auseinander läuft ohne einen besonderen
-
Thread
? zu rekursiven Funktionsaufrufen
Mal 2 konkrete Beispiele, wie ein Compiler das umsetzen kann; hier mit avr-gcc-7 -O2 ... Bei Optimierung auf Codegröße ist der Code fast identisch. Beispiel #1 berechnet die Summe der ersten n ganzen Zahlen >= 0 [c] unsigned sum (unsigned n) { return n ? n + sum (n -
Beitrag #5337189: > Mal 2 konkrete Beispiele, wie ein Compiler das umsetzen kann; hier mit > avr-gcc-7 -O2 ... Bei Optimierung auf Codegröße ist der Code fast > identisch. Beispiel #1 berechnet die Summe der ersten n ganzen Zahlen >>= 0 > [c] > unsigned sum (unsigned n) > { > return n
-
Thread
Wie Baudrate einstellen
ATmega-Modell zu sein, dies sollte eigentlich + die Info welcher Compiler, welche IDE, welche Optimierungs-Optionen eingeschaltet werden, etc. im Quelltext enthalten sein. Bei mir(GCC + AVRstudio4) gibt's nur 1000 Fehlermeldungen...
ziemlich sicher. >80% des Codes hier stammt aus dem Gespann AVR-Studio / WinAVR) > welche > Optimierungs-Optionen eingeschaltet werden ist praktisch auch immer gleich: -Os > Bei mir(GCC + AVRstudio4) gibt's nur 1000 Fehlermeldungen... Dann fang mit der ersten an. Was ist das Prinzip des
-
Thread
C++ Kompilierzeiten/VStudio 2017
Umbau fertig bin werde ich das auch machen ich verstehe nur nicht was das für eine relevanz hat, der gcc,mingw,clang vollbringen auch keine kompilierzeitwunder mit so einer Codebasis, egal welche Platform > Gruß > Olaf
#6161495: > Hat hier jemand Erfahrungen mit dem VStudio und > Compiletime-Benchmarking? Optimierungen ausschalten, dann geht es deutlich schneller (sieh Debug Compile). e
-
Thread
Vorteile von CodeVisionAVR gegenüber AVR-GCC
SORRY AVR-GCC = WinAVR (hatte zur späten Stunde des Arbeitstages ein wenig Hirnverstopfung, AVR-GCC ist ja nur ein Compiler)
Weiterbildung ganz vorsichtig beim Mittagessen erwähnen. Was allerdings nicht geht ist penetrantes "mit GCC wäre das nicht passiert!" oder "in GCC geht das so ..." Genörgel.
-
Thread
direkt in ein Register des Tiny5 schreiben
://gcc.gnu.org/gcc-5/changes.html#avr
Explorer hat gemeckert.... > Hab deine Option per Copy&Paste eingefügt. Hätte ich mir von avr-gcc auch gewünscht. Das Verrückte ist, hab gerade in die bash history geschaut. Weiter oben hatte ich es erst einmal richtig und im weiteren Verlauf mit verschiedenen Optimierungen dann zielsicher durch
-
Thread
Funktiondekleration static, inline oder inline static?
http://gcc.gnu.org/onlinedocs/gcc-4.2.2/gcc/Inline.html Eine Funktion, die im .c File als "inline" deklariert wird, mag dort inlined werden oder nicht, ist dort aber in jedem Fall auch als normale Funktion
inline void foo (const char) __attribute__((always_inline)); auch unabhängig vom Grad der Optimierung erzwingen.
-
Thread
PIC24 und Bit-Befehler
ich bislang noch nicht gefunden. Wobei das mit Stand vor vielen Jahren eine verzierte Version des GCC ist. Die haben eine Optimierung hinzugefügt, die man auch bei den kleineren PICs findet: gleiche Codesplitter zusammen zu fassen. Aber so implementiert, dass die GPL wohl nicht verletzt wird, Lizenzcheck inklusive. Allerdings ist das nicht die einzige Optimierung, die nur für Geld zu haben ist, denn das Steuerprogramm oben drauf ist auch von denen. Im normalen GCC ist "gcc" nicht der Compiler selbst, sondern ruft bloss den eigentlichen Compiler auf (nebst
-
Thread
Nach Initialisierung falsche Werte im Struct
Welches Flag für Compiler Optimierung hast Du gesetzt? versuche es mal mit -Og
Niklas G. schrieb im Beitrag #7709717: > Es ist extrem unwahrscheinlich, dass der GCC bei so etwas simplen > versagt. Es ist extremst unwahrscheinlich, das eine intakte toolchain ein „undefined reference to memcpy“ auswirft. Oliver
-
Thread
Entwicklungsumgebung für MSP430
des alten MSPGCC wurde zugunsten dieser unified Architektur aufgegeben. Es gab dann einen "normalen" GCC der durch uniarch auch MSP kann (den man jetzt auch in CCS runterladen kann). Aber selbst mit dem Code Composer Essentials Compiler verglichen ist das der totale Frickelmurks. Bedingt durch die gcc
Frickelmurks. Alleine aus einem Byte Zugriff auf ein 16 > Bit Register macht der 8 Rotier Befehle. Optimierung Fehlanzeige. Vielen Dank Chris für die Einschätzung.
-
Thread
LCD Taktproblem
eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus // http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung // #ifndef LCD_ROUTINES_H #define LCD_ROUTINES_H //////////////////////////////////////////////////////////////////////////////// // Hier die verwendete Taktfrequenz
Ergänzung: Compiler-Optimierung an?