-
Thread
wie aktiviere ich ASM-Ausgabe in STM32CubeIDE?
keine einzige. Ich nutze hier die CubeIDE 1.7.0, ist aber bei 1.13.0 auch nicht anders. Dazu standard GCC, alle Settings so wie von STM vorgegeben. Ich habe mir eine neue BuildConfig erzeugt (ASM-List) und dort probiert, die Flags unter ToolSettings/MCU GCC Compiler/Miscellaneous/Other Flags hinzuzufügen
nicht-optimierten. Der Assembler-Code wird im Assembler nochmal optimiert? Ich dachte, alle Optimierungen finden vor der Assemblierung statt.
-
Thread
Vergleich C Compiler
nichts passiert und sie einfach durch i=70000 ersetzen, teilweise "aufrollen" (so ähnlich macht es der GCC) usw.
sind: im Anhang ist das nächste Testobjekt. Bitte nur kompilieren, nicht linken (Option -c beim gcc).
-
Thread
'volatile' und Cache
>> - Muss der Compiler einen Lesezugriff auch dann ausführen lassen, wenn >> er ihn bei der Optimierung als sinnlos erachtet? (Z.B., weil die >> Variable nur gelesen wird, aber nichts weiter geschieht.) > > Ja. Bei > volatile char a; > a; > muss ein Lesezugriff erfolgen. Jein. Bei GCC ist das der Fall: Implementation defined, C90 6.5.3, C99 6.7.3 http://gcc.gnu.org/onlinedocs/gcc/Qualifiers-implementation.html#Qualifiers-implementation Was den Cache angeht, gibt's in GCC Builtins wie __builtin___clear_cache. Die Implementierung dürfte allerdings stark
-
Thread
NeuesOS für AVR Mikrocontroller
/gcc/Function-Attributes.html
Ups...vergessen: Ich muss auch ehrlich gestehen, dass ich mich mit den Optimierungen des gcc nicht so gut auskenne, auch von daher bin ich damit lieber erstmal vorsichtig. Zum Mega16...kannst du das in Hardware verifizieren? Ich habe aktuell leider keine Mega16 da. Der Mega8
-
Thread
(k)ubuntu 12.10, gcc und avr-gcc parallel installieren
recht keine Konflikte geben. Wenn man die Pakete selber geeignet baut, kann man sogar mehrere AVR-GCC-Versionen parallel installieren. Ich habe bspw. sieben verschiedene AVR-GCC- und eine x86-GCC-Version installiert :)
Prefix (für die Architektur) und Postfix (für die Version) aufrufen. Hier bei mir zum Beispiel ruft gcc etwa x86_64-linux-gnu-gcc-4.7 auf, direkt aufrufen kann ich aber auch arm-linux-gnueabi-gcc, arm-none-eabi-gcc-4.7.1, avr-gcc, avr-gcc-4.7.2, ... Auch die parallele Installation von Distributionspaketen
-
Thread
ASM-Nachoptimierer
Das bringt doch alles nix. Wenn jemand z.B. für den gcc Verbesserungsmöglichkeiten sieht, dann soll er das doch den Entwicklern mitteilen. Dann haben alle was davon. Mir sind noch keine offensichtliche Dummheiten (mit eingeschalteter Optimierung) aufgefallen
reduziert. Und dass der Compiler eine sinnlose Schleife wegoptimiert ist doch nur verständlich. Optimierung auf Maschinencode-Ebene macht der GCC, nennt sich Peephole Optimizer. @Stefan Helmert: > gibt es auch compiler, die die Verwendung von Interrupts, Timer und > andere Peripherie verändern?
-
Thread
ARM C-Compiler
W.S. schrieb im Beitrag #2954859: > BettyBase per Arm/Keil erzeugt: 38780 Bytes, wurde ohne Optimierung erzeugt > dasselbe per GCC erzeugt: 48448 Bytes wurde mit -O3 erzeugt Desshalb kannst du wohl nicht aufgrund der Grösse des Hex-Files auf die Qualität des Compilers/Linkers schliessen
vom GCC bekommt." W.S.
-
Thread
Switch-Case mit Zahlenspannen (x-y)
Wenn man den GCC nimmt, sind die Bereiche besser lesbar gegenüber dem "if" und er optimiert auch deutlich besser. Peter
Solange man beim gcc bleibt, ist das sicher besser - wie so vieles beim gcc. Zum Thema Rechenzeit: es kommt natürlich deauf, was alles in den Zweigen passiert und ob die Entscheidung ium switch überhaupt ins Gewicht
-
Thread
Überraschend hohe ISR Latenz auf STM32F3
A. K. schrieb im Beitrag #5132555: > Bei Optimierung auf Tempo sollte die Adresse nicht per Flash-Load, > sondern mit 2 16-Bit-Immediate Befehlen geladen werden (MOV,MOVT). Das gilt offenbar nicht mehr für neuere GCC Versionen. Hier wird movw/movt nur noch mit -mslow-flash-data generiert, ansonsten nimmt er LDR auch mit -O3 Optimierung. So um GCC 4.5 herum hatte ich noch die movw/movt auch im normalen -O3 Disassembly gesehen.
-
Thread
Addition oder OR
kann bestätigen das mit einem Sun Solaris Sparc Compiler "verodern" schneller ist. Wie es sich mit gcc und/oder anderen Prozessoren verhält weiss ich nicht.
Peter Dannegger schrieb im Beitrag #2688222: > Beim AVR-GCC ist mir aufgefallen, daß er OR nicht mag. Siehe http://gcc.gnu.org/PR41076 Konstruktive Vorschläge sind willkommen und können für avr-gcc 4.8 umgesetzt werden.
-
Thread
Optimierungsproblem bei avr-gcc
speed_g, speed_n, km_1); uart_puts(uart_buffer); ms_sleep(3000); } [/c] Output ohne Optimierung: Buffer: 1.39 Step1: g: 1 n: 39 km_1: 0 Step2: g: 1 n: 39 km_1: 2574 Step3: g: 2 n: 574 km_1: 2574 Output mit Optimierung (-Os): Step1: g: 1 n: 39 km_1: 0 Step2: g: 1 n: 39 km_1: 0
Hmm, an was sehe ich das ? gcc-avr_4_3_0-2_i386.dep für Ubuntu aus dem Intrepid Archiv geladen.
-
Thread
'return' with no value, in function returning int
Damit funktioniert es. Daher ist nicht nachvollziehbar, wo dein Problem liegt. Getestet mit x86_64 GCC 5.4.0, arm-none-eabi-gcc 6.3.1, sowie Clang 3.8.0.
options control the interface conventions used in code generation. http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html
-
Thread
Seltsames verhalten des GCC Compilers beim Arduino
und Word ändert es ab, formatiert es, weil es meint ich wolle das so. Ich werde mich aber mit dem GCC mal näher befassen, vor allem mit dem Präprozessor
eingeschaltet. Also optimiert er. Schaltest du ihn ab, optimiert er nicht. Nur bei eingeschalteter Optimierung kannst du nicht erwarten, daß der Compiler deine Gedanken liest. Da musst du ihm schon, z.B. mit volatile, auf die Sprünge helfen. Oder die Optimierung abschalten. Alles deine Entscheidung. mfg
-
Thread
goto im avr gcc
Ich verwette meine nicht vorhandene Perücke, dass da eine 0 drin steht. Du hast bloß keine Optimierung eingeschaltet, sonder würde er das gleich in einem JMP 0 übersetzen.
Perücke bist du los ... da sind laut .map zwei Variablen abgelegt. Übrigens, übersetzt wurde mit avr-gcc 3.4.5 und -os. Gruß Wolfgang
-
Thread
ungewollte Optimierung in Nebenläufigkeit
Zeiger auf die Funktion > gebildet, über den sie dann aufgerufen wird. Das reicht, um solche > Optimierungen zu verhindern. Zumal ein Compiler, der wie gcc jedes Quellfile einzeln übersetzt, bei einer Funktion, die nicht als "static" deklariert wurde, annehmen muss, dass sie anderswo gebraucht wird
Andreas Kaiser wrote: > Zumal ein Compiler, der wie gcc jedes Quellfile einzeln übersetzt, bei > einer Funktion, die nicht als "static" deklariert wurde, annehmen muss, > dass sie anderswo gebraucht wird. Wenn man also nicht pro Funktion eine > eigene
-
Thread
#define mitten im code
Gähn. Na dann erzähl doch mal, mit was für Compilern du so arbeitest. MSC und gcc können es ja wohl kaum sein, die sind schon lange nicht mehr so dämlich.
#2275184: >> Oder die oft verwendete Definiton von pi:#define PI (4 *atan(1)) > pi wird z.B. beim gcc als zahl definiert... Beim gcc wird pi gar nicht definiert. Höchstens die von dir verwendete libc tut das, und wenn sie es in math.h tut, ist das auch noch ein Verstoß gegen die ISO-Norm. >> oder
-
Thread
ARM Cortex M0+ Startupcode Minimal
denen und sonst niemand nur nie aufgefallen, weil mit CodeWarrior ein historisch wertvoller Uralt-GCC verbundled ist. Löst man das ganze aus CodeWarrior raus um den Mist loszuwerden, compiliert es mit einem aktuellen GCC schon freut man sich über besagte Erkenntnis. (Wie unschwer zu erkennen war ich
UB beim Zugriff über das Ende. Am ehesten rettet einen ein volatile Pointer um dem Compiler die Optimierung zu untersagen, aber streng genommen auch das UB.
-
Thread
sbit macro für avr-gcc
keiner ne Idee ? DATA = meinbyte & 0x80; Warum gehts mit dem GCC nicht ?
Inwiefern er dann in der Lage ist, festzustellen, dass es letztlich egal ist, ist Sache der Optimierung. GCC ist hinsichtlich Optimierung an sich nicht übel. Aber dass die angenommenen 16bittigen Grundoperationen von der 8bittigen Zielmaschine weiter aufgedröselt werden müssen, das ist nicht so sein
-
Thread
GCC: Pin toggeln in einem Takt?
Ich arbeite mit GCC auf eine AtMega325P. Das toggeln mittels PIN geht bei dem Prozessor. Wie setzte ich das korrekt in C um? Muß ich das mit inline assembler abarbeiten?
deshalb legen ich es beim unsigned char foo = 1<<PB0; schon in einem solchen an". Habe keinen AVR-GCC zur hand um es kurzfristig zu testen.
-
Thread
erbitte Hilfe bei optimierung ISR
Hi, Ich möchte eine 16bit-Software PWM bauen. controller ist ein atmega168 Folgender Aufbau: [c] #define SOFT_PWM_CHANNELS 3 /** contains multiplexed pwmdata pwmVal-highbyte, pwmVal-lowByte, portVal * 2 additional fields because of loading of new ocrval */ static uint8_t g_pwmData[3*SOFT_PWM_CHANNELS + 2]; static volatile uint8_t* g_dataPtr; ISR(TIMER1_COMPA_vect) { PWM_RGB_PIN = *g_dataPtr; // toggle pins ++g_dataPtr; OCR1AH = *g_dataPtr; // load new compare value ++g_dataPtr; OCR1AL = *g_dataPtr; ++g_dataPtr; } ISR(TIMER1_OVF_vect
-
Thread
C-Lehrbuch aus dem Rheinwerk-Verlag schlecht? Alternative?
an. Der hat's bis heut nicht gelernt. Oder der Linux Kernel, dessen Code funktioniert nur mit dem GCC, mit einer bestimmten alten Sprachversion, und nur mit -fno-strict-aliasing aktiviert, d.h. wenn eine bestimmte Art fehlerhaften Codes erlaubt ist. Das verhindert eine Klasse von Optimierungen. Mit
Dr. Sommer schrieb im Beitrag #5311949: > Es ist fehlerhaft im Sinne des Standards. Dass der GCC eine Option > bietet über solche Fehler hinwegzusehen ist pure Nettigkeit. Ich denke das ist falsch. Strict-Aliasing erlaubt dem Compiler weitere Optimierungen. Wenn man mit Option no-strict-aliasing
-
Thread
C sorgt oft für Verwirrungen
#3525277: > Oder ist das in der Release anders? Da musst du schon deinen Compiler befragen. GCC kann auch im Debugmodus (fast) alle Optimierungen aktivieren. Andere Compiler können das ggf. nicht.
Der Unterschied war auch zu merken, aber so wie der gcc hat er sich dennoch nicht verhalten. Naja, ist nicht schlimm. Der VC C++ 2008 Express hat mir die Optimierung sogar verweigert, weil sie sich (laut Fehlermeldung) mit einer anderen Optimierung nicht
-
Thread
(ARM) GCC binary size viel größer als von Realview
verwende ich die Angstrom-Toolchain unter Eclipse. Frage 1: Was ist der Unterschied zwischen den zwei gcc, die in den Toolchain-Paketen enthalten sind. Zum einen ist ein plain "gcc" und dann eins mit Präfix: /usr/local/gcc-arm-none-eabi-4_7-2013q1$ find . -iname *gcc ./bin/arm-none-eabi-gcc ./arm-none-eabi
ein recht ähnliches Problem. Der Code wird mit Keil so compiliert dass er gut in den Flsh passt bei GCC, trotz Optimierung (-Os -flto -ffunction-sections -fdata-sections -Wl,-gc-sections) kommt es zum Falsh Overflow (ca. 12kb). Könntest Du die konkreten Libraryalternativen (Namen) für stdio+fp benennen
-
Thread
Anfängerfrage STM32
Z180 und AVR), bin aber in Sachen ARM ebenfalls Anfänger mit 'nem STM32F407 unter CooCox IDE und ARM GCC in einem eigenen Hardware-Design. gibts da nicht auch 'ne Lösung, wie man das mit der ST-Lib hinbekommt? Insbesondere vermisse ich beim ARM GCC ein Äquivalent zu den ATOMIC-Makros, insbesondere
Nein, es ist kein GCC Bug, der macht was ihm programmiert wurde. Der GCC hat das Flag "-mcpu=cortex-m3" vom Cortex-M3 aber damit hat der noch lange keine Ahnung ob es ein STM, NXP oder sonst was ist. Und der müsste vor
-
Thread
Vorteile eines DSPs
an. Dafür lohnt sich für mich die Einarbeitung nicht. Außerdem bedeutet das, dass man um Code-Optimierung so oder so nicht herum kommt. Mit ausreichend Optimierung müsste das Problem auch mit einem ARM lösbar sein.
und Daten bei Filtern gleichzeitig passieren kann. > Außerdem bedeutet das, dass man um Code-Optimierung so oder so nicht > herum kommt. Mit ausreichend Optimierung müsste das Problem auch mit > einem ARM lösbar sein. ARM ist für so etwas schon gar nicht schlecht ausgestattet. Das Problem ist
-
Thread
Diverse fragen zu Hash Maps in C
grösseren Einfluss. (Ironischerweise sehen die movs von GCC sehr nach einem missglückten Versuch der Optimierung mit AVX aus. Auf dem Stack alignt der gcc unter amd64 die Structs normalerweise auf 16bytes, und die passen mit 16bytes auch ins 128bit grosse xmm0
compiliert und mit anderen Suchverfahren verglichen. Eine Frage habe ich dazu noch. War das mit Optimierungen ( /O2 ) oder ohne? Ich weiss nicht, wie das bei MS CL ist, aber bei GCC & Clang macht das massive Unterschiede (ungefähr 2x).
-
Thread
Wie Verwendung von Konstanten erzwingen?
Das macht der Compiler bereits für dich, ohne dass du es weißt - sofern du Optimierung eingeschaltet hast.
Beitrag #6653721: > Das macht der Compiler bereits für dich, ohne dass du es weißt - sofern > du Optimierung eingeschaltet hast. Für den gcc ist das korrekt. Fragt sich nur, ob der TO überhaupt gcc verwendet oder gar die Frage ganz allgemein für alle üblichen C-Compiler stellt. Er verrät ja auch nicht
-
Thread
ATtiny: Daten ins Flash schreiben.
statements andere schreiben. (Und diejenigen, die sie dann schreiben dürfen, können sich freuen, dass GCC einem so viel Flexibilität bei inline asm in die Hand gibt, dass man den Optimierungen damit nicht im Weg herumstehen muss.)
hat und nicht auf irgendwelche Binaries angewiesen ist (also hinzugelinkte libs) Dass aber der gcc nichtmal für den Fall, das man tatsächlich vollkommen über den Code herrscht, Möglichkeiten für die potentiell effektivsten Optimierungen von ISRs bereitstellt, ist eine absolute Schande.
-
Thread
32-Bit-µC: Möglichst viel uint8_t verwenden?
IP-Header passt, weil der übliche Ethernet-Header 14 Bytes gross ist. Das ist dann aber schon Hardcore-Optimierung.
Beitrag #7124127: > Hier mal ein Beispiel für eine "normale" und gepackte Struktur für den > MSP430 & GCC: Da hast du allerdings auch vergessen, Optimierungen einzuschalten. Mit -O1 sieht der Code schon erheblich kürzer aus.
-
Thread
AVR Studio 5/Debug: No Source Available
Andreas H. schrieb im Beitrag #2272628: > Dein Source Code wurde wahrscheinlich vom gcc wegoptimiert. Setz mal > optimization level auf none ... Zumindest ein main() sollte aber auch bei aggressivster Optimierung immer übrigbleiben. Thomas Burns schrieb im Beitrag #2268128: > Was
Andreas H. schrieb im Beitrag #2272628: > Dein Source Code wurde wahrscheinlich vom gcc wegoptimiert. Nö, der Compiler optimiert kein Sourcecode. Die Quellen tastet der Compiler nicht an. Falls Optimierung eingestellt ist, einen Debugger verwenden, der Debug-Format wie DWARF 4 für
-
Thread
Source: RC5-Empfang, interruptbasiert, Manchester
Läuft ganz gut, keine Resamples eingebaut, wäre aber einfach. ACHTUNG: läuft z.Zt. nur ohne Optimierung ( -O0 ), warum weiss ich noch nicht, bin halt neu auf dem avr-gcc. Compiler: avr-gcc SysClock: 8MHZ CPU: at90s8535 Noch was: Dateianhang ist UNIX-Ascii, also für DOSen muss LF in CRLF geändert
"ACHTUNG: läuft z.Zt. nur ohne Optimierung ( -O0 ), warum weiss ich noch nicht, bin halt neu auf dem avr-gcc." Du meinst wohl, Du bist neu mit "C"... ;) "volatile" lässt grüssen... ;)
-
Thread
avr-gcc: implizite Wertebereichserweiterung bei Int-Operationen
keinem Overflow ausmacht, dann hat der Compiler einen Fehler gemacht. Denn nach einer derartigen Optimierung muss EXAKT das gleiche rauskommen (innerhalb dessen, was durch die Sprache definiert wird), wie ohne Optimierung. Und das beinhaltet auch Overflows. > Was muss wirklich sein (casts) Geh deine
darstellen, kann der Compiler bei der Optimierung einfach so tun, als ob der Überlauf nicht stattfindet. Es darf also was anderes (oder sogar beliebiges) dabei herauskommen. Z.b. macht gcc aus sowas: [c] int wrap(int a) { return (a + 1
-
Thread
ATtiny24 - Codegröße, Flashgrenze erreicht
[[AVR-GCC-Codeoptimierung]]
kleinen Code zu bekommen, sind Pauschaltipps oft unbrauchbar. Man muss schon recht gut wissen, wie GCC arbeitet, um den Code klenier zu bekommen, wenn er denn unnötig groß ist. Und es ist natürlich abhäbngig vom Code und von der GCC-Version. Wenn man wirklich sowas machen muss, weil es von "oben"
-
Thread
Variable volatile auch wenn ISR nur liest?
sichergestellt, dass die Variable zeitnah geschrieben wird. Trotzdem kann der Compiler lokale Optimierungen durchfuehren. Das nur mal als Denkanstoss, kenne mich mit C nicht aus.
Im Falle von gcc sind ziemlich viele Standardfunktionen bereits im Compiler selbst eingebaut. Siehe https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
-
Thread
strlen(.) oder sizeof(.)-1
Für den "Hallo, Welt"-Benchmark gibt es natürlich auch etwas: http://www.ciselant.de/projects/gcc_printf/gcc_printf.html
Thread model: single gcc version 4.7.2 (AVR_8_bit_GNU_Toolchain_3.4.2_939)
-
Thread
Unterschied #define und Funktion?
Wenn der verwendete Compiler inlinen nicht beherrscht, würde ich mein Geld zurück verlangen und/oder GCC oder Clang verwenden... > Es lohnt als an kritischen > Stellen immer ein Blick auf den produzierten Assembler-Code. Das ja. > Historisch > resultieren ja viele Makros aus nicht so guten Optimierungen
hatten Kernighan und Ritchie noch keinen optimierenden Compiler. Damals mussten die halt Inline-Optimierungen noch irgendwie zurecht tricksen. Hat sich inzwischen erledigt.
-
Thread
ARM7: Start geglückt aber noch Fragen
Zugriff im erzeugten Code an entsprechender Stelle entspricht, lesend wie schreibend. > In der GCC Beschreibung kommt das auch nicht eindeutig hervor. Muss auch nicht, da die GCC-Doku Kenntnis des C Standards voraussetzt.
Das ist überhaupt kein Problem. Wirklich nicht. Ist ganz einfach. Du musst nur den GCC so umschreiben, dass er auf die hier zweifelhafte Optimierung von Bytezugriffen auf solche Bitfelder verzichtet. IAR/Keil tut sowas nicht und deshalb geht es dort.
-
Thread
STM32 HAL versus CMSIS
konzentrieren kann. Was > interessiert mich ob die Initialisierung eine µs länger dauert? Habe einen GCC und alle Optimierungen ausgetestet. Weil die performance bei mir das Problem war! Solche Untersuchungen, macht man nur, wenn man muss. Problem war: Alle 15 us kommt ein Interrupt und dann müssen
ein Abstraktionslayer ein und Dank LTO kostet > das exakt 0% Overhead. Du meinst Link Time Optimierung ala Somnium? Wird der mir auch den überflüssigen Timer ISR wegoptimieren? Automatisierte Optimierungen können keine architektonischen Probleme lösen.
-
Thread
Bootloader Atmega644P
Eros S. schrieb im Beitrag #7564396: > Das Problem hierbei war, dass ich zum Debuggen die Optimierung > ausgeschaltet habe. Damit du weiter ohne störende Optimierung debuggen kannst lagere die Vektor-Umbiegung in eine eigene Funktion aus, dann kannst du Funktions-lokal die Optimierung so einstellen
| (1<<IVCE); MCUCR = temp | (1<<IVSEL); SREG = sregtemp; } #pragma GCC pop_options [/c]
-
Thread
C Fragen nerven!! Gesperrt
kleines "working set" beschränkt um Seitenfehler zu minimieren. Solche Optimierungen sieht man teilweise auf der C-Ebene (man kann beispielsweise seine Datenstrukturen so umordnen, dass die Daten nicht nach logischem Zusammenhang geordnet sind, sondern nach den Zugriffsmustern,
beschäftigt. Ein Beispiel dafür: POVRay (mehrere Megabyte C++ Sourcecode) compiliert für AMD64 mit GCC 3.3.1 und GCC 3.4.0 Leistungssteigerung: knapp 7%. Um diese 7% per ASM-optimierung zu erreichen wären wohl einige Tage nötig. Wenns aber wirklich ans letzte bischen Leistung ran muß kann der Einsatz
-
Thread
Atmel oder PIC Gesperrt
Bitter? Ist beim Rechnen mit großen Zahlen langsamer. > Kann man den hier auf der HP angebotenen GCC-Compiler für ALLE MCUs von > Atmel nutzen? Soweit ich weiß funktioniert der GCC nicht für alle. Dies betrifft aber eher alte Derivate (z.B. ATtiny11).
die aktuelle Version des 16 Bit Compilers (ehemals C30) heißt jetzt XC16 V1.11 und ist immernoch der GCC. In der freien Version gibt es keine Codebeschränkung, nur die Optimierung ist beschränkt. Der CCS Compiler ist nicht von Microchip, sondern von der Fa. CCS. MfG Klaus
-
Thread
C++?!?
Quellcode den avr-g++ direkt verwendet. Warum ich das gemacht habe, keine Ahnung. Verwende ich den avr-gcc passt das Ergebnis auch größenmäßig. Wo liegen da eigentlich die Unterschiede zwischen avr-gcc und avr-g++? Wenn der avr-gcc sowieso c++ schluckt, wofür gibt es dann den avr-g++?
Die Aufrufe der einzelnen Teile der gcc suite sind ein bisschen unterschiedlich, siehe http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b Vielleicht liegt das daran.
-
Thread
avr-gcc und GUI
Eine Anleitung zum Betrieb des avr-gcc unter PN (Programmer's Notepad) findest Du hier: http://users.rcn.com/rneswold/avr/
will, muß halt die klassischen Varianten nehmen: News (de.sci.electronics) oder Mailinglisten (avr-gcc-list @ www.avr1.org). Dort kommen die Beiträge auch so raus, wie man sie reinfüttert. ;-) (Von einer angehängten signature des Listservers bei avr-gcc-list mal abgesehen.)
-
Thread
Problem eigene Bibliothek zu erzeugen
Ach ja, hatte ein paar Daten vergessen: Gebaut wird unter Windows mit avr-gcc 3.4.3 in einer Dos-Box
Lib mit -Os übersetze, geht ebenfalls nichts mehr. Gibt es da irgendwelche Einschränkungen bzgl. Optimierung beim avr-gcc oder beim ATMega128?
-
Thread
Der C Standard und wegoptimierte Funktionen
Sequence-Point. http://stackoverflow.com/questions/1474030/how-can-i-tell-gcc-not-to-inline-a-function
A. K. schrieb im Beitrag #4058182: > Mit den GCC Attributen "const" und "pure" kann man angeben, Was jetzt, da wie hier im gcc-Forum sind, zutreffend ist. Der TO bezieht sich aber auf den C-Standard, und der kennt weder const noch pure. Oliver
-
Thread
Optimierung von Funktionen
ptr[y]) > { > valueExisting = true; > } > } Eine einfache Optimierung: Nach der Zuweisung ein break einfügen, damit die innere Schleife nicht immer komplett bis zum Ende weitersucht, obwohl der Wert schon gefunden wurde.
die Hardware kennt, kann sich an Compilerfeinheiten orientieren: https://dmalcolm.fedorapeople.org/gcc/2015-08-31/rst-experiment/how-to-use-inline-assembly-language-in-c-code.html
-
Thread
Komischer Fehler, wenn die Optimierung auf O0 gestellt wird
Hi, ich habe ein kleines Programm. Wenn ich es mit Optimierung kompiliere, ist alles ok, aber wenn ich die Optimierung ausschalte -O0, dann erhalte ich folgendes. avr-gcc.exe -mmcu=atmega644 AVRDebug.o AmadeusTraceAVR.o -o AVRDebug.elf c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/../../../../avr/lib/avr5\libc.a(fixsfsi.o): In function `__fixunssfsi': (.text.fplib+0x0): multiple definition of `__fixsfsi' c:/winavr-20070525/bin/../lib/gcc/avr/4.1.2/avr5\libgcc.a(_sf_to_si.o
-
Thread
Verständnis c++ AVR Konstruktoren und co.
elision'. Jeder C++ Compiler, der auch nur ansatzweise ernst genommen werden will, muss diese Optimierung beherrschen. Diese Optimierung ist für C++ so wichtig wie ein Schluck Wasser für einen Ertrinkenden. Der Compiler würde ansonsten den Code mit der Erzeugung von temporären Objekten regelrecht überfluten
einer Objektkopie hinausgehen. Sobald ein Copy-Constructor im Spiel ist, darf der Compiler diese Optimierung anwenden (und noch ein paar Nebenbedingungen technischer Natur), selbst dann WENN der vom Programmierer geschrieben CCtor Nebeneffekte aufweist, die durch die Optimierung wegfallen. Daraus folgt
-
Thread
arm-gcc -Os Problem in reset Handler
Hi, bis zur Optimierung (-O3) funktionierts noch. Umgebung: CoIDE gcc 4.8 2013q4 mit STM32F050F6 Bei (-Os) kommt schon in der mit *** gekennzeichneten Stelle ein fault. .section .text.Reset_Handler .weak
die Adresse 0x08002dbe ein 2byte alignment hat im Gegensatz zum 4byte Alignment bei der (-O3) Optimierung. Jetzt müsste ich mal genauer in das Cortex Manuell schauen, oder weiß jemand direkt, das das Alignment die Ursache für den fault ist? Wenn ja, wo muss ich drehen, das der gcc so etwas nicht
-
Thread
Schleifen erklären?
lange nicht in der Lage, über das Thema Optimierung nachzudenken. Du musst erstmal die Grundlagen und Praxis GRÜNDLICH lernen. Dann kann man irgendwann mal was optimieren. http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung
Architektuir überlässt da eine sinnvolle Definition festzulegen. Wenn du denkst, das was du im [[AVR-GCC-Tutorial]] über Integer gelesen hast, sei alles was man über diesen Themenkreis und dem darüberliegenden Themenkreis 'Datentypen' wissen muss, dann hast du dich kräftig geschnitten. Das [[AVR-GCC-Tutorial