www.mikrocontroller.net

Forum: FPGA, VHDL & Co. assembler für eigenbau softcore?


Autor: sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
servus

vielleicht weiß ja jemand was dazu. mal angenommen ich entwerfe mir 
einen eigenen softcore. dann muss ich die geschriebenen programme ja 
irgendwie assemblieren. nun ist der befehlssatz natürlich auch 
selbstgestrickt. gibt es dafür eine art konfigurierbaren assembler, den 
ich mit meinen opcodes und adressformaten konfigurieren kann und der mir 
dann die programme übersetzen kann?

gruß sunny

Autor: Maxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dafür gibt es "Compiler compiler" 
http://en.wikipedia.org/wiki/Compiler-compiler

Automatisiert das ganze ein wenig.

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maxx schrieb:
> Dafür gibt es "Compiler compiler"

> Automatisiert das ganze ein wenig.

Das "ein wenig" muss man hier recht ernst nehmen. Das sind meist 
Projekte die im EDV-Hype in den 80igern entstanden sind. Interessant, 
aber nicht wirklich praktisch nutzbar.

Die Grenze ist die Semantik bzw. die Beschreibung der Zielmaschine. 
Abgesehen davon, lassen sich die Parsergeneratoren recht sinnvoll 
praktisch einsetzen. Auch hierzu gibt es Debatten die sich vor allem um 
die Effizienz drehen.

Allerdings ist das im wesentlichen auch das, was man für einen Assembler 
braucht, wenn ich mal von einer üblichen Harvard- bzw. v.-Neumann 
Architektur mit den üblichen Adressierungsarten ausgehe. So schwierig 
ist das eigentlich nicht. Im wesentlichen ist das Textersatz und ein 
wenig herumrechnerei sowie das Einsammeln und patchen von Labels und 
Sprungdistanzen resp. Adressen. (Ein Linker ist da schon ein wenig 
kitzliger).

sunny schrieb:
> gibt es dafür eine art konfigurierbaren assembler, den
> ich mit meinen opcodes und adressformaten konfigurieren kann und der mir
> dann die programme übersetzen kann?

Genau besehen muss man diese Frage jedenfalls mit einem klaren Nein 
beantworten. Es gab und gibt so viele Varianten von verschiedenen 
Herstellern, das ein Universalwerkzeug ziemlich umfangreich und 
kompliziert zu bedienen wäre. Umgekehrt haben die Hersteller ein 
Interesse daran, die Kunden zu binden. Sie liefern Assembler und evtl. 
Compiler, wozu dann noch eine Beschreibung des Prozessors in einer 
universell verständlichen Sprache?

Autor: ossi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt Assembler, die für dutzende Architekturen Code erzeugen können. 
Es liegt daher nahe, dass diese Assembler leicht an eine neue 
Architektur anpassbar sind. Arbeit bleibt das trotzdem.

* GNU binutils
* ASxxxx: http://shop-pdp.kent.edu/ashtml/asxxxx.htm
* The Macroassembler AS: 
http://john.ccac.rwth-aachen.de:8000/as/index.html

Autor: Maxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grrrr schrieb:
> Das "ein wenig" muss man hier recht ernst nehmen. Das sind meist
> Projekte die im EDV-Hype in den 80igern entstanden sind. Interessant,
> aber nicht wirklich praktisch nutzbar.

Da verschätzt du dich ganz gewaltig.
Für was sie nicht gut sind, sind Optimierungen (was du wohl mit an das 
Zielsystem anpassen meinst) alles andere ist für jeden Compiler das 
gleiche und wesentlich effektiver so zu erzeugen.
Grammatik aufstellen dürfte wohl am längsten dauern.

Für einen Compiler auf Assembler-Niveau d.h. mit recht übersichtlicher 
Grammatik und einer 1:1 übersetzung ist der manuelle Weg m.M. völlige 
Zeitverschwendung, wenn man es nicht macht um die Theorie dahinter mal 
praktisch zu erfahren.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seid ihr sicher, dass Tipps für Compiler-Kits der richtige Ansatz für 
jemanden ist, der nur einen einfachen Assembler sucht?

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ossi schrieb:
> Ein Beispiel:
> http://home.comcast.net/~tasm/tasmman.htm

Hmm. Naja. Nicht universell, aber vielleicht passts ja.

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maxx schrieb:
> Da verschätzt du dich ganz gewaltig.

Was ich schrieb war nicht das Ergebnis einer Schätzung.

> Für was sie nicht gut sind, sind Optimierungen (was du wohl mit an das
> Zielsystem anpassen meinst)

Ich habe genau geschrieben was ich meine.
Von "Optimierungen" oder "an das Zielsystem anpassen" habe ich nichts 
geschrieben!
Ich schrieb "Semantik bzw. die Beschreibung der Zielmaschine" und bitte 
Dich höflich um korrekte Zitate.

> alles andere ist für jeden Compiler das
> gleiche
Das mag sein, aber wir reden hier von einem Assembler.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es ganz einfach sein soll:
Beitrag "Re: 16-bit Mikroprozessor"

Autor: bko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nocheiner:
http://www.sqrt.com/
->tpasm1.6

Autor: sunny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
servus

vielen dank für eure hilfe!
der tasm ist genau das was ich meinte bzw. gesucht habe.
jetzt muss man halt nur schauen wie die sache mit den opcode-tabellen 
funktioniert.
wenn es sowas was auch als freeware gibt währe das natürlich noch besser 
aber erst mal schauen.
der tpasm hilft mir leider nicht weiter da er wohl nur unter unix läuft.
habt mir sehr geholfen. danke noch mal.

gruß sunny

Autor: andz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein etwas komplexeres Beispiel:

Ist ein Softcore Vektorporzessor: der HiCoVec...

http://hicovec.informatik.fh-augsburg.de/trac

War mal ne Projektarbeit von uns, haben wir auch ne komplette 
entwicklunsumgebung mit Assembler gebaut.

Ein C-Compiler ist auch gerade in Arbeit:

http://elk.informatik.fh-augsburg.de/da/guest/hk/D...

Gruß

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich koennte auch noch flex/bison empfehlen. Hab damit mal einen 
Assembler fuer den Blackfin nachgebaut.
Ist alles im Source der Gnu-Tools enthalten, auch fuer andere 
(einfachere) Prozessoren. Die Tools sind zwar alt, und der 
GNU-Coding-Style stinkt zum Himmel, aber die Tools amortisieren sich 
schnell mal.

Gruesse,

- Strubi

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist zwar nicht direkt ein Assembler, aber es lässt sich recht einfach 
ein Assembler damit programmieren.
Ich habe in der Code-Sammlung meinen Parser vorgestellt.
Damit habe ich schon 2 Assembler-Teile (Teil deshalb weil ich mit dem 
Parser gleichzeitig noch Zugriff auf die anderen Funktionen des Systems 
haben will) realisiert. Das eine ist ein für den Audio-Prozessor und 
umfasst nur wenige Befehle (ca 15). Der zweite Assembler ist ebenfalls 
für einen SoftCore der allerdings noch in der Entwicklung ist. Aber um 
zumindest schonmal ein Gefühl dafür zu bekommen habe ich in dem 
dazugehörigen Simulator direkt einen Assembler-Teil eingebaut mit dem 
ich die Opcodes eingeben kann.
Das Schöne an dem Parser ist das der sich recht schnell für andere 
Prozessoren umschreiben lässt. Lediglich die Makro-Deklaration und 
Makro-Verwendung ist etwas aufwändiger zu realisieren.
Bei Bedarf kann ich ja mal den Assembler (bzw das was ich davon fertig 
habe) posten.

Autor: andz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Strubi schrieb:
> Ich koennte auch noch flex/bison empfehlen. Hab damit mal einen
> Assembler fuer den Blackfin nachgebaut.

Jop Flex/Bison kann ich auch voll empfehlen. So haben wir unseren 
HiCoVec assembler auch gebaut...Ist 1000x Schneller in der Ausfürung als 
der in Python geschriebene Vorgänger.

Hier mal n aktueller Snapshot:

http://www.hs-augsburg.de/~kiefer/hicovec/hicovec-...

der SVN ist leider Passwortgeschüzt.

Gruß

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.