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

📄 globalvariabledef.h

📁 这是一个软件水平资格考试中使用的CASL汇编语言的编译器,实现文件中包括一个编译器,一个虚拟机,一个类似于Debug的调试器.
💻 H
字号:
///////////////////////////////////////////////////////////////////////
//文件功能: 定义系统中要用到的全局变量
//开发人员:杨军
//开发日期:2004-4-17
//修改人员:
//修改日期:
///////////////////////////////////////////////////////////////////////
#ifndef __GLOBAL_VARIABLE_DEF
#define __GLOBAL_VARIABLE_DEF
#include "CaslCompiler.h"



//-------------当前编译的程序中要为变量分配的空间大小--------------------
int g_iVariableSize = 0;  

//-------------当前编译的程序中要为常量分配的空间大小--------------------
int g_iConstSize = 0;

//-------------常量类型名称数组------------------------------------------
char g_szConstTypeName[][12] = {
                                "DEC_CONST",
                                "HEX_CONST",
                                "STR_CONST",
                                "LABEL_CONST"
};      

//--------------指令类型名称数组------------------------------------------
char g_szInstructionName[][INSTRUCTION_NAME_SIZE] =  {
                                "LD",
                                "LEA",
                                "ST",
                                "ADD",
                                "SUB",
                                "AND",
                                "OR",
                                "EOR",
                                "CPA",
                                "CPL",
                                "SLA",
                                "SRA",
                                "SLL",
                                "SRL",
                                "JMP", 
                                "JPZ", 
                                "JMI",
                                "JNZ", 
                                "JZE", 
                                "PUSH",
                                "POP", 
                                "CALL", 
                                "RET",
                                "IN",
                                "OUT",
                                "EXIT",
                                "SET_ALABEL",
                                "SET_NLABEL",
                                "FUNC_IN",
                                "FUNC_OUT"
};   

//-----------------------操作数类型名称数组-----------------------------------
char g_szOperandTypeName[][7] = {
                                "REG",
                                "EA",
                                "EMPTY"
};  

//----------------------使用单指令操作数的指令的名称vector-------------------
vector<string> g_vecSingleOperandInstructionName;   

//----------------------不使用操作数的指令的名称vector-----------------------
vector<string> g_vecNoOperandInstructionName;       



//------------------------常量表----------------------------------------------
vector<CaslConst> g_vecConst;   

//------------------------变量表----------------------------------------------
vector<CaslVariable> g_vecVariable;  

//------------------------中间代码表------------------------------------------
vector<IntermediateCode> g_vecIntermediateCode;  


//-------------------------变量标号表-------------------------------------------
vector<VariableLabelItem> g_vecVariableLabel; 

//--------------------------常量标号表------------------------------------------
vector<ConstLabelItem> g_vecConstLabel;       

//--------------------------指令标号表------------------------------------------
vector<InstructionLabelItem> g_vecInstructionLabel; 

//--------------------------存放生成的目标代码的vector---------------------------
vector<ObjectCode>   g_vecObjectCode;                

//---------------------------旧的new handler-------------------------------------
new_handler  g_OldNewHandler;



//------编译时发现的错误消息对应的字符串-------------------------------
//#define NO_START_LABEL 0
//#define INVALID_GR_NUMBER 1
//#define INVALID_EA 2
//#define NO_END_LABEL 3
//#define INVALID_DS_DEF 4
//#define INVALID_DC_DEF 5
//#define LAST_ERRMSG_ID 5
//#define UNKNOWN_ERROR LAST_ERRMSG_ID + 1
char g_szCompilingErrMsg[][COMPILING_ERRMSG_SIZE] = {
                                "Lack START Label ",
                                "Invalid Register Number",
                                "Invalid Effective Address",
                                "Lack End Label",
                                "Invalid DS Definition",
                                "Invalid DC Definition",
                                "Invalid Type of Instruction ",
                                "No Executable Statement",
                                "Unknown Error"
};

//-----------------存放编译错误信息的内存映射文件的名称-----------
const char * g_szMapNameForCompilingErrMsg = "CompilingErrMsg";
//-----------------存放编译错误信息的内存映射文件的大小-----------
unsigned int g_uiSizeOfMapOfCompilingErrMsg = 64 * 1024;

//-----------------存放可视化调试的调试信息------------------------
vector<InstructionDebugInfo> g_vecVisualDebugInfo;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -