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

📄 asmf_c.cpp

📁 MCS51单片机的宏汇编器源程序。有需要的朋友请下载!
💻 CPP
字号:
//---------------------------------------------------------------------------
//-------- AsmF_C.cpp -------------------------------------------------------
//---------------------------------------------------------------------------

#include "AsmF_H.h"
//---------------------------------------------------------------------------



//----- 构造器 --------------------------------------------------------------
AsmFile::AsmFile(MacroAsmber& msm, const Jstring& filename)
                 : masm(msm),
                   CommentEnable(false), runCount(0),
                   FileLineSum(0),
                   FilePt(NULL)
{ FileName = filename;
  Tail = Head = new AsmLine;    // 是一个特殊用途的行, 它记录了出错情况
  Open();
} // end constructor
//---------------------------------------------------------------------------




//----- 析构器 --------------------------------------------------------------
AsmFile::~AsmFile()
{ while(Head)
   { register AsmLine* p = Head->next;
     delete Head;
     Head = p;
   } // end while
  Close();
} // end destructor
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
void AsmFile::AddErr(int16u lineNo, ERR errNo)
{ Tokenfield* nw = new Tokenfield(NormalERR);
  nw->loc[0] = errNo;
  nw->loc[1] = lineNo;
  register Tokenfield* pt = Head->head;
  for( ; pt->next && lineNo >= pt->next->loc[1];
  pt = pt->next ); // end for
  Head->InsertTknAfter(pt,nw);
  ++ErrorSum();
} // end AddErr
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
void AsmFile::AddWarn(int16u lineNo, ERR warnNo)
{ Tokenfield* nw = new Tokenfield(WarningKn);
  nw->loc[0] = warnNo;
  nw->loc[1] = lineNo;
  register Tokenfield* pt = Head->head;
  for( ; pt->next && lineNo >= pt->next->loc[1];
                pt = pt->next ); // end for
  Head->InsertTknAfter(pt,nw);
  ++WarningSum();
} // end AddWarn
//---------------------------------------------------------------------------




//---------------------------------------------------------------------------
void AsmFile::ShowFileToken()
{ printf("\n\n===========================\n====Now, show file tokens: ====");
  int16u count = 1;
  rewind(FilePt);

  for( AsmLine* pt = Head->next; pt; ++count )
   { printf("\n\n>>>>>>AsmLine[%d]:", count);

     for( ; pt->LineNo < count; pt = pt->next )
      { pt->show(); Waitkey; } // end for

     if(!fgets(buff, LineReadBufferSize, FilePt)) { break; }
     buff[LineReadBufferSize-1]='\0';
     printf("\n>==>%s",buff);

     if(pt->LineNo == count)
      { pt->show(); pt = pt->next; } // endif
     else
      { printf("\nThis line not exist. "); } // end else

     Waitkey;
   } // end for
  cout<<"\nNow, file tokens all above!\n=========================";
} // end ShowFileToken
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// end AsmL_C.cpp
//---------------------------------------------------------------------------
//               Written by JamesyFront.    ZLGmcu Dev.Co.Ltd.  2002.
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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