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


von sunny (Gast)


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

von Maxx (Gast)


Lesenswert?

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

Automatisiert das ganze ein wenig.

von Grrrr (Gast)


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?

von ossi (Gast)


Lesenswert?


von (prx) A. K. (prx)


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

von Maxx (Gast)


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.

von (prx) A. K. (prx)


Lesenswert?

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

von Grrrr (Gast)


Lesenswert?

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

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

von Grrrr (Gast)


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.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wenn es ganz einfach sein soll:
Beitrag "Re: 16-bit Mikroprozessor"

von bko (Gast)


Lesenswert?

nocheiner:
http://www.sqrt.com/
->tpasm1.6

von sunny (Gast)


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

von andz (Gast)


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/Diplomarbeit.pdf

Gruß

von Strubi (Gast)


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

von TheMason (Gast)


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.

von andz (Gast)


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-complete-20100301.tar.gz

der SVN ist leider Passwortgeschüzt.

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.