Skip to content

vihaco_cpu (crate)

vihaco_cpu

vihaco_cpu

classCPUsource

vihaco_cpu::CPU

Bases: Reset, GeneratedComponent, Default, Debug, HasInstructionSet, Component, StackMemory, StackFrame, FrameMemory

Rust struct.

pub struct CPU
source

methodclear_pending_pcsource

vihaco_cpu::CPU::clear_pending_pc

pub fn clear_pending_pc(&mut self)
source

methoddealloc_heap_objectsource

vihaco_cpu::CPU::dealloc_heap_object

pub fn dealloc_heap_object(&mut self, id: u32) -> Result<()>

Parameters

NameTypeDescription
idu32

Returns

Result<()>

source

methodexecute_instructionsource

vihaco_cpu::CPU::execute_instruction

Signature
pub fn execute_instruction(&mut self, inst: RuntimeInstruction) -> Result<StepOutcome>

Parameters

NameTypeDescription
instRuntimeInstruction

Returns

Result<StepOutcome>

source

methodheap_objectsource

vihaco_cpu::CPU::heap_object

pub fn heap_object(&self, id: u32) -> Result<&[Value]>

Parameters

NameTypeDescription
idu32

Returns

Result<&[Value]>

source

methodop_addsource

vihaco_cpu::CPU::op_add

pub fn op_add(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_andsource

vihaco_cpu::CPU::op_and

pub fn op_and(&mut self) -> Result<StepOutcome>

Returns

Result<StepOutcome>

source

methodop_bitandsource

vihaco_cpu::CPU::op_bitand

pub fn op_bitand(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_bitorsource

vihaco_cpu::CPU::op_bitor

pub fn op_bitor(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_bitxorsource

vihaco_cpu::CPU::op_bitxor

pub fn op_bitxor(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_branchsource

vihaco_cpu::CPU::op_branch

pub fn op_branch(&mut self, target: u32) -> Result<StepOutcome>

Parameters

NameTypeDescription
targetu32

Returns

Result<StepOutcome>

source

methodop_callsource

vihaco_cpu::CPU::op_call

Signature
pub fn op_call(&mut self, arity: u32, target: u32) -> Result<StepOutcome>

Parameters

NameTypeDescription
arityu32
targetu32

Returns

Result<StepOutcome>

source

methodop_conditional_branchsource

vihaco_cpu::CPU::op_conditional_branch

Signature
pub fn op_conditional_branch(&mut self, true_target: u32, false_target: u32) -> Result<StepOutcome>

Parameters

NameTypeDescription
true_targetu32
false_targetu32

Returns

Result<StepOutcome>

source

methodop_constsource

vihaco_cpu::CPU::op_const

pub fn op_const(&mut self, v: Value) -> Result<StepOutcome>

Parameters

NameTypeDescription
vValue

Returns

Result<StepOutcome>

source

methodop_divsource

vihaco_cpu::CPU::op_div

pub fn op_div(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_dupsource

vihaco_cpu::CPU::op_dup

pub fn op_dup(&mut self) -> Result<StepOutcome>

Returns

Result<StepOutcome>

source

methodop_eqsource

vihaco_cpu::CPU::op_eq

pub fn op_eq(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_gesource

vihaco_cpu::CPU::op_ge

pub fn op_ge(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_get_itemsource

vihaco_cpu::CPU::op_get_item

pub fn op_get_item(&mut self) -> Result<StepOutcome>

Returns

Result<StepOutcome>

source

methodop_gtsource

vihaco_cpu::CPU::op_gt

pub fn op_gt(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_heap_allocsource

vihaco_cpu::CPU::op_heap_alloc

pub fn op_heap_alloc(&mut self, n_elements: u32) -> Result<StepOutcome>

Parameters

NameTypeDescription
n_elementsu32

Returns

Result<StepOutcome>

source

methodop_heap_deallocsource

vihaco_cpu::CPU::op_heap_dealloc

pub fn op_heap_dealloc(&mut self) -> Result<StepOutcome>

Returns

Result<StepOutcome>

source

methodop_indirect_callsource

vihaco_cpu::CPU::op_indirect_call

pub fn op_indirect_call(&mut self) -> Result<StepOutcome>

Returns

Result<StepOutcome>

source

methodop_lesource

vihaco_cpu::CPU::op_le

pub fn op_le(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_ltsource

vihaco_cpu::CPU::op_lt

pub fn op_lt(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_mulsource

vihaco_cpu::CPU::op_mul

pub fn op_mul(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_nesource

vihaco_cpu::CPU::op_ne

pub fn op_ne(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_negsource

vihaco_cpu::CPU::op_neg

pub fn op_neg(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_notsource

vihaco_cpu::CPU::op_not

pub fn op_not(&mut self) -> Result<StepOutcome>

Returns

Result<StepOutcome>

source

methodop_orsource

vihaco_cpu::CPU::op_or

pub fn op_or(&mut self) -> Result<StepOutcome>

Returns

Result<StepOutcome>

source

methodop_remsource

vihaco_cpu::CPU::op_rem

pub fn op_rem(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_returnsource

vihaco_cpu::CPU::op_return

pub fn op_return(&mut self, keep: u32) -> Result<StepOutcome>

Parameters

NameTypeDescription
keepu32

Returns

Result<StepOutcome>

source

methodop_rolsource

vihaco_cpu::CPU::op_rol

pub fn op_rol(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_rorsource

vihaco_cpu::CPU::op_ror

pub fn op_ror(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_shlsource

vihaco_cpu::CPU::op_shl

pub fn op_shl(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_shrsource

vihaco_cpu::CPU::op_shr

pub fn op_shr(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_spansource

vihaco_cpu::CPU::op_span

Signature
pub fn op_span(&mut self, file: u32, start: u32, end: u32) -> Result<StepOutcome>

Parameters

NameTypeDescription
fileu32
startu32
endu32

Returns

Result<StepOutcome>

source

methodop_storesource

vihaco_cpu::CPU::op_store

pub fn op_store(&mut self, ty: Type, addr: u32) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType
addru32

Returns

Result<StepOutcome>

source

methodop_subsource

vihaco_cpu::CPU::op_sub

pub fn op_sub(&mut self, ty: Type) -> Result<StepOutcome>

Parameters

NameTypeDescription
tyType

Returns

Result<StepOutcome>

source

methodop_xorsource

vihaco_cpu::CPU::op_xor

pub fn op_xor(&mut self) -> Result<StepOutcome>

Returns

Result<StepOutcome>

source

methodpush_heap_objectsource

vihaco_cpu::CPU::push_heap_object

pub fn push_heap_object(&mut self, values: Box<[Value]>) -> u32

Parameters

NameTypeDescription
valuesBox&lt;[Value]&gt;

Returns

u32

source

methodreturn_valuessource

vihaco_cpu::CPU::return_values

pub fn return_values(&self) -> &[Value]

Returns

&[Value]

source

methodset_current_pcsource

vihaco_cpu::CPU::set_current_pc

pub fn set_current_pc(&mut self, pc: u32)

Parameters

NameTypeDescription
pcu32
source

methodset_pending_pcsource

vihaco_cpu::CPU::set_pending_pc

pub fn set_pending_pc(&mut self, pc: u32)

Parameters

NameTypeDescription
pcu32
source

methodset_return_valuessource

vihaco_cpu::CPU::set_return_values

pub fn set_return_values(&mut self, values: Vec<Value>)

Parameters

NameTypeDescription
valuesVec&lt;Value&gt;
source

methodtake_pending_pcsource

vihaco_cpu::CPU::take_pending_pc

pub fn take_pending_pc(&mut self) -> Option<u32>

Returns

Option<u32>

source

classCPUMessagesource

vihaco_cpu::CPUMessage

Bases: Debug, Clone, StructuralPartialEq, PartialEq, Message

Rust enum.

pub enum CPUMessage

Variants

NameTypeDescription
None—
FunctionInfo{ ... }
Print(String)
source

classRuntimeInstructionsource

vihaco_cpu::RuntimeInstruction

Bases: Clone, Debug, StructuralPartialEq, PartialEq, Display, From&lt;T&gt;

Rust enum.

pub enum RuntimeInstruction

Variants

NameTypeDescription
Span(u32, u32, u32)
Label(Ident)
FunctionStart—
FunctionEnd—
Breakpoint—
Branch(u32)
ConditionalBranch(u32, u32)
Return(u32)
IndirectCall—
Call(u32, u32)
Halt—
Print—
Load(Type, u32)
Store(Type, u32)
Dup—
HeapAlloc(u32)
GetItem—
HeapDealloc—
Const(Type, Value)
Add(Type)
Sub(Type)
Mul(Type)
Div(Type)
Rem(Type)
Neg(Type)
Shl(Type)
Shr(Type)
Rol(Type)
Ror(Type)
BitAnd(Type)
BitOr(Type)
BitXor(Type)
Not—
And—
Or—
Xor—
Eq(Type)
Ne(Type)
Lt(Type)
Gt(Type)
Le(Type)
Ge(Type)
source

classStepOutcomesource

vihaco_cpu::StepOutcome

Bases: Debug, Clone, Copy, StructuralPartialEq, PartialEq, Eq

Rust enum.

pub enum StepOutcome

Variants

NameTypeDescription
Continue—
Breakpoint—
Return—
Halt—
source

classSurfaceInstructionsource

vihaco_cpu::SurfaceInstruction

Bases: Clone, Debug, StructuralPartialEq, PartialEq, Parse&lt;'__vihaco_src&gt;, SurfaceInstruction

Rust enum.

pub enum SurfaceInstruction

Variants

NameTypeDescription
Span(u32, u32, u32)
Label(Ident)
FunctionStart—
FunctionEnd—
Breakpoint—
Branch(Ident)
ConditionalBranch(Ident, Ident)
Return(u32)
IndirectCall—
Call(u32, Ident)
Halt—
Print—
Load(SurfaceType, u32)
Store(SurfaceType, u32)
Dup—
HeapAlloc(u32)
GetItem—
HeapDealloc—
Const(SurfaceType, SurfaceValue)
Add(SurfaceType)
Sub(SurfaceType)
Mul(SurfaceType)
Div(SurfaceType)
Rem(SurfaceType)
Neg(SurfaceType)
Shl(SurfaceType)
Shr(SurfaceType)
Rol(SurfaceType)
Ror(SurfaceType)
BitAnd(SurfaceType)
BitOr(SurfaceType)
BitXor(SurfaceType)
Not—
And—
Or—
Xor—
Eq(SurfaceType)
Ne(SurfaceType)
Lt(SurfaceType)
Gt(SurfaceType)
Le(SurfaceType)
Ge(SurfaceType)
source

classSurfaceTypesource

vihaco_cpu::SurfaceType

Bases: Debug, Clone, Copy, StructuralPartialEq, PartialEq, Parse&lt;'__vihaco_src&gt;

Rust enum.

pub enum SurfaceType

Variants

NameTypeDescription
Undefined—
String—
Bool—
I64—
U32—
U64—
F64—
FunctionRef—
HeapRef—
source

classSurfaceValuesource

vihaco_cpu::SurfaceValue

Bases: Debug, Clone, StructuralPartialEq, PartialEq, Eq, Parse&lt;'__vihaco_src&gt;

Rust enum.

pub enum SurfaceValue

Variants

NameTypeDescription
Quoted(QuotedString)
Bare(BareToken)
source