-
Thread
Bitmanipulation Shiften
Dr. Sommer schrieb im Beitrag #5298580: > Was heute ohne Optimierungen funktioniert, klappt morgen mit > Optimierungen vielleicht unbemerkt nicht mehr weil der Compiler die > Register-Zuordnung geändert hat. Dr. Sommer schrieb im Beitrag #5298580: > Allein schon
innerhalb von GCC portierbar. Beispielsweise erzeugt avr-gcc folgenden Code: [c] #include <stdint.h> int8_t ashr1 (int8_t x) { return x >> 1; } int8_t ashr7 (int8_t x) { return x >> 7; } int8
-
Thread
Codeblähungen beim Rechnen mit globaler Variable
brauchbaren Benchmarks gibt. Momentan haben Konstanten Kosten 0, was noch Denis stammt: http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/avr/avr.c?revision=230016&view=markup#l9902 A. K. schrieb im Beitrag #4366535: > Wer mal sehen will, auf welche skurrilen Lösungen Compiler kommen > können
an im Prinzip maschinenunabhängigen Optimierungen bei manchen Zielmaschinen nach hinten losgehen.
-
Thread
code optimierung
Hi, ich habe da ein Problem mit dem GCC Compiler im Zusammenhang mit Volatile-deklarierten Variablen und Code-Optimierung. compiler: Gcc 4.3, avr lib 1.6, device atmega8, Kom: 8N1, 400000Hz ich bin grad relativ erfolgreich am Debuggen
UART_TX_BufferRead neu holen soll? Woran kann meiner Fehler liegen? Zur Fehlersuche habe ich die Optimierung von Os in O0 geändert, hat nichst gebracht. Vielen Dank im Voraus! Meier
-
Thread
.discards qualifiers from pointer target type
foo( Text ); Genauso ist es mit volatile. Volatile markiert eine Variable als 'mach keine Optimierungen damit'. Wenn nun eine Funktion auf einem übergebenen Parameter keine Optimierungen machen will, dann ist das doch auch in dem Fall kein Beinbruch, wenn sie es im Prinzip machen könnte (weil
> Vielleicht wurde das Problem aber jetzt schon behoben (ist schon länger > her) und AVR-GCC optimiert nicht mehr bei Zuweisungen in denen Register > mitspielen? Der gcc selbst hat von den Registern keine Ahnung. Diese sind aber in der avr-libc bereits als volatile definiert.
-
Thread
Prozessor 100% voll, Problem?
Peter Stegemann schrieb: > Die Optimierung ist schlechter, als man denkt - Nö, nur die default Einstellungen sind schlecht. Man sollte beim AVR-GCC folgende Schalter noch hinzufügen: [c] -Os -lm -fno-inline-small-functions -Wl,
Objektcodes produzieren liegt in der Natur der Sache. Und auch, dass eine neuere Version insbesondere vom GCC auch mal etwas mehr Code produziert, weil 99% der Renovierungen bei den GCC-Versionen nicht spezifisch für den AVR durchgeführt und getestet werden. Viele Optimierungen sind nur für Highend-Architekturen
-
Thread
Funktionsaufruf bei Optimization -O1
rausfinden, mit > recht unschönen Folgen für Laufzeit und Speicherverbrauch. "-fwhole-program" beim gcc, mit einigen Einschränkungen
Vorkentnisse == 0 && Einarbeitungfähigkeiten == 0 Die Grundlegende Frage wird von jedem Anfänger-Optimierungs Tutorial beantwortet... eigentlich direkt von dem das man bei google zuerst findet, würde man die schlagworete der frage bei google mal eingeben. P E I N L I C H . http://lmgtfy. com/?q=gcc
-
Thread
Arduino Uno: Optimiert der Compiler sich im Loop wiederholende Befehle?
Arduino Compiler intelligent genug, das zu erkennen und > die Zuweisung nur einmal vorzunehmen? Der GCC ist bei Optimierung recht gut aufgestellt. > Frage 2) Ist er sogar intelligent genug, die Variable im Flash statt im > RAM zu speichern? Er ist intelligent genug, Variablen ganz wegzulassen
A. K. schrieb im Beitrag #5858804: > Der GCC ist bei Optimierung recht gut aufgestellt. > Er ist intelligent genug, Variablen ganz wegzulassen offensichtlich, man unterschätzt die Fähigkeiten! Ich habe gerade wieder ein Putz- & Aufräumphase
-
Thread
Verwendung __eabi_fsub verbieten
sind. Ich habe allerdings lediglich nach einen Weg gesucht, um für diesen speziellen Fall die Optimierungen auszuhebeln können. Da das eine kB, welches die __eabi_fsub belegt, am Ende recht schmerzhaft sein kann. Ich werde mal das GCC Manual studieren. Eventuell kann man ihn durch geschickte Nutzung
Doch, natürlich sind die dokumentiert: http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-ffast_002dmath-919
-
Thread
array copy in c?
Der AVR GCC und viele andere Compiler auch werfen exakt den selben Binärcode aus.
Tilo R. schrieb im Beitrag #6940323: > Der AVR GCC und viele andere Compiler auch werfen exakt den selben > Binärcode aus. Mombert H. schrieb im Beitrag #6940344: > Dann hast du schlecht getestet. Bei mir ersetzen gcc und clang eine > einfach
-
Thread
Tricks, wie ich mein Compilat kleiner kriege
kleinen Funktionen > mit zwei drei Zeilen wie die oben. Wie geschrieben, wenn du Fälle hast, wo sich GCC ernsthaft verrechnet und garantiert kein inline-asm drin ist (auch nicht aus der avr-libc), dann schreib einen Bugreport für GCC. Das AVR-Target kann von den GCC-Entwicklern mangels einer geeigneten
erhälst du (bei passend gestaltetem Makefile, z. B. dem von WinAVR) durch »make foo.s«. > Beim alten GCC 3.4.6 brauchte ich das nicht als noinline zu > deklarieren der hat es gleich so gemacht wie vorgesehen. Der konnte automatisches Inlining nur bei Optimierung auf Geschwindigkeit (-O3), nicht bei
-
Thread
C Sprungmarken und Sprungtabelle
Kann man die Adresse von Sprungmarken auslesen, um sie in einer > Sprungtabelle zu speichern? GCC kann sowas als Erweiterung: https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html#Labels-as-Values Mir ist aber in knapp 30 Jahren C-Praxis noch nichts untergekommen, wo ich sowas als vorteilhaft
Jörg W. schrieb im Beitrag #5761908: > GCC kann sowas als Erweiterung: > > https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html#Labels-as-Values > > Mir ist aber in knapp 30 Jahren C-Praxis noch nichts untergekommen, wo > ich sowas
-
Thread
Merkwürdiges Verhalten bei Variablen und for-schleifen
globale Variable, die überflüssigerweise mit 0 initialisiert wird, wird vom Compiler (als kleine Optimierung) ebenfalls nach .bss gesteckt.
optimierst? Im letzteren Fall, könnte das auf weitere Probleme mit dem Stack hinweisen. Bei geringer Optimierung scheint GCC keine Register für lokale Variablen zu verwenden, sondern nur den Stack. Wenn der nicht richtig aufgesetzt wurde, dann knallts. Sobald bei höheren Optimierungsstufen für lokale Variablen
-
Thread
Helpthread zum Wikiartikel AVR Eclipse
als Verzeichnis-trenner zu lesen? z.b.: #include <...> search starts here: c:\winavr\bin\../lib/gcc/avr/4.3.0/include c:\winavr\bin\../lib/gcc/avr/4.3.0/include-fixed c:/winavr/lib/gcc/../../lib/gcc/avr/4.3.0/include c:/winavr/lib/gcc/../../lib/gcc/avr/4.3.0/include-fixed c:/winavr/lib/gcc
/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: region text overflowed by 676402 bytes make: *** [u8g_test.elf] Error 1 13:32:22 Build Finished (took 9s.891ms) Die Optimierung ist eingeschaltet und nun
-
Thread
gratis PIC compiler, der pipelining benutzt?
nicht-optimierenden Compiler durchaus plausibel aus und weist viele Analogien mit Code auf, den etwa GCC ohne Optimierung erzeugt — selbst wenn sich Zielarchitektur und Compilerarchitektur deutlich unterscheiden: > "XC8 insert two useless instructions that moves the assigned value > to a temporally
nicht-optimierenden Compiler durchaus >plausibel aus und weist viele Analogien mit Code auf, den etwa GCC ohne >Optimierung erzeugt — selbst wenn sich Zielarchitektur und >Compilerarchitektur deutlich unterscheiden: Kann schon sein. >Das zeigt lediglich, daß der Autor nicht versteht, wie Compiler
-
Thread
arm-none-eabi-gcc unterschlägt ein case 0 im switch?!
grösser als 6. Da der Compiler weiss, dass ein 16 Bit IDR >> 13 nur den Wertebereich 0..7 hat, passt es. GCC versucht den möglichen Wertebereich von Daten zu erfassen, um daraus Optimierungen abzuleiten.
Peter schrieb im Beitrag #5849676: > Aber wieso das jetzt eine Optimierung sein soll? Wenn der bekannte Wertebereich exakt mit der Anzahl Fällen übereinstimmt, geht es besser. Es schien wohl nicht lohnend, nur dafür ein separates Schema im GCC vorzusehen.
-
Thread
SPI mit GCC sehr speicherintensiv
1. Lass die Finger weg von __attribute__, der GCC ist nicht annähernd so dumm, wie man meint. 2. Übersetze nicht mit -O2, sondern mit -Os. In deinem Makefile steht -O2, also Optimierung auf Geschwindigkeit. 3. Verpacke die Initialisierungssequenz
noch Platz im Speicher frei ist (was > an sich ja vollkommen ok ist, wenns mal eng wird, wird der GCC sich > schon melden und anders optimieren). Melder wird er sich, d.h. der Linker wird es. Die Optimierung umstellen musst du dann aber schon selber.
-
Thread
AVR und der Umgang mit C++
weiters alle > globalen Variablen mit 'static', damit sie auch wegoptimiert werden > können. der GCC hat schon eine weile die LTO Funktionalität, damit muss man nicht alles in eine Datei schreiben, nur wegen der Optimierung.
So, jetzt hab ich dem GCC mal die Chance gegeben, sich zu rehabilitieren. AVR-GCC 6.2 mit Optimierung -Os, was Size bedeutet'und weshalb die diversen Pinwackler nicht inlined werden. Gebraucht hat er dafür 410ms. Nur so als
-
Thread
AVRStudio ärgert
und im AVR-Studio sieht man sich einfach mal im Output Fenster an, mit welchen Compiler Optionen der gcc dort aufgerufen wird. Dann vergleicht man, stellt fest welche Unterschiede es gibt, liest nach was es mit diesen Optionen beim gcc auf sich hat, entscheidet ob man die beibehalten will (bzw. ob man
verständlich. > Viele der "Kasperfallen" der Sprache C kommen > aber erst durch die Optimierung rein (bspw. alles, was sich um > "volatile" herum rankt), sodass man mit dieser Methode letztlich > zweimal debuggt. das klingt nicht so optimal. Wenn Optimierung auf solche Weise dann zu
-
Thread
STM32F4xx: Kann mal jemand die SPI testen?
Ich habe gestern 1h damit verbracht. Es geht hier um taktgenaue Abfragen der Flags . Und ohne Optimierung werden die Zeiten eingehalten, mit Optimierung aber nicht mehr. Setze ich zb 5 "volatile" NOPs zwischen die befehle geht es auch mit Opmtierung.
Unterschiede in der Initialisierung oder de F469 verhält sich anders. Compiler im Atollic ist der gcc 4.8.3.
-
Thread
funktionen inlinen
Johann L. schrieb im Beitrag #2964773: > In GCC ist -O0 der Default. Aber darum geht es hier garnicht. Sondern > darum, daß unüberlegt und grundlos offenbar falsche Aussagen bemacht > werden. Ja. ok. Momentan ist das beim gcc eben so.
wenigsten jemals -O0 benutzen. Von daher: sei ein wenig nachsichtig, wenn wir nicht für alle Optimierungen auswendig wissen, welche Optimierung unter welchen Nebenbedingung durchgeführt wird und wann nicht. Manche Optimierungen sind so trivial, dass man wohl davon ausgeht, dass der Compiler sie praktisch
-
Thread
Problem SRAM Optimierung AVR-GCC
geheimen Schalter? Peter P.S.: Ich benutze den aktuellen WINAVR GCC 4.3.2
Aufrufer stehen, kennt er diese ja schon und optimiert natürlich gleich im 1.Durchlauf. Diese Optimierung müßte eigentlich auch der GCC können. >> F:\WORK\AVR_C\AUTORANG/main.c:52: undefined reference to `checker' >> MAKE.EXE: *** [main1.elf] Error 1 > Es sind alle Quellen anzugeben. Offenbar
-
Thread
PIC32 Programmer und Compiler
Beitrag #2412434: > Gibt es da auch noch alternativen, > weil ich mich nicht registrieren will gcc. zuiop
Programmierung einigermaßen Firm bist MACHST du dir selbst eine UNBESCHRÄNKTE Version mit Maximaler Optimierung. (IST AUCH ZULÄSSSIG!) Die Compiler für 16 & 32 Bit basieren auf GCC und daher liegen die Quellcodes OFFEN, kannst du dir bei Microchip runterladen. Da einfach die entsprechenden Stellen abändern
-
Thread
C/C++: Frage zu (un)signed overflow
wrap-around ausgehen — auch wenn das für diese Übersetzung so sein sollte. Bereits mit aktivierter Optimierung darf sich und kann sich ein Compiler anders (bzw. genauso, nämlich immer noch UB) verhalten. Wenn du für Signed-Overflow definiertes Verhalten willst, dann verwende -fwrapv: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fwrapv
-
Thread
Code-Optimierungen gesucht
Servus, Also ich hab ein wenig C-Code geschrieben und jetzt versuche ich ihn noch zu Optimieren. Und genau das ist der Punkt an dem ich euch um Vorschläge bitte, da ich noch nicht sehr lange Programmiere. Folgender Code soll abwechselnd auf OC0A und OC0B eine Sinus-Halbwelle ausgeben. Zusätzlich soll Pin 4 gepollt werden und im Falle eines Tastendrucks soll dann Pin 2 abgeschalten werden. Wobei beachtet werden muss, dass Pin 4 beim Einschalten gedrückt sein wird und dabei nicht als Ausschaltbefehl gewertet werden soll. [c]#include <avr/io.h> #include <avr/interrupt.h> #define ANZAHL 11
-
Thread
Optimierung der Soft-PWM mit Assembler ISR
Halli Hallo! Bei einer LED Steuerung brauche ich eine Soft-PWM und habe den Soft-PWM-Artikel auf eurer Seite wiederverwertet. Vielen Dank an die Leute die sich die Arbeit gemacht haben. Um eine möglichst hohe Genauigkeit zu erreichen wollte ich das Ganze noch ein Wenig auf Geschwindigkeit optimieren. Daraus ergeben sich folgende Änderungen: - die Frequenz wird mit aus dem Systemtakt direkt abgeleitet - die Output-Comopare-Values sind absolute Werte für den Timer1 (spart rechnen) - Möglichkeit nur einige der Port-Pins zu benutzen (zu Ungunsten der Geschwindigkeit und deswegen hier nicht von
-
Thread
bug in optimizer von avr-gcc?
was eigentlich nicht nötig sein dürfte - taucht die Zuweisung bei aktivierter optimierung wieder auf. Habe ich da einen Denk-Fehler oder ist das eine Bug im Optimierer von AVR-GCC?
was ich noch vergessen habe (bevor fragen kommen) ich nutze die 3.4.3 (20050214) release von avr-gcc
-
Thread
AVR DB - oder doch ein Compiler-Fehler?
aber keine Ahnung von asm hat, kann es auch einfacher veranschaulicht werden, als nur um asm Optimierung zu diskutieren, oder?
der man sich letztendlich wundert, warum es überhaupt funktionierende Programme gibt. https://gcc.gnu.org/onlinedocs/gcc/Volatiles.html Oliver
-
Thread
Variablen eindeutig benennen damit der Typ eindeutig ist
(gcc: -flto). Damit funktionieren solche Optimierungen auch über die Grenzen von Übersetzungseinheiten hinweg.
referenzieren könnte. > > In der Theorie ja. In der Praxis gibt es auch link-time-optimization > (gcc: -flto). Damit funktionieren solche Optimierungen auch über die > Grenzen von Übersetzungseinheiten hinweg. Mit switches kann man vieles anders machen und verdrehen, fragt sich nur ob das auch
-
Thread
PIC mir C Programmieren
im Vergleich ist. Aber das der nur 60Tage läuft stimmt nicht ganz. NAch 60Tagen wird nur die Optimierung zurückgefahren was bedeutet das der Zielcode etwas größer wird. Der Compiler bleibt aber funktionsfähig. Diese geringere Optimierung spielt für den Hobbyisten keine Rolle. Es ist nicht gravieren
#2091289: >>Der läuft ja nur 60 Tage... > > Der läuft länger. Nach 60 Tagen gehen ein paar Optimierungen > nicht mehr. Dadurch wird der Code größer. Nach meinen Erfahrungen > aber auch schneller;) Es handelt sich auch nicht um alle Optimierungen sondern nur um höhere Optimierungsstufen. Programmiert
-
Thread
STM32G484 USB CDC Code läuft nur wenn mit <= -O1 kompiliert
Version des GCC hast.
Wstrict-aliasing=3 -fno-strict-aliasing ``` hilft leider nicht. Aber diese Zeilen helfen: ``` #pragma GCC push_options #pragma GCC optimize ("O1") void InitEndpoints(void) { ... } #pragma GCC pop_options ``` Also exakt das gleiche Problem auch bei diesem Board.
-
Thread
WinAVR-20070122
deklarierst. > Man hätte besser nur die Bugs beseitigen sollen und keine weiteren > (Un-)Optimierungen einbauen, dann wäre er richtig gut. Das ist Quark. Viele Optimierungen sind einfach völlig neu angegangen worden im Vergleich zu den 3er Versionen, damit ergeben sich notwendigerweise neue
heutigen Zeit > mehr Wert auf Neuerungen als auf Fehlerbehebung verwandt wird. Trifft gerade für den GCC wirklich nicht zu. Echte Bugs werden dort durchaus zügig bearbeitet. Der AVR-GCC leidet allerdings darunter, dass es nur sehr wenige Leute gibt, die dort aktiv etwas entwickeln.
-
Thread
GCC-Interna: Optimierung von Bitmasken
der Vorschau abhanden gekommen :-( > Welche Optionen sind gesetzt? Übersetzung: [pre] $ avr-gcc -Wall -Wextra -mmcu=atmega8 -Os -g -DF_CPU=16000000UL --std=c99 -ffunction-sections -fdata-sections -o avrtest.o -c avrtest.c [/pre] Bindung: [pre] $ avr-gcc -mmcu=atmega8 -g -Wl,--gc-sections
[/pre] Listing: [pre] $ avr-objdump -h -S -d object > list [/pre] Version: [pre] $ avr-gcc --version avr-gcc (GCC) 4.5.1 [/pre] > Wieso IN und OUT wenn das auf ein "SFR außerhalb des I/O-Bereiches > zeigt"? Korrigiere, außerhalb des bit-adressierbaren I/O-Bereiches. Das sollte
-
Thread
Fork: avr-libc version 3, für xtiny
804, 806, 807, 1604, 1606, 1607. Der allerdings nicht aktiv ist, weil >> die Devices nicht von avr-gcc unterstützt werden und daher von configure >> ignoriert werden. > Wäre das denn großer Aufwand, die dem avr-gcc beizubringen? Ist schon drin: http://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html
://gcc.gnu.org/PR92729 Oder das tut ein neues Geschäftsfeld für Microchip auf: Optimierungen deaktivieren, und für ein paar armselige Kröten Freischaltungen für die Optimierungen verticken. > Und avr-gcc
-
Thread
Universelles USB RFM12 Modul
Codeausführung hängen bleibt. Wird diese Zeile auskommentiert, so funktioniert der Code. Die Optimierung muss auf -O0 (keine Optimierung) eingestellt werden. Bei eingeschalteter Optimierung (-Os) wie im makefile des Beispiels meldet AVR-Studio 5 einen Fehler. Insgesamt ist das Framework doch spärlich
Projekt mit den vor ein paar Minuten heruntergeladenen aktuellen Sourcecodes angehangen. Die Optimierung -Os ist eingeschaltet. Die Fehlermeldungen: Error 1 'fabs' was not declared in this scope c:\program files\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include
-
Thread
Verständnisproblem: Programgröße ändert sich mich Wert des shift-Faktors
Ohne asm-Listing/C-Quelle/Compiler-Version/Schalter ist's aber Rumgestochere. Möglich auch, daß GCC erkennt, daß b eine Konstante ist und dadurch Optimierungen machen kann für >> 2, die er für >> 1 nicht machen könnte, zB wenn dadurch ein if(a == ...) Block wegfällt da toter Code. Einige "Optimierungen
kann man abwürgen, indem man vor/hinter C-Befehle schreibt asm volatile (""::); oder indem man GCC explizite Kenntnis über Registerinhalte nimmt: asm volatile ("" : "+r" (a)); Beide Templates gehen für alle GCC-Varianten, also nicht nur für AVR. Sie erzeugen keinen Code, haben aber Einfluss
-
Thread
AVR GCC: Ungewünschte optimierung
Ist so eine Optimierung nicht ein Bug vom Compiler ? Kann ja eigentlich nicht sein das er eine Funktion "wegoptimiert" ? Würde mich brennend interessieren, da ich auch mittlerweile in C programmiere
Stelle unterbrechen und Variablen im Speicher ändern können. Siehe das entsprechende Kapitel im [[AVR-GCC-Tutorial]].
-
Thread
AVR ASM Frage zu Symbolen bzw Rechnen mit Symbolen
Compiler der Komplexitätsklasse von GCC sind ziemlich gut darin, invariante Konstruktionen abzukürzen.
werden. Geh doch mal ins Detail. Ich möchte auch noch was lernen. Irgendwelche berechneten Optimierungen gibts nämlich da nicht...
-
Thread
AvrStudio 5 Programm zu groß für Attiny 13
Beitrag #5006022: > Die .lss Datei lade ich hoch. Wurde offensichtlich mit abgeschalteter Optimierung übersetzt.
AVR Assembler. Für Windows. Mit AVRASM. Oder AVRASM2. Ohne GNU. Und wieso geht es damm um Optimierungen?
-
Thread
neues WinAVR macht Probleme
es fehlt Sourcecode C/ Die Warteschleifen in der jetzigen Form auf Basis von pause() werden vom GCC "gnadenlos" wegoptimiert. Ggf. die Optimierung abschalten ;-( oder mit _delay_ms() und _delay_us() aus der avr-libc arbeiten (Einsteiger) oder Timer einsetzen (Fortgeschrittene).
Frage: was gibt which -a avr-gcc.exe aus? was gibt avr-gcc -print-file-name=include aus? Oliver
-
Thread
Code optimieren, switch case ersetzen
> Super kompakt und übersichtlich Und ziemlich sinnlos. Es ist der Versuch einer manuellen Optimierung die man (A) schöner machen könnte, und (B) der Compiler bekommt sie von alleine vermutlich genauso gut hin. (A) Wenn man ganz fest an die manuelle Optimierung glauben möchte: [c] switch
Wer sehen möchte was der GCC mach: https://github.com/gcc-mirror/gcc/blob/edd716b6b1caa1a5cb320a8cd7f626f30198e098/gcc/stmt.c#L1114 die expand_case und emit_case_... Funktionen.
-
Thread
AVR-GCC generiert unnötigen(?) ISR overhead
schnelle SPI interrupt routine zu schreiben und hab mir zu dem Zweck mal das listing (lss) vom avr-gcc angeguckt. Ich verwende einen ATmega168P. Optimierung -Os Hier der C-Code: [c] uint8_t rxd; uint8_t txd; ISR(SPI_STC_vect) { rxd = SPDR; SPDR = txd; } [/c] und hier das Resultat
andere wollen die Welt und den ganzen Rest auf Hex umstellen, und meine Nerd-Spielwiese ist eben avr-gcc. Von Assembler bis C++ ist da alles dabei /und/ adäquat, man kann sich in Testing oder Profiling vertiefen. Wenn ich was im Simulator praktisch finde, bastel ich daran weiter, und neue (Optimierungs
-
Thread
BASCOM vs. C Gesperrt
in GCC mit Printf einen einfachen String (Hello world) über den UART ausgegeben. Allerdings war ich von der Codegröße (ca. 3KByte) schon geschockt; mit 0s Optimierung. BASCOM benötigt dagegen nur ca. 160
Arbeit gewesen. GCC: 440 bytes, mit Os Optimierung BASCOM:474 bytes In diesem Fall ist der GCC-Code etwas kleiner, weil ja auch nur das nötigste implementiert wurde.
-
Thread
Suche Hilfe bei Optimierung Bootloader
mein Platz Problem erledigt. Bisher war mein Code 28700 Byte groß, nach einfügen der fehlenden Optimierung 15002. Das hätte ich nicht erwartet. Die Frage ist, ob noch alles geht :-) Irgendwann muss ich mein UrMakefile mal die Optimierung entfernt haben. Jetzt wieder drin. Aber eventuell bekommt
Ich benutze auch: -fno-inline-small-functions Der AVR-GCC ist etwas zu übereifrig, kleine häufig aufgerufene Funktionen zu inlinen.
-
Thread
Werden 2 "|=" optimiert?
Achso Optimierung ist auf size gestellt
> Der Grund ist der, daß es der GCC nicht schafft Code zu > kompilieren der in den 4 Takten ausgeführt wird. Optimierung ausgeschaltet? Anyway, derartige timed sequences sind ein wesentliches Anwendungsfeld von inline asm, vorzugsweise
-
Thread
Wann wird eine Variable zurueckgeschrieben / volatile
sollte man diese Optimierung auch mit volatile verhindern? Sie kann doch während der ISR im Register gehalten werden.
rausfliegen! int a; main() { a=1; } Ja das mal durch deinen Compiler mit aktiver Optimierung und staune ;-)
-
Thread
Fixed-Point Support in avr-gcc?
völlig > unbedeutenden Stellen um einzelne Zyklen oder Bytes kämpfen. Heisst also konkret: avr-gcc ist git wie er ist und bedarf keiner weiteren Optimierungen oder Featues. Schön :-) Wie bei Thunderbird: Wird eingestapmft da perfekt und nicht mehr verbesserbar :-)
Johann L. schrieb im Beitrag #3023991: > Heisst also konkret: avr-gcc ist git wie er ist und bedarf keiner > weiteren Optimierungen oder Featues. Wer hat das behauptet? Ich meinte ausschließlich den Anwender des Compilers. D.h. im Quelltext möchte ich nicht kryptischen
-
Thread
Wert in AVR Register laden: optimalen Code generieren?
nur noch rückwärts mit der Optimierung bzgl. Codegröße. Alles, was am gcc verbessert wurde, ging in die X86/ARM-Architekturen, und bringt dem von-Neumann-Exoten AVR gar nichts. Oliver
Optimierung bzgl. Codegröße. Man kann durchaus auch alte Versionen nutzen. Der Fetisch des dauernden Updates ist manchmal kontraproduktiv. > Alles, was am gcc verbessert wurde, > ging in die X86/ARM-Architekturen
-
Thread
C typecast array nach struct
. So modern muss der Compiler dafür übrigens auch nicht sein. gcc macht das schon seit mindesten 25 Jahren.
Development Kit ist erst 15 Jahre alt, > kann aber den memcpy Hack nur mit voll aufgedrehten Optimierungen - was > schlecht ist wenn ich kleine Programme möchte. Das ist kein Hack, sondern eine Optimierung. > Ich weiss Linuxer verwenden überall und immer -O3 :-). > Wenn du in einer Freestanding
-
Thread
Simulationsproblem über Konsole
Optimierung an? Der Compiler könnte die Schleife entfernen, da das Ergebnis von c vorrausgesagt werden kann.
Eigentlich willst du die Optimierung beim realen Programmieren nicht abgeschaltet haben. Aber seis drum. Welche Entwcklungsumgebung verwendest du? Im AVR-Studio stellst du die Optimierung bei den Projekt-Optionen auf -O0 (das ist
-
Thread
GCC ( AVRStudio 6.2.933.beta) optimiert lokale variable weg
Optimierung ausschalten ? Debugmodus bedeutet nur das die Zusatzinfos nicht entfernt werden bzw. überhaupt generiert werden.
einen 8 Bit Controller mit seinen beschränkten Resourcen betrachten. Und ich arbeite ja nicht nur mit GCC und mit AVRs. Aber in diesem einen Falle hätte es natürlich mit Aus/Einschaltung der Optimierung funktioniert.