Lohnt sich Asm
-
Als 8-bit-Prozessoren würde ich Atmel ATmega- oder ATtiny-Serie empfehlen:
http://www.henkessoft.de/Roboter/stk500.htm
Dann lernt man auch die Harvard-Architektur kennen.
-
Alles klar, werd mich mal erkundingen, danke ! Und ein besonderen Dank an Erhard für die Links.
-
Was man hinzufügen muss: Die Sparte, wo ASM recht häufig noch war, waren die Mikrocontroller, also die Dinger die einfach überall drinnen sind, seis jetzt eine Waschmaschine oder eine Uhr. Aber selbst hier wird fast nur noch in C programmiert, teilweise sogar schon C++.
Das einzige, was mir einfällt, wo ASM noch verwendet wird, sind extrem zeitkritische Dinge, z.B. Digitale Signalverarbeitung. Hab letztens gelesen, dass in Hörgeräten viel in ASM programmiert wird um perfekte Ergebnisse zu erhalten.
Die Grundlagen in ASM zu beherrschen ist gut, aber versteif dich nicht zu sehr drauf. Lies dir Erhards Links durch, die sind von ihm und sind gut, weil sie dir eine Einführung geben.
Spätestens wenn du die Jobangebote durchgehst wirst du sehen, dass man das Wort Java oder PHP ca. 100mal öfter liest als wie ASM.
-
Beide Seiten sind wichtig, die Internet-Welt als auch die verborgene Welt der Mikroprozessoren. Da Du noch jung bist, kannst Du locker beide Seiten erkunden.
teilweise sogar schon C++
Das wird sehr kritisch beäugt. C dominiert sehr stark, aber je mehr RAM die µC mit bringen, je einfacher gehen Hochsprachen wie C++ oder Java. Ich habe selbst mal aus Interesse den Hobby-Roboter Nibo in C++ programmiert. Die 4096 Bytes SRAM des ATmega128 bieten hierfür tatsächlich schon genügend Speicher. http://www.henkessoft.de/Roboter/Nibo.htm
-
Erhard Henkes schrieb:
teilweise sogar schon C++
Das wird sehr kritisch beäugt. C dominiert sehr stark, aber je mehr RAM die µC mit bringen, je einfacher gehen Hochsprachen wie C++ oder Java. Ich habe selbst mal aus Interesse den Hobby-Roboter Nibo in C++ programmiert. Die 4096 Bytes SRAM des ATmega128 bieten hierfür tatsächlich schon genügend Speicher. http://www.henkessoft.de/Roboter/Nibo.htm
Das mit dem C++ setzt sich aber hauptsächlich deshalb nur langsam um, weil die meisten Embedded Programmierer C gewöhnt sind, und der Umstieg ist nach vielen Jahren C doch etwas komisch, weil es halt ein anderes Konzept verfolgt(wenn schon C++, dann auch mit OOP und nicht nur printf durch cout ersetzen
).
Klar muss der µC auch dafür ausgelegt sein, bei einem Atmega8 macht C++ wohl kaum Sinn
(ich glaub es gibt nicht mal einen C++ Compilter dafür)
-
jajaja schrieb:
Das mit dem C++ setzt sich aber hauptsächlich deshalb nur langsam um, weil die meisten Embedded Programmierer C gewöhnt sind, und der Umstieg ist nach vielen Jahren C doch etwas komisch, weil es halt ein anderes Konzept verfolgt...
na, das glaub ich nicht. auf PCs hat sich C++ gegenüber C sehr schnell durchgesetzt (ja, ich weiss, das ist auch schon länger her und heute gibt es bessere alternativen). aber im embedded-bereich will irgendwie keiner so recht was von C++ wissen. selbst die abgespeckte variante http://de.wikipedia.org/wiki/Embedded_C%2B%2B findet keiner so richtig toll.
-
+fricky schrieb:
aber im embedded-bereich will irgendwie keiner so recht was von C++ wissen...
In letzter Zeit kenne ich das irgendwie anders. Keiner will im Embedded-Bereich was von C und Assembler wissen... Alle stehen irgendwie auf C++. Hängt aber natürlich davon ab, was für ein Embedded-System programmiert werden muss. Und so kann man darüber keine richtige Verallgemeinerung machen.
Ich habe persönlich noch nie ein Projekt für ein eingebettes System "erlebt", dass vollständig in Assembler realisiert wäre. So viele waren es ja auch nicht, die ich miterleben durfteUnd die, die ich miterleben durfte, sind entweder vollständig in C oder in C++ und ein ganz kleiner Teil, Interrupt-Routinen, mit ein bisschen Assembler-Code, der nichts anderes macht, als bestimmte C-Funktion aufzurufen...
-
abc.w schrieb:
In letzter Zeit kenne ich das irgendwie anders. Keiner will im Embedded-Bereich was von C und Assembler wissen... Alle stehen irgendwie auf C++.
und hinterher jammern sie rum, weil's nicht mehr in den speicher passt oder weil zu wenig RAM da ist. typischer anfängerfehler, hab ich schon oft erlebt. ich persönlich würde mich nur an einen controller mit C++ wagen, wenn mindestens 1MB RAM und 1MB programmspeicher vorhanden sind.
abc.w schrieb:
Ich habe persönlich noch nie ein Projekt für ein eingebettes System "erlebt", dass vollständig in Assembler realisiert wäre.
ich schon, einige kleine billigcontroller, HC08, PIC und so. in asm kann man unglaublich kompakten und performanten code schreiben, das schafft kein compiler.
-
+fricky schrieb:
ich schon, einige kleine billigcontroller, HC08, PIC und so. in asm kann man unglaublich kompakten und performanten code schreiben, das schafft kein compiler.
Der Vorteil dabei ist, Du und nur Du kannst den Code verstehen, debuggen, warten, erweitern usw. - das schafft kein Kollege mehr
Das ist ja eine Art Arbeitsplatzversicherung...
-
abc.w schrieb:
+fricky schrieb:
ich schon, einige kleine billigcontroller, HC08, PIC und so. in asm kann man unglaublich kompakten und performanten code schreiben, das schafft kein compiler.
Der Vorteil dabei ist, Du und nur Du kannst den Code verstehen, debuggen, warten, erweitern usw. - das schafft kein Kollege mehr
Das ist ja eine Art Arbeitsplatzversicherung...
aber nein. in diese kleinen controller passt naturgemäss nicht so viel code, als dass es irgendwann mal unüberschaubar werden könnte. in asm kommentiert man auch viel mehr, als in hochsprachen. ist alles kein probelm.
-
+fricky schrieb:
in diese kleinen controller passt naturgemäss nicht so viel code, als dass es irgendwann mal unüberschaubar werden könnte.
Wenn da nicht so viel Code reinpasst, was macht man denn Sinnvolles ausser Pins Toggeln mit so einem Controller...
Ist nur ein Scherz, ich verstehe schon, was Du meinst.
Es gab mal auf mikrocontroller.net einen interessanten Thread, da hat einer geschrieben, er habe ein Embedded System, dessen -gesamtes- Programm in Assembler geschrieben sei, und wenn man es assembliere, mehr als halben Megabyte binären Code (wirklich ausführbaren Code) erzeuge! Und seine Frage war, er müsse angeblich alles in C umschreiben, wisse aber nicht, wieviel binären Code der C-Compiler dabei ausspuckt und ob der Flash und der RAM auf dem Board dann dafür ausreichen würden...Also scheinbar gibt es schon "echte" Projekte, wo sich einer hinsetzt und alles in Assembler schreibt und zwar nicht, weil er wenig Flash hätte...
-
^^ja, auf mikrocontroller.net hat auch einer eine art OS plus basic-interpreter komplett in assembler gecodet. sowas machen nur echte freaks. aber andererseits, wenn man eine assemblersprache perfekt beherrscht und jahrelang übung hat, programmiert man darin wie in einer hochsprache. man hat seine bibliotheken, macro-blöcke und vieles mehr, das man für neue projekte wiederverwenden kann. ausserdem gibt's ja noch sowas: http://webster.cs.ucr.edu/AsmTools/HLA/
-
Ich finde, Assembler zu Lernen macht genausoviel Spaß wie Algorithmen lernen und verbessern oder in Basic, Java, C, D, Pascal, Fortran, Ruby oder Html oder Tabellenverarbeitungen usw. zu programmieren. Nur leider sind bei Assembler die Dokumentationen oder Bücher oft hoffnungslos veraltet oder didaktisch nicht wirklich gut.