Autor Beitrag
g1o2k4
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: Mi 06.08.08 14:47 
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 user profile iconChristian S.: Topic aus Sonstiges (Delphi) verschoben am Mi 06.08.2008 um 15:34
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mi 06.08.08 15:05 
Allgemein? Oder bezogen auf ein bestimmtes Betriebssystem? (Windows?)

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mi 06.08.08 15:12 
Sry, bin noob, aber x86 ist doch das ganz stinkormale Grund-Assembler oder? Ich hab mal so ein billiges Buch erstanden, glaub das war es: www.amazon.de/Progra...218028123&sr=8-8. Das fand ich sehr interessant. Muss alleridngs sagen dass ich bis heute kein Assembler kann, was natürlich irgendwie auch wieder dagegen spricht ;)

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mi 06.08.08 15:48 
user profile iconTilman 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:

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
mindtrap
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 62



BeitragVerfasst: Mi 06.08.08 15:55 
Hi,

ich kann dir nur diese Seite hier empfehlen: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mi 06.08.08 15:55 
user profile iconTimosch hat folgendes geschrieben:
user profile iconTilman 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:

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: 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.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
g1o2k4 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mi 06.08.08 16:42 
user profile iconGTA-Place hat folgendes geschrieben:
user profile iconTimosch hat folgendes geschrieben:
user profile iconTilman 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).

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mi 06.08.08 16:52 
Naja der letzte Äußerung g1o2k4s nach war meine Frage ja mehr als Berechtigt ;)

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
g1o2k4 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Mi 06.08.08 17:29 
user profile icong1o2k4 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mi 06.08.08 18:00 
user profile icong1o2k4 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:


user profile iconReinhard 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. :-)

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
g1o2k4 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: Mi 06.08.08 19:21 
user profile iconReinhard Kern hat folgendes geschrieben:
user profile icong1o2k4 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: 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 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 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.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 07.08.08 21:38 
MagicRain
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

WinXp, Win8, iOS
Delphi 7, Lazarus Pascal, Delphi 10.2 Starter, NetBeans Java
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 191
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: Sa 30.08.08 16:44 
user profile iconThorsten83 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.