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

📄 codegenerationdatatype.h

📁 这是一个软件水平资格考试中使用的CASL汇编语言的编译器,实现文件中包括一个编译器,一个虚拟机,一个类似于Debug的调试器.
💻 H
字号:
#ifndef __CODE_GENERATION_DATATYPE_DEF
#define __CODE_GENERATION_DATATYPE_DEF

#include "PlatformIndependentDataType.h"

//------------------中间代码结构定义 ,生成的中间代码表中存放的每一项即是这样的结构-----------------------
typedef struct tagIntermediateCode
{
  InstructionType type;  //该中间代码的指令类型
  Operand operand1;      //操作数1
  Operand operand2;      //操作数2
  int iSrcCodeLineNumber;       //该行中间代码在源程序中的行号
} IntermediateCode;   

//------------------变量标号表中的元素结构定义------------------------------------------------------------
typedef struct tagVariableLabelItem
{
  CaslString strLabelName;   //标号名称
  int        iOffset;        //标号所对应的实际偏移
} VariableLabelItem;   

//-------------------变量标号表中的元素结构定义------------------------------------------------------------
typedef struct tagConstLabelItem
{
  CaslString strLabelName;   //标号名称
  int        iOffset;        //标号所对应的实际偏移
} ConstLabelItem;   

//-------------------指令标号表中的元素结构定义-------------------------------------------------------------
typedef struct tagInstructionLabelItem
{
  CaslString strLabelName;   //标号名称
  int        iOffset;        //标号所对应的实际偏移
} InstructionLabelItem;   

//-------------------目标代码结构定义-----------------------------------------------------------------------
#pragma pack( push, 1)
typedef struct tagObjectCode
{
  unsigned char instructionType;   //指令类型(LEA, ST, 还是JMP等)
  unsigned char regNumber;         //低半字节存放通用寄存器,高半字节存放变址寄存器
  unsigned char address[2];        //存放有效地址操作数中的地址
} ObjectCode;  
#pragma pack(pop)

#endif

⌨️ 快捷键说明

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