Stackmaschine & Assembler 0.7 & Basic Compiler 0.7

Übersicht BlitzBasic Codearchiv

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

Florian

BeitragDo, Apr 06, 2006 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
PreAsm

Input:
Code: [AUSKLAPPEN]

Wert1 dw  10
Wert2 dw  20
Wert_3 dw 30

Array   dw 50 dup
ArrayII dw 10 dup

T equ 200
Test:
AStor T
Test2:
jmp Test2
AStor Wert1
AStor Wert2
AStor Wert_3
Astor ArrayII


Ouput:

Code: [AUSKLAPPEN]

Wert1 dw 10
Wert2 dw 20
Wert_3 dw 30
Array dw 50 dup
ArrayII dw 10 dup
T equ 200
Test:
AStor 200
Test2:
jmp 2
AStor 0
AStor 1
AStor 2
Astor 53


Code: [AUSKLAPPEN]


Const BezeichnerTeil1$="abcdefghijklmnopqrstuvwxyzöäüß_"
Const BezeichnerTeil2$=BezeichnerTeil1$+"0123456789"

Const cPush  = 1
Const cPop   = 2
Const cDbl   = 3
Const cSwap  = 4

Const cMul   = 5
Const cDiv   = 6
Const cSub   = 7
Const cAdd   = 8
Const cNeg   = 9
Const cIncr  =10
Const cDecr  =11

Const cAnd   =12
Const cNot   =13
Const cOr    =14
Const cXor   =15
 
Const cCall  =16
Const cRet   =17
Const cJmp   =18
Const cJle   =19

Const cAStor =20
Const cALoad =21
Const cStor  =22
Const cLoad  =23

Const cInt   =24

Const MaxVMBefehle=24

Global CodeName$[MaxVMBefehle]
Global BefehlLang[MaxVMBefehle]


CodeName[cPush]  = "push"
CodeName[cPop]   = "pop"
CodeName[cDbl]   = "dbl"
CodeName[cSwap]  = "swap"

CodeName[cMul]   = "mul"
CodeName[cDiv]   = "div"
CodeName[cSub]   = "sub"
CodeName[cAdd]   = "add"
CodeName[cNeg]   = "neg"
CodeName[cIncr]  = "incr"
CodeName[cDecr]  = "decr"

CodeName[cAnd]   = "and"
CodeName[cNot]   = "not"
CodeName[cOr]    = "or"
CodeName[cXor]   = "xor"

CodeName[cCall]  = "call"
CodeName[cRet]   = "ret"
CodeName[cJmp]   = "jmp"
CodeName[cJle]   = "jle"

CodeName[cAStor] = "astor"
CodeName[cALoad] = "aload"
CodeName[cStor]  = "stor"
CodeName[cLoad]  = "load"
CodeName[cInt]   = "int"

BefehlLang[cPush]  = 2
BefehlLang[cPop]   = 1
BefehlLang[cDbl]   = 1
BefehlLang[cSwap]  = 1

BefehlLang[cMul]   = 1
BefehlLang[cDiv]   = 1
BefehlLang[cSub]   = 1
BefehlLang[cAdd]   = 1
BefehlLang[cNeg]   = 1
BefehlLang[cIncr]  = 1
BefehlLang[cDecr]  = 1

BefehlLang[cAnd]   = 1
BefehlLang[cNot]   = 1
BefehlLang[cOr]    = 1
BefehlLang[cXor]   = 1

BefehlLang[cCall]  = 2
BefehlLang[cRet]   = 1
BefehlLang[cJmp]   = 2
BefehlLang[cJle]   = 2

BefehlLang[cAStor] = 2
BefehlLang[cALoad] = 2
BefehlLang[cStor]  = 1
BefehlLang[cLoad]  = 1
BefehlLang[cInt]   = 2


PreAsm "Vm.asm","Vm2.asm"
WaitKey


Const MaxNamen=1000
Global NamenP
Global TName$[MaxNamen]
Global TWert[MaxNamen]


Function Exist(Bezeichner$)
 For P=0 To NamenP-1
  If Lower$(Bezeichner$)=Lower$(TName[P]) Then Return P
 Next
 Return -1
End Function

Function AddWert(Name$,Wert)
 TName[NamenP]=Name$
 TWert[NamenP]=Wert
 NamenP=NamenP+1
End Function

Function GetWert(P)
 Return Twert[P]
End Function

Function TestBezeichner(Bezeichner$)
 Lang=Len(Bezeichner$)
 If Lang=0 Then Return False

 If Instr(BezeichnerTeil1$,Mid$(Lower$(Bezeichner$),1,1))=0 Then Return False

 For P=2 To lang
  If Instr(BezeichnerTeil2$,Lower$(Mid$(Bezeichner$,P,1)))=0 Then Return False
 Next
 
 Return True
End Function

Function TestLabel(Bezeichner$)
 Lang=Len(Bezeichner$)
 If Lang<1 Then Return False 

 If Instr(BezeichnerTeil1$,Lower$(Mid$((Bezeichner$),1,1)))=0 Then Return False

 For P=2 To lang-1
  If Instr(BezeichnerTeil2$,Lower$(Mid$(Bezeichner$,P,1)))=0 Then Return False
 Next
 
 If Mid$(Bezeichner$,Lang,1)<>":" Then Return False
 
 Return True 
End Function

Function TestZahl(S$)
 Slen=Len(S$)
 If Slen=0 Then
  Return False
 EndIf
 For P=1 To Slen
  If Instr("0123456789",Mid$(S$,P,1))=0 Then Return False
 Next
 Return True
End Function

Function Lower$(S$)
 Slen=Len(S)
 If Slen>0 Then
  For P=1 To Slen
   ASCII=Asc(Mid$(S$,P,1))
   If Ascii>64 And Ascii<92 Then
     Ascii=Ascii+32
    ElseIf Ascii=220 Then ;ü
     Ascii=252     
    ElseIf Ascii=196 Then ;ä
     Ascii=228 
    ElseIf Ascii=214 Then ;ö
     Ascii=246
   End If
   R$=R$+Chr$(ASCII)
  Next
  Return R$
 End If
End Function


Function PreAsm(InputFile$,OutputFile$)
 OutputNr=WriteFile(OutputFile$)
 If OutputNr=0 Then Return False

 InputNr=ReadFile(InputFile$)
 If InputNr=0 Then Return False


 While Not(Eof(InputNr))
  Zeile$=ReadLine$(InputNr)
  ParameterZahl=ArgZahl(Zeile$)
  If ParameterZahl>0 Then
   If ArgTyp$(Zeile$,1)="z" Then
    BefehlGunden=False
    For BefehlNr=1 To MaxVMBefehle
     If Lower$(Arg$(Zeile$,1))=CodeName[BefehlNr] Then
      BefehlZeiger=BefehlZeiger+BefehlLang[BefehlNr]
      BefehlGunden=True
     EndIf
    Next
    If BefehlGunden=False Then
     If TestBezeichner(Arg$(Zeile$,1))=True Then
      If ParameterZahl>2 Then
       If ArgTyp$(Zeile$,2)="z" Then
        Select Lower$(Arg$(Zeile$,2))
         Case "dw"
          If ParameterZahl=3 Then
           AddWert Arg$(Zeile$,1),DatenZeiger
           DatenZeiger=DatenZeiger+1

          ElseIf ParameterZahl=4 Then   
           If ArgTyp$(Zeile$,3)="z" Then
            If TestZahl(Arg(Zeile$,3))=True Then
             If ArgTyp$(Zeile$,4)="z" Then
              If Lower$(Arg(Zeile$,4))="dup" Then
               AddWert Arg$(Zeile$,1),DatenZeiger
               DatenZeiger=DatenZeiger+Int(Arg(Zeile$,3))
              EndIf 
             EndIf   
            EndIf   
           EndIf

          EndIf
         Case "equ"
          If ArgTyp$(Zeile$,3)="z" Then
           If TestZahl(Arg$(Zeile$,3))=True Then
            AddWert Arg$(Zeile$,1),Arg$(Zeile$,3)
           EndIf   
          EndIf   
        End Select
       EndIf
      EndIf
     ElseIf TestLabel(Arg$(Zeile$,1))=True Then 
      AddWert Mid$(Arg$(Zeile$,1),1,Len(Arg$(Zeile$,1))-1),BefehlZeiger 
     EndIf
    EndIf       
   EndIf
  EndIf   
 Wend

 CloseFile InputNr
 
 InputNr=ReadFile(InputFile$)
 If InputNr=0 Then Return False

 
 While Not(Eof(InputNr))
  Zeile$=ReadLine$(InputNr)
  ParameterZahl=ArgZahl(Zeile$)
  If ParameterZahl>0 Then
   OZeile$=Arg$(Zeile$,1)   
   For Zeiger=2 To ParameterZahl
    If ArgTyp$(Zeile$,Zeiger)="z" Then
     NameNr=Exist(Arg$(Zeile$,Zeiger))
     If NameNr<>-1 Then
      OZeile$=OZeile$+" "+GetWert(NameNr)
     Else
      OZeile$=OZeile$+" "+Arg$(Zeile$,Zeiger)
     EndIf
    EndIf
   Next
   WriteLine OutputNr, OZeile$
  EndIf 
 Wend 

 CloseFile Output
 CloseFile Input
 
 Return True
End Function


Function Arg$(Zeile$,Index)
 Lang=Len(Zeile$)
 P=1
 Parameter$=""
 For P=P To Lang
  If Mid$(Zeile$,P,1)=Chr$(34) Then
   For P=P+1 To Lang
    If Mid$(Zeile$,P,1)=Chr$(34) Then
     Exit
    EndIf
    Parameter$=Parameter$+Mid$(Zeile$,P,1)
   Next 
   ParameterZahl=ParameterZahl+1

  ElseIf Mid$(Zeile$,P,1)="(" Then 
   ParameterZahl=ParameterZahl+1
   Parameter$="("
 
  ElseIf Mid$(Zeile$,P,1)=")" Then 
   ParameterZahl=ParameterZahl+1
   Parameter$=")" 

  ElseIf Mid$(Zeile$,P,1)="+" Then
   ParameterZahl=ParameterZahl+1
   Parameter$="+" 

  ElseIf Mid$(Zeile$,P,1)="-" Then
   ParameterZahl=ParameterZahl+1
   Parameter$="-" 

  ElseIf Mid$(Zeile$,P,1)="*" Then 
   ParameterZahl=ParameterZahl+1
   Parameter$="*" 

  ElseIf Mid$(Zeile$,P,1)="/" Then
   ParameterZahl=ParameterZahl+1
   Parameter$="/" 

  ElseIf Mid$(Zeile$,P,1)="," Then
   ParameterZahl=ParameterZahl+1
   Parameter$=","

  ElseIf Mid$(Zeile$,P,1)=";" Then 
   Return ""

  ElseIf Mid$(Zeile$,P,1)=" " Then
   Parameter$=""

  ElseIf Mid$(Zeile$,P,1)="=" Then
   ParameterZahl=ParameterZahl+1
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)=">" Then
     Parameter$="=>" 
     P=P+1

    ElseIf Mid$(Zeile$,P+1,1)="<" Then
     Parameter$="=<" 
     P=P+1

    Else 
     Parameter$="="
 
    EndIf
   Else
    Parameter$="=" 

   EndIf 

  ElseIf Mid$(Zeile$,P,1)=">" Then
   ParameterZahl=ParameterZahl+1
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)="=" Then
     Parameter$="=>" 
     P=P+1

    Else
     Parameter$=">" 

    EndIf
   Else
    Parameter$=">" 

   EndIf

  ElseIf Mid$(Zeile$,P,1)="<" Then
   ParameterZahl=ParameterZahl+1
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)="=" Then
     Parameter$="=<" 
     P=P+1

    Else
     Parameter$="<" 

    EndIf
   Else
    Parameter$="<" 

   EndIf
  Else
   Parameter$=""
   ParameterZahl=ParameterZahl+1
   For P=P To lang
    If     Mid$(Zeile$,P,1)=" " Then
     Exit
    ElseIf Mid$(Zeile$,P,1)="(" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)=")" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="+" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="-" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="*" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="/" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="," Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="=" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)=">" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="<" Then
     P=P-1
     Exit
    Else
     Parameter$=Parameter$+Mid$(Zeile$,P,1)
    EndIf
   Next
  EndIf
  If Index=ParameterZahl Then Return Parameter$
 Next
End Function

Function ArgZahl(Zeile$)
 Lang=Len(Zeile$)
 P=1
 For P=P To Lang
  If Mid$(Zeile$,P,1)=Chr$(34) Then
   For P=P+1 To Lang
    If Mid$(Zeile$,P,1)=Chr$(34) Then
     Exit
    EndIf
   Next 
   ParameterZahl=ParameterZahl+1

  ElseIf Mid$(Zeile$,P,1)="(" Then 
   ParameterZahl=ParameterZahl+1
 
  ElseIf Mid$(Zeile$,P,1)=")" Then 
   ParameterZahl=ParameterZahl+1

  ElseIf Mid$(Zeile$,P,1)="+" Then
   ParameterZahl=ParameterZahl+1

  ElseIf Mid$(Zeile$,P,1)="-" Then
   ParameterZahl=ParameterZahl+1 

  ElseIf Mid$(Zeile$,P,1)="*" Then 
   ParameterZahl=ParameterZahl+1

  ElseIf Mid$(Zeile$,P,1)="/" Then
   ParameterZahl=ParameterZahl+1

  ElseIf Mid$(Zeile$,P,1)="," Then
   ParameterZahl=ParameterZahl+1

  ElseIf Mid$(Zeile$,P,1)=";" Then 
   Return ParameterZahl

  ElseIf Mid$(Zeile$,P,1)=" " Then

  ElseIf Mid$(Zeile$,P,1)="=" Then
   ParameterZahl=ParameterZahl+1
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)=">" Then
     P=P+1
    ElseIf Mid$(Zeile$,P+1,1)="<" Then
     P=P+1
    EndIf
   EndIf 

  ElseIf Mid$(Zeile$,P,1)=">" Then
   ParameterZahl=ParameterZahl+1
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)="=" Then
     P=P+1
    EndIf
   EndIf

  ElseIf Mid$(Zeile$,P,1)="<" Then
   ParameterZahl=ParameterZahl+1
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)="=" Then
     P=P+1
    EndIf
   EndIf
  Else
   ParameterZahl=ParameterZahl+1
   For P=P To lang
    If     Mid$(Zeile$,P,1)=" " Then
     Exit
    ElseIf Mid$(Zeile$,P,1)="(" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)=")" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="+" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="-" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="*" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="/" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="," Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="=" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)=">" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="<" Then
     P=P-1
     Exit
    EndIf
   Next
  EndIf
 Next
 Return ParameterZahl
End Function

Function ArgTyp$(Zeile$,Index)
 Lang=Len(Zeile$)
 P=1
 For P=P To Lang
  If Mid$(Zeile$,P,1)=Chr$(34) Then
   For P=P+1 To Lang
    If Mid$(Zeile$,P,1)=Chr$(34) Then
     Exit
    EndIf
   Next
   ParameterTyp$="$"   
   ParameterZahl=ParameterZahl+1

  ElseIf Mid$(Zeile$,P,1)="(" Then 
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="#" 

  ElseIf Mid$(Zeile$,P,1)=")" Then 
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="#"

  ElseIf Mid$(Zeile$,P,1)="+" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="#"

  ElseIf Mid$(Zeile$,P,1)="-" Then
   ParameterZahl=ParameterZahl+1 
   ParameterTyp$="#"

  ElseIf Mid$(Zeile$,P,1)="*" Then 
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="#"

  ElseIf Mid$(Zeile$,P,1)="/" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="#"

  ElseIf Mid$(Zeile$,P,1)="," Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="#"

  ElseIf Mid$(Zeile$,P,1)=";" Then 
   Return ""

  ElseIf Mid$(Zeile$,P,1)=" " Then

  ElseIf Mid$(Zeile$,P,1)="=" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="#"
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)=">" Then
     P=P+1
    ElseIf Mid$(Zeile$,P+1,1)="<" Then
     P=P+1
    EndIf
   EndIf 

  ElseIf Mid$(Zeile$,P,1)=">" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="#"
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)="=" Then
     P=P+1
    EndIf
   EndIf

  ElseIf Mid$(Zeile$,P,1)="<" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="#"
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)="=" Then
     P=P+1
    EndIf
   EndIf
  Else
   ParameterZahl=ParameterZahl+1
   ParameterTyp$="z"
   For P=P To lang
    If     Mid$(Zeile$,P,1)=" " Then
     Exit
    ElseIf Mid$(Zeile$,P,1)="(" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)=")" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="+" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="-" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="*" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="/" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="," Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="=" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)=">" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="<" Then
     P=P-1
     Exit
    EndIf
   Next
  EndIf
  If Index=ParameterZahl Then
   Return ParameterTyp$
  EndIf
 Next
End Function

Function ArgTyps$(Zeile$)
 Lang=Len(Zeile$)
 P=1
 For P=P To Lang
  If Mid$(Zeile$,P,1)=Chr$(34) Then
   For P=P+1 To Lang
    If Mid$(Zeile$,P,1)=Chr$(34) Then
     Exit
    EndIf
   Next
   ParameterTyp$=ParameterTyp$+"$"   
   ParameterZahl=ParameterZahl+1

  ElseIf Mid$(Zeile$,P,1)="(" Then 
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"#" 

  ElseIf Mid$(Zeile$,P,1)=")" Then 
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"#"

  ElseIf Mid$(Zeile$,P,1)="+" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"#"

  ElseIf Mid$(Zeile$,P,1)="-" Then
   ParameterZahl=ParameterZahl+1 
   ParameterTyp$=ParameterTyp$+"#"

  ElseIf Mid$(Zeile$,P,1)="*" Then 
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"#"

  ElseIf Mid$(Zeile$,P,1)="/" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"#"

  ElseIf Mid$(Zeile$,P,1)="," Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"#"

  ElseIf Mid$(Zeile$,P,1)=";" Then 
   Return ParameterTyp$

  ElseIf Mid$(Zeile$,P,1)=" " Then

  ElseIf Mid$(Zeile$,P,1)="=" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"#"
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)=">" Then
     P=P+1
    ElseIf Mid$(Zeile$,P+1,1)="<" Then
     P=P+1
    EndIf
   EndIf 

  ElseIf Mid$(Zeile$,P,1)=">" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"#"
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)="=" Then
     P=P+1
    EndIf
   EndIf

  ElseIf Mid$(Zeile$,P,1)="<" Then
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"#"
   If P<Lang Then
    If Mid$(Zeile$,P+1,1)="=" Then
     P=P+1
    EndIf
   EndIf
  Else
   ParameterZahl=ParameterZahl+1
   ParameterTyp$=ParameterTyp$+"z"
   For P=P To lang
    If     Mid$(Zeile$,P,1)=" " Then
     Exit
    ElseIf Mid$(Zeile$,P,1)="(" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)=")" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="+" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="-" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="*" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="/" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="," Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="=" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)=">" Then
     P=P-1
     Exit
    ElseIf Mid$(Zeile$,P,1)="<" Then
     P=P-1
     Exit
    EndIf
   Next
  EndIf
 Next
 Return ParameterTyp$
End Function

Das große BlitzBasic Community Tutorial
Stackmaschine 2.0
 

Florian

BeitragFr, Apr 07, 2006 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasicVM und Assembler

Basic
Code: [AUSKLAPPEN]

Const Print, 1
Const End, 2

call Test 10,20,3

Int End

Sub Test var1, var2, var3
 Mul Var1, Var2
 Int Print, var1
 add Var1,var3
 Int Print,var1
 exitsub
 Div Var,var2
End sub


Basic im Asm
Code: [AUSKLAPPEN]

;Const Print, 1
;Const End, 2
;call Test 10,20,3
Push 3
Push 20
Push 10
Call Test

;Int End
Int 2

;Sub Test var1, var2, var3
Test:
 AStor var1
 AStor var2
 AStor var3

 var1 dw 0
 var2 dw 0
 var3 dw 0

 ; Mul Var1, Var2
 Aload Var1
 Aload Var2
 Mul
 AStor Var1

 ; Int Print, var1
 Aload var1
 Int 1

 ; add Var1,var3
 Aload Var1
 Aload var3
 Add
 AStor Var1

 ; Int Print,var1
 Aload var1
 Int 1

Ret

 ; Div Var,var2
 Aload Var
 Aload var2
 Div
 AStor Var

Ret



PreAssembler verarbeitung
Code: [AUSKLAPPEN]

Push 3
Push 20
Push 10
Call 10
Int 2
Test:
AStor 0
AStor 1
AStor 2
var1 dw 0
var2 dw 0
var3 dw 0
Aload 0
Aload 1
Mul
AStor 0
Aload 0
Int 1
Aload 0
Aload 2
Add
AStor 0
Aload 0
Int 1
Ret
Aload Var
Aload 1
Div
AStor Var
Ret



Ausgabe
Code: [AUSKLAPPEN]

200
203


BlitzBasicVM und Assembler ver. 2
Neu -Function SuperAssembler

Code: [AUSKLAPPEN]

[Befehlsliste vom Assembler]

Const1 equ 100
Const2 equ ?
Const3 equ
Const4 equ Name

dw 100
dd 120
db 140

dw ?
dd ?
db ?

dw 10 dup
dd 12 dup
db 14 dup

dw 10 dup(?)
dd 12 dup(?)
db 14 dup(?)

dw 10 dup(49)
dd 12 dup(50)
db 14 dup(51)

dw 10 dup("a")
dd 12 dup("b")
db 14 dup("c")

String "Test"
String*10="Test2"

Var1 dw
Var2 dd
Var3 db

Var1 dw ?
Var2 dd ?
Var3 db ?

Var1 dw 1
Var2 dd 2
Var3 db 3

Var1 dw 10 dup
Var2 dd 20 dup
Var3 db 30 dup

Var1 dw 10 dup(10)
Var2 dd 20 dup(11)
Var3 db 30 dup(12)

Var1 dw 10 dup(?)
Var2 dd 20 dup(?)
Var3 db 30 dup(?)

Var1 dw 10 dup("a")
Var2 dd 20 dup("b")
Var3 db 30 dup("c")

Label:

Das große BlitzBasic Community Tutorial
Stackmaschine 2.0

Plasma

Betreff: hmm

BeitragSa, März 15, 2008 11:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ob es jemals weitergeht ....?
 

Florian

BeitragSa, März 29, 2008 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Weder der Compiler, noch der Assembler noch die BlitzBasicVM wird weiter entwickelt.

Es wird aber eine andere Programmiersprache geben, die in C++ implemtiert ist.

http://rapidshare.com/files/10...r.zip.html

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group