VirtualCPU_InstLib.hpp

A specialized version of InstLib to handle VirtualCPU instructions.

template<typename HARDWARE_T, typename ARG_T = size_t, size_t ARG_COUNT = 3>
struct VirtualCPU_InstLib : public InstLib<HARDWARE_T, size_t, 3>
#include <VirtualCPU_InstLib.hpp>

A pure-virtual class that defines a series of instructions for VirtualCPU_Base or any of its derived classes.

Public Types

using hardware_t = HARDWARE_T
using inst_lib_t = InstLib<HARDWARE_T, ARG_T, ARG_COUNT>
using arg_t = ARG_T
using this_t = VirtualCPU_InstLib<HARDWARE_T, ARG_T, ARG_COUNT>
using inst_t = typename hardware_t::inst_t
using nop_vec_t = typename hardware_t::nop_vec_t

Public Static Functions

static inline void Inst_NopA(hardware_t&, const inst_t&)
static inline void Inst_NopB(hardware_t&, const inst_t&)
static inline void Inst_NopC(hardware_t&, const inst_t&)
static inline void Inst_Inc(hardware_t &hw, const inst_t &inst)
static inline void Inst_Dec(hardware_t &hw, const inst_t &inst)
static inline void Inst_If_Not_Equal(hardware_t &hw, const inst_t &inst)
static inline void Inst_If_Less(hardware_t &hw, const inst_t &inst)
static inline void Inst_Pop(hardware_t &hw, const inst_t &inst)
static inline void Inst_Push(hardware_t &hw, const inst_t &inst)
static inline void Inst_Swap_Stack(hardware_t &hw, const inst_t&)
static inline void Inst_Shift_Right(hardware_t &hw, const inst_t &inst)
static inline void Inst_Shift_Left(hardware_t &hw, const inst_t &inst)
static inline void Inst_Add(hardware_t &hw, const inst_t &inst)
static inline void Inst_Sub(hardware_t &hw, const inst_t &inst)
static inline void Inst_Nand(hardware_t &hw, const inst_t &inst)
static inline void Inst_IO(hardware_t &hw, const inst_t &inst)
static inline void Inst_H_Alloc(hardware_t &hw, const inst_t&)
static inline void Inst_H_Divide(hardware_t &hw, const inst_t&)
static inline void Inst_H_Copy(hardware_t &hw, const inst_t&)
static inline void Inst_H_Search(hardware_t &hw, const inst_t &inst)
static inline void Inst_Mov_Head(hardware_t &hw, const inst_t &inst)
static inline void Inst_Jmp_Head(hardware_t &hw, const inst_t &inst)
static inline void Inst_Get_Head(hardware_t &hw, const inst_t &inst)
static inline void Inst_If_Label(hardware_t &hw, const inst_t &inst)
static inline void Inst_Set_Flow(hardware_t &hw, const inst_t &inst)
static inline const this_t &DefaultInstLib()

Maintain and return a singleton of default instructions.