pub enum Opcode {
Show 91 variants
Literal(Val),
Push(Rc<str>),
Pop(Rc<str>),
PushArr(Rc<str>),
PopArr(Rc<str>),
DimArr(Rc<str>),
EraseArr(Rc<str>),
IfNot(Address),
Jump(Address),
Next(Rc<str>),
On,
Return,
Clear,
Cls,
Cont,
Def(Rc<str>),
Defdbl,
Defint,
Defsng,
Defstr,
Delete,
End,
Fn(Rc<str>),
Input(Rc<str>),
LetMid,
List,
Load,
LoadRun,
New,
Print,
Read,
Renum,
Restore(Address),
Save,
Stop,
Swap,
Troff,
Tron,
Neg,
Pow,
Mul,
Div,
DivInt,
Mod,
Add,
Sub,
Eq,
NotEq,
Lt,
LtEq,
Gt,
GtEq,
Not,
And,
Or,
Xor,
Imp,
Eqv,
Abs,
Asc,
Atn,
Cdbl,
Chr,
Cint,
Cos,
Csng,
Date,
Exp,
Fix,
Hex,
Inkey,
Instr,
Int,
Left,
Len,
Log,
Mid,
Oct,
Pos,
Right,
Rnd,
Sgn,
Sin,
Spc,
Sqr,
Str,
String,
Tab,
Tan,
Time,
Val,
}
Expand description
§Virtual machine instruction set
The BASIC virtual machine has no registers. Every operation is performed on the stack.
For example: LET A=3*B
compiles to [Literal(3), Push(B), Mul, Pop(A)]
Variants§
Literal(Val)
Push literal value on to the stack.
Push(Rc<str>)
Push stack value of named variable. Infallible.
Pop(Rc<str>)
Pop stack value to named variable. This is the LET
statement
and may generate errors.
PushArr(Rc<str>)
PopArr(Rc<str>)
DimArr(Rc<str>)
EraseArr(Rc<str>)
IfNot(Address)
Pop stack and branch to Address if not zero.
Jump(Address)
Unconditional branch to Address.
Next(Rc<str>)
Process the FOR loop on the stack.
On
ON x GOTO/GOSUB lines
Return
Expect Return(Address) on stack or else error: RETURN WITHOUT GOSUB. A single assignable value before the Return(Address) will be restored to the stack. Branch to Address.
Clear
Cls
Cont
Def(Rc<str>)
Defdbl
Defint
Defsng
Defstr
Delete
End
Fn(Rc<str>)
Input(Rc<str>)
LetMid
List
Load
LoadRun
New
Read
Renum
Restore(Address)
Save
Stop
Swap
Troff
Tron
Neg
Pow
Mul
Div
DivInt
Mod
Add
Sub
Eq
NotEq
Lt
LtEq
Gt
GtEq
Not
And
Or
Xor
Imp
Eqv
Abs
Asc
Atn
Cdbl
Chr
Cint
Cos
Csng
Date
Exp
Fix
Hex
Inkey
Instr
Int
Left
Len
Log
Mid
Oct
Pos
Right
Rnd
Sgn
Sin
Spc
Sqr
Str
String
Tab
Tan
Time
Val
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Opcode
impl RefUnwindSafe for Opcode
impl !Send for Opcode
impl !Sync for Opcode
impl Unpin for Opcode
impl UnwindSafe for Opcode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more