⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucvm9.hpp

📁 绘制一元函数曲线的工具 输入C语言语法的函数公式, 即可绘制函数的二维曲线 采用内置编译器和虚拟机(这是调整OK的版本)
💻 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 + -