-
Thread
Kopieren von 64bit werten unterbrechbar?
Funktion auf den Parameter zuzugreifen. Mit gcc 4.2.4 und k7/pentium4 macht er's jedenfalls nicht so und verwendet klassisch FLD/FSTP. Ich habe hier leider grad keinen gcc 4.4 für x86 rumliegen. Kommt das nur bei -march=core2, oder auch bei anderen
A. K. schrieb im Beitrag #1856322: > Interessant. Intel hat ja ein paar Optimierungen drin, die 2 Mikroops zu > einem kombinieren - ob das hier wohl dazugehört? Eher nicht. Wie gesagt eher ein Bug oder Seiteneffekt einer anderen Optimierung. "-O2" verwendet FLD/FSTP, und der
-
Thread
WinAVR & AVRStudio
Meldungen zu sehen: D@00000000: _delay_ms ---- UNKNOWN_FILE oder auch: ---- D:\projekte_avr\avr_gcc_tutorial\Delay_Test2\default/c:/winavr/lib/gcc/../../avr/include/util/delay_basic.h 105: File not found Vielen Danke für jede Unterstützung Reiner
Windows Pfaden. Also so [code]for /R avr\lib\ %a in (*.a *.o) do bin\avr-strip -g "%a" for /R lib\gcc\avr\ %a in (*.a *.o) do bin\avr-strip -g "%a"[/code]
-
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
avr-gcc -O3 optimiert Variablen und If-else statements weg
Hallo, ich habe ein Problem, das mit den letzten Nerv kostet... Ich verwende den avr-gcc mit dem -O3 Schalter, also hoechster Code-Optimierung. Das moechte ich prinzipiell auch dabei belassen, jedoch habe ich Stellen im Code, die vom Compiler wegoptimiert werden und somit das Programm falsch
90 pop r1 94: 18 95 reti [/c] Ich würde auch dazu raten, immer Optimierung -Os zu nehmen. Andere Optimierungen erzeugen deutlich größeren Code ohne merkbar schneller zu sein. Hier sieht man z.B., daß der Epilog (16 Byte) verdoppelt wird, nur um ein RJMP (2 Zyklen) zu
-
Thread
Optimierung in eclipse
Hallo Ich versuche mittels eclipse und avr gcc folgendes projekt zu übersetzen: http://www.recursion.jp/avrcdc/cdc-232.html Mit dem beigelegten AVRStudion Projekt File klappts in avrstudio einwandfrei. Der chip ist zu 99.5 % voll wenn ich
läuft auch nicht. Wenn ich es mit dem AVR Studio übersetze hingegen schon. Könnte da eine optimierung im spiel sein? wenn ja, wo kann man diese einstellungen verändern?
-
Thread
Billiger einstiegs-DSP?
Leistung ja schon. :-) Auch da ist der Compiler von Renesas umsonst (beschraenkt auf 256kb) und gcc ist auch moeglich. > Aber da der gcc prima mit dem Blackfin > funktioniert... Wie gut ist der gcc denn dann eigentlich aus der Sicht des DSP-Entwicklers? Ich koennte mir vorstellen das er als
gut auf verschiedenen Plattformen. Gebe zu, ich bin inzwischen schon solch ein GCC-Nazi geworden, dass ich keine von GCC nicht unterstuetzte Plattform mehr anfasse... Gruesse, - Strubi
-
Thread
Wo gibts USB 3.0 ICs? Gesperrt
Klar, es gibt das Development Paket als Beta Version. Da drin sind die Beispiele, Eclipse, der ARM-GCC und das FX3 SDK enthalten.
Die Umstellung auf WinUSB war erstaunlich einfach, und was noch erstaunlicher ist: Schon ohne Optimierungen liefert der WinUSB eine leicht bessere Performance als der CyUSB Treiber. Seltsam. Und bisher noch keinerlei Probleme, selbst mit riesigen Paketen nicht. Jetzt warten wir auf die Verisign ID (gibts
-
Thread
Atmel Mega644: Watchdog Prescaler
1. Optimierung einschalten, sonst wird der Code zu langsam. 2. Die zweite Zuweisung an WDTCSR ist eine reinrassige Zuweisung und kein 'verodernde' Zuweisung. Dauert sonst zu lang. Die Bitschiebereien rechnet
Benutzt du avr-gcc mit avr-libc? Dann schau mal, was die <avr/wdt.h> alles an Funktionen zu bieten hat... wdt_enable(WDTO_2S); und der WDT läuft los...
-
Thread
Frage zu delay (wie bekomme ich genau 1 Sekunde)
auch noch /angeben/ (einstellen tust du da nichts!). Das passiert mit F_CPU. Und denk daran, die Optimierung auf -Os zu stellen...
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29 _delay_ms() kann mit einem Argument bis 6553,5 ms (= 6,5535 Sekunden) benutzt werden
-
Thread
makefile, hexfile funktioniert nicht
Hi, habe über Mfile http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Exkurs_Makefiles ein Makefile generieren lassen. Hab es an meine Bedürfnisse angepasst. Die SW baut auch (siehe Anhang build.txt) Allerdings, wenn ich das Hex File über das "AVRISP"
Debug Sachen raus gemacht usw. Die Speicherausgabe beider Compilermeldungen sind gleich. Als Optimierung hab ich einmal "s" und das andere mal ohne optimierung eingestellt, beides mal ohne Erfolg Gruß
-
Thread
Fachkräftemangeltag in den Medien ?
schaffen. Problematisch sehe ich vor allem, dass BWLer nie an ihresgleichen denken, wenn sie an Optimierung und Stellenabbau denken. Die Konzerne sind im Grunde genommen staatsähnliche Systeme. Während diejenigen, die wichtige (hoheitliche) staatliche Aufgaben übernehmen, wegen Personalnot überfordert
Was ist daran kompliziert z.b. den GCC zu installieren bez. zu benutzten, es gibt in der Regel fertige Pakete, Bsp. Ich nutzte den GCC und GCC++, beides in 1 Minute fertig gehabt: Bei meinem System Das Paketmanagement geöffnet, Namen eingegeben
-
Thread
arm-elf-gcc float = double?
Ich verwende den arm-elf-gcc mit WinARM. Ich verwende den AT91SAM7A3, ein ARM7 ohne Floating-Point Unit. D.h. gleitkommaberechnungen müssen sowieso emuliert werden. Im Tutorial hier: http://www.mikrocontroller.net/articles/ARM-elf-GCC-Tutorial wird behauptet, doubles werden mit 64 bit gespeichert, so wie es auch IEEE-754 (http://de.wikipedia.org/wiki/IEEE_754) vorsieht. Leider musste ich nun feststellen, dass double-variablen
-
Thread
Problem mit globaler Variable und dem CTC-modus
Toni schrieb im Beitrag #1829108: > Und zwar speichert GCC diese auf dem flash. Die Variable wird vom Startupcode im RAM angelegt. Stichwort .DATA Variablenbereich. Im Flash ist lediglich der erste Wert (0) mit dem die Variable initialisiert wird. Was
Toni schrieb im Beitrag #1829108: > Und zwar speichert GCC diese auf dem flash. Das glaube ich eher nicht. Die liegt im RAM. > nun dauert ein einziger zugriff auf die variable geschlagene 10 zyklen. Hast du evtl. vergessen, die Optimierung einzuschalten
-
Thread
32Bit Zahl zusammensetzen
Auch wenn ich von den C-Experten gesteinigt werde: Ich verwende den GCC ausschließlich als AVR-GCC im AVR-Studio, und dort erzeugen die Casts mit Union genau den Code, den ich erwarte. Bei jeder anderen Lösung (sogar mit dem expliziten Typecast zu einem Array of unsigned
Also ich habe AVR-GCC genutzt. Wo erfahre ich denn etwas welchen endian meine Architektur hat?
-
Thread
Atoi für Unsigned
; } [/c] Microsoft: AE=-60 c=196 Nicht OK Digital Mars: AE=-60 c=196 Nicht OK Linux GCC: AE=-60 c=196 Nicht OK
main(void) { printf("isprint('AE')=%d\n", isprint('Ä')); } [c] => isprint('AE')=0 (GCC, x86, Linux) Andreas
-
Thread
uIP 1.0 und mspgcc4
www.mikrocontroller.net/articles/MSP430_uIP_Port Mit Crossworks funktioniert das Ding ohne Probleme. Die GCC Variante hingegen kompiliert zwar, läuft aber nur bedingt, da die Seiten des Webservers falsch dargstellt werden und beim klicken auf den ersten Link sich das Ding aufhängt. Hat jemand schonmal den
gerade festgstellt, dass das ganze doch funktioniert, wenn man mit "-O0" kompiliert, also jegliche Optimierung seitens des Compilers abschaltet. Ist das dann eigentlich ein "Problem" des Compilers oder liegt das an einem Fehler im Quellcode?
-
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
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
Division mit GCC (AVR Studio)
benutze das sowieso nie. Das willst du nicht wirklich, weil genau das mit ein Grund ist, warum du GCC benutzt und nicht BASCOM Basic programmierst. Der "Optimierungsblödsinn" macht dir ein korrektes Programm (normalerweise, sonst ist es ein Compilerbug ...) nicht kaputt. Wenn etwas mit Optimierung
4" eben "...%stepsY" schreibe, bricht er wieder dort ab. Wohlbemerkt alles mit -O0 also keiner Optimierung. Gruß Manuel
-
Thread
Codestück für Mega8 verkleinern (Flash reicht nicht).
schon recht effektiv. Aber man kennt von Deinen Variablen nicht den Typ, daher kann man keine Optimierungen angeben. Versuche, möglichst kleine Typen zu nehmen (uint8_t) und möglichst wenig globale Variablen. Wenn Du Code postest, sollte er auch compilierbar sein, d.h. Prototypen für alle benutzten
In dem http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung steht folgendes: >> Switch-Statements werden durch -mno-tablejump manchmal deutlich kürzer. Was ist das?
-
Thread
wxWidgets Entwicklungsumgebung für Windows
unfreie) C++-Compiler als "backend" nutzen: > DialogBlocks can create makefiles for BC++, VC++, GCC, MinGW, > Cygwin, Digital Mars C++, and Watcom C++. > It can create project files for VC++ 6, 7, 7.1, 8, and 9.
Menschen betreiben > so eine Webseite? Ich denke da geht es um irgendeine (alte) Suchmaschinen"optimierungs"masche.
-
Thread
Port-Informationen mittel Struktur verarbeiten
> erhalte ich Fehlermeldung nach Art von function has too many arguments > !!! Du verwendest gcc? WEnn ja und die Fehlermeldung ist immer noch da, dann stimmt wahrscheinlich der Protoyp oder der Aufruf nicht mit der Funktion überein. > Daher kam ich auf die Idee mit der Sruktur. Man kan
Angaben zu den Kompilaten der folgenden Beispiele beziehen sich immer auf einen ATmega64 mit "-O2"-Optimierung, bei anderen Controllern und Optimierungen kann das leicht unterschiedlich ausfallen, die Tendenz bleibt aber. [c] #include <stdint.h> #include <avr/io.h> #define MyDDR DDRB #define MyPORT
-
Thread
Crossworks mit optimiertem Code
Thumb-Code, nicht wahr? Vielleicht versteht ja Crossworks auch nur die Debuginfos nicht, die Dein gcc erzeugt. > Ich verwende den GCC zum > kompilieren und Crossworks nur zum Debuggen. Warum? Was nutzt denn Crossworks als Compiler, ist das nicht auch gcc?
mal, die einzelnen Optimierungsschritte selektiv abzuschalten, d.h. mit -fno-... anzugeben: http://gcc.gnu.org/onlinedocs/gcc-4.4.4/gcc/Optimize-Options.html#Optimize-Options Gute Kandidaten wären solche wie -fno-reorder-blocks und -fno-schedule-insns. *Nach* der -O... Option.
-
Thread
Korrupte Daten und Volatile
siehe oben. optimierung ausschalten löst auch das problem. was mach ich denn nun? ist der avr-gcc denn bekannt dafür dass er nicht so gut mit optimierungen umgehen kann?
>siehe oben. optimierung ausschalten löst auch das problem. >was mach ich denn nun? ist der avr-gcc denn bekannt dafür dass er nicht >so gut mit optimierungen umgehen kann? Welche Version hast du? Gibt da gerade
-
Thread
AtTiny2313 Timer1 kein Interrupt
das Problem, jetzt tut's. Aber warum gibt mir der compiler da keinen fehler? ich verwende avr-gcc Naja, hauptsache es tut
/interrupt.h> ISP(TIMER1_COMPA_vect) $ avr-gcc -Wall -mmcu=attiny2313 -o main main.c main.c:5: warning: return type defaults to ‘int’ main.c: In function ‘ISP’: main.c:7: warning: control reaches end of non-void function [/code] ..was wünscht
-
Thread
Interesse an Alternative zu BASCOM?
OOP sein soll. Tendenziell wohl eher "nur" ein grafischer Editor, der am Ende C++-Quelltext für den gcc-Compiler ausspuckt.
Abhilfe schaffen, ist dann aber immer noch > Lichtjahre von dem kompakten Code weg, den z.B. der gcc generiert. genau aus dem grund würde ich an deiner Stelle einen VB->C compiler bauen. Das hat den riesen Vorteil, dass du dich 'nur' um die Codegenerierung und die Objekte kümmern musst. Die optimierung
-
Thread
UART RX funktioniert nach Abschalten von TX nicht mehr
[C] volatile char received = 0; [/C] http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Datenaustausch_mit_Interrupt-Routinen
aus dem hauptspeicher geladen wird? genau. volatile heisst für den Compiler, dass er keine Optimierungen damit machen darf. Insbesondere darf er nicht davon ausgehen, dass er aufgrund der Datenflussanalyse davon ausgehen darf, dass er den Inhalt der Variablen aufgrund der Vorgeschichte kennt. >
-
Thread
AVR mit Display - verschiedene Menu-Sprachen
Jens schrieb im Beitrag #1801047: > ja zweidimensionales Arry ist die Optimierung der Variante b, allerdings > steht dann doch immer alles im Ram oder sehe ich das flasch? Benutzt du den IAR Compiler (wegen dem const. Beim IAR legt der das dann IMHO ins Flash. Dem gcc ist
stellt Makros bereit, um Daten aus dem Flash zu lesen. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Array_aus_Strings_im_Flash-Speicher
-
Thread
effiziente Division durch 10
Marc P. schrieb im Beitrag #3512557: > In den gcc-Sourcen hab ich die Optimierung auch noch nicht gefunden... In gcc/expmed.c:expand_divmod() oder in Unterroutine davon wie choose_multiplier(). http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/expmed.c
Marc P. schrieb im Beitrag #3512557: > Und zu allem "Uberfluss ist diese Optimierung mindestens im gcc-4.8.1 > drin, wenn man f"ur einen ARM7 (UMULL, SMULL!) compiliert (-O2). Tja, mittlerweile bin ich desillusioniert. gcc-4.8.1 macht die Optimierung auf 32-bit Werten, aber
-
Thread
attiny2313, LCD, 4-Bit, C, Einzelne Zeichen falsch
mal vorneweg: Ich sehe Text ! Verwendet habe ich (nach zig eigenen Tests) den SourceCode aus dem GCC-Tutorial. Angepaßt auf meine Pins (Port B). Mein Problem liegt nun darin, das bestimmte Zeichen nicht richtig angezeigt werden, allerdings in seltsamen Konstellationen. Das hier ist mein Hauptprogramm
0 wenn der Aufruf aus einer Schleife kommt. Darum hatte ich vermutet, das es irgendwas mit Optimierungen & Compiler zu tun hat.
-
Thread
Frage zu Pointern - AVR vs x86_64
Sieht jemand auf Anhieb einen Fehler? Ich nutze avr-eclipse, daher kein Makefile. [code] $ avr-gcc --version avr-gcc (GCC) 4.3.4 [/code] [code] $ gcc --version gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3 [/code] Vielen Dank für die Ratschläge, ich vermute, dass es etwas sehr banales ist, aber
muss... Meine Assembler-Kenntnisse gehen leider gegen 0 :( Ich habe jetzt versucht, es ohne Optimierungen zu übersetzen (-O0) und da scheint es zu gehen!? Wo kann da in meinem Code der Fehler sein? Mir wird das langsam zu hoch ;)
-
Thread
Lauflicht Problem mit 74hc595
Code 10-fach größer sein darf. uint64_t ist sogar noch deutlich aufwendiger als float beim AVR-GCC. Es ist in C geschrieben, völlig ohne jede Optimierung. Ein Array aus 5 Byte ist daher deutlich besser. Peter
-
Thread
Welche STM32 sind interessant?
Wenn man mit dem GCC ohne Optimierung kompilliert, dann werden sogar die Konstanten in #define 1:1 samt hinterlegter Formel im ausgeführten Programm gerechnet. Schlussendlich kann man damit sauber debuggen und alles sehen
braucht doppelt so viel Code im Flash. Meine Heizungssteuerung braucht 110KB Flash-Code ohne Optimierung und 60KB mit Optimierung. Ausserdem ist das SDIO-Interface erst ab der 256KB Variante drin. Einfach mal die beiden Datenblatter vergleichen (STM32F103x8-B.pdf / STM32F103xC-D-E.pdf) Also für
-
Thread
AVR-gcc und Bitfelder
der GCC is da etwas eigen .. versuch mal [c] typedef union { unsigned char register; struct PMSMflags { unsigned char motorStopped : 1; unsigned char motorSynchronized: 1; unsigned
schrieb im Beitrag #1777955: > Übersetzst du beim AVR mit -Os ? Typelayout hängt nicht von Optimierung ab.
-
Thread
2x 7 Segment Anzeige - Multiplexen mit HF lässt Board ausgehen?
bei Trost ist, schmeisst dir so eine Schleife wegen groben Unfugs raus. Du bist auf einem AVR mit gcc. Da gibt es eine Funktion _delay_ms() http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29 Auch wenn das so nicht bleiben wird, um zu warten ist das der Weg denn
eigentliches Problem. _delay_ms liefert nur dann einigermassen richtige Wartezeiten, wenn die Optimierung aktiviert ist. Also -Os anstelle von -OO Wenn der Compiler dann immer noch, aufgrund -ansi, ein paar Warnungen wirft, müsste man sich die einmal ansehen. Ich schätze mal, dass sich der Compiler
-
Thread
Probleme mit Statemachine
das zu jedem beliebigen Zeitpunkt passieren kann, muss man dem Compiler mitteilen, dass er bei Optimierungen keine Annahmen über den Zustand dieser Variablen treffen darf. Genau das macht 'volatile'
Das hat den Vorteil, dass es den Optimizer wesentlich weniger einschränkt. Auf AVR kann man den gcc-inline-assembler memory clobber verwenden. Das reicht. Die CPU macht ja kein reordering von sich aus.
-
Thread
Programmierung von ATmega8-16PU macht Probleme
Optimierungsstufe des Compilers schaltet man in den Compiler-Optionen ein (ergibt dann beim Aufruf des gcc -O0, -O1, -O2 oder -O3). Ohne Optimierung kann der Compiler die Delay-Zyklen nicht bestimmen.
Aha, das bei PD0 sieht mir nach Leichtsinnsfehler aus... Sch**ße... Das mit der Optimierung werd ich mal testen. Danke Christian
-
Thread
Wittig(welec) DSO W20xxA Open Source Firmware (Teil3) Gesperrt
der Richtung noch nicht so richtig schlau gemacht habe - auch wenn ich schon seit über 2 Jahren mit gcc arbeite. Ich hatte mir das aber schon gedacht, dass der Kompiler hier etliche Optimierungen vornimmt. Trotzdem würde ich an dieser Stelle die Shift-Operation vorziehen, da es ja auch genau diesen
on linux gcc or need something special? If it is not so complicated I want to try.
-
Thread
Sind ALLE Rechenoperationen automatisch 16-bit breit?
bestätigen. War ich grad eben drüber gestolpert, als ich den Vektorcode aus deinem anderen Thread durch GCC jagte. Kam cp r30,r22 cpc r31,r23 brne .L2 bei raus, trotz uint8_t als Zähler. avr-gcc 4.3.4, -O1.
wissen hat als der Compiler hat (oder in der Lage ist herauszufinden), ist das Ergebnis suboptimal. GCC schert sich nicht "einen Dreck" um solche Datentypen. Er beachtet deren Semantik genau und setzt das Programm danach um in IL. Die Optimierungen kommen erst danach, und müssen (oder sollen) alles rausfischen
-
Thread
AVR Struct Zugriff
nicht, da solcherlei Operationen nicht klar definiert sind. Vielmehr sind läuft es im aktuellen avr-gcc auf denselben Assembler-Text hinaus. Wobei die Variante mit den Flags, die Floh oben vorgeschlagen hat, noch deutlich langsamer ist, da der gcc die Bitoperation standardmäßig auf einen Integer aufweitet
2) y = 2; else if (x & 4) y = 3; } [/c] Ohne Optimierung ist die Variante mit dem Bitvektor, wie oben schon beschrieben, effizienter.
-
Thread
[ASM] PowerPC springt nach 0x0
dann schmiert er auch nicht ab. Für den Compiler gilt also ab 5 case Auswertungen eine andere Optimierung? Desweiteren habe ich die switch-case durch ein if-else-if ersetzt. Damit gehtn auch alle meine 7 erfolgreich - auch weil anderer ASM code erzeugt wird. Welche Gründe gibt es denn hierfür
schmiert er auch > nicht ab. > > Für den Compiler gilt also ab 5 case Auswertungen eine andere > Optimierung? Ja. Ab 5 oder 4 (hängt wiederum von was anderem ab) case-Labels verwendet gcc Sprungtabellen, wenn die case-Werte "dicht" sind. Das müsste in deinem Code erkennbar sein, indem zB der Startwert
-
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
delay Funktion in AVR Studio
richtige Oszillatorfrequenz eingestellt? Muss sehr nahe bei den Optimierungen sein ;)
avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=14745600UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT main.o -MF dep/main.o.d -c ../main.c Hier, nur
-
Thread
Wie am besten 32 Bit mit Atmega8 simulieren als C-Code?
vielleicht sogar schon vorgefertigte Möglichkeiten? Ich bin da noch nicht so eingestiegen. Ich nutze die GCC mit Eclipse und avrdude zum Flashen unter Ubuntu 10.04 x64. Ich habe bereits Routinen für 32-Bit große Bit-Zahlen geschrieben: - Addition zweier 32-Bit-Zahlen mit Carry, - Multiplikation einer
C-Compiler von sich aus. Die optimale Umsetzung (Zeit, Platz) macht dann der Compiler mit seinen Optimierungs-Funktionen...
-
Thread
welche Programmiersprache?
Hi, ich bin ganz neu im Bereich Mikrocontroller... nun hab ich meine ersten Gehversuche mit GCC-Tut gemacht, und - naja - die LED blinkt... Nachdem ich das Tut mit Assembler angeguckt hab, und ein wenig mit GCC gespielt, weiß ich nun gar nicht mehr, was ich wie machen solll... Wie gesagt
Schätzung sein und betrifft den sdcc-Compiler für 8051 des Jahres 2000 mit einer deutlich schlechteren Optimierung als der gcc-avr. Beim AVR habe ich keine Vergleichsmöglichkeit, weil mir da die Erfahrung in Assembler fehlt.
-
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
Übertrag bei 32-Bit Addition
Ich addiere zwei 32-Bit Zahlen. [c] VA = VB + VC; [/c] Wie bekomme ich in C (GCC WinAVR) mit ob ein Übertrag erfolgt ist? Wie kann ich das Carry-flag anzapfen?
4 Befehle für die Addition zuzüglich Carry-Extraktion. Sieht mir aber verdächtig nach Angst-Optimierung™ aus...
-
Thread
Wie optimiert man Systematisch (AVR GCC)
Lord Ziu schrieb im Beitrag #1744091: > In dem du das hier durchgehst: > > [[AVR-GCC-Codeoptimierung]] Hat eigentlich schon mal wer kontrolliert, welche der Tips in diesem Artikel mit dem aktuellen GCC noch Gültigkeit haben. Ein paar dieser Optimierungen erscheinen da sehr zweifelhaft
Karl heinz Buchegger schrieb im Beitrag #1744122: >> [[AVR-GCC-Codeoptimierung]] > Hat eigentlich schon mal wer kontrolliert, welche der Tips in diesem > Artikel mit dem aktuellen GCC noch Gültigkeit haben. > > Ein paar dieser Optimierungen erscheinen da sehr
-
Thread
MCU (ds30F6012A) defekt?
im Beitrag #1743588: > Will ich wohl meinen, der aktuelle dsPIC Compiler von microchip ist ein > GCC ;) Wer da den CCS nutzt, dem kann man nicht helfen :D ?? Microchip hat einen GCC für die dsPIC? Wie sieht bei dem die Code-Optimierung aus? generiert er aus einem Switch MIT defualt-cases und beliebigen
goto end_switch; end_switch: [/c] Und ja, es müssen doppelte '&&' sein. Doku dazu: http://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Labels-as-Values.html Andreas
-
Thread
Präprozessor und Macros
die Compiler nicht immer wissen, wie es die Arithmetik auszuführen hat. Um das zu kennzeichnen kennt gcc den Schalter -frounding-math (oder so). Optimierungen wie double a=sin(2.0) sind eine Sache, die gcc inzwischen am lernen ist bzw. gelernt hat. Das Problem ist hier, daß man nicht die float-Einheit
nach Architektur günstiger ist, weil kein Sprung benötigt wird. Analoge Fälle gibt es für &&, und gcc führt solche Optimierungen auch aus. If Fällen wie [c] if (a && *a) [/c] geht das natürlich nicht.