Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
|
|
@ -0,0 +1,82 @@
|
|||
Type Instruccion
|
||||
opcode As String * 5
|
||||
operand As Integer
|
||||
has_operand As Integer
|
||||
End Type
|
||||
|
||||
Dim Shared As Integer datasize = 1, nstrings = 2
|
||||
|
||||
Dim Shared As String strings(1)
|
||||
strings(0) = "count is: "
|
||||
strings(1) = Chr(10)
|
||||
|
||||
Dim Shared As Instruccion code(17)
|
||||
code(0) = Type("push" , 1 , 1)
|
||||
code(1) = Type("store", 0 , 1)
|
||||
code(2) = Type("fetch", 0 , 1)
|
||||
code(3) = Type("push" , 10, 1)
|
||||
code(4) = Type("lt" , 0 , 0)
|
||||
code(5) = Type("jz" , 17, 1)
|
||||
code(6) = Type("push" , 0 , 1)
|
||||
code(7) = Type("prts" , 0 , 0)
|
||||
code(8) = Type("fetch", 0 , 1)
|
||||
code(9) = Type("prti" , 0 , 0)
|
||||
code(10) = Type("push" , 1 , 1)
|
||||
code(11) = Type("prts" , 0 , 0)
|
||||
code(12) = Type("fetch", 0 , 1)
|
||||
code(13) = Type("push" , 1 , 1)
|
||||
code(14) = Type("add" , 0 , 0)
|
||||
code(15) = Type("store", 0 , 1)
|
||||
code(16) = Type("jmp" , 2 , 1)
|
||||
code(17) = Type("halt" , 0 , 0)
|
||||
|
||||
|
||||
' Stack, memory data
|
||||
Dim Shared As Integer stack(100), dato(10)
|
||||
Dim Shared As Integer sp_ = 0, pc_ = 0
|
||||
|
||||
Function pop() As Integer
|
||||
sp_ -= 1
|
||||
Return stack(sp_)
|
||||
End Function
|
||||
|
||||
Sub push(valor As Integer)
|
||||
stack(sp_) = valor
|
||||
sp_ += 1
|
||||
End Sub
|
||||
|
||||
Dim As Boolean running = True
|
||||
|
||||
Do While running
|
||||
Dim As Instruccion inst = code(pc_)
|
||||
pc_ += 1
|
||||
|
||||
Select Case inst.opcode
|
||||
Case "push"
|
||||
push(inst.operand)
|
||||
Case "store"
|
||||
dato(inst.operand) = pop()
|
||||
Case "fetch"
|
||||
push(dato(inst.operand))
|
||||
Case "add"
|
||||
Dim As Integer b = pop(), a = pop()
|
||||
push(a + b)
|
||||
Case "lt"
|
||||
Dim As Integer b = pop(), a = pop()
|
||||
push(Iif(a < b, 1, 0))
|
||||
Case "jz"
|
||||
Dim As Integer cond = pop()
|
||||
If cond = 0 Then pc_ = inst.operand
|
||||
Case "jmp"
|
||||
pc_ = inst.operand
|
||||
Case "prts"
|
||||
'Dim As Integer idx = pop()
|
||||
Print strings(pop());
|
||||
Case "prti"
|
||||
Print pop();
|
||||
Case "halt"
|
||||
running = False
|
||||
End Select
|
||||
Loop
|
||||
|
||||
Sleep
|
||||
Loading…
Add table
Add a link
Reference in a new issue