Frage

ich auf das Konzept sehr neu bin einen Assembler zu schreiben und auch nach sehr viel Material zu lesen, habe ich immer noch Schwierigkeiten, meinen Kopf um ein paar Konzepte gewickelt wird.

  1. Was ist der Prozess eine Quelldatei in Token, um tatsächlich aufzubrechen? Ich glaube, dass dieser Prozess lexing genannt wird, und ich habe Hochs und Tiefs nach einem echten Code-Beispiele gesucht, die Sinn machen, aber ich kann nicht eine Sache so einfach Codebeispiele sehr willkommen finden;)

  2. Beim Parsen, brauchen Informationen jemals bestanden nach oben oder unten dem Baum werden? Der Grund, warum ich frage ist, wie folgt, nehmen Sie:

    LD BC, nn

Es muss in den folgenden Parsing-Baum einmal Token versehen gedreht werden (???)

  ___ LD ___
  |        |
 BC        nn

Nun, wenn dieser Baum durchlaufen wird, braucht es den folgenden Maschinencode zu erzeugen:

01 n n

Wenn der Befehl lautete:

LD DE,nn

Dann müßte die ausgegeben werden:

11 n n

Was bedeutet, dass es die Frage aufwirft, ist die LD-Knoten Rückkehr etwas auf dem Operanden unterschiedlich basiert oder ist es die Operanden, der etwas zurückgibt? Und wie wird dies erreicht? Einfachere Codebeispiele würden, wenn die Zeit es zulässt ausgezeichnet.

Ich bin am meisten interessiert einige der rohen Prozesse hier anstatt auf der Suche im fortgeschrittenen vorhandenen Tools so wenden Sie sich bitte, dass beachten Sie lernen vor mir Senden auf yacc oder Flex .

War es hilfreich?

Lösung

Nun, die Struktur des Baumes für Sie wirklich wollen ein Befehl, der in einem Register und einem Speicher arbeitet Adressierungsmodus eine Offset-Verschiebung und ein Indexregister involing aussehen würde wie folgt aus:

    INSTRUCTION-----+
    |      |        |
  OPCODE  REG     OPERAND
                  |     |
                OFFSET  INDEXREG

Und ja, Sie wollen wollen Werte passieren nach oben und unten den Baum. Verfahren zum formal solchen Wert Weitergabe Spezifizieren aufgerufen „Attribut-Grammatiken“, und Sie schmücken die Grammatik für Ihre Langauge (in Ihrem Fall Ihre Assembler-Syntax) mit dem Wert-passing und die Berechnungen über diesen Werten. Weitere Hintergrund, finden Sie unter Wikipedia auf Attribut-Grammatiken .

bezogenen Fragen gestellt Sie , I diskutiert ein Werkzeug, DMS , die Griffe Ausdruck Grammatiken und Gebäude Bäume. Wie Sprache Manipulationswerkzeug, DMS steht genau diese gleichen up-and-down der Baum Informationsflüsse Fragen. Es sollte Sie nicht überraschen, daß als Sprachmanipulationswerkzeug High-End, kann es handhaben Attributgrammatik Berechnungen direkt.

Andere Tipps

Es ist nicht notwendig, einen Parse-Baum zu bauen. Z80 op-Codes sind sehr einfach. Sie bestehen aus dem OP-Code und 0, 1 oder 2 Operanden, die durch Kommas getrennt. Sie müssen nur den Opcode bis in die (maximal 3) Komponenten mit einem sehr einfachen Parser spalten - kein Baum benötigt wird,

.

Eigentlich haben die OP-Codes haben keine Byte Basis, sondern eine Oktal-Basis. Die beste Beschreibung, die ich weiß, ist DEKODIERUNGS Z80 Opcodes .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top