Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Suche Buch - x86 Assembler Programmierung
g1o2k4 - Mi 06.08.08 14:47
Titel: Suche Buch - x86 Assembler Programmierung
hallo
ich hab schon bei allen moglichen anlaufstellen gesucht...
amazon,ebay,buecher.de
aber es gibt echt keine guten bücher zur x86 asm programmierung.
ich hab keine lust das intel reference manual zu wälzen. ich such eher so ein buch wie es das auch für jede programmiersprache gibt. mit einführung, vertiefung und beispielen.
kennt jemand soetwas ?
Moderiert von
Christian S.: Topic aus Sonstiges (Delphi) verschoben am Mi 06.08.2008 um 15:34
Timosch - Mi 06.08.08 15:05
Allgemein? Oder bezogen auf ein bestimmtes Betriebssystem? (Windows?)
Timosch - Mi 06.08.08 15:48
Tilman hat folgendes geschrieben: |
Sry, bin noob, aber x86 ist doch das ganz stinkormale Grund-Assembler oder? |
x86 bezeichnet eine Prozessorarchitektur, die mit dem Intel 8086 begann und 16-bittig war. Häufig verwendet man sie auch für die nachfolgende 32-bit-Architektur ab dem 80386. Oder in einem Wort: Ja. :mrgreen:
mindtrap - Mi 06.08.08 15:55
Hi,
ich kann dir nur diese Seite hier empfehlen:
http://www.masm32.com/
Da wird dir zu jedem Assembler geholfen.
Grundsätzlich ist es vielleicht nich verkehrt, wenn du dich für einen Assembler entscheidest
und dann die - so gut wie immer - beiliegenden Tutorials und Hilfestellungen durcharbeitest.
Weitere gute Quellen gibt es überall im Netz zu finden und auch im obigen Forum.
Ich für meinen Teil kaufe mir nur noch Bücher, wenn es um spezifische Probleme geht und
bis jetzt konnte ich noch so gut wie alles im Internet erfahren. (aber das kann jeder für sich entscheiden)
MfG
GTA-Place - Mi 06.08.08 15:55
Timosch hat folgendes geschrieben: |
Tilman hat folgendes geschrieben: | Sry, bin noob, aber x86 ist doch das ganz stinkormale Grund-Assembler oder? |
x86 bezeichnet eine Prozessorarchitektur, die mit dem Intel 8086 begann und 16-bittig war. Häufig verwendet man sie auch für die nachfolgende 32-bit-Architektur ab dem 80386. Oder in einem Wort: Ja. :mrgreen: |
Und als Zusatzinformation: x64 ist dann 64-Bit. Leicht verwirrend, weil x86 != 86 Bit :lol:
Tilman - Mi 06.08.08 16:16
jaja, ich weiß, wollte bloß sichergehen. Also das oben genannte Buch handelt von x86-Mnemonics. Bei Amazon steht zwar 2002 oder so, aber wenn ich mich recht erinner ist es ne neu-Auflage von 1990.
g1o2k4 - Mi 06.08.08 16:21
also mit x86 mein ich jetzt gängige 32bit cpus, die ja alle auf x86 basieren.
also z.b. pentium IV. und das in einem buch über assembler. so dass auch das cis dieser cisc-cpu miterläutert wird.
und noch zur info...x64 heißt zwar 64bit aber in der cpu läuft auch kein echter 64bit bus das sind höchstens 48bit oder weniger je nach cpu...
Timosch - Mi 06.08.08 16:42
GTA-Place hat folgendes geschrieben: |
Timosch hat folgendes geschrieben: | Tilman hat folgendes geschrieben: | Sry, bin noob, aber x86 ist doch das ganz stinkormale Grund-Assembler oder? |
x86 bezeichnet eine Prozessorarchitektur, die mit dem Intel 8086 begann und 16-bittig war. Häufig verwendet man sie auch für die nachfolgende 32-bit-Architektur ab dem 80386. Oder in einem Wort: Ja. :mrgreen: |
Und als Zusatzinformation: x64 ist dann 64-Bit. Leicht verwirrend, weil x86 != 86 Bit :lol: |
Zumindest sagen es manche so. Ist in der Tat schwachsinnig, denn dann müsste es auch x32 geben. Schließlich ist x86 zunächst mal 16-bittig. Deshalb: x86, x86-32 oder x386, x86-64 oder IA-64 (oder so ähnlich).
Tilman - Mi 06.08.08 16:52
Naja der letzte Äußerung g1o2k4s nach war meine Frage ja mehr als Berechtigt ;)
g1o2k4 - Mi 06.08.08 16:53
vorallem weil die aktuellen core 2 duos auf der pentium architektur basieren um platz zu sparen durch die kleine fertigungstechnik. also müsste die auch x86 heißen. obwohl sie em64t bzw heute intel64 unterstützen.
Reinhard Kern - Mi 06.08.08 17:29
Titel: Re: Suche Buch - x86 Assembler Programmierung
g1o2k4 hat folgendes geschrieben: |
hallo
...
aber es gibt echt keine guten bücher zur x86 asm programmierung.
ich hab keine lust das intel reference manual zu wälzen. |
Hallo,
das sind auch verschiedene Themen. Im intel werden die Maschinenbefehle (und die Mnemonics dazu) abgehandelt, aber nicht, wie man zu einer Programmstruktur kommt.
Wie man Makros schreibt oder Unterprogrammaufrufe usw., steht im Manual zum Assembler-Programm, z.B. MASM (Es gibt auch andere, und die sind auch nicht unbedingt kompatibel). Dafür steht im MASM32-Manual nur eine Übersichtsliste der Assembler/Maschinenbefehle.
Nur beides zusammen ergibt einen Sinn.
Gruss Reinhard
Timosch - Mi 06.08.08 18:00
g1o2k4 hat folgendes geschrieben: |
vorallem weil die aktuellen core 2 duos auf der pentium architektur basieren um platz zu sparen durch die kleine fertigungstechnik. also müsste die auch x86 heißen. obwohl sie em64t bzw heute intel64 unterstützen. |
...wobei AFAIK die Core 2 Duos intern wieder andere Befehlssätze benutzen. Stand mal in der c't. Hach, es macht so Spaß, zu fachsimpeln. :mrgreen:
Reinhard Kern hat folgendes geschrieben: |
Hallo,
das sind auch verschiedene Themen. Im intel werden die Maschinenbefehle (und die Mnemonics dazu) abgehandelt, aber nicht, wie man zu einer Programmstruktur kommt.
Wie man Makros schreibt oder Unterprogrammaufrufe usw., steht im Manual zum Assembler-Programm, z.B. MASM (Es gibt auch andere, und die sind auch nicht unbedingt kompatibel). Dafür steht im MASM32-Manual nur eine Übersichtsliste der Assembler/Maschinenbefehle.
Nur beides zusammen ergibt einen Sinn.
Gruss Reinhard |
Und drittens die APIs des jeweiligen Betriebssystems (Interrupts auf MS-DOS etc.) bzw. des BIOS (auch hier Interrupts).
Also in Kürze: Die Intel-Manuel sagt dir: Es gibt einen Befehl namens int. Die MASM32-Manuel sagt dir: Du kannst ihn daundda einsetzen. Die Interrupt-/API-Doku sagt: Wenn du 15h dran hängst, kommt Text raus. :-)
g1o2k4 - Mi 06.08.08 19:21
Titel: Re: Suche Buch - x86 Assembler Programmierung
Reinhard Kern hat folgendes geschrieben: |
g1o2k4 hat folgendes geschrieben: | hallo
...
aber es gibt echt keine guten bücher zur x86 asm programmierung.
ich hab keine lust das intel reference manual zu wälzen. |
Hallo,
das sind auch verschiedene Themen. Im intel werden die Maschinenbefehle (und die Mnemonics dazu) abgehandelt, aber nicht, wie man zu einer Programmstruktur kommt.
Wie man Makros schreibt oder Unterprogrammaufrufe usw., steht im Manual zum Assembler-Programm, z.B. MASM (Es gibt auch andere, und die sind auch nicht unbedingt kompatibel). Dafür steht im MASM32-Manual nur eine Übersichtsliste der Assembler/Maschinenbefehle.
Nur beides zusammen ergibt einen Sinn.
Gruss Reinhard |
da hast du natürlich recht. ich hab ja shcon geschrieben, dass ich nichts suche was mir nur die befehle erläutert, sondern ein buch, das assembler wie eine programmiersprache erklärt. also syntax, semantik, struktur von programmen und was da noch alles zugehört um performance optimierte programme zu schreiben.
und das sollte dann halt am beispiel von 32bit assembler wie z.b. für einen pentrium IV.
Lossy eX - Do 07.08.08 10:18
Also ich denke komplette komplexe Programme in einem reinem Assembler zu schreiben macht nur wirlklich sinn, wenn man zu viel zeit und die verarbeiten eines Buttondrückers 10ms schneller sein soll. Meiner Meinung nach lohnt es nicht normale Programme komplett in Assembler zu schreiben. Der Code den ein Hochsprachenkompiler erzeugt liegt mitunter schon ziemlich dicht an dem was man auch mit Assembler machen würde. Wenn man einzelne Methoden betrachtet.
In Delphi/FreePascal hat man die Möglichkeit einzelne Methoden in Assembler zu schreiben. Besonders wenn man sich damit noch nicht gut auskennt ist das mehr als ausreichend und man kann sich langsam vortasten. Denn durch Assembler steigt natürlich das Fehlerpotential. Und zwar enorm. Um schnelle Programme zu schreiben genügen die Assemblermethoden aber auch vollkommen aus. Zu mal man auch die Möglichkeit hat die Parameter/Konstanten mit Namen anzusprechen. Man hat auf der anderen Seite nämlich mehr als genügend Möglichkeiten die Geschwindigkeit eines Programmes zu "versauen". Und da reicht alleine schon eine umständliche Struktur aus. Bzw wenn man sich bewusst ist was sein Kompiler eigentlich macht, dann kann man auch Flaschenhälse vermeiden. Und man würde sich wundern wozu Delphi alles in der Lage ist.
Pentium 4: Neuere Prozessoren zeichnen sich in erster Linie durch neuere Befehlssätze aus. So etwas wie MMX, SSE, SSE2 etc. Der Sinn hinter all diesen Befehlssätzen ist die gleichzeitige Verarbeitung von 2, 4, 8 oder 16 Werten. Um das wirklich sinnvoll nutzen zu können benötigst du auch passende Anwendungsfälle. Also so etwas wie Vektorberechnung etc. Denn parallele Verarbeitung kann der Hochsprachenkompiler nicht erfassen. Alles andere liegt da wieder an der Struktur des Codes.
Buch: Ich persönlich habe mir
Assembler Ge-Packt [
http://www.amazon.de/Assembler-Ge-Packt-Joachim-Rohde/dp/3826617568/] von Joachim Rohde gekauft. Das ist aber mehr eine Referenz. Also die Befehle der einzelnen Befehlesätze etc. Zu Begin geht er zwar ein bisschen auf generelles Assembler ein. Aber das ist nicht Schwerpunkt des Buches.
Ich denke wenn du den generellen Aufbau der CPU und die Arbeitsweise verstanden hast, dann würde das schon genügen. Bzw anders gesagt. Ich denke nicht, dass man ein Assemblerbuch so aufbauen kann, dass es einem zeigt wie man komplexe Programme schreibt. Da kein Programm wie ein Anderes ist und je nachdem was man haben will kann der Code schon ganz anders aussehen. Assembler lebt ja auch davon, dass die Funktionen nicht allgemeingültig geschrieben worden sondern für einen speziellen Fall entwicklet wurden. Sonst wäre Assembler nämlich auch nicht schneller als Hochsprachen.
Alternativ kann ich dir auch die
Literaturhinweise von Dr. Ing. Karl-Heinrich Schmidt [
http://homepages.fh-giessen.de/~hg13025/literatur.htm] anbieten. Dort ist das Skript von Prof. Dr. Klaus Wüst zu finden. Das zielt eher auf Einsteiger ab. Die Dokumente zu MMX, SSE etc sind sicher keine kompletten Übersichten der Befehle aber ich finde sie sind dort wirklich sehr anschaulich erklärt.
PS: Wenn du Grundlagen hast/kannst, dann bietet sich auch die CPU Ansicht von Delphi an. Dort sieht man erstens was Delphi für einen Code produziert und wenn man bewusst ein paar zeilen Code testet kann man auch sehen wie verschiedene Dinge gemacht werden.
Motzi - Do 07.08.08 20:00
Also ich hab mir vor einigen Jahren das Doppelpack "Das Assembler-Buch" und "Die Assembler-Referenz" von Trutz Eyke Podschun gekauft und bin recht zufrieden damit...
MagicRain - Fr 15.08.08 09:40
Das buch Assembler: Maschinennahes Programmieren von Anfang an. Mit Windows-Programmierung (Taschenbuch) ist auch sehr gut zu lesen und sehr gut beschrieben. Also es ist in meinen augen das Preis-Leistungsverhalten verhalten voll erfüllt.
Thorsten83 - Sa 30.08.08 14:53
Hi,
selber Programme in Assembler zu schreiben halte ich für wenig sinnvoll, wichtiger ist wohl zu wissen, was der Compiler aus deinem Source macht und wie der Prozessor das dann verarbeitet, dadurch kann man Programme z.B. in C deutlich beschleunigen...
Mein Prof hat zu dem Thema "Computer Systems - A Programmer's Perspective" von Bryant und O'Hallaron empfohlen, ich fand das ganz gut, und nebenbei lernt man halt auch noch Assembler ;)
g1o2k4 - Sa 30.08.08 16:44
Thorsten83 hat folgendes geschrieben: |
Hi,
selber Programme in Assembler zu schreiben halte ich für wenig sinnvoll... |
als elektroingenieur assembler zu können halte ich für sehr sinnvoll :P
und da ich mit risc prozessoren schon angefangen habe wollte ich jetzt mal die unterschiede zu cisc sehen.
Thorsten83 - Mo 01.09.08 20:22
Darf ich fragen was du genau machst?
Die Elektroingenieure die ich kenne dürfen sich in erster Linie mit AWL rumquälen ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!