www.mikrocontroller.net

Forum: PC-Programmierung Logik nach Assembler konvertiern


Autor: Michael B. (gm8816)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich weiß nicht genau in welches Forum ich das jetzt reinschreiben soll 
also probiere ich es mal hier. Hat schon mal jemand versucht (oder gibt 
es schon fertige Lösungen?) eine Logikgatterschaltung in Assembler zu 
konvertieren? Die Gatterschaltung sollte am PC erstellt werden und dann 
als Assemblercode erstellt werden. Der Controller ist erstmal egal. Mir 
geht es nur um Lösungsansätze dieses Problems.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geoffrey M. wrote:
> Hallo,
> ich weiß nicht genau in welches Forum ich das jetzt reinschreiben soll
> also probiere ich es mal hier. Hat schon mal jemand versucht (oder gibt
> es schon fertige Lösungen?) eine Logikgatterschaltung in Assembler zu
> konvertieren? Die Gatterschaltung sollte am PC erstellt werden und dann
> als Assemblercode erstellt werden. Der Controller ist erstmal egal. Mir
> geht es nur um Lösungsansätze dieses Problems.

Was kann in deinen Gattern alles vorkommen.
Wenn es nach der reinen Lehre geht, ist kann da ja nur
UND, ODER, NICHT, XOR vorkommen.

Und um Grunde ist so eine Gatterschaltung auch nur ein
Expression-Tree (wie man es im Compilerbau nennen würde).
Man fangt beim Ausgang an und betrachtet die Teilbäume die
zu den Eingängen des letzten Gatters führen. Für die wird
(mit derselben Funktion, also rekursiv) Code erzeugt, steht
der Code, dann betrachtet man die Verknüpfung und erzeugt
noch den Code für diese Verknüfung. Genauso wie die Code-
generierung in einem Compiler einen Expression-Tree abarbeitet.

Ein Problem könnte die Registerbelegung werden. Will man
sich das Leben einfach machen, dann implementiert man sich
noch eine Stackmaschine und ist somit auch das Problem der
Registerallokierung los.

Alles in allem: Bei den Compilerbauern solltest du da fündig
werden.

Klingt nach einem netten Projekt für einen faden Nachmittag.

Autor: Michael B. (gm8816)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal soll es nur ODER, UND, NICHT und XOR geben. Das ist schonmal ein 
guter Rat am Ausgang anzufangen. Ich habe leider noch nie einen Compiler 
gebastelt und das wird mein erster versuch sowas zu machen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geoffrey M. wrote:
> Erstmal soll es nur ODER, UND, NICHT und XOR geben. Das ist schonmal ein
> guter Rat am Ausgang anzufangen. Ich habe leider noch nie einen Compiler
> gebastelt und das wird mein erster versuch sowas zu machen.

Wenn ichs mir recht übelege, ist das eigentlich einfacher
als einen Compiler zu schreiben: Es gibt keine Operatoren-
Vorrangregeln. Das ganze ähnelt eigentlich mehr der
Auswertung eines Expression-Trees als dem Aufbau, der
Tree (also die Schaltung) steht ja bereits.

d.h. die Technik mit: Am Ausgang anfangen und nach vorne
durcharbeiten würde genau das machen.

Wie hast du denn die 'Schaltung' erstellt? In welcher Form
liegt sie dir vor?

Autor: Michael B. (gm8816)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Logikschaltung gibt es nur auf dem Papier. Ich bin mir auch noch 
nicht sicher, welche Programmiersprache die beste für diesen Zweck ist. 
Hat da jemand einen Vorschlag?

Autor: Dirk S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal bei Cadsoft vorbei

http://www.cadsoft.de/microsps.htm

Könnten Anregungen für dich dabei sein.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geoffrey M. wrote:
> Die Logikschaltung gibt es nur auf dem Papier. Ich bin mir auch noch
> nicht sicher, welche Programmiersprache die beste für diesen Zweck ist.
> Hat da jemand einen Vorschlag?

Sowas artet immer in einen Glaubenskrieg aus.
Nimm die Programmiersprache, die du beherrscht.
Solange du das Gewünschte damit machen kannst, ist
diese die 'Beste'.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest vorher festlegen, was du willst:

Simulation der Schaltung , wie du sie hingemalt hast (inklusive 
Gatterlaufzeit)
Dann läuft das ganze auf eine Statemachine hinaus, mit verschalteten Ein 
und Ausgängen. (Sowas musst du nicht programmieren, nimm VHDL)

oder

Simulation der Funktion
dann ist es eher ein Parser mit Vereinfachung, der auf eine zweistufige 
Funktion führt (DNF oder KNF),danach erzeugst du entweder Code oder eine 
Lookuptable.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.