asm stirbt aus



  • mir ist durchaus bewusst, dass assembler nicht mehr oft benutzt wird ABER mir wurde gesagt, ich solle auf gar kein fall damit anfangen weil es bald aussterben wird.

    mir macht assembler spaß aber ist es trotzdem für meine programmier erfahrung hilfreich assembler zu verstehen? auch wenn ich andere sprachen benutze`?
    und stirbt die überhaupt aus?

    hätte schon lust, die nächsten jahre bisschen was mit assembler zu machen 🙂



  • Assembler wird NIEMALS aussterben. Es ist meiner Meinung nach sehr hilfreich Assembler zu können. Der OllyDebugger hat mir schon öfters bei der Fehlersuche geholfen, da sieht man wenigstens was die eigenen Programme machen die man in den Hochsprachen schreibt.

    Und was würden die Malware Analysten machen wenn keiner mehr Assembler verstehen würde. (Die bösen Buben würden sich freuen 😃 )

    Oder wenn das Hochsprachen Programm zu langsam ist und der Compiler selbst mit dem tollsten Algorithmus keinen schnelleren Code mehr erzeugen kann.

    Dann kann man z.b. schauen ob bestimmte Code Teile z.b. mit Inline Assembler verbessert werden können.

    Dann wäre Steve Ballmer vermutlich auch sauer da Microsoft dann kein Windows 9 (Ist bestimmt schon in der Entwicklung 🕶 ) oder 10 verkaufen könnte.^^

    Es sei den bis dahin würde etwas anderes entwickelt werden was Assembler gleich ist.



  • Solange es keine CPUs/Mikroprozessoren gibt, die direkt HLL-Quelltext interpretieren können, wird es auch Assembler geben.



  • asm stribt aus

    Schwachsinn. Mit was sollte man dann Systemprogrammierung auf unterster Ebene betreiben? Mit Java? Klar, praktisch niemand mehr wird rein Assembler programmieren - wäre auch nicht produktiv. Aber zumindest die Prinzipien verstehen und etwas Nachvollziehen können mit Dokumentation ist doch wichtig, damit man ein Gefühl hat, wie etwas auf dem Computer funktioniert. Das gehört zum Wissen eines Informatikers, finde ich.

    Im Studium (soll heissen: Es wird auch noch immer an den Universitäten gelehrt) hatten wir denn auch eine Einführung in Assembler (was die meisten recht entspannend gefunden hatten): Grundlegende Operationen und Konzepte, Umwandlung Hochsprache (= C) <=> Assembler und Binary, Betrachtung im Debugger, Calling Conventions, ...; wenn man das mal gesehen und verstanden hat, programmiert man nachher mit einem anderen Verständnis.

    Es ist nicht mal wichtig, was für eine Architektur man lernt. Hauptsache, man lernt, dass es am Ende immer solche Architekturen gibt, egal, worauf man arbeitet.



  • /rant/ schrieb:

    Das gehört zum Wissen eines Informatikers, finde ich.

    Zum Wissen einer Berufsgruppe gehört immer exakt das, was man selbst kann.



  • wer_klown schrieb:

    mir ist durchaus bewusst, dass assembler nicht mehr oft benutzt wird ABER mir wurde gesagt, ich solle auf gar kein fall damit anfangen weil es bald aussterben wird.

    Aussterben? Ist das etwa Technikdarwinismus? Assembler ist eine Schöpfung Gottes und wird erst am Ende aller Tage vergehen! Dagegen sollte man Häresien wie etwa C++, Java und sonstiges objektorientales Teufelszeug mit Feuer und Schwert bekämpfen! 🤡

    Schönes Wochenende und Prost!

    viele grüße
    ralph



  • Assembler ist doch schon lange tot, so seit 20/30 Jahren nach offizieller Meinung.
    Nur gut, dass nie gesagt wurde, dass man für Windows viel mehr Lowlevel Know How und Assembler brauchte, als vorher - sofern man nicht auf Basic zurückgreift, aber Basic ist angeblich auch von Gestern, und die wenigsten wissen vermutlich, dass Basic und Assembler eine sehr viel bessere Didaktik haben.

    Die gute Assemblerdidaktik relativiert sich allerdings ein wenig wegen fehlenden Dokumentationen und fehlenden guten und umfangreichen Einführungsbüchern oder Texten. Man ist ein wenig auf sich alleingestellt, aber es schadet letztlich auch nicht, wenn man sich halt öfter mit Disassemlings beschäftigt.

    Und die Zukunft dreht sich deutlich sichtbar um Parallelisierung, also
    Entwicklungen wie

    http://openmp.org/wp/
    http://www.codeproject.com/Articles/19065/Begin-Parallel-Programming-With-OpenMP
    http://www.nvidia.com/content/CUDA-ptx_isa_1.4.pdf
    http://www.haskell.org/haskellwiki/Haskell_in_5_Schritten

    im Auge behalten.

    Und außerdem ist es wichtig, zu schauen, wie weit du selbst, bezogen auf deine Bedürfnisse, mit den neueren Assemblern kommst, und was dir wirklich Spaß macht. Dann kannst du nämlich selbst entscheiden, was für dich nützlich oder toll ist und was nicht, und nicht andere.



  • Es kommt drauf an, wer du bist und was du machen willst. Ist programmieren für dich ein Hobby, kannst dir Assembler ruhigen Gewissens sparen. Für Informatiker finde ich es aber unerlässlich, Assembler zu verstehen. Sonst hat man nur eine relativ abstrakte Vorstellung davon, wie Computer und Programme wirklich funktionieren.



  • auch als hobby programmierer kanns überhaupt nicht schaden und ist sogar manchmal unerlässlich. Außerdem muss man sagen klar wird asm auf computern nicht mehr primär verwendet um winword oder große spiele... zu schreiben (hat man auch nie) doch tatsache ist, dass alles darauf basiert. Und gerade im Hardware bereich bei Microprozessoren wie z.B. Atmega8 ist man mit asm nie schlecht dran. Klar können viele auch mit C umgehen aber trotzdem ist Asm immernoch die schnellere und manchmal sogar fast einfachere variante zu c



  • Assembler eine sehr viel bessere Didaktik

    Lol, vor allem bei CISC-Architekturen.

    Zukunft dreht sich deutlich sichtbar um Parallelisierung

    Naja, ich habe vor 12 Jahren meine erste Anwendung mit pthreads geschrieben. GPGPU ist so alt wie Shader selbst (fast).

    Sonst hat man nur eine relativ abstrakte Vorstellung davon, wie Computer und Programme wirklich funktionieren.

    Das kann man aber noch weiter treiben. Wer nie einen FPGA ..., nie einen Transistor auf dem Steckbrett, ... und natuerlich die Zunkunft und wieviel einem das bringt. Ich freue mich persoenlich auf eine zukuenftige Kopplung von Mikroprozessoren und FPGA. Xilinx und Altera haben da was mit Arm am basteln.



  • knivil schrieb:

    Das kann man aber noch weiter treiben. Wer nie einen FPGA ..., nie einen Transistor auf dem Steckbrett, ...

    Kann man, muss man aber nicht 😉 Ich habe im Studium einiges über Prozessorarchitekturen und die Physik dahinter gelernt und fand das auf jeden Fall interessant. Aber so wichtig wie Assembler finde ich das nicht. Wenn man kein Assembler kann, versteht man einfach nicht, wie C++ usw. wirklich funktioniert. Das sind einfach die Basics, die dazugehören.



  • knivil schrieb:

    Assembler eine sehr viel bessere Didaktik

    Lol, vor allem bei CISC-Architekturen.

    Dieses Überlegung finde ich vor dem Hintergrund umfangreicher Api-Funktionsbibliotheken etwas gewagt, ganz davon abgesehen, dass viele Befehle sowieso nur alte Bekannte sind, oder einander wohltuend ähnlich oder manche exotischen Befehle sowieso nur für spezielle Bereiche interessant.

    Aber Funktionsbibliotheken sind toll, und mal abgesehen von der gas-Sythax ist es schön in Linux Assembler und den klassichen C-Funktionen zu programmieren. Auf der Fasm-Seite gibts auch eine kleine Systemlib für sowat z.B.
    http://flatassembler.net/examples/flibc.zip



  • Naja, wahrascheinlich hast du noch kein Arm oder eine andere RISC-Architektur programmiert. Allein die Tatsache, dass Befehle 3 Operanden, also Source- und Destinationregister besitzen, fuehlt sich einfach besser an. Push, pop, Lea und gefuehlte zwanzigtausend Addressierungsarten, bedingte Ausfuehrung von Instruktionen (keine jmps) ... oder oder oder ...

    Wieviel Instruktionen und Register benoetigt ein einfaches minmax (ohne Laden der Werte in Register), also:

    if (i > j)
    {
      temp = i;
      i = j;
      j = temp;
    }
    

    Bei Arm sind es 2 Instruktionen und 2 Register. Wo braucht man das? Na Beispielsweise Bildverarbeitung und Medianberechnung bei 3x3. Toll das wir ausreichend Register zur Verfuegung haben: Laden, minimales Sortiernetzwerk mit 25 Vergleichen => 50 Takte, Median auswaehlen, fertig. Gibt es auch mit 64 oder 128 Register. Welch ein Glueck, dass sich fuer x86 durch die ganzen Erweiterungen mehr Register und Multimediabefehle wie SSE, bessere Sprungvorhersage etc. hinzugekommen sind. Fairerweise soll gesagt sein, dass x86 mittlerweile einige Befehle auch bedingt ausfuehren kann, bei Arm ist es Standard bei fast jedem Befehl.



  • Assembler wirst du auch bei sehr kleinen Mikrocontrollern immer benötigen, als Beispiel sei der ATtiny2313 von AVR genannt. Da hast du sehr wenig RAM (128 Bytes) und Programmspeicher (2KB), da könnte man selbst C Programme kaum drauf laufen lassen, weil da kaum eine Lib in den Programmspeicher passt.

    Von Java & Co wollen wir da gar nicht erst reden. 😉

    Von daher wird ASM niemals aussterben.



  • knivil schrieb:

    ...

    Zum Teil schon wieder so gewagt 😉
    Würde mich jetzt aber nicht so an den Begriffe Risc und Cisc orientieren, da ältere oder kleinere Mikros ja auch "Risc" wären. Und die 68000er waren eigentlich auch viel besser, als die Intelteile, nur leider nicht so schön kompatibel. Hätte die Dinger sich vernünftig weiterentwickelt, hätte heutzutage wohl kaum einer einen Intel-Prozessortyp-PC.

    Risc müsste man fairerweise gleich denken als (RISC+Hochsprachencompiler), was dann wieder wenig mit Assembler zu tun hätte, sondern eher mit der Beschränktheit von Compilern. Aber die vielen Möglichkeiten beim Intel kommen mir manchmal ziemlich überflüssig vor, wozu soll das gut sein, x auf 5 oder mehr unterschiedliche Arten hinzubekommen?

    Und jetzt mal unabhängig von Risc und Cisc und Didaktik: Weißt du ein gutes Entwicklungskit für die neueren ARMS?
    ( http://www.heise.de/ct/artikel/Prozessorgefluester-1370336.html macht ja Lust auf mehr )



  • Burkhi schrieb:

    Assembler wirst du auch bei sehr kleinen Mikrocontrollern immer benötigen, als Beispiel sei der ATtiny2313 von AVR genannt. Da hast du sehr wenig RAM (128 Bytes) und Programmspeicher (2KB), da könnte man selbst C Programme kaum drauf laufen lassen, weil da kaum eine Lib in den Programmspeicher passt.

    Von Java & Co wollen wir da gar nicht erst reden. 😉

    Von daher wird ASM niemals aussterben.

    Den ATTiny2313 habe ich gerade in der Mangel. Das geht mit C richtig gut 🙂



  • @nachtfeuer: fuer den Einstieg wuerde ich nichts kostenintensives nehmen. Privat habe ich nur das von http://mbed.org/ . Daneben gibt es noch BeagleBoard und sein Nachfolger Pandaboard. Aber Entwicklungskits mit viel Support etc. gibt es da nicht.

    Das geht mit C richtig gut

    Ja, nutze ich neben C++ auch meistens. Aber ich schau mir bei einigen Funktionen den ASM-Code an und doktere daran rum, bis der ASM-Code passt. Andernfalls muss ich selbst einschreiten.



  • Das reine in asm programmieren stirbt immer mehr aus. Aber in intrinsics (oder halt inline assembler) lebt es noch ewig weiter.

    Habe letztens versucht einem Compiler beizubringen, anstatt der Instruktion MUL eine Instruktion MULS (Multiplikation mit Sättigung bei Überlauf) zu benutzen. Ohne (inline/intrinsics) asm keine Chance.



  • nachtfeuer schrieb:

    Und jetzt mal unabhängig von Risc und Cisc und Didaktik: Weißt du ein gutes Entwicklungskit für die neueren ARMS?

    Wie Knivil schon meinte, zum Anfang lieber was kleineres. Ziemlich interessant sieht das Maple-Board aus. Hat einen Cortex-M3 in Form des STM32 F103RB von STMicro drauf. Das tolle daran ist, dass das Board dort wo es geht, mit den Arduinos kompatibel gehalten wurde. Die komplette Toolchain ist in Form von Opensource-Software verfügbar und es gibt ähnlich Arduino eine Library, die einiges abstrahiert und einen in einem recht bequemen C++-Dialekt programmieren lässt. Nötig ist die Nutzung davon aber natürlich nicht. Theoretisch sollte man dort alles, was der GCC für ARM-Targets bauen kann, auch zum Laufen bekommen. Das ganze ist auch außerhalb des Datenblatts recht brauchbar dokumentiert. Kostet 40 €.

    Gibt jetzt anscheinend auch eine etwas teurere Variante mit 1 MiB onboard SRAM. Dafür wurde halt die Kompatibilität mit dem Arduino-Layout aufgegeben. Sieht ebenso interessant aus, dürfte aber noch schwer verfügbar sein. Das normale Maple bekommt man halt an jeder Ecke.

    Ansonsten gibts eben noch Beagle- und Pandaboard, die aber in einer völlig anderen Liga spielen.

    http://leaflabs.com/devices/maple/

    In Deutschland kaufen kann man die Maples z.B. bei Watterott, die btw auch gerade PandaBoards auf Lager haben.


Log in to reply