Was brauche ich, um am PC etwas C zu programmieren?

Gast #3595445
Lesenswert?

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.
Gast #3595519
Lesenswert?

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.
Gast #3595637
Lesenswert?

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.
Gast #3595786
Lesenswert?

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.

;-)
Gast #3595951
Lesenswert?

> 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.
Gast #3595967
Lesenswert?

> 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?
Moderator #3595968
Lesenswert?

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 :)
Gast #3595977
Lesenswert?

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.
Gast #3595986
Lesenswert?

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!
Gast #3595989
Lesenswert?

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.
Moderator #3596001
Lesenswert?

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.
Gast #3596012
Lesenswert?

> 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.
Gast #3596017
Lesenswert?

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. "
#3596019
Lesenswert?

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.
#3596168
Lesenswert?

> 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.
Persönliche Seite #3596343
Lesenswert?

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;
Gast #3596366
Lesenswert?

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.
Gast #3596367
Lesenswert?

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.
Gast #3596392
Lesenswert?

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 ...
Gast #3596411
Lesenswert?

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 !
Gast #3596443
Lesenswert?

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. ;-)
Gast #3596481
Lesenswert?

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.
Gast #3596531
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren