# Maschienensprache oder Assembler erlernen



## lonol15 (23. April 2013)

Hi,
ich bin mir nicht ganz sicher ob ich hier richtig bin aber ich fange einfach mal an. ich habe sehr gute Kenntnisse in Java und mittelmäßige bis schlechte in C und C++. Ich würde gerne Maschinennahen Code lernen, da es mich sehr interessiert. Direkt Maschinencode wäre mir lieber aber Assembler geht auch. 

Jetzt hab ich nur das Problem, dass mir der Anfang sehr schwer fällt.
Das heißt: was brauch ich für einen Compiler? Was für einen Texteditor? Wie compiliere ich mein erstes Programm? usw. ...
eben die ganzen FAQs. Ich hab es in den 2 Wochen Recherche nicht geschafft ein Programm zum laufen zu bringen.

Kennt ihr evtl. ein gutes Tutorial oder könnt mir selber einen kleinen Anschupser geben wie ich anfange?


----------



## tfa (24. April 2013)

> Direkt Maschinencode wäre mir lieber aber Assembler geht auch.


"Direkt Maschinencode" macht niemand. Man verwendet immer einen Assembler, und das ist schwierig genug.



> Das heißt: was brauch ich für einen Compiler? Was für einen Texteditor?


Einen Compiler brauchst du gar nicht, sondern einen Assembler. Von welchem Betriebssystem reden wir? Unter Linux kann man GCC als Assembler benutzen. In der Windowswelt würde sich "Visual C++" anbieten. 

Was genau möchtest du denn programmieren? Normalerweise meidet man  Assembler, wenn es nicht unbedingt sein muss.


----------



## sheel (24. April 2013)

tfa hat gesagt.:


> "Direkt Maschinencode" macht niemand. Man verwendet immer einen Assembler, und das ist schwierig genug.


Genau,

@lonol: Da du nicht recht zu wissen scheinst, was du da vorhast:
Mach irgendeine Exe-Datei (falls du Windows verwendest) mit einem Texteditor auf.
Willst du das, so wie du es siehst, selbst schreiben?

Wissen über das braucht man in sehr wenigen Gebieten, zB. Erstellen von
Asm-Übersetzungsprogrammen vom Asm-Code zum ausführbaren Programm

Wenn du gern Asm lernen willst
a) Texteditor beliebig
b) Wenns "nur" aus Interesse ist, geh vllt. eher in Richtung Mips-Asm (zumindest zum Anfang)
(da du wahrscheinlich keinen Mipsprozessor hast: Es gibt Emulatoren (Spim, Mars...))
Die X86&Co-Schiene für Computer, auf denen Windows&Linux läuft,
ist noch ein Stück komplizierter.



tfa hat gesagt.:


> Einen Compiler brauchst du gar nicht, sondern einen Assembler. Von welchem Betriebssystem reden wir? Unter Linux kann man GCC als Assembler benutzen. In der Windowswelt würde sich "Visual C++" anbieten.


Das sind eher ganze C-Compiler.
Wie wäre es mit zB. Nasm?


@lonol: Von Java zu (X86)-Asm ist es ein Weltensprung.
Wie wäre es, zuerst die C-Kenntnisse zu festigen?


----------



## takidoso (25. April 2013)

Folgendes denke ich zu diesem Thema:
Assembler ist keine Sprache, sondern eine Sprachfamilie.
Das Wort Assembler wird unter Assemblerprogrammierern homonymhaft verwendet. Zum einen wird es gerne als Synonym für die konkrete Sprache, zum anderen als Synonym für den Übesetzer (Compiler) verwendet.
Abhängig vom Prozessor-Typ ist halt seine spezifische Mashinensprache und damit "sein" Assembler (symbolhafter Mashinencode)
Da Java mit seinem eigenen Prozessor daherkommt (auch wenn er nicht in Hardware sondern in Softwareform vorliegt) kann man, wenn man möchte auch den "Assembler" von Java lernen.
In Java redet man da gerne anstelle von Mashienen code von Bytecode (in .NET redet man gene anstelle von Bytecode von Managed Code). Früher zu UCSD-Pascal-Zeiten nannte man das damals Pseudocode, da die Maschine (Prozessor) halt software-emuliert und nicht in Hardware vorliegt.
Ich selbst habe im Laufe meiner früheren Programmieraktivitäten mal 3 sehr verschiedene Assemblersprachen kennen gelernt (6510, 8085 und /370): Alle haben/hatten ihre eigenen Idiome und unterschieden sich z.T. wie Tag und Nacht.
Falls Du also Lust hat näheres Verständnis in Java aufzubauen empfehle ich Dir JVM Bytecode/Assembler kenenzulernen.
Falls Du an einem recht spaßigen Assembler-ähnlichen Programmierspiel Interesse hast, in dem sich Programme bekämpfen, dann würde ich Dir "Krieg der Kerne" (Core Wars), man nennt es auch gerne MARS (Mnemonic Array Redcode Simulator), empfehlen. Auch wenn es etwas in die Jahre gekommen ist, wurden früher damit sogar Weltmeisterschaften ausgetragen.

Takidoso


----------

