-
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 volatile -> wann bracht mans wirklich?
nur fuer integer und nicht fuer bitfields oder sonstige Variablen zulaessig ist. Grundsaetzlich zu GCC: Gcc does not implement a correct semantics for accesses to volatile struct members in non volatile objects. Dies ist bekannt und da gcc sowie g++ eine gemeinsame Codebase haben, wird sich daran auch
Funktionsverschachtelungen und die dynamische Datenstruktur sowieso nie eine Chance dahingehend Optimierungen durchzuführen, dann müsste es also auch ohne irgend ein volatile zuverlässig funktionieren. Deswegen ja auch die Frage hier. Chris schrieb im Beitrag #7300286: > Grundsaetzlich zu GCC: > Gcc
-
Thread
Codeoptimierung vom Compiler
Ich wuerde dir gcc.godbolt empfehlen, und mir mal den assembler output vom gcc, clang und msvc anschauen
Man sollte wissen, dass der gcc nur dann halbwegs optimierten code erzeugt, wenn man auch zumindest -O oder -Os anwählt.
-
Thread
GCC [STM32] -> wie sehen wie ein struct realisiert wird?
Abhängigkeit des Optimize?) > Stuffing-Bits einführt, etc. Wenn das Layout von Datentypen von Optimierungs-Optionen abhängt, dann ist das ein Compiler-Bug. Bzw. das Layout von Strukturen ist nicht von Optimierungs-Einstellungen abhängig. Optionen wie -f[no-]pack-struct, -f[no-][un-]signed-char etc
als Optimierung. Zur Frage: GCC-Schalter zur Ausgabe des Layouts (in welcher Form auch immer) kenne ich keine.
-
Thread
C - GCC Optimierung ändert float-multiplikation auf integer mult
Hallo, eine simple Funktion auf Eclipse / DAVE4 / Infineon XMC / ARM4 Core / GCC [c] static int16_t PhysicalToDigits(float physical, float factor) { return (int16_t)(physical * factor); } [/c] funktioniert wie erwartet im Debug Mode. Sobald die Optimierung -O oder -O1
#7267241: > https://hightec-rt.com/en/products/development-platform.html > > Basierend alle auf dem GCC. GCC (alt) oder Clang/LLVM (neu).
-
Thread
Arduino Codegröße
minimale Codegröße optimiert. Wie sieht dein Programm aus? Spaghetticode oder viele Funktionen? [[AVR-GCC-Codeoptimierung]] Hinter der Arduino-IDE steckt der avr gcc, also sind viele der Vorschläge machbar, wenn gleich nicht immer sinnvoll.
> etwas zu komprimieren? soweit ich weiss ja. https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung preferences.txt
-
Thread
Bitte um Mithilfe bei pic-as Problem - bitte nur wer sich auskennt
Kannst du den C-Compiler dazu bringen, Assemblercode auszugeben? Beim gcc geht das z.B. mit der Option "-S". Wenn ja, den Code bitte hochladen!
lokale Var und das Bist optimiert sogar, was bedeutet du musst für die EEPROM write Signature die Optimierung abschalten sonst ist sie weg und nix mit eepron write. Es gibt zwei pre-compiler, die gleichzeitig verwendet werden können - der vom C-Compiler und der von pic-as! Das User Guide ist völlig
-
Thread
Speicherverbrauch bei Funktionsaufrufen (Funktion in Funktion)
Compiler eine verschachtelte Schreibweise der Aufrufe "entschachtelt". Bei einem simplen Test rief avr-gcc beispielsweise mit Optimierung verschachtelt auf, ohne nicht.
push, pop, call, ret) nur auf > den SRAM möglich, also nicht auf MMIO. Dummerweise liegen bei AVR-GCC auf dem Stack nicht nur die Return-Adressen, sondern auch die lokalen Daten. Und die werden ganz normal geschrieben.
-
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
STM32: Compilierter Code unterschiedlich groß und Breakpoint nicht setzbar
man die durch eine neuere ersetzen? Gerade für C++ würde ich das machen. Die Cortex-M0 werden von gcc auch stiefmütterlich behandelt und optimieren schlecht.
Habe es gecheckt, das ist die CrossWorks Version, die enthält gcc 10.3, ist also frisch. Ist die Optimierung im debug build auch aus?
-
Thread
Einheitliche Regel für in C erstellte Variablen, Typen etc
return count; } [/c] Mal mit drei verschiedenen Typdefinitionen compiliert: [pre] $ avr-gcc -Os -mmcu=atmega328 -S -o default.s test.c $ avr-gcc -Os -mmcu=atmega328 -DTYPE=int -S -o int.s test.c $ avr-gcc -Os -mmcu=atmega328 -DTYPE=int_fast32_t -S -o int_fast32_t.s test.c $ md5sum *.s
Es gibt beim gcc & clang noch __int128_t und bei c23 _BitInt(N) (Wobei es für N eine obergrenze gibt, über der das ib ist.)
-
Thread
sinf() langsam?
Guten Morgen, ich nutze den gut abgehangenen ARM-GCC 5.4.1, aber die vorliegende Problematik dürfte sich nicht geändert haben. MCU ist ein Cortex M4F (STM32F446RE) und die float-Erweiterungen werden genutzt. Meine Beobachtung: Für kleine Eingangswerte
verschiedene Input-Werte. Nicht nur. Die "sinf"-Implementation aus der Newlib hat auch noch als Optimierung drinnen dass sin(x)≅x, für kleine x. Spart eine Handvoll an float-Multiplikationen.
-
Thread
Einzelbits in Byte Namen zuweisen und auswerten
Mapping vom Kommunikationsstrukturen / Messages auf Bits und dergleichen. Zu Packed siehe: https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#Common-Type-Attributes
Man kann das Ganze ungeheuer kompliziert betrachten. Man kann aber auch einfach auf avr-gcc testen und dann die gültige Bitorder anwenden: [pre] To determine the compiler is avr-gcc, you need to test for 2 macros __GNUC__ and __AVR__ [/pre] Die avr-gcc Entwickler sind recht konservativ
-
Thread
uint32 Array in uint8 Array wandeln
denn machen? Oder was willst Du optimieren? Viele Konstrukte setzt Dein Compiler bei höchste Optimierung in wenige oder 1 Assemblerzeile um. Genauso gut kann er aber auch daran verzweifeln, weil ihm irgendwas nicht passt. Und ja, manche nehmen memcpy, unions oder was auch immer und sichern dass
Εrnst B. schrieb im Beitrag #7198016: > Für amd64 macht der GCC aus dem Codeschnipsel im Eröffnungspost genau > drei ASM-Anweisungen: Und das auch nur, weil der Codeschnipsel vom Anfang nämlich implizit auch noch eine Konvertierung nach Big-Endian macht. (im
-
Thread
Direkt-Initialisierung in ctor schlechter optimierbar als indirekt?
kompilierbaren Beispielen verlangen. Hast du noch zufällig konkrete Weisheiten über Inlining-Probleme des gcc?? Gcc schrieb im Beitrag #7198439: > Lieber TO, > der GCC erzeugt in allen Fällen genau den selben Code: > exakt 0 Byte. Lieber Gcc, es wäre schön, wenn das deine Fehlermeldung gewesen wäre
etwas zu dessen Lösung beitragen. ..wegen seiner Unschärferelation, oder doch seiner ..Katze..?? Gcc schrieb im Beitrag #7199215: > Da es hier wohl nur einen gibt, der wirklich was davon versteht, scheint > das Problem gelöst. Wenigstens das ist eine gelungene Darbietung: Genau was der gcc sagen
-
Thread
strtok? WTF! Wer benutzt das?
hier "PC-Programmierung". Geht also um was größeres als einen AtMega. Und ob ich im Makefile statt gcc nun g++ eintrage, ändert kaum etwas. Nur kann ich damit dann auch ein paar praktische C++ Features benutzen.
strtok_r (s, delim, &olds); } [/c] Basteln (__thread bewirkt ThreadLocalStorage für das static olds, GCC extension...)
-
Thread
Größe eines externen Arrays in C
Elemente\n", (unsigned long)nElemente ); return 0; } [/c] Ausgabe: [pre] klaus@lap7:~$ gcc -Wall main.c source.c klaus@lap7:~$ ./a.out Das Feld hat 3 Elemente [/pre]
Und der angenommene Code-Bloat ist ein viel genanntes Pseudo-Argument, was durch die bessere Optimierung oft (mehr als) wett gemacht wird.
-
Thread
32 Bit MCU gesucht
zu sein. Aber bei vielen Ausgabenstellungen reicht auch Integer. Notfalls lang (bis 64 Bit kann der gcc) und/oder als Fixpoint-Arithmetik. Und wenn es um Rampen geht, die kann man auch vorberechnen. > Der wird außerdem nur mit 8MHz betrieben. Er könnte aber mit 16MHz betrieben werden und wäre dann
kostet keine 2 Monate. Oftmals erreicht man durch simples Umstellen des Programmablaufs mehr Optimierung, als durch stupide Erhöhung der CPU-Frequenz und damit des Stromverbrauchs.
-
Thread
An/Verwendung für Monaden
lassen sich Funktionen besser (Unit-)testen, Programme besser nachvollziehen und außerdem sind optimierungen möglich, die es sonst nicht wären. Ein anderer Programmierer schrieb im Beitrag #7144371: > In Funktionalen Sprachen ist eine solche Funktion nicht möglich. So gibt > es z.B. in der hier oft
mache, werde > ich ja regelmäßig gesteinigt ;-) Immerhin unterstützen die aktuellen Releases von GCC und Clang dieses Feature bereits, so dass man zum Ausprobieren nicht erst den Compiler aus Prerelease-Quellen selber bauen muss. Sonst hätte ich mich damit auch zurückgehalten.
-
Thread
C++ in (deeply) Embedded Systemen für Neuprojekte Gesperrt
unbegrenzt, aber doch nehezu. Und ja, C++ hat einfach mehr Möglichkeiten, Code zu optimieren, auch wenn gcc vieles auch in C umsetzt. Und ja, auch mehr Zusicherungen etc. sind möglich. Dass (fast) unendliche Möglichkeiten auch (fast) unendliche Fehler und Missverständnisse provozieren kann, ist die kehrseite
Performance ist mindestens gleich, denn alle heutigen Compiler setzen die Sprache mit nur wenigen Optimierungen auf Sprachebene in eine IL um, auf der dann der Optimizer hauptsächlich arbeitet.
-
Thread
Warum Keil (oder andere unfreie Compiler) statt SDCC?
selber sieht derlei nicht vor. Prinzipiell dürfte ein C-Compiler also auch bei abgeschalteten Optimierungen solche Leerschleifen rauswerfen. Wenn der Code mit Optimierungen kaputt ist, dann ist es es nämlich auch ohne Optimierungen immer noch.
Und auch der GCC unterlässt mit -O0 nicht alle Optimierungen Sonst müsste am AVR eine Schleife [c] while(true) PINB |= (1<<1); [/c] eine andere Frequenz ausgeben als [c] while(true) PINB |= (1<<7); [/c
-
Thread
Arduino nano arbeitet ohne Display nicht.
Nach Möglichkeit verwende dasselbe Bord Package und IDE Version des Autors. Hin und wieder wird der GCC ausgewechselt und es kann dann Schwierigkeiten geben. Der genannte Fehler darf bei den Beispielen nicht auftreten. Es ist immer wichtig dasselbe Entwicklungs-Environment zu haben wie der Original
const da nur ein readonly Attribut, was durchaus auch (aus Versehen?) Umgangen werden kann. Optimierung abschalten, bringt solche Böcke dann ans Licht. volatile const byte laempi {13};
-
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
Was macht der Compiler hier?
Bei Assembler findet man viele solche Optimierungen. Man hat halt den Vorteil, daß man dem Prozessor haargenau sagt, was er tun soll und dabei nicht nur eingefahrene Wege nutzen braucht. Man kann den Code auf Geschwindigkeit optimieren oder auf
Ich ab das jetzt mal durch gcc und g++ geschoben (jeweils 10.1) [c] #include <avr/io.h> int main() { while(!(TWCR & (1<<TWINT))); } [/c] Die machen beide das gleiche da draus: [code] 7a: 80 91 bc 00 lds r24
-
Thread
Assemblerprogramm zur Ausgabe eines Zeichens auf UART3
Assembler-Text erzeugen mit [pre]arm-none-eabi-objdump -d -t -C datei.elf > datei.txt[/pre] Falls du die Optimierung irgendwo einstellen kannst: -Os oder notfalls -O0 gibt leichter lesbaren Text als höhere Optimierungsstufen.
bevor man sich an eine komplexe Bibliothek heran wagt, die auf all dem aufbaut. - Compiler: arm-gcc - Standard C Bibliothek: newlib-nano - Standard Header: CMSIS core All diese sind separat dokumentiert. Dazu kommt dann noch die Dokumentation zu deinem konkreten Mikrocontroller, die auf 4 PDF's
-
Thread
C ohne if() - in einzelnen Fällen möglich?
Bei komplizierteren Bitpermutationen: __builtin_avr_insert_bits https://gcc.gnu.org/onlinedocs/gcc/AVR-Built-in-Functions.html
der Prozessorhersteller aber bis heute immer noch auf seine mistigen proprietären Compiler statt auf GCC oder LLVM setzt und immer noch damit kämpft, überhaupt mal den Standard einzuhalten, gehe ich nicht davon aus dass er übers simpelste hinausgehende Optimierungen hinbekommt. EAF schrieb im Beitrag
-
Thread
zugriff auf struktur oder array, was ist schneller?
erkannt wird. [/code] Ein 2022 cl liefert in beiden Fällen das Gleiche. Genauso ein neuer clang. gcc unter mingw macht irgendein komisches Padding dazu: [code] foo1: 0000000000000000: 89 D2 mov edx,edx 0000000000000002: 48 C1 E2 04 shl rdx,4 0000000000000006
eigentlich fast obsolet, denn moderne PCs haben soviel Rechenleistung dass sich solche Fragen zur Optimierung praktisch nie lohnen. Viel eher lohnen sich dann Überlegungen zur Softwarearchitektur, den verwendeten Algorithmen oder unterschiedlichen Speicherstrategien wie z.B. (sortierten) Listen, Bäume,
-
Thread
ATmega328PB macht was er will
z.B. jede Sekunde machen. https://rn-wissen.de/wiki/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc
schrieb im Beitrag #7085999: > https://rn-wissen.de/wiki/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc Das ist nett bei so gut wie statischer Belegung des SRams, aber bei intensiverer Nutzung des heaps wenig bis gar nicht hilfreich. Oliver
-
Thread
Linux ist endlich vom C89 Standard weg
Ahnung ob es so etwas auch schon gibt, gefunden habe ich diesbezüglich nichts, zumindest nicht bei GCC: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html Es wäre natürlich viel Aufwand und den ein oder anderen wird es sogar stören, aber es wäre machbar. Noch einfacher wäre es aber, wenn
kann man in einem constexpr-Ausdruck testen, denn dann muss(!) > das UB einem Fehler ergeben. > Der GCC macht das auch (der clang leider nicht???). Ggf. ist es der GCC, der hier falsch liegt.
-
Thread
WIZ750SR von Keil nach Eclipse
geschrieben wurde und es zu groß für die freie Version ist. Nun hätte ich versucht es nach Eclipse und GCC zu konvertieren. Jedoch ohne Erfolg. Was ich bis jetzt gemacht habe: Eclipse und JAVA installiert gcc-arm-none-eabi-10.3 heruntergeladen und im Projekt verlinkt GnuWin32 installiert und den
Habe jetzt noch herausgefunden, dass ich das gcc_W7500.ld Linker Script nicht eingebunden hatte. Jetzt komme ich mit Optimierung auf 90kB gegenüber der 39kB der Originalversion. Einspielen kann ich die Firmware jetzt (per wizconfig), jedoch läuft
-
Thread
Schieben vs. Tabelle
8) n = 8; // nötig?! Aber da ich NICHT "volatile" verwendet habe ist meine Frage ob C Compiler (GCC) in hoher Optimierungsstufe mir automatisch die Limitierung der Schiebevorgänge auf 8 abnehmen?
Beitrag #7070793: > Aber da ich NICHT "volatile" verwendet habe ist meine Frage ob C > Compiler (GCC) in hoher Optimierungsstufe mir automatisch die > Limitierung der Schiebevorgänge auf 8 abnehmen? Hoffentlich nicht, denn das wäre ja für alle n<8 (was der Normalfall sein sollte) keine Optimierung
-
Thread
ARM GCC Optimierung auf Variablen
mit "der Compiler kann eventuell eine Optimierung an Variablen vornehmen (z.B. caching)". Hinsichtlich Optimierung gibt es zahlreiche Optionen: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html Aber Beispiele bezogen auf das Caching
das extern beobachtbare Verhalten dasselbe bleibt. Rein praktisch gesehen wird GCC bei -O0 keine solchen Optimierungen durchführen, aber garantiert ist es nicht. Wenn Du den Sinn von volatile wirklich verstanden hättest, kämest Du gar nicht erst auf so eine Frage.
-
Thread
Dauerhaft FakeNews in allen AVR Series 0/1/2 Datenblättern
duemmlichen Compuiler pushen alle Register > und popen sie nachher wieder. Das trifft allerdings auf den GCC seit Jahren nicht mehr zu.
er pusht bei vielen Projekten immer noch weit mehr, als tatsächlich > nötig wäre. Naja, ab avr-gcc-8 oder so emittiert der avr-gcc Compiler dort die Pseudo-Instruktionen __gcc_isr 1 zu Beginn der ISR und am Ende __gcc_isr 2, und der avr-as scanned den Code dazwischen auf die benutzten Register, und
-
Thread
Funktionsaufruf in C
es wo auch immer hin? Ähm, ich /vermute/ eher nicht. Aber du schriebst ja auch: Link-Time Optimierung und *ggf*
schrieb im Beitrag #7064231: > Schon viele hat das korrekte > aber eben sehr flexible Verhältnis des GCC zum Quellcode aus der Kurve > geworfen. Umordnung und weglassen von Code kommt in der Branche nicht > immer gut an. Nu ja, die Diskussion ist so alt wie „ohne Optimierung läufts, mit nicht“.
-
Thread
Industrielle [3D-Drucker] Bastelgrundlagen
Drucker macht keine DPI, sondern runde Würste. Ecken werden nicht eckig sondern rund, je nach Optimierung mehr oder weniger. Lage auf Lage sehen aus wie ein Blockbohlenhaus, das sind auch Rundungen. Zapfen in Loch reibt daher mehr oder weniger. Aufwändige Tunings für das eine Filament passen dann beim
kontinuierlich meinen > Wartungsaufwand. Siehst, das ist Herumbasteln. Oder Neudeutsch: Optimierung! > Das hat alles mit Basteln überhaupt nichts zu tun! Nicht?
-
Thread
Höchstmögliche Schaltfrequenz an einem normalen AVR Ausgangs-Pin
besonders schnell sind. Als Register-Definition sind sie natürlich volatile-qualifiziert. Der avr-gcc kennt diesen Spezialfall. Wenn Du nun also irgendwelche eigenen Status-Flags benötigst, die zwischen einer ISR und non-ISR geteilt werden, so kannst Du damit eine paar CPU-Zyklen sparen gegenüber
Oszilloskop auf, so kann ich dann alles nochmal genau testen. Ich habe herausgefunden das das die Optimierungs-Option auf "Optimize most" zu stellen, das Ergebnis weiter verbessert, ich konnte kontrollierbare Takte bis 100kHz erreichen, aber da ich ja nur 50kHz benötige, nachdem ich die Treiber anders eingestellt
-
Thread
STM32 GCC Compilereinstellungen für Minimum Size -Os
inzwischen doch schon längerer Zeit Link time optimization erfunden, kurz lto. Ist zwar im Falle vom gcc/clang nicht ganz zutreffend, weil die Optimierung trotzdem vom Compiler durchgeführt werden, der ist aber sozusagen in den Linker gerutscht, und sieht dort den gesamtem Code. Oliver
ich so nicht nachvollziehen. LTO ansich optimiert ja auch garnix. Es sorgt nur dafür das die Optimierungen nicht zur Compilezeit sondern erst zur Linkzeit erfolgen. Dazu wird in die einzelnen Objektdateien kein Binärcode sondern ein Zwischencode geschrieben. Je nach GCC-Version und Optionen wird der
-
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
Unix Programmierung
apt purge manpages-de Die manpages haben nichts mit Fehlermeldungen zu tun. Die Übersetzungen für gcc sind für z.B. gcc 11 im Paket gcc-11-locales, das aber bei Ubuntu sowieso für alle gcc-Versionen ab 10 kaputt zu sein scheint. Das kann man sehen, wenn man mal https://packages.ubuntu.com/impish/all/gcc-11-locales/filelist mit https://packages.ubuntu.com/impish/all/gcc-9-locales/filelist > ein paar Werkzeuge für die Kommandozeile (Unix funktioniert ohne IDE). > Na gut, make brauchst du erst nächste
-
Thread
Makefile und flags für Raspberry 4 64bit
CPU nicht am Anschlag ist ("top" betrachten) sollte das völlig egal sein. Die wichtigsten Optimierungen kommen eh durch das "-O3", und das ist ja drinnen geblieben.
Wo hast Du das her? > Wie kann ich das lernen (um das Compiling verbessern zu können)? https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/AArch64-Options.html#g_t-march-and--mcpu-Feature-Modifiers -march=native oder -mtune=native würden den Compiler erkennen lassen, auf welchem System er läuft, und
-
Thread
AVR Mikrocontroller Lohnenswert?
bräuchtest du ja kein Arduino. Dann kaufst du einen AVR oder STM32 und entwickelst mit Eclipse und GCC. Also erzähl nichts.
https://www.mikrocontroller.net/articles/AVR-Tutorial https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
-
Thread
Wechsel von Hardware zu Embedded SW vorbereiten
Die GCC von TI ist nicht nur eine IDE sondern eine Comunity und nein nix Parameter, den Richtigen Launchpad anhängen, die GCC findet ihn meist sogar selber und schlägt dir dann Projekte vor. Aber es gibt
Patrick L. schrieb im Beitrag #6958706: > Die GCC von TI ist nicht nur eine IDE sondern eine Comunity und nein nix > Parameter, den Richtigen Launchpad anhängen, die GCC findet ihn meist > sogar selber und schlägt dir dann Projekte vor. Klingt
-
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
Assembler bleibt weiterhin aktuell & wichtige Programmiersprache
Patrick L. schrieb im Beitrag #6940707: > Schallte Alle Optimierungen ab Das ist albern.
Patrick L. schrieb im Beitrag #6940707: > Schallte Alle Optimierungen ab und Ohhh was da raus kommt ist ja echt > ein schönes wiederholtes Muster..... ja klar das gilt aber nicht mehr wenn Optimierungen im Spiel sind. Ich gebe dir aber Recht, jeder Compiler
-
Thread
Hattet ihr in eurem PC mit < 80486DX Prozessor einen separaten Co-Prozessor?
CPU-Takt (also 6,25 MHz) geliefert > wurde. Wie groß war der Geschwindigkeitsvorteil deiner Optimierung? Und was hat ein Quarzoszillator damals gekostet? Bzw. wenn das so einfach war, wieso wurde dann so eine Lösung nicht von Haus aus, also kommerziell, verkauft?
war eine mit dem Wacom Compiler compilierte > povray.exe ca 40% schneller als Borland und Co., von gcc ganz zu > schweigen. Du hadt mit einem Grafiltablett kompiliert? Faszinierend! Andere haben den Compiler von Watcom benutzt.
-
Thread
ATTINY85 als DCF77-Empfänger
Beim 10MHz Takt sind die Compiler-Einstellungen ziemlich kritisch. Mit "AVRStudio4.18SP3" und der Optimierung "-Os" sollte das eigentlich anständig funktionieren. Bei moderneren Compilern hat man mehr Luft. Eine Optimierungseinstellung wie "-Os" bleibt aber wichtig. Beim PM-Empfänger "05_DFC77p.zip"
Etwas schade ist, dass der Software kein Makefile beiliegt und keine Info, mit welcher Version von gcc die Hex-Datei zustande kommt. Mit gcc 4.33 aus dem Jahr 2008 bekomme ich zwar (immerhin) die gleiche Größe aber unterschiedlichen Inhalt. avr-gcc -Wall -std=gnu99 -Os -DF_CPU=16000000 -mmcu=attiny85
-
Thread
Brauche Hilfe AT Mega 8 im Raum Bremen evlt. vor Ort
https://www.mikrocontroller.net/topic/104765#918019 https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing%C3%A4nge_(Wie_kommen_Signale_in_den_%C2%B5C) [c] /* Fuehre Aktion aus, wenn Bit Nr. 2 (das "dritte" Bit) in PINB geloescht (0) ist */ if ( !(PINB & (1<<PINB5)) ) { /* Aktion */
man rechnen kann ! Bitte mal hier lesen : https://de.wikibooks.org/wiki/C-Programmierung_mit_AVR-GCC/_IO-Ports Daa sind auch Beispiele für den Mega8 angegeben.
-
Thread
avr-gcc -mrelax buggy
gefunden. Reporte ihn. Aber aus deinem Post werde ich nicht schlau. Und die Dokumentation von avr-gcc [1] zu -mrelax läßt den Zusammenhang mit dem gesagten zumindest unwahrscheinlich erscheinen. [1] https://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html
noch gepflegt? > Aber aus deinem Post werde ich nicht schlau. Und die Dokumentation von > avr-gcc [1] zu -mrelax läßt den Zusammenhang mit dem gesagten zumindest > unwahrscheinlich erscheinen. > > [1] https://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html Ich liefere gerne Infos nach.
-
Thread
Hardware Programmierung mit Python
Stefan ⛄ F. schrieb im Beitrag #6905768: > Anstelle der Konsole-Ausgangen des gcc > braucht die IDE einen lustig animierten Hund, > der die fehlerhafte Stelle ankläfft. Als Satire nicht schlecht. Aber bitte besser als solche markieren!
ist und damit zu Compilezeit nur wenig Informationen verfügbar sind, die den Compiler bei der Optimierung unterstützen könnten. Außerdem ist der Compiler Bestandteil des Laufzeitsystems und ist deswegen sehr schlank gehalten. Mit Type-Hints kann der Programmierer den Compiler bei der Optimierung
-
Thread
Bestimmten Char aus String entfernen (C)
Optimierung O3 kommen die Varianten von achs und mir auf 90 Takte und die von kyblord auf 159 Takte.
die Ergebnisse übertragbar sind? Und die Antwort auf die Frage, wie du diese Takte mit dem x86_64 gcc bestimmt hast, würde mich noch immer interessieren.