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
Dafür gibt es "Compiler compiler" http://en.wikipedia.org/wiki/Compiler-compiler Automatisiert das ganze ein wenig.
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?
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
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.
Seid ihr sicher, dass Tipps für Compiler-Kits der richtige Ansatz für jemanden ist, der nur einen einfachen Assembler sucht?
ossi schrieb: > Ein Beispiel: > http://home.comcast.net/~tasm/tasmman.htm Hmm. Naja. Nicht universell, aber vielleicht passts ja.
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.
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
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ß
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.