Assembler (Übersetzer)
-
alles zusammen auf einer Seite für x86 bis 386 rauf
-
Danke für die vielen Hinweise und Antworten
-
Gast3 schrieb:
Assemblercode laesst sich nicht Crosskompilieren
Crossassemblieren geht aber. Ist für eine neue Architektur auch sinnvoll.
https://de.wikipedia.org/wiki/Assembler_(Informatik)#Crossassembler
-
Beispiel ARM: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0229c/I1010893.html Damit weißt du, wie man die Bitpattern für die unterschiedliche ARM Befehle aussehen.
-
Compilerbau, Betriebssystementwicklung und auch Spielentwicklung wie in den großen Studios, sind Königsdisziplinen der Informatik. Man kann da auch im Kleinen anfangen, aber wenn man solche Fragen wie du stellen musst, dann ist man sicher noch sehr weit von dem Kenntnisstand entfernt den du brauchst um so etwas auf die Beine zu stellen.
Du hast anscheinend erst jetzt und hier begriffen was Assembler eigentlich wirklich ist. Lerne erst einmal wie ein Computer +OS wirklich im Groben funktioniert und dann lerne Programmieren. Kannst dich ja nach dem Jahr lernen hier wieder melden, aber wahrscheinlich wirst du dir dann solche Fragen schon selbst beantworten können und dann kommen nämlich die konkreten Fragen bei der Entwicklung, die man hier auch schnell beantworten kann.
-
NAchdem ich mir den Aufbau von Compiler angeschaut und (anscheinend) verstanden
habe, ergibt sich mir folgende Frage.Nachdem der Quellcode analysiert wurde, in Zwischencode etc. verarbeitet wurde, wird es in Assembler bzw. in Nullen und Einsen auf den Rechner geschrieben.
Wie muss ich mir das vorstellen, das aus dem Syntaxbau bzw. Zwischencode auf dem Rechner geschrieben bzw. als ausführbares Programm?
(Pseudo: printf("%i", 101); -> 10010101110)
Danke
-
Ich glaube, du nimmst das mit den 0 und 1 viel zu wörtlich. Logisch gesehen sind das erst einmal nur Zahlen, egal in welchem System du sie aufschreibst. So ist die NOP-Anweisung auf x86 eben die Anweisung mit der Nummer 144, egal ob du 0x90, 0b10010000, CXLIV oder wer weiß was schreibst, um diesen Sachverhalt auszudrücken. Ein Maschinenprogramm besteht (auf logischer Ebene) aus einer Folge dieser Werte.
Wie ein Computer intern arbeitet, ist dann eine ganz andere Geschichte. Da kommen dann die 0en und 1en, wobei das auch eine logische Darstellung ist, die tatsächliche physikalische Ebene sind eher so Dinge wie "Spannung positiv" und "Spannung negativ" oder (magnetischer) "Nordpol" und "Südpol" oder ähnliche Dinge, je nachdem, in welchem Teil der Hardware man gerade ist.
-
Danke SeppJ.
Wie muss ich es dann mir vorstellen, wie ein Assembler oder wie ein Compiler beim Übersetzen bzw. Linken aus dem z.B. Zwischencode in ausführbaren Code übersetzt?
Irgendwie habe ich ein "Knoten" bei dieser Denkweise.
Quellcode -> (Zwischencode) -> Ausführbare Code / Datei
Anweisung -> "PseudoCode" -> ????
Wie steht es nun bei meiner obige "Darstellung" vom "PseudoCode" zu den Fragezeichen?
-
Um meine Frage anders zu stellen:
Was genau macht der Compiler beim Code generieren bzw. wie genau geht dieser vor? (vllt anhand an der Programmiersprache C).
Danke
-