?? casl.y.bak
字號(hào):
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_SUB;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
LOGSTMT: ANDSTMT | ORSTMT | EORSTMT;
ANDSTMT: LBLSTMT AND GR ',' EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_AND;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
ORSTMT: LBLSTMT OR GR ',' EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_OR;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
EORSTMT: LBLSTMT EOR GR ',' EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_EOR;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
RELSTMT: CPASTMT |
CPLSTMT |
SLASTMT |
SRASTMT |
SLLSTMT |
SRLSTMT
CPASTMT: LBLSTMT CPA GR ',' EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_CPA;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
CPLSTMT: LBLSTMT CPL GR ',' EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_CPL;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
SLASTMT: LBLSTMT SLA GR ',' EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_SLA;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
SRASTMT: LBLSTMT SRA GR ',' EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_SRA;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
SLLSTMT: LBLSTMT SLL GR ',' EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_SLL;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
SRLSTMT: LBLSTMT SRL GR ',' EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_SRL;
g_tempCode.operand1.type = REG_OPERAND;
g_tempCode.operand1.OperandVal.regOperand.regNumber = g_iCurrentRegNumber;
g_tempCode.operand2.type = EA_OPERAND;
g_tempCode.operand2.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand2.OperandVal.eaOperand.address = g_currentEAAddress;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
CONDSTMT: JMPSTMT |
JPZSTMT |
JMISTMT |
JNZSTMT |
JZESTMT
JMPSTMT: LBLSTMT JMP EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_JMP;
g_tempCode.operand1.type = EA_OPERAND;
g_tempCode.operand1.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand1.OperandVal.eaOperand.address = g_currentEAAddress;
g_tempCode.operand2.type = EMPTY_OPERAND;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
JPZSTMT: LBLSTMT JPZ EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_JPZ;
g_tempCode.operand1.type = EA_OPERAND;
g_tempCode.operand1.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand1.OperandVal.eaOperand.address = g_currentEAAddress;
g_tempCode.operand2.type = EMPTY_OPERAND;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
JMISTMT: LBLSTMT JMI EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
}
g_tempCode.type = CASL_JMI;
g_tempCode.operand1.type = EA_OPERAND;
g_tempCode.operand1.OperandVal.eaOperand.regNumber = g_iCurrentEARegNumber;
g_tempCode.operand1.OperandVal.eaOperand.address = g_currentEAAddress;
g_tempCode.operand2.type = EMPTY_OPERAND;
g_vecIntermediateCode.push_back(g_tempCode);
//將下一個(gè)Parse的代碼的編號(hào)加一
g_lCurrentParseCodeNumber++;
}
;
JNZSTMT: LBLSTMT JNZ EA
{
if (NULL != $1)
{
g_mapLabel.insert(LabelMap::value_type(g_lCurrentParseCodeNumber, (char*)$1));
free((char*)$1);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -