📄 simulator.h
字号:
// simulator.h: interface for the simulator class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SIMULATOR_H__24558943_4B4F_408C_B953_C9E4D0380FDF__INCLUDED_)
#define AFX_SIMULATOR_H__24558943_4B4F_408C_B953_C9E4D0380FDF__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include<fstream.h>
#define OPRNUM 19
class simulator
{
public:
int RunoverFlag;
void Dsg(int i);
ifstream FileInstruction, //存贮供模拟执行时间调用的三元式指令文件
FVarInfor;//存贮C02原文件中的变量定义信息文件
int get_instruction();
int SetBreakpoint( int line);
void RemoveBreakpoint(int line);
void ReadDbgCmd();
int UpdateReg();
struct computer{
int memony[1024];
int rd[4];
int ra[3];
int rsp;
int rp;
int rhp;
int flag[8];
} cpu;//模拟执行时间定义的Cpu
simulator();
virtual ~simulator();
struct Breakpoint{
int value;
struct Breakpoint *next;
} *BreakpointList;//保存用户设置的断点值,该信息在模拟执行时用到
int i_pcpre;
void get_varinfor();
void ReSimu();
int upvar(int i_sel,char * ch_sel);
private:
int InquireRegister(char *RegisterName);
int inquire(char *name);
int in(int n);
int subflag;
//模拟执行进入子程序标志,初始值为0,表示没有进入子程序
//当进入一层子程序时该值加1,但执行出一层子程序时该值减1
int StepOne();
void runtocursor();
void StepOut();
void StepOver();
void StepInto();
void GoBreakpoint();
char *operation[OPRNUM];
//三元式操作代码表
int getopr(char* opr);
int pc;
//模拟执行时,指令执行的指针,执行正在执行的指令
int cx;
//记录读入的三元式指令的总条数
int InquireVarType;
//保存用户所查询变量的类型,值为0:该变量不存在;值为1:变量为整型;值为2:变量为长整型;
struct instruction{
char *operation;
int l,a,sourceline;
} code[1000];//保存c02语言编译出的三元式代码
int SimRun(int line);
struct table
{
char *name;
int adr;
int size;
struct table *next;
}*wholevar;//存贮C02源程序的中全局变量信息,该信息从文件中读入
//主要用于用户查询变量值时间找出变量的相对地址
struct varinformation
{
int startaddr,overaddr;
int amount;
struct table *var;
}PartVar[100];//存贮C02源程序的中局部变量信息,该信息从文件中读入
//主要用于用户查询变量值时间找出变量的相对地址
int sub_count;
//存贮正在模拟执行三元式的C02源程序的中子程序的个数
CPoint prunlinepre;
};
#endif // !defined(AFX_SIMULATOR_H__24558943_4B4F_408C_B953_C9E4D0380FDF__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -