Autor Thema: WASM (Assembler Compiler + Interpreter)  (Gelesen 4945 mal)

aletes

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« am: 12. September 2010, 13:35 »
Unnötig, Umständlich und Unnütz. Das sind die Adjektive die meinen Compiler beschreiben.  :-D

-Info:
Eigentlich ist es nur eine Hausaufgabe für den Informatikunterricht, aber vielleicht kann es auch jemand von euch gebrauchen.
Es ist ein in FreeBasic geschriebener Assembler Compiler und Interpreter.
Der Compiler erzeugt eine .bas Datei, die dann von fbc(dem FreeBasic Compiler) kompiliert wird. Ihr müsst also den fbc installiert haben.(Den gibt es hier)
Die Sprache beherrscht 15 Befehle und kann 6 Register ansprechen(keine 'echten' Register, die Register werden über ein UDT im Code erstellt)  ;)

Ein 9-Seitiges Tutorial im .pdf Format liegt bei, in dem die Sprache erklärt wird. Ebenso habe ich 3 Beispiel dazu gepackt, die im Ordner 'examples' sind.

-Benutzung:
Startet das Programm 'WASM' über das Terminal. Dort gebt ihr den Dateinamen ein(ohne Dateiendung) und drückt danach 1 zum Interpretieren, 2 zum Kompilieren oder 3 zum Beenden.
Die Quellcodedateien müssen die Dateiendung .wasm haben.

-Beispiel:
Das ist das Beispiel "rechner.wasm", welches im Ordner "examples" zu finden ist:
.data db                                                          
    mov db,Addition 4+8:                                    
    int print,db                                                    
    mov ax,4                                                      
    mov bx,8                                                        
    add ax,bx                                                    
    int print,ax                                                
    
    mov db,Subtraktion 8-4:                              
    int print,db
    mov ax,8
    mov bx,4
    sub ax,bx
    int print,ax
    
    mov db,Multiplikation 4*8:                            
    int print,db
    mov ax,4
    mov bx,8
    mul bx
    int print,ax
    
    mov db,Division 8/4:                                      
    int print,db
    mov ax,8
    mov bx,4
    div bx
    int print,ax
    
    int 22h                                                          
    int 21h                                                          

-Download:
WASM[Linux]
WASM[Windows]
WASM[source]

Wegen Windows: Da Ich Linux nutze, konnte ich euch keine .exe erstellen. Wer mag, kann den Code unter Windows kompilieren und mir die .exe schicken. Ich stelle den Downloadlink für die Windowsversion dann hier rein.  :)

Viel Frust mit dem unnötigen Zeug, ich bezweifle, dass es jemand gebrauchen kann.  ;)
Vielleicht wird ja mal ein richtiger Compiler daraus, wenn ich wieder Motivation dran finde    :-P
« Letzte Änderung: 12. September 2010, 18:27 von aletes »

Thunder

  • Beiträge: 24
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 12. September 2010, 14:35 »
Also, wenn ich das jetzt richtig verstanden habe und WASM von dir ist: der Name ist schon vergeben, an den Open Watcom Assembler

Es ist vom Umfang her etwas klein und erinnert mich an ein Projekt von mir^^
Ich werds mir aber Mal anschauen  :wink:

Edit: Habe in der PDF folgendes entdeckt:
>>
Der erste Befehl, den wir kennen lernen ist der 'MOV'-Befehl. Er
hat die folgende Syntax:
mov op1,op2
Er kopiert den Wert aus op1 nach op2.
<<
Ist es nicht genau umgekehrt?

mfg Thunder
« Letzte Änderung: 12. September 2010, 14:46 von Thunder »

aletes

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 12. September 2010, 14:56 »
WASM ist von mir. Es heißt "Westbeam's Assembler", da ich in vielen Foren "Westbeam" heiße   :wink:
Oh tut mir Leid, ja es ist umgekehrt. Ich habe auch gerade den Bug mit dem 'neg'-Befehl gefunden und gefixt. Ich werde also dann auch eine neue Version uploaden, wenn der Compiler ein wenig mehr kann  :wink:

Name, hm, muss ich schauen. Ich finde da bestimmt was.

Dein Projekt, meinst du Thunder ASM, welches in BlitzMax geschrieben wurde?
Weil das habe ich erst vor 2 Tagen auf meinem PC gefunden und dachte mir "Hey, warum mach ich das nicht auch?"  :-P

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 12. September 2010, 15:09 »
Eigentlich ist es […] eine Hausaufgabe für den Informatikunterricht
Dem Datum zu folge hast du das noch nicht abgegeben und noch keine Bewertung dafür bekommen. Hoffentlich kommt dein Lehrer nicht auf die Idee du hast das aus dem Internet  :wink:

Jetzt mal zu deinem Quelltext; ich spreche kein Basic aber der Code sieht doch auffällig Umständlich unflexibel aus. Wenn du dir mal deine Implementierung für "add reg, reg" im Interpreter anschaust siehst du was ich meine. Bei deinem "add reg, imm" ist das doch schon flexibler gelöst(ich gehe jetzt mal davon aus das Mid… dir den zweiten Operanden liefert). Warum machst du das bei den andern nicht genauso bzw. so ähnlich. Mir fallen da jetzt so spontan zwei relative simple Möglichkeiten ein das anders zu machen, einmal mit Pointern und einmal mit einem Array(falls Basic keine Pointer kennt). Will aber nicht zu viel verraten; sind ja deine Hausaufgaben.
« Letzte Änderung: 12. September 2010, 15:42 von MNemo »
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

aletes

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 12. September 2010, 15:36 »
Die Hausaufgabe gebe ich erst morgen ab  :wink:

Zitat von: MNemo
Jetzt mal zu deinem Quelltext; ...
Ja. Das ist mir auch aufgefallen, habe es sogar mittlerweile geändert. Dass das vorher su unflexibel war, liegt daran, dass ich es über 2 Tage programmiert habe. Am ersten Tag habe ich anders programmiert als beim zweiten  :wink:
Kann aber auch daran liegen, dass ich Samstag Morgen einen Kater hatte und nicht so schnell denken konnte.

FreeBasic beherrscht Pointer und Arrays, habe mit Pointern allerdings nicht allzu viel Erfahrung und wollte mir über das Wochenende keine Mühe machen, diese zu erlernen. Vielleicht ein andermal  :wink:

EDIT: Habe die Windowsversion geuploaded :wink:
« Letzte Änderung: 12. September 2010, 18:27 von aletes »

Thunder

  • Beiträge: 24
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 12. September 2010, 22:49 »
Ja genau, ThunderASM.
Wenn du noch dran weiterarbeitest (war ja nur eine Hausaufgabe), dann mach es bloß nicht zu statisch, sonst endet es auch wie ThunderASM. Nämlich auf der Festplatte - ohne Perspektiven :|

aletes

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 13. September 2010, 17:53 »
Hui, ich hätte nie gedacht, hier ein Mitglied des Blitzforums zu treffen. Ich dachte, du heißt nur zufällig "Thunder"  :wink:
Moment, hast du nicht auch "Write your OS" gemacht?  :?

Auf die Hausaufgabe habe ich volle Punktzahl bekommen  :lol:

 

Einloggen