vmbc/vm.pb

55 lines
No EOL
1 KiB
Text

; vm
Structure opi
code.l
args.s
EndStructure
; In theory this is a byte code interpreter
; Also mad science and may not work
Procedure writeblock (fid, *opco.opi)
; used by compile to write compiled code to file
WriteByte(fid, *opco\code)
WriteLong(fid, Len(*opco\args))
WriteData(fid, @*opco\args, Len(*opco\args))
EndProcedure
Procedure readblock (fid, *opci.opi)
; should not need to be explained
*opci\code = ReadByte(fid)
*opci\args = Space(ReadLong(fid))
ReadData(fid, @*opci\args, Len(*opci\args))
EndProcedure
;for demo purposes we hard wire the code
opcobj.opi\code = $01
opcobj.opi\args = "Hi world"
; now write bytecode to file
OpenFile(0,"test.byc")
writeblock(0, opcobj)
CloseFile(0)
; now read
OpenFile(1,"test.byc")
readblock(1, opcoobj.opi)
CloseFile(1)
;run
Select opcoobj\code
Case $01 : MessageRequester("ouput",opcoobj\args)
EndSelect
; IDE Options = PureBasic 4.61 (Windows - x86)
; CursorPosition = 3
; Folding = -
; EnableXP
; Executable = ..\Desktop\vm.exe