Gebiete in Assembler

Hallo Leuts, ich habe vor kurzem angefangen Assembler zu lernen, an sich nur um mich genauer mit der Funktionsweise des Prozessors zu beschäftigen, ich hatte nicht vor groß mich allzusehr damit zu beschäftigen. Aber ich überlege grade, ob es vielleicht doch sinnvoller wäre mehr damit anzustellen, ich meine jetzt aber nicht einen Bootloader oder einen Kernel zu programmieren :D Für wie sinnvoll hält ihr das und für was kann das alles gebrauchen, ich mein jetzt sowas wie disassemblern oder vielleicht einen kleinen Treiber. Würde mich freuen wenn ihr nicht nur die negativen Seiten schildert, sondern auch positive MfG
 
Es ist so dass viele Argumente für Assembler heute einfach nicht mehr gültig sind. Platz und Hertz sind keine Gründe mehr und die Compiler der Hochsprachen sind auch bis nach Meppen optimiert. Darüber hinaus haben auch die letzten Coder erkannt, dass es für alle besser ist, Code zu schreiben, den auch andere noch lesen können.

Wenn du also den Acker lieber von Hand umgräbst als den Pflug zu benutzen ist das deine ganz persönliche Präferenz die schon fast in Richtung Poem&Art geht statt wirklich "nützlich" zu sein ;)

Und etwas lernen ist nie verkehrt ;)
 
Ich will natürlich auch weiterhin bei C++ bleiben wenn es ums programmieren geht, ich frag nur wegen Debuggern z.B oder disassembeln, wie wichtig das ist.
 
Ich will natürlich auch weiterhin bei C++ bleiben wenn es ums programmieren geht, ich frag nur wegen Debuggern z.B oder disassembeln, wie wichtig das ist.

Das wirst du - wie der Name schon sagt - Kenntnisse des betreffenden Assemblers brauchen können. Bei Eigenentwicklungen kannst du ja den code mit entsprechenden Compilerflags im orgiginalcode debuggen.
 
Wenn du also den Acker lieber von Hand umgräbst als den Pflug zu benutzen ist das deine ganz persönliche Präferenz die schon fast in Richtung Poem&Art geht statt wirklich "nützlich" zu sein

Naja, es gibt schon "Anbaugebiete" wo moderne Agrartechnik zu viel Overhead hat.
Allerdings sollte dann eben das Interesse an diesen Gebieten sehr hoch sein, egal ob
dies embedded Systeme, Steuerungstechnik oder eben Reverse Engineering ist, es ist ein
sehr langer Weg bis man dort echte Erfolge hat. Im Hobbybereich ist es wohl eher so,
dass der Overhead keine Rolle spielt und individuelle Hardware die Kosten/Nutzen Rechnung nicht überlebt.

Gruß
 
Ich glaube, dass das Lernen von Assembler sehr nützlich ist (vor allem fürs Verständnis, nicht unbedingt für die Praxis).
Ich war richtig erstaunt, wie ich bemerkt habe, dass alles was wir mit PCs machen eigentlich nur Rechenoperationen und Lese-/Schreibzugriffe auf den Speicher sind...

Mir haben meine x86-Assembly Kenntnisse bisher mit einer Programmiersprache geholfen (BlitzMax). Deren Compiler kompiliert nämlich nach Assembler und wenn aus Anwendersicht etwas unvorhergesehenes passierte (es ist keine weit verbreitete Sprache), dann konnte ich im Assemblercode nachsehen, was passiert ist.
Es dürfte generell sehr nützlich sein, wenn du dich mit Compilerbackends oder -optimierungen beschäftigst.

Ich habe auch mal ein kleines Programm für DOS geschrieben, das Textdateien anzeigen konnte (und mit pfeiltasten und bild-auf/ab scrollen). Das hat schon Zeit gekostet und besonders sinnvoll war es vielleicht nicht, aber ich war am Ende schon stolz darauf :)
Und ein Freund und ich haben mal FreeDOS preemptives Multitasking verpasst... :D
 
Es ist so dass viele Argumente für Assembler heute einfach nicht mehr gültig sind. Platz und Hertz sind keine Gründe mehr und die Compiler der Hochsprachen sind auch bis nach Meppen optimiert. Darüber hinaus haben auch die letzten Coder erkannt, dass es für alle besser ist, Code zu schreiben, den auch andere noch lesen können.

Wenns ums Programmieren von Applikationen geht, bin ich voll bei dir. Der Aufwand steht hier einfach nicht in Relation zum Ergebnis. Wenns ums Verstehen von Applikationen geht, dann sehe ich dagegen durchaus einen Nutzen für Assembler. Sei es im Reverse Engineering, in der Malware-Analyse, im Compilerbau oder in der Hardware-nahen Microprozessorprogrammierung, oder im High Performance Computing. Ja, Compiler wie gcc sind optimiert - aber eben nur für allgemeine Themen, nicht aber für spezielle Anwendungsgebiete. Und ja, Dissassembler können C-Code wieder herstellen - aber nicht, wenn dieser vorher obfuscated wurde.

IT ist dazu da, um sich das Leben zu vereinfachen. Mit diesem Hintergedanken sollte auch die Vorgehensweise (z.B. Spache, Design, Methodik, ...) wählen, um ein bestimmtes Problem zu lösen.
 
Anwendungsgebiete für Assembler

Also gerade wenn es um Programmierung von Mikrocontroller (kleine Mikrocontroller) geht wird gerne Assembler verwendet. Kann auch bei größeren Mikrocontroller interessant sein, da man mit Assembler effizienter arbeiten kann.

Da ich gerade auf Ausbildungsplatz-Suche bin, weiß ich das gerade auch Firmen welche auf die Programmierung (und Entwicklung) von Steuerungs- und Regelsystem spezialisiert sind, auch teilweise Assembler verwenden.

Im wissenschaftlichen Bereich wird Assembler auch noch verwendet, gerade wenn es um sehr zeitkritische Berechnungen bzw Simulationen geht.

Mit freundlichen Grüßen

Christian
 
Im wissenschaftlichen Bereich wird Assembler auch noch verwendet, gerade wenn es um sehr zeitkritische Berechnungen bzw Simulationen geht.

Kannst du das irgendwie belegen?
Meine Erfahrung im Studium und als SHK können da leider nur vehement widersprechen bisher. Mag aber auch sein, dass ich einfach im falschen Spektrum bin.

Generell möchte ich mich aber anschließen und für mich persönlich sagen, dass insbesondere systemnahe Programmierung sehr spannend ist. Dabei sind Assembler-Kenntnisse sehr hilfreich, allerdings in geringerem Maße als C.

Wenn du dich irgendwann weniger mit Assembler an sich beschäftigen möchtest, aber dennoch möglichst "low-level" arbeiten möchtest würde ich dir auch gerne Rust empfehlen. Diese Sprache wirkt auf mich solide (habe sie bisher nur für kleine Spielereien / CryptoChallenge genutzt) und hat wirklich Potenzial.
 
Zurück
Oben