Hallo zusammen, meine Frage steht in der Überschrift. C-Programme kann ich zwar auch auf dem µC-Board testen, aber da habe ich immer eine Strippe mit einem Klotz dran am Notebook baumeln. Immer möchte ich das nicht, und es wäre nett, wenn ich kleine Funktionen auch mal nur rein am Notebook teste, meinetwegen kann das auch was ganz simples altes sein, was noch in der virtuellen DOS-Maschine DOSbox 0.74 läuft. Allerdings bin ich ein Hobbyist mit knappem Budget, suche da was in Richtung Freeware, wie z.B. SDCC von Sourceforge es für µC ist. Rein fürs Hobby nur. Manchmal möchte ich kleine Funktionen testen, wie z.B. eine Binär- zu BCD-Wandlung, oder Worte in einem Text zählen, so im Stil wie Übungen EDV1 in der Hochschule mal waren. Irgendwo hatte ich vor vielen Jahren mal Turbo C, das war gut genug, ging aber verloren. C++ und Fensterprogrammierung muß es definitiv nicht sein. Meine Betriebssysteme sind Vista und Windows7.
Kannst ja mal den tiny-c-compiler testen, der ist auch ruckzuck auch wieder geloescht falls er nicht genuegt. http://download.savannah.gnu.org/releases/tinycc/ http://bellard.org/tcc/ Schade das er ihn nicht mehr weiterentwickelt.
Visual Studio, was sonst? gibt es auch als Express-Version (umsonst) und ist für Windows der Standard schlechthin
15:42 schrieb: > http://bellard.org/tcc/ > Schade das er ihn nicht mehr weiterentwickelt. Fabrice ist zwar ein begnadeter Programmierer, aber warum ist es schade, dass er sich aus der Weiterentwicklung zurückgezogen hat? http://repo.or.cz/w/tinycc.git Ich selbst empfehle (in diesem Fall) MinGW. Bei TinyCC wird für meinen Geschmack noch viel zu oft falscher Code generiert. Sein einziger Vorteil ist es klein und schnell zu sein, was in Zeiten von TB und GHz nicht mehr viel wert ist.
heinz (Gast) schrieb: > http://www.cs.virginia.edu/~lcc-win32/ > Nur frei für nicht kommerziel Der lcc-win32 hat zwei Probleme, a) die Virenscanner mögen ihn nicht ;) und b) die wedit Gui ist einfach nur schaurig. Die Pelles C IDE hingegen ist wesentlich besser gestaltet und einfacher zu bedienen.
Ich verwende meist auch Pellesc. Aber mir gefällt der Debugger von LCC besser
Ein Browser (+Internet) reicht: * mit Linux spielen: http://bellard.org/jslinux/ * Mikrocontroller : http://vps.matrixstorm.com:1114/bideavr/simple.html * universelle Browser IDE: https://c9.io/ MfG
:
Bearbeitet durch User
Ach ja, ... Jetzt kommen wir wieder zu dem Thema "Will ich einen guten Compiler oder ein Rundum-sorglos-Paket?" Seit ich damals von MSVC++ 1.0 auf DJGPP 1.xx umgestiegen bin, benutze ich zum Entwickeln keine IDE mehr. Ein guter Editor mit Syntax-Highlighting und eine Shell reichen. Und als Debugger erfüllt GDB auf allen Plattformen seinen Dienst.
Stephan B. (matrixstorm) schrieb: > Ein Browser (+Internet) reicht: > * mit Linux spielen: http://bellard.org/jslinux/ > * Mikrocontroller : > http://vps.matrixstorm.com:1114/bideavr/simple.html > > * universelle Browser IDE: https://c9.io/ Ganz nette Spielerei, aber die Frage lautete " Was brauche ich, um am PC etwas C zu programmieren? " Also einen Browser in erster Linie ganz bestimmt nicht. ;-)
Wenn die Frage sich auf µC Simulation bezog dann: kostenlos: VMLAB - http://www.amctools.com/download.htm nicht kostenlos: Proteus VSM-http://www.labcenter.com/products/vsm/vsm_overview.cfm (Vorteile: intuitiv mit Schaltplan Symbolen, Breakpoints und Schrittsteps in C Code möglich gut zum Debugen)
Häsch Define schrieb: > Manchmal möchte ich kleine Funktionen testen, wie z.B. eine Binär- zu > BCD-Wandlung, oder Worte in einem Text zählen, so im Stil wie Übungen > EDV1 in der Hochschule mal waren. > C++ und Fensterprogrammierung muß es definitiv nicht sein. Turbo-C von Borland. Ist kostenlos und läuft in der DOS-Box.
Komisch das bei allen immer die Suche im WWW kaputt ist: http://www.compilers.net/Dir/Free/Compilers/CCpp.htm http://www.freebyte.com/programming/c/ http://www.download32.com/free-download-ms-dos-c-compiler-freeware.html Oder wenn schon GCC als Compiler für den µC vorhanden ist einfach auf X86 erweitern und alles so lassen wie es ist außer das Target auf x86 zu setzen.
> Turbo-C von Borland. Ist kostenlos und läuft in der DOS-Box.
Wenn sie wenigstens die letzte veröffentlichte Version freigegeben
hätten und nicht die uralt 2er.
Speichersegmentierung der 16-bit Win3.x Zeit will man sich auch nicht
mehr unbedingt antun.
Visualdingens schrieb: > Wenn sie wenigstens die letzte veröffentlichte Version freigegeben > hätten und nicht die uralt 2er. Was willst du denn? Der TO hat um eine (schnelle IDE) gebeten, um kleine C Programmfragmente zu testen. Im übrigen kann man auch Turbo-C "woanders" finden. Jemandem, dem das didaktische Ziel wichtig ist, sucht auch "woanders".
> Der TO hat um eine (schnelle IDE) gebeten, um kleine C Programmfragmente > zu testen. Schnell und DOS-Emulation geht nicht zusammen. Außerdem bleibt das Problem der Speichersegmentierung und des alten 16-bit Codes. > Im übrigen kann man auch Turbo-C "woanders" finden. Jemandem, dem das > didaktische Ziel wichtig ist, sucht auch "woanders". Raubkopie?
Visualdingens schrieb: > Speichersegmentierung der 16-bit Win3.x Zeit will man sich auch nicht > mehr unbedingt antun. Da der TE den C-Compiler nutzen möchte, um irgendwelche Berechnungen und Algorithmen für Mikrocontroller vorher auf dem PC zu testen, ist es vorteilhaft, wenn die Größe von int auf beiden Plattformen dieselbe ist. Arbeitet er also vorwiegend mit 8-Bit-Controllern (AVR, 8051, PIC u.ä.) mit 16-Bit-Ints, sollte der Compiler auf dem PC idealerweise ebenfalls diese Int-Größe verwenden. Leider ist die Int-Größe bei den meisten PC-Compilern fest vorgegeben (32 Bit bei Linux und Windows, 16 Bit bei DOS). Für 8-Bit-µC-Kompatibilität sind diese alten DOS-Compiler also ganz praktisch. Oder kennt jemand einen C-Compiler, der auf 32- oder 64-Bit-Windows oder -Linux direkt (also ohne DOS-Box) lauffähigen Code generiert, bei dem man aber die Int-Größe aber optional auf 16 Bit einstellen kann? So etwas könnte ich nämlich ebenfalls manchmal gut gebrauchen :)
Visualdingens schrieb: > Außerdem bleibt das > Problem der Speichersegmentierung und des alten 16-bit Codes. Wann hast du das jemals benötigt? Wahrscheinlich nicht, denn dann wüßtest du um diverse 32bit-Extender - zumindestens dann, wenn du Protected-Mode Programme unter DOS ausprobieren wolltest.
Yalu X. schrieb: > Oder kennt jemand einen C-Compiler, der auf 32- oder 64-Bit-Windows oder > -Linux direkt (also ohne DOS-Box) lauffähigen Code generiert, bei dem > man aber die Int-Größe aber optional auf 16 Bit einstellen kann? Also wenn -std=c99 beim gcc angegeben wird sollten uint8_t und uint16_t funktionieren. Ansonsten muß man halt selber deklarieren:
1 | typedef unsigned char uint8_t; |
Universell einen Header definieren der auf dem PC eingebunden wird.
kopfkratzer schrieb: > Ansonsten muß man halt selber deklarieren Was aber das geringste Übel sein sollte :-).
Nimm Codeblocks. Ist eine IDE die gleich einen guten C und C++ Compiler dabei hat. Finger weg von diversen Microsoft Produkten wie Visual Studio, da deren Compilerqualität leider zu wünschen übrig lässt. Und zum oben genannten "Problem" mit unterschiedlich großen Ganzzahltypen: wenn es wirklich auf die exakte Größe ankommt, dann nimmt man einfach uint8_t, uint16_t, ... damit ist das Problem auch schon wieder gelöst!
D. V. (mazze69) schrieb: Visualdingens schrieb: >> Außerdem bleibt das >> Problem der Speichersegmentierung und des alten 16-bit Codes. > Wann hast du das jemals benötigt? Das "benötigt" man nicht. Das ist vorhanden. > Wahrscheinlich nicht, denn dann wüßtest du um diverse 32bit-Extender - > zumindestens dann, wenn du Protected-Mode Programme unter DOS > ausprobieren wolltest. Ja klar, jetzt auch noch einen DOS-Extender einsetzen. Dümmer geht's nimmer.
> Und zum oben genannten "Problem" mit unterschiedlich großen > Ganzzahltypen: wenn es wirklich auf die exakte Größe ankommt, dann nimmt > man einfach uint8_t, uint16_t, ... damit ist das Problem auch schon > wieder gelöst! Eben! Aber wegen mir kann der TE sich auch ein altes TC herunterladen. Bitte schön: http://www.retroarchive.org/dos/lang/ Bediene er sich!
Visualdingens schrieb: > Ja klar, jetzt auch noch einen DOS-Extender einsetzen. Dümmer geht's > nimmer. Bisher haben nur dumme Progger das Prob so bewältigt. Hast du eine bessere Idee? Dann nur raus damit.
kopfkratzer schrieb: > Yalu X. schrieb: >> Oder kennt jemand einen C-Compiler, der auf 32- oder 64-Bit-Windows oder >> -Linux direkt (also ohne DOS-Box) lauffähigen Code generiert, bei dem >> man aber die Int-Größe aber optional auf 16 Bit einstellen kann? > > Also wenn -std=c99 beim gcc angegeben wird sollten uint8_t und uint16_t > funktionieren. ccccccccccccccccccccccc schrieb: > Und zum oben genannten "Problem" mit unterschiedlich großen > Ganzzahltypen: wenn es wirklich auf die exakte Größe ankommt, dann nimmt > man einfach uint8_t, uint16_t, ... damit ist das Problem auch schon > wieder gelöst! Das ist nicht das, was ich meine. Es geht mir darum, dass die Typen "int" und "unsigned int", also die Typen, die i.Allg. implizit für Zwischenergebnisse in Integer-Berechnungen verwendet werden, ebenfalls nur 16 Bit groß sind. Einfaches Beispiel:
1 | uint16_t x = 1000 * 1000 / 100; |
Auf einem PC ist erwartungsgemäß x = 10000, auf einem AVR aber x = 169, da das Zwischenergebnis 1000 * 1000 = 1000000 nicht in 16 Bit passt und abgeschnitten wird. Um solche Überlauffehler in AVR-Programmen schon beim Test auf dem PC aufzudecken, möchte ich (ind evtl. auch der TE), dass auch dort Integer-Berechnungen mit nur 16 Bit ausgeführt werden. Man kann sich zwar damit behelfen, dass man zu Testzwecken vor jeden Teilausdruck einen uint16_t-Cast schreibt, das ist aber mühsam, macht den Code unleserlich, und meistens vergisst man den Cast dann doch an irgendeiner Stelle.
:
Bearbeitet durch Moderator
Hab nochmal nachgesehen, das sollte mit allen C Compilern gehen die stdint.h kennen: https://en.wikipedia.org/wiki/Stdint.h Ist in C99 deklariert daher klappt's beim gcc auch mit der C99 option, oder man bindet halt immer explizit <stdint.h> ein.
> Bisher haben nur dumme Progger das Prob so bewältigt. Dafür gab es auch Gründe. Man wollte schließlich endlich die verdammte Speichersegmentierung der Win3x Zeit überwinden. Hat dein Windows die etwa noch? Meines nicht! > Hast du eine > bessere Idee? > Dann nur raus damit. Aber sicher, einfach einen der (vernünftigen) Vorschläge hier folgen, heißt eine aktuelle Entwicklungsumgebung einsetzen. Das veruracht weniger Kopfschmerzen. An alter DOS-Box Software kann man sich gelegentlich in seinen sentimentalen 5 Minuten erfreuen. Das reicht dann auch.
Yalu X. (yalu) (Moderator) schrieb: > Es geht mir darum, dass die Typen > "int" und "unsigned int", also die Typen, die i.Allg. implizit für > Zwischenergebnisse in Integer-Berechnungen verwendet werden, ebenfalls > nur 16 Bit groß sind. > Einfaches Beispiel: > uint16_t x = 1000 * 1000 / 100; > Auf einem PC ist erwartungsgemäß x = 10000, auf einem AVR aber x = 169, Jetzt auch? uint16_t x = 1000 * (1000 / 100); > da das Zwischenergebnis 1000 * 1000 = 1000000 nicht in 16 Bit passt und > abgeschnitten wird. Um solche Überlauffehler in AVR-Programmen schon > beim Test auf dem PC aufzudecken, möchte ich (ind evtl. auch der TE), > dass auch dort Integer-Berechnungen mit nur 16 Bit ausgeführt werden. Wie wäre es da mit etwas modernerem wie OpenWatcom? http://www.openwatcom.org/index.php/Open_Watcom_FAQ " What does the Open Watcom compiler give us that we don't already get with other free compilers? The Open Watcom compiler has a number of advantages over other free compilers, such as full support for 16-bit DOS, Windows, and embedded x86 development, powerful commercial level debugger with full remote debugging capabilities (serial, parallel, NetBIOS, TCP/IP etc). The Open Watcom C/C++ compiler is also the only freely available compiler for 16-bit Windows and OS/2 device driver development. Finally, Open Watcom is a comprehensive package, easy to install and use, with full range of tools and documentation. "
Visualdingens schrieb: > Aber sicher, einfach einen der (vernünftigen) Vorschläge hier folgen, > heißt eine aktuelle Entwicklungsumgebung einsetzen. Das veruracht > weniger Kopfschmerzen. Eine Entwicklungsumgebung kann aber die Segmentierung (Versäumniss der Intel-Fuzzies) nicht aufheben. Im Prinzip bestehen aktuelle intel-CPUs aus Einzel-Verwaltern von jeweils 64kB (im Gegensatz zu den 68xxxeen). Man hat also auch heute noch OPAs(Grandpas), deren Krückstöcke über etliche 64kB-Segmente verfügen. Weil dieses so ist, hat MS den Hardware-Layer eingeführt, um unabhängig gegenüber der Hardware zu sein. So läuft ein Windows sowohl auf echten als auch auf "geschalteten"(Segmenten) 32bit Systemen. Ab dem 286 hat intel Register eingeführt, die das Umschalten via Programmcode erleichtert. Das ändert aber nichts daran, dass es keinen linear adressierbaren Speicherbereich gibt, so wie auf 68000ern. Motorola wäre eindeutig die bessere Wahl gewesen.
Ich glaube, Du solltest Dir nochmal die IA32-Architektur ansehen, bevor Du hier solche Aussagen postest.
> Motorola wäre eindeutig die bessere Wahl gewesen. Damals (198x/199x) ja, heute nicht mehr. Die Opcodes des MC68000 sind dermaßen lang, dass allein die vielen Speicherzugriffe den Prozessor heute alt aussehen lassen. So richtig unsinnig war dann der 68008 mit 8bit Speicherinterface. Schon vor der Jahrtausendwende kam der Abgesang auf die ganze MC68xxx Serie wegen Ineffizienz.
:
Bearbeitet durch User
Visualdingens schrieb: > Yalu X. (yalu) (Moderator) schrieb: >> Einfaches Beispiel: > >> uint16_t x = 1000 * 1000 / 100; > >> Auf einem PC ist erwartungsgemäß x = 10000, auf einem AVR aber x = 169, > > Jetzt auch? > > uint16_t x = 1000 * (1000 / 100); Das ist aber ein anderer Ausdruck. Und wenn man die Zahlen etwas verändert (oder Variablen nimmt) dann geht ds Umformulieren auch nicht: uint16_t x = 1000 * 1000 / 10000;
Vielen Dank mal an alle, da kam ja einiges zusammen, was ich mir in Ruhe erst mal anschaue. Also es sollte wirklich was ganz simples sein, z.B. in der Art von Turbo C 2.0, was ich vor vielen Jahren mal im Hochschullabor für C-Übungen hatte. Nicht viel initialisieren, einfach direkt mit seiner Übung los legen. Über die Tastatur Zahlen eingeben können, und am Programmende eine Bildschirmausgabe. Von PC-Programmierung habe ich ohnehin keine Ahnung, und das ist auch nicht mein Arbeitsgebiet. Visual Studio scheint mir etwas fett, erschrak mich schon mal über die Downloadgröße, die in Richtung halbes GB geht. Das geht mit dem Mobilstick kaum. Ein Abbruch beim Download, und meine Monatsflat ist schon verbraucht. So viel ist es mir wiederum nicht wert. Als Editor mit Syntax-Highlighting habe ich schon Geany, was mir für µC sehr gefällt. Also, einfach ein kleines Progrämmchen, was sogar nur aus einem einzelnen C-File besteht, mal über Kommandozeile compilieren, und laufen lassen. Meinetwegen in DOSbox, habe da noch weitere Uraltprogramme wie den Intel ASM und Simulator für 8051 von 1991. Das tuts doch hervorragend. Ansonsten darf aber gerne unbehelligt weiter über die Randthemen diskutiert werden. Ich wollte das jetzt keinesfalls unterbrechen.
Yalu X. schrieb: > Um solche Überlauffehler in AVR-Programmen schon > beim Test auf dem PC aufzudecken, möchte ich (ind evtl. auch der TE), > dass auch dort Integer-Berechnungen mit nur 16 Bit ausgeführt werden. Man könnte sich mit etwas extra Tipparbeit (siehe Zeilen 22,23) so behelfen: http://ideone.com/3kQgS1 So kann man angeben in welchen Datentyp jedes Zwischenergebnis gecastet werden soll (wie eben zB uint16_t), und so kann man das auch nicht vergessen sofern man alle Integer-Literale durch N16(...) o.ä. ersetzt. So kann man 16bit-Rechnung auf jeder Plattform erzwingen. Ausgabe des Programms auf x86:
1 | 16bit Rechnung: 169 |
2 | 32bit Rechnung: 10000 |
3 | Diese Plattform hat 32bit "int", 32bit "long", 32bit Adressraum. |
Auf x86_64:
1 | 16bit Rechnung: 169 |
2 | 32bit Rechnung: 10000 |
3 | Diese Plattform hat 32bit "int", 64bit "long", 64bit Adressraum. |
kopfkratzer schrieb: > Komisch das bei allen immer die Suche im WWW kaputt ist: Hier noch mal was für die "Gurgle-Kaputt-Fraktion" zum Nachdenken: Frage an einem fremden Ort an Einheimische: Gibt es hier einen guten Italiener? Antwort: Stadtplan und Telefonbuch kaputt?
Häsch Define schrieb: > Also es sollte wirklich was ganz simples sein, z.B. in der Art von Turbo Kannst ja mal schauen ob das stimmt was in wikipedia geschrieben steht; en.wikipedia.org/wiki/Borland_Turbo_C#Freeware_release In 2006, Borland's successor, Embarcadero Technologies, re-released Turbo C and the MS-DOS versions of the Turbo C++ compilers as freeware.[5] @REST kleine&etwas :D ... > Manchmal möchte ich kleine Funktionen ... > am PC etwas C ...
Häsch Define schrieb: > kopfkratzer schrieb: >> Komisch das bei allen immer die Suche im WWW kaputt ist: > > Hier noch mal was für die "Gurgle-Kaputt-Fraktion" zum Nachdenken: > > Frage an einem fremden Ort an Einheimische: > Gibt es hier einen guten Italiener? > Antwort: > Stadtplan und Telefonbuch kaputt? Es macht allerdings einen Unterschied ob man neu in einem Ort ist und keinen Stadtplan und Telefonbuch dabei hat oder im WWW nachfragt was man im WWW genauso schnell suchen und finden kann ! War schneller gefunden als meinen Antwort getippt !
kopfkratzer schrieb: > Es macht allerdings einen Unterschied ob man neu in einem Ort ist und > keinen Stadtplan und Telefonbuch dabei hat oder im WWW nachfragt was man > im WWW genauso schnell suchen und finden kann ! Also ich bin der Fremde nur mit Stadtplan und Telefonbuch, der aber unter 10 aufgeführten Italienern nicht weiß, welcher wirklich ein guter Tipp ist. > War schneller gefunden als meinen Antwort getippt ! Immerhin nanntest du drei Links, da ist einiges verziehen. ;-)
Häsch Define schrieb: > kopfkratzer schrieb: >> Es macht allerdings einen Unterschied ob man neu in einem Ort ist und >> keinen Stadtplan und Telefonbuch dabei hat oder im WWW nachfragt was man >> im WWW genauso schnell suchen und finden kann ! > > Also ich bin der Fremde nur mit Stadtplan und Telefonbuch, der aber > unter 10 aufgeführten Italienern nicht weiß, welcher wirklich ein guter > Tipp ist. > >> War schneller gefunden als meinen Antwort getippt ! > > Immerhin nanntest du drei Links, da ist einiges verziehen. ;-) Und wenn Du die Links überprüft hättest würdest Du wissen das da jedesmal eine Liste mit mehreren Vorschlägen für Freeware-C Compiler aufgeführt sind. Mal abgesehen davon gibt es immer verschiedene Geschmäcker, ob das nun das Restaurant betrifft oder die IDE oder Kommandozeile oder oder oder. Daher kann man niemals eine universelle Antwort geben, derjenige der es machen will muß seinen eigenen Vorlieben folgen sonst knallt das idR. Von daher kann man nur soviel wie möglich aufzeigen, ansehen und für sich selbst bewerten muß das derjenige den es betrifft. Wenn jemand mit z.B. MS-Word gut umgehen kann und sich da auch schon Makros geschrieben hat die ihm Dinge erleichtern wird derjenige wohl kaum auf LaTex umsteigen nur weil das die mächtigere Lösung für Publikationen ist.
Yalu X. (yalu) (Moderator) schrieb: > Da der TE den C-Compiler nutzen möchte, um irgendwelche Berechnungen und > Algorithmen für Mikrocontroller vorher auf dem PC zu testen, ist es > vorteilhaft, wenn die Größe von int auf beiden Plattformen dieselbe > ist. Ich habe nur nicht den Eindruck, dass dies beim TE oberste Priorität ist. Ihm scheint es vielmehr einfach darum zu gehen, möglichst wenig dl zu müssen.
Häsch Define schrieb: > Irgendwo hatte ich vor vielen Jahren mal Turbo C, das war gut genug, > ging aber verloren. http://edn.embarcadero.com/article/20841 Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.