📄 ucvm9.hpp
字号:
#ifndef UCVM9_HPP
#define UCVM9_HPP
//---------------------------------------------------------------------------
#define UCVM9_TYPE_CHR 1
#define UCVM9_TYPE_STR 2
#define UCVM9_TYPE_INT 4
#define UCVM9_TYPE_FLT 8
//---------------------------------------------------------------------------
#ifndef REAL_TYPE
#define REAL_TYPE
typedef double REAL;
#endif//REAL_TYPE
//---------------------------------------------------------------------------
struct T_VAR;
struct T_DAT;
struct T_FUN;
struct T_INS;
//---------------------------------------------------------------------------
typedef void *(* FUNC)(long, struct T_DAT *);
//---------------------------------------------------------------------------
struct T_VAR
{
char *var_name;
char var_type;
void *var_addr;
};
struct T_DAT
{
char dat_type;
void *dat_addr;
char *dat_free;
};
struct T_FUN
{
char *fun_name;
char fun_type;
FUNC fun_addr;
};
struct T_INS
{
char ins_code;
void *ins_data;
};
//---------------------------------------------------------------------------
class TUCVM9
{
public:
TUCVM9();
~TUCVM9();
int load_asm_file(char *file_name);
int save_ins_file(char *file_name);
int reg_var(char *var_name, int var_type, void *var_addr);
int reg_fun(char *fun_name, int fun_type, FUNC fun_addr);
int cln_var();
int cln_fun();
int exe_fun();
protected:
T_VAR m_var_array[256];
short m_var_count;
T_DAT m_dat_stack[256];
short m_dat_point;
T_FUN m_fun_array[256];
short m_fun_count;
T_INS m_ins_array[512];
short m_ins_count;
void *search_fun(char *fun_name);
void *search_var(char *var_name);
void *search_lab(char *lab_name);
char *cclone_str(char *str_data);
private:
T_DAT m_dat_lparame[1];
T_DAT m_dat_rparame[1];
void pop_rparame();
void pop_lparame();
void free_rparame();
void free_lparame();
void push_chr(char);
void push_int(long);
void push_flt(REAL);
char rparame_to_chr();
char lparame_to_chr();
long rparame_to_int();
long lparame_to_int();
REAL rparame_to_flt();
REAL lparame_to_flt();
char *rparame_to_str();
char *lparame_to_str();
};
//---------------------------------------------------------------------------
#endif//UCVM9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -