-
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
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
Bitverarbeitung
und man den Simulator für so einfache Routinen nutzen kann, ehe man die HW am Tisch hat. Die Optimierung habe ich tatsächlich abgeschaltet. Wollte das erst während des Projektverlaufes optimieren. Gibt es keinen Weg das ohne Si zu testen? Gruß Christian
> alternativ hab ich versucht: Was ist falscg daran, die ADC Routine aus dem AVR-GCC-Tutorial als Ausgangspunkt zu nehmen?
-
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
Was ist mit dem avr-gcc 12.x passiert? Internal Compiler Errors Gesperrt
Programmen, wie die 2 kleinen Programme Eingangs zeigen. Je größer das Programm umso seltener. Betrifft avr-gcc 10, 11 und 12, wobei die Häufigkeit mit dem 12er gefühlt zugenommen hat. Mich wundert nur das gerade Compiler Errors nicht so ernst genommen werden. Irgendwelche Optimierungen sind doch eher zweitrangig
du schon mal nen Bug in deine Software gehabt, nachdem mal alles funktioniert (hatte)? Ist bei GCC auch so. Jedes Jahr im Frühjahr gibt's eine Major Release, also eine Release, die auch neue Features hat. Dazu gehören neue Sprachen wie Rust oder Modula-2, neue Backkends wie Risc-V, neue Optimierungen
-
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
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
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
Frage zu selbstgeschriebener Funktion - Laufzeit gegenüber Compiler-Variante
hast du wenigsten die Optimierung eingeschaltet? das Problem könnte auch sein das du eine funktion für beides hast. Wenn du es in 2 funktionen zerlegst, dann müsste es schneller sein weil die vergleiche wegfallen.
Mal so nebenbei - arbeitet jemand mit IAR und kann mir sagen, wie ich die Optimierungen einschalte? Oder wie ich einen Release-Build mache?
-
Thread
Abstrakte Basisklasse - Fehlermeldung in C++
alleine verwechselt man sonst evtl mit dem "pure"-Funktionsattribut (==Seiteneffektsfrei), das der GCC z.B. für die Optimierung verwendet. (Offtopic: mit dem Prototyp [c]int my_strlen(char*) __attribute__ ((pure));[/c] darf der Compiler dann z.B. [c]int x=my_strlen(a)+my_strlen(a);[/c]
alleine verwechselt man sonst evtl mit dem > "pure"-Funktionsattribut (==Seiteneffektsfrei), das der GCC z.B. für die > Optimierung verwendet. Merci. Werds mir merken. Guter Punkt.
-
Thread
Optimierung scheint zu gut (Code wird nicht ausgeführt)
>Optimierung scheint zu gut (Code wird nicht ausgeführt) An der Optimierung liegt es nicht, und der Code wird auch nicht wegoptimiert. Wenn er nicht ausgeführt wird, kanns nur daran liegen, daß [c]if (Ret
82 std Y+2, r1 ; 0x02 d2: 19 82 std Y+1, r1 ; 0x01 [/c] r1 ist bei GCC immer 0, wenn ich mich nicht irre.
-
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
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
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
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
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
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
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
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
Eine Zeile Code, 2K flash
Hast du die Optimierung des Compilers eingeschaltet? Wenn ja auf welche Optimierung?
Helfer schrieb im Beitrag #5096641: > Hast du die Optimierung des Compilers eingeschaltet? Wenn ja auf welche > Optimierung? Ja, -Os
-
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
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
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
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
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
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
Mini 2Kanal Oszi per STM32F429-Disco Board
Hier die Änderung, mit der das Oszilloskop auch mit EmBlocks bzw. Optimierung funktioniert: in stm32_ub_systick.h : volatile uint32_t GUI_Timer_ms; ("volatile" empfiehlt sich auch an anderen Stellen, an denen Variablen z.B. im ISR oder anderen Threads modifiziert
per Default "um die Ohren", GCC nicht. Erstaunlich dass solche Fehler dem Hersteller nicht auffallen. Was mir bei meinem STM32F429-Board im Betrieb als Oszilloskop auffiel: Gelegentlich klimpern die niederwertigen Bits vom
-
Thread
AVR-gcc: Optimierungslevel lokal ändern?
A. K. schrieb im Beitrag #4229727: > https://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html > und unter "optimize": > https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes Die Beschreibung
Ich glaube, der AVR-gcc kennt so ein Attribut nicht: https://gcc.gnu.org/onlinedocs/gcc/AVR-Function-Attributes.html#AVR-Function-Attributes
-
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
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
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
C Frage an die Könner
wird nicht optimiert, sondern ausgerechnet. Beim Kompilieren. Kann man so gesehen auch als Optimierung betrachten ;-)
wird nicht optimiert, sondern ausgerechnet. > > Beim Kompilieren. Kann man so gesehen auch als Optimierung betrachten > ;-) Da es mehr oder weniger schon vom Compiler ausgerechnet werden /muss/ würde ich nicht von Optimierung sprechen.
-
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
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
Warum springt der Debugger hier hin?
Hauptprogramm verwendet werden, müssen als "volatile" deklariert sein 2. Debuggen mit eingeschalteter Optimierung (-Os) geht praktisch gar nicht, da der Compiler Befehle umsortiert, Variablen nicht in den Speicher zurück schreibt usw. Schalt mal die Optimierung aus und versuche es nochmal. Gruß Roland
Klappt auch nicht! Hab die Optimierung rausgenommen. Hab für h mal volatile int global Deklariert, klappt auch nicht. Und hab mal die itoa Funktion ins Hauptprogramm verschoben, springt trotzdem in die Routine Gruß Tommy
-
Thread
GCC kompiliert falsch?
? Wie hast du das festgestellt? Der Anzeige eines Debuggers darfst du bei eingeschalteter Optimierung nicht mehr alles glauben.
Das ist die Kompiler-Zeile: [code] arm-none-eabi-gcc -c -mcpu=cortex-m3 -O0 -gdwarf-2 -mthumb -funsigned-char -fomit-frame-pointer -fno-inline -Wall -fverbose-asm -MD -MP -MF .dep/FW_Update_USB.o.d -I . -I\WinARM\yagarto\arm-none-eabi\include -I./lib
-
Thread
MEGA 128 verrechnet sich
aufweisen. Zum Problem selber: Kann's vielleicht sein, dass der Compiler durch irgendwelche Code-Optimierungen die Hälfte vom Code weglässt? Ein ähnliches Problem hatte ich mal ... Abhilfe: Entweder Optimierungen komplett abschalten oder die betreffenden Variablen mit "volatile" deklarieren (bewirkt, das
Arbeit mit doubles sehen. Das Programm habe ich mal auf einem x86 kompiliert mit verschiedenen Optimierungen: ohne: eps is 1.11022e-16 (iter is 53) -O3: eps is 5.42101e-20 (iter is 64) Man sieht sehr deutlich, daß die Genauigkeit der Berechnungen von der Optimierung abhängt. Du kann also in
-
Thread
AVR-GCC: Problem mit volatile und delay loop
hallo, ich glaube ein problem mit volatile in verbindung mit delay loops (z.b. _delay_us()) im avr gcc gefunden zu haben. der angehaengte code tut nicht das, was er meiner meinung nach tun sollte - das delay stimmt einfach nicht immer. mit der mit 'nicht ok' markierten zeile funktionierts nie, mit der 'ok' markierten zeile funktionierts, wenn ich die optimierung auf s schalte - ohne optimierung funktionierts nie... nicht funktionieren heisst: an nen logic-analyzer angeschlossen sieht man, dass das delay scheinbar beliebig (auf jeden fall viel zu lang
-
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
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
Wie aktuell ist K&R C?
hatte ich schon geschrieben: Ich ignoriere großzügig sämtliche Hinweise auf irgend- welche "Optimierungen" und "Kurzschreibweisen".
schrieb im Beitrag #6192184: > Ich ignoriere großzügig sämtliche Hinweise auf irgend- welche > "Optimierungen" und "Kurzschreibweisen". Hast Du Beispiele? Meinst Du sowas wie *d++=*s++ statt Langversion?
-
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
MegaLoad für avr-gcc
Uff, ist das lange her. A) Da musst du evtuell mit der Optimierung des AVR-GCC spielen. Das Teil ist damals für die Version 3.x optimiert worden (und der war etwas "sparsamer" als der aktuelle 4.x). Obwohl 130 Bytes schon heftig ist. Zusätzliche Optionen kannst
Jetzt habe ich das Problem mit dem aktuellen AVR-GCC gefunden. Beim AVR-GCC 3.x wurde im main() noch der Stack inititialisiert. Darum hatte ich aus Platzgründen die Initialisierung aus der gcrt1.S entfernt. Seit AVR-GCC v4.x wird der Stack nicht mehr
-
Thread
komisches verhalten AVR avr-gcc
dachte ich an watchdog oder stack pointer ... konnte ich schon aus"debuggen". schalte ich die optimierung von s auf 2 oder 1 herunter dann geht die applikation ein stück weiter ressetiert sich aber später dann doch... ich versteh das ganze nicht, es sieht so aus als ob entweder eine pointer operation
gesetzt ) wird nie erreicht. letzendlich ist es einfach sehr komisch dass der gcc bzw. linker einfach codeteile wild hin und her schiebt und dadurch probleme auftreten können ... danke
-
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
"Wait"-Befehl in GCC?
µC-Programmier-Anfänge mit BASCOM gemacht. Nun habe ich mir gedacht, einmal auf das AVR Studio 4 (mit GCC -> WinAVR) umzusteigen. Nun möchte ich für eine Modelleisenbahn ein Blinklicht für eine Ampel programmieren. Die Ampelphasen kennt ja jeder... Nur, welchen Befehl gibt es und WIE kann ich den BASCOM
Erfahrung in der hardwarenahen Programmierung hast,würde ich dir empfehlen mal einen Blick in das AVR-GCC Tutorial hier auf der Seite zu werfen,da sind die Grundlagen in deutscher Sprache erläutert.
-
Thread
AVR-GCC: Code wird totoptimiert
Mikrooptimierung Karl K. schrieb im Beitrag #4229190: > folgendes Codefragment optimiert mir der AVR-GCC kaputt: Wenn du kaputten Code schreibst, brauchst du dich nicht beschweren, wenn das, was dabei rauskommt, nicht funktioniert. Den GCC trifft da keine Schuld. Wenn du eine Funktion (den GCC) mit
machen musst und dich jenem Code näherst, denn du auch mit "volatile" erhältst. > Wie kann ich den GCC davon abhalten, den Codeteil kaputtzuoptimieren? GCC passend für deine Interpretation von C umschreiben.
-
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
AVR (8-Bit) / C++ Toolchain
Atmel Studio 7, da ist GCC für C/C++ integriert, sowie viele Programmer zum Übertragen auf den Chip.
Jeder avr-gcc ist ein gcc, und kann daher so viel C++, wie ein gcc halt so kann. Die üblichen verfügbaren avr-gcc-toolchains machen auch alles mit. Es braucht ein paar paar zusätzliche Funktionen für new, delete