ASM lernen, welches Buch welche tut's?
-
Moin Leuts.
Ich habe vor kurzem angefangen mich für Assembler zu interessieren und es mir ein wenig angekuckt. ich hab ein den FAQ's auch folgendes gefunden:http://www.c-plusplus.net/forum/viewtopic-var-t-is-39778.html
Da hab ich bisjen drin rumgelesen.
Dann hab ich mir noch das hier angesehen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-102805.htmlMeine Frage jetzt welches Buch sollte ich nehmen um möglichst gut ASM zulernen, welcher auf den meisten prozesoren geht? Wenn ich richtig liege müsste das x86 und amd64 sein, hätte sonst echt keine achnung welches ich nehmen sollte und so nehme ich sicher das falsche
Ahja und wenn es geht wäre ein Buch auf Deutsch toll, aber wenns englisch ist au nicht schlimm
Mfg Wikinger75!
-
also portabel kann man mit assembler ja nicht programmieren, wenn du ein programm für eine x86 cpu schreibst, kannst du es nicht auf anderen prozessorarchitekturen ausführen. Hier sind links aus meiner sammlung:
http://www.o-bizz.de/qbtuts/adok_asm/start.htm
für windows könnte das noch intressant sein:
http://www.deinmeister.de/wasmtut.htm
-
Also ich versuche Asm unabhängig von einem sys zu prognn, daher nützt mit der link nicht viel, der andere ist vllt. ganz toll, weiß aber nicht wirklich wie ich ihn bewerten sollte.
Nun gut dan mal anders formuliert:
Welche prozessort Struktur sollte ich lernen, damit es auf den MEISTEN MODERNEN Cpu's ausführbar ist? Dies sollte x86 und amd64 sein habe ich recht?
1.) Wer könnte mir dazu ein gutes buch empfählen?
2.) Wer könnte mir dazu noch weitere gute links oder eBooks geben?
Ahja und im voraus sag ich einfach mal falls es wehn interessiert, ich habe gute kenntnisse in C++, also denke ich mal das ich fortschritlich weit genug bin um das zu verstehen :D.
Mfg Wikinger75!
Edit: Ahja und wie steht es mit ARM?
-
ich hab mich da mal nochnmal durch die <Bücher durchgekuckt, mich sprächen eig. folgende an:
und ein bsijen noch das hier
Das sind paar aud der FAQ, was meint ihr dazu?
-
Wikinger75 schrieb:
Also ich versuche Asm unabhängig von einem sys zu prognn,
Dann ist Assembler nix fuer dich. Assembler ist absolut systemabhaengig. Jede CPU-Architektur hat ihren eigenen Assembler.
Welche prozessort Struktur sollte ich lernen, damit es auf den MEISTEN MODERNEN Cpu's ausführbar ist? Dies sollte x86 und amd64 sein habe ich recht?
Da die meisten PCs heutzutage x86 Architektur (bzw. die neueren x86-64 (=amd64)) haben, ist x86 Assembler der, den du lernen willst, ja. x86-64 Assembler ist grossteils der selbe Assembler, nur mit mehr & groesseren Registern & ein paar zusaetzlichen Befehlen.
Aber es gibt gibt haufenweise andere "moderne" Prozessor-Architekturen, (PowerPC, ARMs), die dann auch jeweils ihren eigenen Assembler haben. Wenn du fuer diese Architekturen was schreiben willst, musst halt deren Assembler lernen.EDIT: und bitte lies dir deine Beitraege vor'm Absenden nochmal durch, du machst furchtbar viele Tippfehler!
-
Dann ist Assembler nix fuer dich. Assembler ist absolut systemabhaengig. Jede CPU-Architektur hat ihren eigenen Assembler.
ja ich meinte unabhänhig von Windows, Linux etc.
Also unabhängig von Betriebsystemen, dass die programme auch in DOS gehen, wenn kein OS drauf ist.Da die meisten PCs heutzutage x86 Architektur (bzw. die neueren x86-64 (=amd64)) haben, ist x86 Assembler der, den du lernen willst, ja. x86-64 Assembler ist grossteils der selbe Assembler, nur mit mehr & groesseren Registern & ein paar zusaetzlichen Befehlen.
Ah Okay, also kann ich x86 lernen und kann dan amd64 nachrüsten, das ist schonmal gut zu wissen
Aber es gibt gibt haufenweise andere "moderne" Prozessor-Architekturen, (PowerPC, ARMs), die dann auch jeweils ihren eigenen Assembler haben. Wenn du fuer diese Architekturen was schreiben willst, musst halt deren Assembler lernen.
Wo liegt der unterschied zwischen den ganzen Architekturn?
Welche ist am einfachsten ,welche am schwersten?EDIT: und bitte lies dir deine Beitraege vor'm Absenden nochmal durch, du machst furchtbar viele Tippfehler!
Okay, ich versuch drauf zu achten!
Edit: Welche Buch oder tut emfählungen gebe es den?
-
Wikinger75 schrieb:
Wo liegt der unterschied zwischen den ganzen Architekturn?
Kauf Dir eine Playstation 3 und installiere Linux mit Werkzeugen zum Entwickeln darauf. Dann kannst Du dort mal ein wenig in Assembler programmieren, dann zur Abwechselung am PC, dann ergibt sich Unterschied von selbst.
-
Blue-Tiger schrieb:
Aber es gibt gibt haufenweise andere "moderne" Prozessor-Architekturen, (PowerPC, ARMs), die dann auch jeweils ihren eigenen Assembler haben. Wenn du fuer diese Architekturen was schreiben willst, musst halt deren Assembler lernen.
jo, in powerPCs und ARMs steckt, meiner meinung nach, noch viel potential. ARM7 bzw. ARM9 sitzen heute in vielen embedded systemen und die PS3 (siehe abc.w's posting) hat 'nen PPC derivat, genannt 'cell' prozessor. wenn du dir einen von denen vornimmst, kannste eigentlich nix falsch machen.
-
Ah, dann nehme ich mal an, dass x86 und amd64 die am häufigsten verwendeten Architekturn für den Pc sind. Welche Architektur hat den der CPU vom Nintendo DS weiß das jemand?
Also auf den PC werde ich aufjedenfall x86 lernen müssen oder?
-
Wikinger75 schrieb:
Welche Architektur hat den der CPU vom Nintendo DS weiß das jemand?
die dinger haben 2 CPUs, einen ARM9 und einen ARM7.
Wikinger75 schrieb:
Also auf den PC werde ich aufjedenfall x86 lernen müssen oder?
nicht unbedingt. du kannst auf'm PC auch emulatoren für andere prozessoren nutzen. vielleicht wäre für einen asm-neuling eine einfache 8-bit CPU das beste, um die grundlagen der asm-programmierung zu lernen? dafür könnteste z.b. einen 6502 oder Z80 emulator nehmen.
-
vielleicht wäre für einen asm-neuling eine einfache 8-bit CPU das beste, um die grundlagen der asm-programmierung zu lernen?
AVRs wären als Einstieg auch denkbar:
http://www.henkessoft.de/Roboter/stk500.htm
http://www.rn-wissen.de/index.php/AVR_Assembler_Einführung
http://www.henkessoft.de/Roboter/ASURO.htm
http://www.henkessoft.de/Roboter/Nibo.htm
-
Tut mir leid, wenn ich jetzt barsch frage. Aber mich interessiert es jetzt mehr zu wissen.
Aber in welchem Sinn meint ihr "Architektur?" Die Befehle oder wie?
Wäre sehr dankbar für gute Links die einem solche Anfängerfragen erklären können.
-
RISC: http://de.wikipedia.org/wiki/Reduced_Instruction_Set_Computing
CISC: http://de.wikipedia.org/wiki/Complex_Instruction_Set_Computing
http://de.wikipedia.org/wiki/Assembler_(Informatik)
http://www.i8086.de/asm/8086-88-asm.html
-
^^naja, den letzten link hätteste auch weglassen können.
Aber in welchem Sinn meint ihr "Architektur?" Die Befehle oder wie?
so z.b: http://de.wikipedia.org/wiki/Flynnsche_Klassifikation
-
Wikinger75 schrieb:
Dann ist Assembler nix fuer dich. Assembler ist absolut systemabhaengig. Jede CPU-Architektur hat ihren eigenen Assembler.
ja ich meinte unabhänhig von Windows, Linux etc.
Also unabhängig von Betriebsystemen, dass die programme auch in DOS gehen, wenn kein OS drauf ist.Fuer x86-ARchitekturen gibts 2 Assembler (gemeint sind hier die Uebersetzterprogramme)-Familien, die leicht andere Syntax akzeptieren: die einen verstehen "Intel-Syntax", die anderen "AT&T-Syntax", siehe http://en.wikipedia.org/wiki/X86_assembly_language#Syntax
Das sind aber im Grunde nur verschiedene Schreibweisen der gleichen grundlegenden Befehle. Und diese sind im Grunde betriebssystemunabhaengig. Aber viele Dinge wie Filezugriff, Threads, GUIS etc. etc. etc. sind natuerlich vom Betriebssystem abhaengig (aber typischerweise verwendest du nicht Assembler um GUI-Programme zu schreiben), d.h. du musst da dann Betriebssystemfunktionen aufrufen. Aber wie gesagt: die Sprache selbst ist OS-unabhaengig, und du kannst damit auch dein eigenes Betriebssystem schreiben.Aber es gibt gibt haufenweise andere "moderne" Prozessor-Architekturen, (PowerPC, ARMs), die dann auch jeweils ihren eigenen Assembler haben. Wenn du fuer diese Architekturen was schreiben willst, musst halt deren Assembler lernen.
Wo liegt der unterschied zwischen den ganzen Architekturn?
Welche ist am einfachsten ,welche am schwersten?x86 ist eine (heutzutage als unmodern geltende) CISC-Architektur, schau dir die Links von Erhard an. Ich selbst hab keine Ahnung welche Architekturen schoen sind und welche nicht, hab aber gehoert dass ARM angenehm zum Programmieren sein soll. Aber mit einem einfachen 8bitter machst vermutlich auch nix falsch.
EDIT: und bitte lies dir deine Beitraege vor'm Absenden nochmal durch, du machst furchtbar viele Tippfehler!
Okay, ich versuch drauf zu achten!
Edit: Welche Buch oder tut emfählungen gebe es den?
*hust* Empfehlungen *hust hust*
Ich hab keine Ahnung, ich hab selbst mal "Assembler - Maschinennahes Programmieren von Anfang an Mit Windows Programmierung" gelesen. Das war halbwegs okay als Einstieg, wenn du mit Windows arbeiten willst, und gibt auch einen kurzen Einstieg ins Aufrufen von Windows-GUI-Programmierung. Umgehauen hat mich das Buch aber nicht.Wenn du unter Linux unterwegs bist (oder allgemein AT&T Syntax lernen willst), fand ich "Programming from the ground up" von Jonathan Bartlett ziemlich gut. Das gibts als freies eBook im Netz ( http://savannah.nongnu.org/projects/pgubook/ ). Ist allerdings kein reines Assembler-Buch.
-
Wikinger75 schrieb:
Welche Architektur hat den der CPU vom Nintendo DS weiß das jemand?die dinger haben 2 CPUs, einen ARM9 und einen ARM7.
also muss ich ARM lernen, um für den was machen zu können?
Also in richtung ARM v.7 und 9?Wikinger75 schrieb:
Also auf den PC werde ich aufjedenfall x86 lernen müssen oder?
nicht unbedingt. du kannst auf'm PC auch emulatoren für andere prozessoren nutzen. vielleicht wäre für einen asm-neuling eine einfache 8-bit CPU das beste, um die grundlagen der asm-programmierung zu lernen? dafür könnteste z.b. einen 6502 oder Z80 emulator nehmen.
Gut zu wissen, aber die PC CPU's laufen ja di meisten in x86 und amd64, also werde ich dieses schonmal lernen, danach hau ich ARM rein, oder sollte ich zuerst mit ARM anfangen und dan x86 machen?
Zitat:
vielleicht wäre für einen asm-neuling eine einfache 8-bit CPU das beste, um die grundlagen der asm-programmierung zu lernen?AVRs wären als Einstieg auch denkbar:
http://www.henkessoft.de/Roboter/stk500.htm
http://www.rn-wissen.de/index.php/AVR_Assembler_Einführung
http://www.henkessoft.de/Roboter/ASURO.htm
http://www.henkessoft.de/Roboter/Nibo.htmGut zu wissen, überleg mal drüber
^^naja, den letzten link hätteste auch weglassen können.
Zitat:
Aber in welchem Sinn meint ihr "Architektur?" Die Befehle oder wie?so z.b: http://de.wikipedia.org/wiki/Flynnsche_Klassifikation
Gut^^
Fuer x86-ARchitekturen gibts 2 Assembler (gemeint sind hier die Uebersetzterprogramme)-Familien, die leicht andere Syntax akzeptieren: die einen verstehen "Intel-Syntax", die anderen "AT&T-Syntax", siehe http://en.wikipedia.org/wiki/X86_assembly_language#Syntax
Das sind aber im Grunde nur verschiedene Schreibweisen der gleichen grundlegenden Befehle. Und diese sind im Grunde betriebssystemunabhaengig. Aber viele Dinge wie Filezugriff, Threads, GUIS etc. etc. etc. sind natuerlich vom Betriebssystem abhaengig (aber typischerweise verwendest du nicht Assembler um GUI-Programme zu schreiben), d.h. du musst da dann Betriebssystemfunktionen aufrufen. Aber wie gesagt: die Sprache selbst ist OS-unabhaengig, und du kannst damit auch dein eigenes Betriebssystem schreiben.Welchen der 2 Assembler sollte ich nehmen, sprich verlcher währe zu emfählen?
Okay also sollte ich auch ASM mit Win lernen oder Linux halt mit dem sys zusmamen, falls ich auf die befehler des kernels zu greifen will, also gui etc.?
x86 ist eine (heutzutage als unmodern geltende) CISC-Architektur, schau dir die Links von Erhard an. Ich selbst hab keine Ahnung welche Architekturen schoen sind und welche nicht, hab aber gehoert dass ARM angenehm zum Programmieren sein soll. Aber mit einem einfachen 8bitter machst vermutlich auch nix falsch.
Okay auch gut zu wissen, aber x86 wird heute immer noch benutzt oder?
Wenn du unter Linux unterwegs bist (oder allgemein AT&T Syntax lernen willst), fand ich "Programming from the ground up" von Jonathan Bartlett ziemlich gut. Das gibts als freies eBook im Netz ( http://savannah.nongnu.org/projects/pgubook/ ). Ist allerdings kein reines Assembler-Buch.
das ist sehr hilfreich, danke , hab nämlich Linux
Also wenn ich mal alles so zusammenfasse:
zuerst sollte ich ARM lernen, da dies einfeacher sei und dan könnte ich mit x86 und schließlich amd64 fortfahren.Jetzt bleibt nur noch die frage welche aufbauten sollte ich dan für x86 benutzen, Intel oder AT&T syntaks? Also mein Pc hat nen Intel, daher nehme ich mal Intel auch an
Wie siehts bei ARM aus?
Mfg Wikinger75!
-
Wikinger75 schrieb:
Wie siehts bei ARM aus?
du könntest z.b. irgendwas davon mehmen: http://shop.embedded-projects.net/index.php/cat/c272_ARM-Boards.html
-
du könntest z.b. irgendwas davon mehmen: http://shop.embedded-projects.net/index.php/cat/c272_ARM-Boards.html
nein, ich habe ja ein Nintendo ds und wen die dinger zwei CPU's einen ARM7 und 9ner haben, dan ist das gut, den ich hab auch so nen komischne adapter für MicroSd womkt ich zeug von Pc dan damit tuten kann
Von daher ist ARM gut.
Bräuchte ja dazu nur Infos wie das damit ist und dan noch eventuelle. eBooks ,Tutorials oder Bücher.
und letztendlich weiß ich noch nicht genau was ich mich für reines x86 und amd64 später anschauen sollte
Mfg Wikinger75!
-
dann das: http://www.arm.com/miscPDFs/14128.pdf
und da geht's weiter: http://en.wikipedia.org/wiki/Nintendo_DS_homebrew
-
Der erste Link zum eBook is schonmal schön
Der zweite Link ist auch toll, kennt dazu aber jemand ein eBook?
Anderfalls sit das auch nicht so schlimm.
Jetzt bleibt nur noch die sache mit x86 und amd64