vihaco_cpu (crate)
vihaco_cpu¶
vihaco_cpu
classCPU¶source
vihaco_cpu::CPU
Bases: Reset, GeneratedComponent, Default, Debug, HasInstructionSet, Component, StackMemory, StackFrame, FrameMemory
Rust struct.
pub struct CPUmethodclear_pending_pc¶source
vihaco_cpu::CPU::clear_pending_pc
pub fn clear_pending_pc(&mut self)methoddealloc_heap_object¶source
vihaco_cpu::CPU::dealloc_heap_object
pub fn dealloc_heap_object(&mut self, id: u32) -> Result<()>Parameters
| Name | Type | Description |
|---|---|---|
id | u32 |
Returns
Result<()>
methodexecute_instruction¶source
vihaco_cpu::CPU::execute_instruction
Signature
pub fn execute_instruction(&mut self, inst: RuntimeInstruction) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
inst | RuntimeInstruction |
Returns
Result<StepOutcome>
methodheap_object¶source
vihaco_cpu::CPU::heap_object
pub fn heap_object(&self, id: u32) -> Result<&[Value]>Parameters
| Name | Type | Description |
|---|---|---|
id | u32 |
Returns
Result<&[Value]>
methodop_add¶source
vihaco_cpu::CPU::op_add
pub fn op_add(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_and¶source
vihaco_cpu::CPU::op_and
methodop_bitand¶source
vihaco_cpu::CPU::op_bitand
pub fn op_bitand(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_bitor¶source
vihaco_cpu::CPU::op_bitor
pub fn op_bitor(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_bitxor¶source
vihaco_cpu::CPU::op_bitxor
pub fn op_bitxor(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_branch¶source
vihaco_cpu::CPU::op_branch
pub fn op_branch(&mut self, target: u32) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
target | u32 |
Returns
Result<StepOutcome>
methodop_call¶source
vihaco_cpu::CPU::op_call
Signature
pub fn op_call(&mut self, arity: u32, target: u32) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
arity | u32 | |
target | u32 |
Returns
Result<StepOutcome>
methodop_conditional_branch¶source
vihaco_cpu::CPU::op_conditional_branch
Signature
pub fn op_conditional_branch(&mut self, true_target: u32, false_target: u32) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
true_target | u32 | |
false_target | u32 |
Returns
Result<StepOutcome>
methodop_const¶source
vihaco_cpu::CPU::op_const
pub fn op_const(&mut self, v: Value) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
v | Value |
Returns
Result<StepOutcome>
methodop_div¶source
vihaco_cpu::CPU::op_div
pub fn op_div(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_dup¶source
vihaco_cpu::CPU::op_dup
methodop_eq¶source
vihaco_cpu::CPU::op_eq
pub fn op_eq(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_ge¶source
vihaco_cpu::CPU::op_ge
pub fn op_ge(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_get_item¶source
vihaco_cpu::CPU::op_get_item
methodop_gt¶source
vihaco_cpu::CPU::op_gt
pub fn op_gt(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_heap_alloc¶source
vihaco_cpu::CPU::op_heap_alloc
pub fn op_heap_alloc(&mut self, n_elements: u32) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
n_elements | u32 |
Returns
Result<StepOutcome>
methodop_heap_dealloc¶source
vihaco_cpu::CPU::op_heap_dealloc
methodop_indirect_call¶source
vihaco_cpu::CPU::op_indirect_call
methodop_le¶source
vihaco_cpu::CPU::op_le
pub fn op_le(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_lt¶source
vihaco_cpu::CPU::op_lt
pub fn op_lt(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_mul¶source
vihaco_cpu::CPU::op_mul
pub fn op_mul(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_ne¶source
vihaco_cpu::CPU::op_ne
pub fn op_ne(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_neg¶source
vihaco_cpu::CPU::op_neg
pub fn op_neg(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_not¶source
vihaco_cpu::CPU::op_not
methodop_or¶source
vihaco_cpu::CPU::op_or
methodop_rem¶source
vihaco_cpu::CPU::op_rem
pub fn op_rem(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_return¶source
vihaco_cpu::CPU::op_return
pub fn op_return(&mut self, keep: u32) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
keep | u32 |
Returns
Result<StepOutcome>
methodop_rol¶source
vihaco_cpu::CPU::op_rol
pub fn op_rol(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_ror¶source
vihaco_cpu::CPU::op_ror
pub fn op_ror(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_shl¶source
vihaco_cpu::CPU::op_shl
pub fn op_shl(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_shr¶source
vihaco_cpu::CPU::op_shr
pub fn op_shr(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_span¶source
vihaco_cpu::CPU::op_span
Signature
pub fn op_span(&mut self, file: u32, start: u32, end: u32) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
file | u32 | |
start | u32 | |
end | u32 |
Returns
Result<StepOutcome>
methodop_store¶source
vihaco_cpu::CPU::op_store
pub fn op_store(&mut self, ty: Type, addr: u32) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type | |
addr | u32 |
Returns
Result<StepOutcome>
methodop_sub¶source
vihaco_cpu::CPU::op_sub
pub fn op_sub(&mut self, ty: Type) -> Result<StepOutcome>Parameters
| Name | Type | Description |
|---|---|---|
ty | Type |
Returns
Result<StepOutcome>
methodop_xor¶source
vihaco_cpu::CPU::op_xor
methodpush_heap_object¶source
vihaco_cpu::CPU::push_heap_object
pub fn push_heap_object(&mut self, values: Box<[Value]>) -> u32Parameters
| Name | Type | Description |
|---|---|---|
values | Box<[Value]> |
Returns
u32
methodreturn_values¶source
vihaco_cpu::CPU::return_values
methodset_current_pc¶source
vihaco_cpu::CPU::set_current_pc
methodset_pending_pc¶source
vihaco_cpu::CPU::set_pending_pc
methodset_return_values¶source
vihaco_cpu::CPU::set_return_values
pub fn set_return_values(&mut self, values: Vec<Value>)Parameters
| Name | Type | Description |
|---|---|---|
values | Vec<Value> |
methodtake_pending_pc¶source
vihaco_cpu::CPU::take_pending_pc
classCPUMessage¶source
vihaco_cpu::CPUMessage
Bases: Debug, Clone, StructuralPartialEq, PartialEq, Message
Rust enum.
classRuntimeInstruction¶source
vihaco_cpu::RuntimeInstruction
Bases: Clone, Debug, StructuralPartialEq, PartialEq, Display, From<T>
Rust enum.
pub enum RuntimeInstructionVariants
| Name | Type | Description |
|---|---|---|
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) |
classStepOutcome¶source
vihaco_cpu::StepOutcome
Bases: Debug, Clone, Copy, StructuralPartialEq, PartialEq, Eq
Rust enum.
classSurfaceInstruction¶source
vihaco_cpu::SurfaceInstruction
Bases: Clone, Debug, StructuralPartialEq, PartialEq, Parse<'__vihaco_src>, SurfaceInstruction
Rust enum.
pub enum SurfaceInstructionVariants
| Name | Type | Description |
|---|---|---|
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) |
classSurfaceType¶source
vihaco_cpu::SurfaceType
Bases: Debug, Clone, Copy, StructuralPartialEq, PartialEq, Parse<'__vihaco_src>
Rust enum.
pub enum SurfaceTypeVariants
| Name | Type | Description |
|---|---|---|
Undefined | — | |
String | — | |
Bool | — | |
I64 | — | |
U32 | — | |
U64 | — | |
F64 | — | |
FunctionRef | — | |
HeapRef | — |
classSurfaceValue¶source
vihaco_cpu::SurfaceValue
Bases: Debug, Clone, StructuralPartialEq, PartialEq, Eq, Parse<'__vihaco_src>
Rust enum.