[ASM] Assembler

1zero4zero

Cadet 4th Year
Registriert
Jan. 2006
Beiträge
122
Hallo!

Kann mir jemand ein gutes Buch oder ein gutes Tutorial für Assembler empfehlen.


Danke
 
AW: Assembler

Hey!

Es geht darum, das ich wohl ab dem Sommer nach Russland gehe. Wer weiß mit was ich dort es zu tun bekomme. Kann zumindest nicht schaden.
Ausserdem kann man damit ja alles lernen, oder.


danke
 
AW: Assembler

Ausserdem kann man damit ja alles lernen, oder.

Es kommt immer drauf an was du machen willst.
Bei Microcontroller oder derartiges ist Asembler schon ok.
Wenn du mehr "Software" für den PC programmieren willst, bist du bei dieser Sprache falsch.

Dann fang lieber mit c/c++ oder Java an.

MFG Gloomyslayer
 
AW: Assembler

Hey.

Das Problem bei C,C+,C++ und Java denke ich, das diese Programme ja sehr oberflächlich ist. Zumindest was die Feinprogrammierung betrifft. Aber ich lass mich gerne etwas besserem beraten.
 
AW: Assembler

Was willst du denn mit "Feinprogrammierung" sagen?

C ist ziemlich hardware nah, auch C++ ist noch recht dicht dran. Eine Sprache namens C+ gibt es nicht. Java ist nicht hardwarenah sondern plattformunabhängig. Ein Vorteil, den man mit Assembler nie erreichen kann. Bis auf einige wenige Spezialanwendungen, vor allem im Mikrocontroller-Bereich und Compilerbau, ist das eine tote Sprache.
 
AW: Assembler

Ist halt bei assembler das Problem wenn du zum Beispiel Microprozessoren programmierst das diese oft unterschiedliche Instruction Sets haben und du dich dann wieder auf neue immer wieder einstellen musst. In der ni haben wir zum Beispiel zum einen einen Motorola HC11 programmiert der hat nen CISC Befehlssatz und dann nen Atmel der hat nen RISC Befehls Satz das ist dann schon ein wenig unterschiedlich.

MfG
Msp2601
 
AW: Assembler

Mit Feinprogrammieren meine ich das bei allen anderen Programmiersprachen ja eigentlich nur Assemblerbefehle zusammen gefasst werden.
Korrigiert mich wenn ich falsch liege.
Aber näher als die Maschiensprachen, wäre doch nur noch binär, oder?
Ich mochte nur immer für den Notfall Delphi, C oder was auch immer auf Assembler lesen können. Das hätte meiner Ansicht nach große vorteile. Man muß nicht jede Programiersprache lernen.

Zu der Toten Sprache:

Latein ist auch tot, trotzdem benutzt es jeder. Genau wie Assembler, wenn auch weit entfernt.
 
AW: Assembler

In Assembler schreibt man aber keine ganzen Programme mehr (zumindest auf dem PC), sondern löst Mikroaufgaben, die sich in einer Hochsprache nur unzureichend lösen lassen. Performance zählt mich Sicherheit nicht dazu. Bis du besser optimieren kannst als ein heutiger Compiler vergehen Jahre. Und du musst dich ständig mit neuen Prozessorarchitekturen und Befehlen befassen. Und jeder Befehl verhält sich auf jedem Prozessor anders. Du musst dir Gedanken über Prefechting, Cache-Hits etc. machen.

Grundlegende Assemblersachen lesen zu können, kann zwar von Vorteil sein - ich habe es ehrlich gesagt aber noch nie wirklich gebraucht.


Edit:
Öhm jeder benutzt Latein? Hmm naja...
 
Zuletzt bearbeitet:
AW: Assembler

Insbesondere was Geschwindigkeit angeht muss ich 7H3 N4C3R voll zustimmen, wirklich nur ein Bruchteil aller Programmieren schreiben effizienteren Assembler-Code als der Compiler generiert (wer das nicht glaubt kann das ja mal selbst testen und beim Compiler wirklich alle Optimierungen einschalten). Aber wer das ausprobieren möchte dem empfehle ich für den Anfang mal das "Intel-IA32 Architecture Optimization Reference Manual" wer das durchhat dem sollte klar sein das Optimierungen nichts sind was sich mal eben schnell lernen lässt - interessant ist es zwar aber leider halt auch extrem aufwändig :-)
 
AW: Assembler

Ich hab auch mal ein paar Programme mit Assembler geschrieben.
Die Dateigröße hat mich am meisten beeindruckt.
5KB für einen C&C: Generals Trainer.

Wenn ich in C++ einfach ein Fenster kompiliere (nur die windows.h eingebunden), dann hab ich gleich 20KB.
Aber wenn man den Code richtig optimiert, bekommt man das bestimmt auch in C++ hin.
Siehe µTorrent. Der is auch in C++ geschrieben. Verwendet allerdings "maßgeschneiderte" Header und wurde mit PE nochmal gepackt.

Was ich allerdings sagen wollte. Das Tutorial hier hat mich beeindruckt.
Und hier gibt es eine deutsche Übersetzung.
 
AW: Assembler

Danke erstmal für den Link.

Diesen Aspekt hatte ich völlig vergessen. Aber nochmal zum eigentlich Thema.
Der Vorteil ist das ich damit Problem bei der Programmierun mit C oder dergleichen auftreten leichter beheben kann. Wenn ich den richtigen Sektor habe und weiß was ungefähr falsch ist.
Das man sich ständig Prozessorarchitekturen und Befehlen befassen muß ist klar, nur das ist in den einzelnen Programmiersprachen nicht anders. Hauptproblem und da muß ich euch zustimmen ist der Zeitaufwand. Aber wenn man einmal ein Tool oder ein Programm fertig hat, steht das. Dazu der große Platzspareffekt.
Sicherlich ist das in der heutigen Zeit nicht wirklich das Problem, nur wenn ich bedenke wie schnell solche Programme werden, tja.

Zu Latein: Das Benutzt Jeder ohne Ausnahme, nur die meisten wissen es nicht!

In diesem Sinne: Es leben die "Plebs"
 
AW: Assembler

Beruflich bin ich mit hardwarenaher Softwareentwicklung für Embedded Systeme beschäftigt.
Momentan ein Steuergerät für eine Aktivlenkung in PKWs.
Wir programmieren das alles in C (nix C++). Natürlich ist es unabdingbar, dass man beim Debuggen mal den Assemblercode anschaut, der von Compiler erzeugt wird, aber Assembler selbst schreiben tut hier praktisch keiner. Außer mal ein "__asm( "nop" )" schreibt man kein Assemblercode.

Für ein Embbeded System mit wenig Rechenpower und Speicher, ist Assemblerprogrammierung "vielleicht" noch sinnvoll , für einen PC ist es schlichtweg Blödsinn.
7H3 N4C3R hat es schon gesagt. Ich werde es mal umformulieren: Selbst ein schlechter Compiler erstellt besseren Assemblercode als als die allermeisten guten Entwickler.

Wenn man den C-Code sieht und daneben den Assemblercode und dann versteht was passiert reicht es schon.

By the way: Ich kann mit Assemblercode für x86 (CISC) gar nix anfangen. Habe mich nie damit beschäftigt. Selbst das Registerlayout der x86 Prozessoren war mir immer Rätsel.
Ich mag da eher RISC Prozessoren. Einfaches Registerlayout, viele Register, und wenige, aber einfache Assembleranweisungen.
Auf neudeutsch: RISC rules :).
 
AW: Assembler

Hallo 1zero4zero,

ich verstehe ja Deinen Ansatz und Deine Motivation. Aber in der Realität lässt das sich imho nicht umsetzen.

Probleme mit höheren Programmiersprachen werden nicht auf Assemblerebene gelöst. Sollte ein Compiler wirklich fehlerhaften Code erzeugen, so lässt sich ein derartiger Fehler nicht sinnvoll manuell korrigieren. Das wäre mit einem viel zu hohen Zeit und Kostenaufwand verbunden. Da wird dann eher der Compiler gewechselt oder das Problem anders angegangen.

Ausserdem falls dich das Problem so stark beschäftigt, es gibt auch validierte Compiler.

Wird z.b. in sicherheitskritischen Anwendungen benutzt. Da ist dann genau vorgeschrieben was man machen darf und was nicht und der daraus resultierende Code ist dann auch in Ordnung.

Sicher kommt es vor das Compiler oder Libraries Fehler aufweisen, das ist aber dann eher die Ausnahme. Es ist sicher auch nicht falsch Assembler zu können.

Es bringt aber wesentlich mehr C/C++ oder Java zu können. Zumindest in Bezug auf berufliche Aussichten/Chancen.

D.h. schau Dir Assembler an, aber glaube nicht damit alles erschlagen zu können.

Schreib mal eine Windows Anwendung in Assembler oder versuche mal Windows System DLLs auf Assembler Ebene zu verstehen. Da sieht man kein Land mehr. Nach der tausendsten Indirektion und schon alleine auf Grund der fehlenden Dokumentation ist das nicht handhabbar.

Aus meiner Sicht ist Assembler "nice to have" aber eine höhere Programmiersprache sehe ich als Muss an. Ausser Du hast vor nur Mikrocontroller zu programmieren und sonst nicht anderes.

MfG

Arnd
 
hier mal ein sehr interessantes bsp. für assembler in der gui-programmierung (das man einfach mal weiß, welcher aufwand das ist.)

http://www.kdedevelopers.org/node/951

das ist völlig harmlos. ein programmierer hat sich einfach mal den spaß erlaubt hello-world die qt-variante in assembler unter linux zu schreiben. es sind nur 7 zeilen echter c++-code. (unter windows mit mfc wären es glaub ich paar mehr ;-). also nimmt in diesem fall der toolkit dem assembler-programmierer noch mächtig viel arbeit ab.) alles was über dieses hello-world bsp. mit den vielen kommentaren hinausgeht, ist schlicht nicht mehr verstehbar, wenn du keinen mehrere tage zeit hast.
ach ja wie er auch schon schreibt: der code funktioniert nur mit der vom ihm verwendeten version von qt.
 
Wie gesagt, man sollte es etwas können, und dazu C oder C++. Dann denke ich das man relativ gut durch PC-Leben kommt.

Danke an alle die die Info´s und die Link´s
 
Zurück
Oben