Enum Opcode

Source
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)]

See https://en.wikipedia.org/wiki/Reverse_Polish_notation

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

§

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

Trait Implementations§

Source§

impl Clone for Opcode

Source§

fn clone(&self) -> Opcode

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Opcode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Opcode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V