Hallo,
ich habe eine Frage zu Compilern. Ich hoffe ich bin hier richtig.
Ich programmiere zur Zeit die AVR mit Bascom - also einen Basiccompiler.
Ist es eigentlich besser (schnelleren Maschinencode), mit C- Compilern
zu arbeiten? Und wenn, welchen?
Danke für die Antworten.
Gruß Walle
Hi,
Mit asm kann man den effektivsten Code (was Geschwindigkeit und/oder
Grösse betrifft) programmieren, allerdings ist es auch der aufwendigste
Weg.
C hat den Vorteil unabhängig vom Prozessor (bis auf die jeweiligen
Erweiterungen) zu sein, so kann man recht leicht mal einen M16C oder
C167 programmieren, ohne lange Einarbeitung.
Der Bascom macht recht kompakten Code.
Wenn Dein Basicprogramm für deine Anwendung schnell genug ist und du
keine Platzprobleme hast, gibt es keinen Grund etwas anderes zu
benutzen.
Es sei denn, Du willst vielleicht mal einen anderen Controller
ausprobieren.....
Bis dann,
Ingo.
Hallo Ingo,
> Mit asm kann man den effektivsten Code (was Geschwindigkeit und/oder Grösse
betrifft) programmieren ...
Gut, dass Du das Wörtchen "kann" gewählt hast. Andernfalls hätten wir
beide nun eine heftige Diskussion. Die heutigen guten C-Compiler sind so
ausgereift und produzieren einen solch effektiven Code, dass Du kaum
noch eine Chance hast, hier mit Assembler deutliche Vorteile
herauszuholen. Und wenn überhaupt, dann musst Du schon ein absoluter
Crack in Assemblerprogrammierung sein, sowas lernt man nicht in wenigen
Monaten. Diese Annahmen, dass man mit Assembler wesentlich besseren und
effektiveren Code programmiert sind Fakten aus längst vergangenen
Zeiten, aber sie haben sich bis heute als hartnäckige Gerüchte gehalten.
Nicht umsonst ist heutzutage C im Profibereich der
Mikrocontroller-Programmierung Standard. Aber es gibt halt immer noch
irgendwelche hartnäckigen Dinosaurier, die weiterhin mit
althergebrachten Methoden arbeiten möchten. Ich habe sogar schon erlebt,
dass jemand versucht hat, den BS2000 Editor EDT auf Unix zu portieren
als er in seinem Arbeitsbereich das Betriebssystem wechseln musste,
natürlich ohne Erfolg. Der gute Mann hat übrigens entnervt aufgegeben
und ist nun schon längere Zeit im Ruhestand ;-)
Soweit meine 0.02$ zu diesem Thema.
Gruss
Peter
Manche Sachen kann man aber nicht mit C machen. Ich programmiere gerade
an einem DDS-Signalgenerator, und da kommt es auf jeden einzelnen
Taktzyklus an... aber wenn eine so harte Echtzeitfähigkeit nicht nötig
ist gibt es eigentlich keinen Grund nicht C zu verwenden :-)
Gruß
Andreas
Hallo,
Danke für die Antworten, aber Eure Diskussion beantwortet leider meine
Frage nicht so recht.
Bascom oder C?
Danke
Schöne Grüße
Walle
PS:Ich habe aber grunsätzlich nichts geger Diskussionen
Hi Walle,
im Grunde sind deine Fragen doch schon beantwortet.
BASCOM ist ein Basic - Compiler, denn du nur für den AVR und in einer
anderen Version auch für den 8051 nutzen kannst. Die beiden Versionen
sind nicht kompatibel. Der erzeugte Maschinencode ist recht kompakt,
hinkt aber einem mittelmäßig programmiertem Assembler - Code hinterher.
Der BASCOM - Compiler ist manchmal ganz schön kopflastig. Allerdings
kenne ich die neueste Version noch nicht.
Der C - Compiler ist in seiner Grundversion im Prinzip für alle
Controler geeignet. Durch spezielle Bibliotheken wird der Compiler an
die unterschiedlichen Controller angepasst. Aber auch "C" erzeugt
teilweise noch viel Überhang. Andreas hat recht mit seiner Aussage über
zeitkritische Anwendungen.
Wenn man sich also nicht auf einen speziellen Controller festlegen will,
ist "C" die gute Wahl. Für die 8051er und die AVR`s ist BASCOM von
seiner Einfachheit her spitze.
Der Meinung von Peter über "C" kann ich mich nicht voll anschliessen.
"C" ist nur deshalb soweit verbreitet weil es der erste portierbare
Compiler für Controller auf dem Markt war. Nicht weil es so gut
ist...........
Es grüßt
Günter der Dinosaurier
Hi an alle,
Danke für die Antworten. Hat mir doch geholfen.
Ich programmiere seit ca. einem Jahr mit Bascom (sehr einfach und sehr
kurze Einarbeitungszeit) und ich habe mir schon gedacht, dass ich
zeitkritische Aufgaben mit Assembler oder "C" lösen muss.
Vielleicht sollte ich mich doch noch in "C" einarbeiten.
Schönen Tag noch.
Gruß Walle
Also Günter, ich weiss nicht, ist das tatsächlich dein Ernst, jemandem
abzuraten, sich mit C zu beschäftigen? Das hört sich ja fast so an, als
ob diese Programmiersprache bei Dir ein Trauma hinterlassen hat!
Aber wenn es tatsächlich darum geht den letzten Rest an Effektivität
herauszukitzeln, dann könnten wir uns doch mal über VHDL oder
FPGA-Design unterhalten, wie wäre es denn damit? Das ist doch bestimmt
nicht mehr zu toppen.
So ganz nach dem Motto, wir basteln uns einen eigenen Prozessor.
Ach ja, das Ganze ist kein Quatsch. Wer sich für sowas interessiert,
kann ja mal bei
http://www.opencores.org
vorbeischauen.
Ansonsten wünsch ich allen ein schönes WE, insbesondere unserem
selbsternannten Ober-Dino Günter ;-)
Gruss,
Peter
Hi Peter,
:-) so ganz Ernst sollte man das nicht nehmen, natürlich nicht. Und ich
denke mal, das der Walle das wohl auch nicht sooooo wörtlich nimmt. Aber
ich habe versucht, mir "C" selbst beizubringen, und irgendwie klappte
das auch. Aber es ist manchmal ganz schön Frust dabei.......
Und FPGA ist garnicht schlecht. Das steht demnächst an, da ich eine
kleine Tastatur brauche und ich den 74C922 damit nachbilden will. Ich
weiß, mit Kanonen auf Spatzen schießen, aber das wird dann eben mein
erster, halbwegs intensiver Einstieg in diese Geschichte.
In diesem Sinne,
Günter
Hallo Günter,
also wenn Du wirklich Interesse an dieser Sache hast, ich bin nun schon
seit einiger Zeit auf der Suche nach Informationsmaterial,
Freeware-Tools usw. Aber was schon beim Thema GALs schwierig ist,
scheint beim Thema FPGA fast unmöglich zu werden. Das ist wohl ein
Thema, da spielen nur Leute aus der Oberklasse-Liga mit.
Aber es gibt schon ein paar nette Tools als abgespeckte Versionen für
lau. Die werde ich demnächst mal austesten.
hier mal als Tip:
http://www.mycad.com/products/product.html
Die beiden Programme MyVHDL-Station und MyLOGIC-Station schauen sehr
interessant aus und die gibt es als sogenannte "Studentenversionen" mit
kleinen Einschränkungen, die aber für einen privaten Nutzer immer noch
sehr interessant sind.
Beste Grüsse,
Peter