Announcement

Collapse
No announcement yet.

Wie genau wandelt ein Assembler den Assembler-Code in Maschinensprache?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie genau wandelt ein Assembler den Assembler-Code in Maschinensprache?

    Hallo!

    Ich habe keine andere Kategorie für diese Frage gefunden.

    Mir ist beim Assembler nicht ganz klar, wie das abläuft, die Umwandlung von Mnemonics in Maschinencode. Ist das einfach eine Umwandlung einer Textdatei in eine Binärdatei nach gewissen Regeln? Hat ein Assembler einfach irgendwo eine Datei mit der Zuordnung Mnemonic -> Maschinenbefehl und ersetzt die Mnemonics dann?

    Ich habe mir das hier angeschaut: http://www.i-programmer.info/babbage...erpreters.html

    Da steht "All that is needed is a big table of mnemonic to machine code conversions. " Wie genau ist das umgesetzt?

  • #2
    Also soweit ich weiss kann man Assembler 1:1 in Maschinensprache uebersetzen.

    Das sagt auch Wikipedia:
    http://de.wikipedia.org/wiki/Assemblersprache

    Assemblersprachen bezeichnet man − als Nachfolger der direkten Programmierung mit Zahlencodes − als Programmiersprachen der zweiten Generation. Ihre Befehle werden mit einer Übersetzungssoftware (Assembler) direkt und i. d. R. 1:1 in Maschinenbefehle übersetzt, in höheren Programmiersprachen (dritte Generation) hingegen übersetzt ein Compiler komplexere Programmanweisungen in mehrere Maschinenbefehle.[2]

    Comment


    • #3
      Wie genau ist das umgesetzt?
      Die Frage impliziert als gäbe es da genau einen Weg. Dem ist natürlich nicht so. Bei einem Assembler geht halt Assemblercode rein und es kommt am Ende Binärcode raus. Dazwischen findet größtenteils ein reines Mapping von den Mnemonics der Assemblersprache auf seine Binärdarstellung statt. Wie er das macht ist Implementierungsdetail des Assemblers. Für das Mapping gibt es also näherungsweise ähnlich viele Lösungen wie es Assembler gibt. Wenn dich irgendeine Implementierung interessiert kannst du sicher irgendwo im Netz einen Open Source Assembler finden und dir ansehen.

      Comment


      • #4
        Okay, aber das Prinzip stimmt schon so: Ich gebe dem eine Datei, die aus ASCII-Zeichen besteht, deren Bitmuster ein Prozessor nicht als Befehle interpretiert und der Assembler wandelt das Ganze in eine reine Binärdatei (als Gegenstück zur Textdatei), deren Bitmuster dann eben den Prozessorbefehlen usw. entsprechen?

        Comment


        • #5
          Nööö, es werden jeden Menge Optimierungen vorgenommen.
          Üblicherweise kann du in Assember Symbole verwenden, oder auch andere "High"-Level Features wie Sprungmarken usw.
          Das wird alles aufgelöst.
          Es werden die Dateiheader für eine EXE gesetzt.
          Assembler ist NICHT Maschinensprache.
          Aber das sind alles theoretische Probleme...http://compilers.iecc.com/crenshaw/
          Zuletzt editiert von Christian Marquardt; 28.04.2015, 19:08.
          Christian

          Comment

          Working...
          X