亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? masmber_c4.cpp

?? 單片機(jī)宏匯編器的源程序。給一些愛好者作為學(xué)習(xí)編譯原理和 C 程序設(shè)計(jì)的例子.
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
//---------------------------------------------------------------------------
//  MAsmber_C4.cpp 
//---------------------------------------------------------------------------
#include "MAsmber_H.h"
#include "AsmF_H.h"
#include "OBJfile_H.h"
#include "ListFile_H.h"
#include "OBJModule_H.h"
#include "TokenOper_H.h"
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
//
//                        目標(biāo)代碼生成器
//
//---------------------------------------------------------------------------
#define DebugKit(str)    //DebugMsg(str)
//---------------------------------------------------------------------------
// 匯編行代碼生成。
// 要對Ln所指向的匯編行進(jìn)行分析。
// 如果有錯(cuò),則返回非零值。
//---------------------------------------------------------------------------
ERR MacroAsmber::LineToObjCode()
{ if(!Ln->Enable) { return 0; }    // 如果此行被禁用,忽略此行
  DebugKit(printf("\nToObjCode Ln=%d",Ln->LineNo); Debugkey);

  int16u temp = Ln->lc;           // 暫存Ln->lc,以便以后恢復(fù)
  Tokenfield* pt = Ln->FirstTkn(); // 每次從行頭開始
  ERR err = OK_no_Err;

  switch(pt->Token)
  { case KnownInst : // 這一次, 必須把所有的表達(dá)式都算出來!!!
         { Ln->len = pt->Opset->len; // 給匯編行長度賦值。
           err = Translate(pt);      //  從 KnownInst -> Instcode 的轉(zhuǎn)換
           break;
         } // end case

    case DB :
         { err = DBToDBObj(pt); // 成功=0,否則返回出錯(cuò)碼
           break;
         } // end case

    case DW :
         { err = DWToDWObj(pt); // 成功=0,否則返回出錯(cuò)碼
           break;
         } // end case

    case SETsDefken:
         { JLabelNode* temp;
           if( LabMger->SearchLinkList(pt->Name, temp) )   // temp 帶回搜索值
            { temp->CopyFrom(*pt->LabPt); } // endif
           else
            { DebugKit(printf("\nBugs in LineToObjCode!"); Debugkey;); // debug
            } // end else
           Ln->Enable = false;
           break;
         } // end case

    case USINGTkn : { err = TknIsUsing_Do(pt); Ln->Enable = false;
                      if(err) { return Have_Errs; }
                      break;
                    } // end case

    default: { err = Have_Errs;
               EThrows(printf("\nToObjCode out of run!\n"); Debugkey;); // debug
             } // end default
  } // end switch

  Ln->lc = temp;                 // 恢復(fù)Ln->lc
  return err;
} // end LineToObjCode
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// 目標(biāo)代碼生成。
//---------------------------------------------------------------------------
ERR MacroAsmber::FileToObjCode()
{ ERR erra = OK_no_Err;
  for( Ln = AsmFn->FirstLine(); Ln; Ln = Ln->next ) // 全文件掃描
   {
     if( LineToObjCode() ) { erra = Have_Errs; } // endif
   } // end for
  return erra;
} // end ToObjCode
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
#define IDType(typ)      (((typ)==LB_SEG) ? IDBLK_SEG_OPND : IDBLK_REL_OPND)
//---------------------------------------------------------------------------
// 從DB 到 DBObjCode 的進(jìn)化!
// pt->Token == DB
// DB ->next must not be NULL
// err = 0, 成功; err = 1, 錯(cuò)誤。
//---------------------------------------------------------------------------
ERR MacroAsmber::DBToDBObj(Tokenfield* pt) // 成功=0,否則返回出錯(cuò)碼
{ ERR err = OK_no_Err;
  int16u lctemp = Ln->lc; // 暫存

  for(Tokenfield* tt = pt->next; tt; tt = tt->next)
   { switch(tt->Token)
     { case LongCharn : case StrDataKn :        // 常量字符串
        { Ln->lc += tt->DatPt->GetLen();    // 原Token保持不變。
          break;
        } // end case
       case ExpresnKn :
        { const TriVal& trv = *LabMger->CalExpression(err, tt->ExpPt); // 帶回err。
          if(err) { return Have_Errs; } // 該行異常終止
          if(not8bit(trv.val)) { OutWarning(DataBeTrun8Warn); } // endif

          TokenOper::DelTokenList(tt->ExpPt); // 釋放內(nèi)存
          tt->Token = ObjcodeKn;              // Token進(jìn)化
          tt->D4ary = new Dat4ary;        // 一個(gè)Byte就有一個(gè)D4ary.

          Dat4ary &Ndary = *(tt->D4ary);
          if( Ndary.ByteSettle(trv, Ln->lc) )
           { DebugKit(printf("\nErr in ByteSettle.\n"); Debugkey;); // debug
             return Have_Errs;
           } // endif

          ++Ln->lc; break;
        } // end case
       default:
        { EThrows(printf("\nDBToDBObj out of run!"); Debugkey;); // debug
        } // default
     } // end switch
   } // end for

  Ln->lc = lctemp; // 恢復(fù)
  pt->Token = DBObjCode; // Token的進(jìn)化!

  return OK_no_Err;
} // end DBToDBObj
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// 從DW 到 DWObjCode 的進(jìn)化!
// pt->Token == DW
// DW ->next must not be NULL
// err = 0, 成功; err = 1, 錯(cuò)誤。
//---------------------------------------------------------------------------
ERR MacroAsmber::DWToDWObj(Tokenfield* pt) // 成功=0,否則返回出錯(cuò)碼
{ ERR err = OK_no_Err;
  int16u lctemp = Ln->lc; // 暫存

  for(Tokenfield* tt = pt->next; tt; tt = tt->next)
   { switch(tt->Token)
     { case LongCharn : case StrDataKn :
            { Dat4ary &Ndary = *new Dat4ary;
              Ndary.dat[3] = 2;      // len = 2

              if(tt->DatPt->GetLen() > 2)
               { OutWarning(DataBeTrun16Warn); } // endif

              if(tt->DatPt->GetLen() < 2)
               { OutWarning(DataBeExtentWarn);
                 register const int8u* w = (const char*)*(tt->DatPt);
                 Ndary.dat[0] = 0;         // high byte extended to 0.
                 Ndary.dat[1] = *w;
               } // endif
              else       //(==2)
               { register const int8u* w = (const char*)*(tt->DatPt);
                 Ndary.dat[0] = *w;
                 Ndary.dat[1] = *(w+1);
               } // end else

              delete tt->DatPt;          // 釋放內(nèi)存
              tt->Token = ObjcodeKn;     // Token進(jìn)化
              tt->D4ary = &Ndary;

              Ln->lc += 2; break;
            } // end case

       case ExpresnKn :
            { const TriVal& trv = *LabMger->CalExpression(err, tt->ExpPt); // 帶回err。
              if(err) { return Have_Errs; } // 該行異常終止
              if(not16bit(trv.val)) { OutWarning(DataBeTrun16Warn); } // endif

              TokenOper::DelTokenList(tt->ExpPt); // 釋放內(nèi)存
              tt->Token = ObjcodeKn;              // Token進(jìn)化
              tt->D4ary = new Dat4ary;

              Dat4ary &Ndary = *(tt->D4ary);
              if( Ndary.WordSettle(trv, Ln->lc) )
               { DebugKit(printf("\nErr in WordSettle.\n"); Debugkey;); // debug
                 return Have_Errs;
               } // endif

              Ln->lc += 2; break;
            } // end case
       default: { EThrows(printf("\nDWToDWObj out of run!\n"); Debugkey;); // debug
                } // end default
     } // end switch
   } // end for

  Ln->lc = lctemp; // 恢復(fù)
  pt->Token = DWObjCode; // Token的進(jìn)化!

  return OK_no_Err;
} // end DWToDWObj
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
//  把匯編指令翻譯成目標(biāo)代碼。
//  pt是指向KnownInst的指針, pt->Opset指向該指令的OPset。
//  err = 1, 第一個(gè)操作數(shù)出錯(cuò)。
//  err = 2, 第二個(gè)操作數(shù)出錯(cuò)。
//  err = 3, 第三個(gè)操作數(shù)出錯(cuò)。
//---------------------------------------------------------------------------
ERR MacroAsmber::Translate(Tokenfield* pt) // 成功=0,否則返回出錯(cuò)碼
{ ERR err = 0;
    // At first, pt->Token == KnownInst.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性极品少妇| 国产一区二区三区av电影 | 日韩视频在线永久播放| 亚洲福中文字幕伊人影院| 欧美丝袜丝交足nylons图片| 性做久久久久久久免费看| 制服丝袜日韩国产| 国产一区二区调教| 国产精品久久久久久妇女6080| 99久久久久久99| 亚洲午夜精品久久久久久久久| 91精品在线免费观看| 韩国一区二区三区| 亚洲同性同志一二三专区| 欧美色图激情小说| 久久99精品国产91久久来源| 国产亚洲一区二区三区在线观看| 成人黄页毛片网站| 亚洲h精品动漫在线观看| 精品国产青草久久久久福利| 成人听书哪个软件好| 一区二区三区精品视频| 欧美一区二区三区视频免费| 国产精品一区在线观看你懂的| 一区在线观看免费| 91精品国产高清一区二区三区蜜臀| 乱一区二区av| 《视频一区视频二区| 91麻豆精品久久久久蜜臀| 国产成人鲁色资源国产91色综 | 日韩精品成人一区二区在线| 国产午夜亚洲精品理论片色戒| 91视频在线观看| 美女视频一区在线观看| 亚洲欧美在线观看| 欧美xxxxxxxxx| 色天使久久综合网天天| 国产精品中文欧美| 五月婷婷久久综合| 亚洲欧美另类综合偷拍| 精品久久久久久久人人人人传媒| 色乱码一区二区三区88| 极品少妇xxxx精品少妇偷拍| 亚洲一区二区五区| 中文字幕不卡一区| 日韩欧美一级二级三级久久久| 色综合色狠狠综合色| 国产91精品入口| 日本成人在线视频网站| 亚洲乱码精品一二三四区日韩在线| 欧美成人精品1314www| 欧美日韩激情一区二区三区| 成人性色生活片免费看爆迷你毛片| 强制捆绑调教一区二区| 亚洲制服丝袜在线| 成人欧美一区二区三区小说| 久久奇米777| 日韩一级完整毛片| 欧美精品高清视频| 欧洲av一区二区嗯嗯嗯啊| av电影在线观看一区| 国产成人精品www牛牛影视| 老色鬼精品视频在线观看播放| 亚洲成人你懂的| 亚洲激情图片小说视频| 亚洲欧洲精品成人久久奇米网| 久久久久99精品国产片| 一区二区三区不卡视频在线观看| 国产精品青草综合久久久久99| 欧美成人伊人久久综合网| 欧美精品少妇一区二区三区| 欧美三级乱人伦电影| 在线观看成人小视频| 91国偷自产一区二区三区观看| 99国产精品久久久久久久久久久| 成人免费精品视频| av一区二区三区黑人| 成人久久久精品乱码一区二区三区 | 成人一区在线观看| 夫妻av一区二区| jvid福利写真一区二区三区| 成人av免费在线| 波多野结衣的一区二区三区| 国产福利一区二区三区视频| 国产69精品久久久久毛片| 国产精品99久久久| av亚洲产国偷v产偷v自拍| 99国产欧美另类久久久精品| 色诱视频网站一区| 在线观看日韩av先锋影音电影院| 欧美亚洲综合在线| 欧美另类变人与禽xxxxx| 欧美一区二区三区影视| 精品剧情在线观看| 国产欧美日韩视频一区二区 | 欧美日韩一区二区三区四区五区| 欧美日韩视频在线一区二区| 亚洲欧美综合另类在线卡通| 亚洲欧洲三级电影| 天天综合天天做天天综合| 美女mm1313爽爽久久久蜜臀| 国产精品正在播放| 色综合亚洲欧洲| 7777精品伊人久久久大香线蕉最新版 | 9l国产精品久久久久麻豆| 色一区在线观看| 5858s免费视频成人| 久久久久亚洲综合| 亚洲综合视频在线| 久久99热国产| 91浏览器入口在线观看| 欧美老人xxxx18| 国产欧美综合在线| 一级特黄大欧美久久久| 蜜桃传媒麻豆第一区在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 裸体歌舞表演一区二区| 成人h精品动漫一区二区三区| 色94色欧美sute亚洲线路二| 日韩一级成人av| 综合久久给合久久狠狠狠97色| 亚洲国产成人va在线观看天堂| 国模一区二区三区白浆| 91久久免费观看| 久久女同精品一区二区| 一区二区三区日韩欧美精品| 精品一区二区三区蜜桃| 在线观看区一区二| 国产视频亚洲色图| 午夜久久电影网| eeuss鲁片一区二区三区| 日韩欧美成人激情| 一区二区三区在线视频观看 | 久久久久久久久免费| 亚洲一卡二卡三卡四卡| 国产99久久久国产精品潘金网站| 欧美亚洲一区二区在线观看| 中文字幕国产精品一区二区| 免费国产亚洲视频| 91老司机福利 在线| 性感美女极品91精品| av一区二区三区在线| 精品国产一区二区精华| 亚洲18色成人| 色婷婷综合五月| 国产精品麻豆网站| 韩国精品主播一区二区在线观看 | 91久久免费观看| 国产精品理论片在线观看| 国产麻豆视频一区| 日韩精品一区二区三区视频| 亚洲大片精品永久免费| 色综合色综合色综合| 国产精品伦一区| 国产·精品毛片| 久久―日本道色综合久久| 免费高清在线视频一区·| 欧美人妖巨大在线| 亚洲国产精品一区二区www | 亚洲综合色自拍一区| 91香蕉视频污在线| 最新中文字幕一区二区三区| 丁香六月综合激情| 国产区在线观看成人精品| 狠狠色丁香婷婷综合| 精品国产在天天线2019| 蜜臀av一区二区在线免费观看| 在线综合亚洲欧美在线视频| 视频在线观看91| 在线精品视频小说1| 亚洲一区二区偷拍精品| 欧美日韩中文字幕精品| 午夜激情一区二区三区| 制服丝袜亚洲精品中文字幕| 免费在线观看一区| 精品成a人在线观看| 国产精品亚洲午夜一区二区三区| 国产视频一区二区在线| 成人黄页在线观看| 亚洲美女淫视频| 欧美日韩国产综合一区二区| 日韩中文字幕区一区有砖一区| 欧美一区二区三区日韩| 久久精品国产99久久6| 久久精品亚洲精品国产欧美| 丁香婷婷综合网| 亚洲欧美国产高清| 欧美日本一区二区| 精久久久久久久久久久| 亚洲国产精品成人综合色在线婷婷| www.av精品| 亚洲国产另类av| 精品国产乱码久久久久久久久| 国产精品自在在线| 亚洲男人电影天堂| 欧美日韩国产另类一区| 美女一区二区视频| 日本一区二区三区国色天香| 色一情一乱一乱一91av| 日韩av一区二区在线影视|