📄 debugcmd.cpp
字号:
{
goto Instruction_HeadedByC_Failed;
}
}
else
{
goto Instruction_HeadedByC_Failed;
}
break;
case 'A': //CALL
if ('L' == GetNextChar())
{
if ('L' == GetNextChar())
{
m_asmCode.instType = CASL_CALL;
//处理操作数
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleEA())
{
goto Instruction_HeadedByC_Failed;
}
}
else
{
goto Instruction_HeadedByC_Failed;
}
}
else
{
goto Instruction_HeadedByC_Failed;
}
}
else
{
goto Instruction_HeadedByC_Failed;
}
break;
default: //Other
goto Instruction_HeadedByC_Failed;
break;
}
return STATUS_OK;
//--------------错误处理部分----------------------------------------------------------
Instruction_HeadedByC_Failed:
m_pVM->m_errorHandler.WriteErrorMessage("Unknown Instruction!");
return STATUS_FAILED;
}
/////////////////////////////////////////////////////////////////////////
//函数名称:Instruction_HeadedByE
//函数功能:---------------------处理以字符E作为起始字符的指令----------------
//入口参数:无
//出口参数:无
//返回值:int-------------STATUS_OK表示操作成功,其他表示操作失败
//开发人员:杨军
//开发日期:2004-4-24
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CDebugCmd::Instruction_HeadedByE()
{
//Handle Instruction EOR
switch (GetNextChar())
{
case 'O': //EOR
//得到EOR输入
if ('R' == GetNextChar())
{
m_asmCode.instType = CASL_EOR;
//注意: 指令后必须跟至少一个空格才能再跟操作数!!
// 否则视为不合法!!!
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleGRAndEA())
{
goto Instruction_HeadedByE_Failed;
}
}
else
{
goto Instruction_HeadedByE_Failed;
}
}
//不支持的输入
else
{
goto Instruction_HeadedByE_Failed;
}
break;
default: //Other
goto Instruction_HeadedByE_Failed;
break;
}
return STATUS_OK;
//--------------错误处理部分----------------------------------------------------------
Instruction_HeadedByE_Failed:
m_pVM->m_errorHandler.WriteErrorMessage("Unknown Instruction!");
return STATUS_FAILED;
}
/////////////////////////////////////////////////////////////////////////
//函数名称:Instruction_HeadedByJ
//函数功能:---------------------处理以字符J作为起始字符的指令----------------
//入口参数:无
//出口参数:无
//返回值:int-------------STATUS_OK表示操作成功,其他表示操作失败
//开发人员:杨军
//开发日期:2004-4-24
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CDebugCmd::Instruction_HeadedByJ()
{
//Handle Instructions JMP, JPZ, JMI, JNZ, JZE ?
switch (GetNextChar())
{
case 'M': //JMP ?
//得到JMP输入
switch (GetNextChar())
{
case 'P': //JMP
m_asmCode.instType = CASL_JMP;
//注意: 指令后必须跟至少一个空格才能再跟操作数!!
// 否则视为不合法!!!
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleEA())
{
goto Instruction_HeadedByJ_Failed;
}
}
else
{
goto Instruction_HeadedByJ_Failed;
}
break;
case 'I': //JMI
m_asmCode.instType = CASL_JMI;
//注意: 指令后必须跟至少一个空格才能再跟操作数!!
// 否则视为不合法!!!
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleEA())
{
goto Instruction_HeadedByJ_Failed;
}
}
else
{
goto Instruction_HeadedByJ_Failed;
}
break;
default:
goto Instruction_HeadedByJ_Failed;
break;
}
break;
case 'P': //JPZ ?
//得到JPZ输入
if ('Z' == GetNextChar())
{
m_asmCode.instType = CASL_JPZ;
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleEA())
{
goto Instruction_HeadedByJ_Failed;
}
}
else
{
goto Instruction_HeadedByJ_Failed;
}
}
//不支持的输入
else
{
goto Instruction_HeadedByJ_Failed;
}
break;
case 'N': //JNZ ?
//得到JNZ输入
if ('Z' == GetNextChar())
{
m_asmCode.instType = CASL_JNZ;
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleEA())
{
goto Instruction_HeadedByJ_Failed;
}
}
else
{
goto Instruction_HeadedByJ_Failed;
}
}
//不支持的输入
else
{
goto Instruction_HeadedByJ_Failed;
}
break;
case 'Z': //JZE ?
//得到JNZ输入
if ('E' == GetNextChar())
{
m_asmCode.instType = CASL_JZE;
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleEA())
{
goto Instruction_HeadedByJ_Failed;
}
}
else
{
goto Instruction_HeadedByJ_Failed;
}
}
//不支持的输入
else
{
goto Instruction_HeadedByJ_Failed;
}
break;
default: //Other
goto Instruction_HeadedByJ_Failed;
break;
}
return STATUS_OK;
//--------------错误处理部分----------------------------------------------------------
Instruction_HeadedByJ_Failed:
m_pVM->m_errorHandler.WriteErrorMessage("Unknown Instruction!");
return STATUS_FAILED;
}
/////////////////////////////////////////////////////////////////////////
//函数名称:Instruction_HeadedByL
//函数功能:---------------------处理以字符L作为起始字符的指令----------------
//入口参数:无
//出口参数:无
//返回值:int-------------STATUS_OK表示操作成功,其他表示操作失败
//开发人员:杨军
//开发日期:2004-4-24
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CDebugCmd::Instruction_HeadedByL()
{
//Handle Instructions LD, LEA ?
switch (GetNextChar())
{
case 'D': //LD ?
//得到LD输入
m_asmCode.instType = CASL_LD;
//注意: 指令后必须跟至少一个空格才能再跟操作数!!
// 否则视为不合法!!!
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleGRAndEA())
{
goto Instruction_HeadedByL_Failed;
}
}
else
{
goto Instruction_HeadedByL_Failed;
}
break;
case 'E': //LEA ?
//得到LEA输入
if ('A' == GetNextChar())
{
m_asmCode.instType = CASL_LEA;
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleGRAndEA())
{
goto Instruction_HeadedByL_Failed;
}
}
else
{
goto Instruction_HeadedByL_Failed;
}
}
//不支持的输入
else
{
goto Instruction_HeadedByL_Failed;
}
break;
default: //Other
goto Instruction_HeadedByL_Failed;
break;
}
return STATUS_OK;
//--------------错误处理部分----------------------------------------------------------
Instruction_HeadedByL_Failed:
m_pVM->m_errorHandler.WriteErrorMessage("Unknown Instruction!");
return STATUS_FAILED;
}
/////////////////////////////////////////////////////////////////////////
//函数名称:Instruction_HeadedByO
//函数功能:---------------------处理以字符O作为起始字符的指令----------------
//入口参数:无
//出口参数:无
//返回值:int-------------STATUS_OK表示操作成功,其他表示操作失败
//开发人员:杨军
//开发日期:2004-4-24
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CDebugCmd::Instruction_HeadedByO()
{
//Handle Instructions OR, OUT ?
switch (GetNextChar())
{
case 'R': //OR ?
//得到OR输入
m_asmCode.instType = CASL_OR;
//注意: 指令后必须跟至少一个空格才能再跟操作数!!
// 否则视为不合法!!!
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleGRAndEA())
{
goto Instruction_HeadedByO_Failed;
}
}
else
{
goto Instruction_HeadedByO_Failed;
}
break;
case 'U': //OUT ?
//得到OUT输入
if ('T' == GetNextChar())
{
m_asmCode.instType = CASL_OUT;
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleALabelAndNLabel())
{
goto Instruction_HeadedByO_Failed;
}
}
else
{
goto Instruction_HeadedByO_Failed;
}
}
//不支持的输入
else
{
goto Instruction_HeadedByO_Failed;
}
break;
default: //Other
goto Instruction_HeadedByO_Failed;
break;
}
return STATUS_OK;
//--------------错误处理部分----------------------------------------------------------
Instruction_HeadedByO_Failed:
m_pVM->m_errorHandler.WriteErrorMessage("Unknown Instruction!");
return STATUS_FAILED;
}
/////////////////////////////////////////////////////////////////////////
//函数名称:Instruction_HeadedByP
//函数功能:---------------------处理以字符P作为起始字符的指令----------------
//入口参数:无
//出口参数:无
//返回值:int-------------STATUS_OK表示操作成功,其他表示操作失败
//开发人员:杨军
//开发日期:2004-4-24
//修改人员:
//修改日期:
/////////////////////////////////////////////////////////////////////////
int CDebugCmd::Instruction_HeadedByP()
{
//Handle Instructions PUSH, POP ?
switch (GetNextChar())
{
case 'O': //CPA OR CPL?
if ('P' == GetNextChar())
{
//处理操作数
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleGR())
{
goto Instruction_HeadedByP_Failed;
}
}
else
{
goto Instruction_HeadedByP_Failed;
}
}
else
{
goto Instruction_HeadedByP_Failed;
}
break;
case 'U': //PUSH
if ('S' == GetNextChar())
{
if ('H' == GetNextChar())
{
m_asmCode.instType = CASL_PUSH;
//处理操作数
if (' ' == GetNextChar())
{
//略过多余的空格
PassBySpace();
if (STATUS_OK != HandleEA())
{
goto Instruction_HeadedByP_Failed;
}
}
else
{
goto Instruction_HeadedByP_Failed;
}
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -