MPL Bytecode Compiler Code
Micro Programming Language - A Portable Language for Micro Computers
Status: Beta
Brought to you by:
buzzphp
##LIBDEF
**FREE //
**MALLOC //
**VECCLR //
**VECCPY //
**VECEND //
**VECHEAP //
**VECMOD //
**VECMOV //
**VECNEW //
**VECSET //
**VECUSED //
[
VEC.HEAP
VECCLR$(D,L) [>L--@D!L=0;D]
VECSET$(D,L,V) [>L--@D!L=V;D]
VECCPY$(D,S,L) [>L--@D!L=S!L;D]
VECMOD$(D,S,L,F) [>L--@D!L=F(S!L);D]
VECMOV$(D,S,L;I) [D<S?[I=0;I<L@[D!I=S!I;++I]],D<>S?>L--@D!L=S!L;D]
VECHEAP$(V,L)[VEC.HEAP=V;!V=--L*.INT;V!L=0]
VECUSED$(;V,L)[L=0;V=VEC.HEAP;!V@<!V?[L-=!V;V-=!V],V+=!V;L]
VECNEW$(N;V,R) [N=(N+1)*.INT;V=VEC.HEAP;
!V@[<!V@V-=!V;R=V;>!V@V+=!V;!R=V-R;N<=!R?[!(R+N)=!R-N;!R=-N;=R+.INT]]
]
VECEND$(V)V?<V!-1?V!-1=-V!-1
MALLOC$(L)VECNEW((L+1)/.INT)
FREE$(V)VECEND(V)
]