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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? masmber_c4.cpp

?? 單片機宏匯編器的源程序。給一些愛好者作為學習編譯原理和 C 程序設計的例子.
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
  Tokenfield* p = pt->next;     // Now, s->Token==Operand.

  OPset* setPt = pt->Opset;     // 指令格式
  int8u length = setPt->len;    // 指令長度

  Dat4ary& Ndatry = *new Dat4ary; // 創建新結點
  Ndatry.dat[3] = length;
  Ndatry.dat[0] = setPt->OPobj;   // 指令目標碼

  TriVal Trv[3];                  // 三個操作數TriVal, 來自三個Expr。
  for( int8u c = 0;
           p && c < 3;           // conditions
               p =  p->next, c++ )
   { // At first, p->Token == Operand.
     Tokenfield* s = p->ExpPt; // 從Operand 下降到 Expression
     switch(s->Token)
     { case '#': // no breaking!
       case '@': // no breaking!
       case '/': s = s->next;     // 指針前移
       // no default!
     } // end switch
       // Now, s->Token==Expression
     s = s->ExpPt; // 從Expression下降到Expression頭

     register const TriVal* tt = LabMger->CalExpression(err, s); // 給TriVal賦值
     if(err) { OutputErr(WrongOperandsErr+c); return c+1; } // endif
     Trv[c] = *tt;
     if(Trv[c].rseg == NULL)
      { Trv[c].rseg = JModulePt->GetAbsCodeSeg(); } // endif
   } // end for p & c

   // 多余的Operand被忽略。
   // 至此,三個TriVal(Trv[])已經設置好。

  if(length > 1)
   { if(OpandAction(Ndatry, 1, Trv, setPt->act1)) { err = 4; } // 第二個字節出錯
   } // endif length>1
  if(!err && length > 2)
   { if(OpandAction(Ndatry, 2, Trv, setPt->act2)) { err = 5; } // 第三個字節出錯
   } // endif length>2

  TokenOper::DelOPNDList(pt->next); // 刪除其后的Operand表。
  pt->next = NULL;
  pt->Token = InstCode;     // Token的進化!!
  pt->D4ary = &Ndatry;      // 接入結點
  return err;
} // end Translate
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// 根據act,對dary的第pos個字節進行操作。Trv[]裝有源數。
//---------------------------------------------------------------------------
ERR MacroAsmber::OpandAction(Dat4ary &dary, int8u pos, TriVal* trv, int8 act)
{ ERR err ;
  switch(act)       // 在KnownInst中,dary.dat[0]的Loc對應Ln->lc。
  { case BRef_1 : { err = OPAct_BRef_Do(Ln->lc + pos, dary, pos, trv[0]);
                    break;                // 把第一操作數d1寫入pos位置
                  } // end case
    case BRef_2 : { err = OPAct_BRef_Do(Ln->lc + pos, dary, pos, trv[1]);
                    break;                // 把第二操作數d2寫入pos位置
                  } // end case
    case BRef_3 : { err = OPAct_BRef_Do(Ln->lc + pos, dary, pos, trv[2]);
                    break;                // 把第三操作數d3寫入pos位置
                  } // end case
    case Wrel_1 : { err = OPAct_Wrel_Do(Ln->lc + pos, dary, pos, trv[0]);
                    break;       // 把第一操作數d1換成相對偏移,然后寫入pos位置
                  } // end case
    case Wrel_2 : { err = OPAct_Wrel_Do(Ln->lc + pos, dary, pos, trv[1]);
                    break;       // 把第二操作數d2換成相對偏移,然后寫入pos位置
                  } // end case
    case Wrel_3 : { err = OPAct_Wrel_Do(Ln->lc + pos, dary, pos, trv[2]);
                    break;       // 把第三操作數d3換成相對偏移,然后寫入pos位置
                  } // end case
    case JJudge : // 同下。
    case H8L8_1 : { err = OPAct_H8L8_Do(Ln->lc + pos, dary, pos, trv[0]);
                    break;
                  } // end case
    case H8L8_2 : { err = OPAct_H8L8_Do(Ln->lc + pos, dary, pos, trv[1]);
                    break;
                  } // end case
    case   0    : { err = OK_no_Err; break;         // 空操作
                  } // end case
    case H3L8_0 : { err = OPAct_H3L8_Do(Ln->lc + pos, dary, trv[0]);
                    break;
                  } // end case
    default :     { err = Have_Errs;
                    EThrows(printf("\nOpandAction out of run!"); Debugkey;); // debug
                  } // end defualt
  } // end switch
  return err;
} // end OpandAction
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// 由TriVal(trv)給dary的第pos個字節賦值。
//---------------------------------------------------------------------------
ERR MacroAsmber::
OPAct_BRef_Do(int16u loc, Dat4ary &dary, int8u pos, const TriVal &trv)
{ if( not8bit(trv.val) && trv.fix == 0 )
   { OutWarning(DataBeTrun8Warn); } // endif

  if( dary.BytePosSettle(trv, pos, loc) )
   { DebugKit(printf("\nErr in ByteSettle.\n"); Debugkey;); // debug
     return Have_Errs;
   } // endif

  return OK_no_Err;
} // end OPAct_BRef_Do
//---------------------------------------------------------------------------

#pragma argsused
//---------------------------------------------------------------------------
// 由TriVal(trv)給dary的第pos個字節賦rel值。
//---------------------------------------------------------------------------
ERR MacroAsmber::
OPAct_Wrel_Do(int16u loc, Dat4ary &dary, int8u pos, const TriVal &trv)
{ if( not16bit(trv.val) )
   { OutWarning(DataBeTrun16Warn); } // endif
  if(trv.rseg != Ln->sgpt) // 當前匯編行所在的段
   { OutputErr(SegNotMatchErr); return Have_Errs; } // error!

  int8u vval; // 供下面調用.
  if(Cal_rel((int16u)trv.val, vval)) { return Have_Errs; } // error!
   // 計算相對位移。

  switch(trv.rel)
  { case 'A': case 'R': { dary.dat[pos] = vval; return OK_no_Err; } // end case
    case 'E': { OutputErr(SegNotMatchErr); return Have_Errs; } // end case
    default : { EThrows(printf("\nOPAct_WRef_Do out of run!"); Debugkey;); // debug
                return Have_Errs;
              } // default
  } // end switch
} // end OPAct_BRef_Do
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// 由TriVal(trv)給dary的第pos個字節賦WORD值。
//---------------------------------------------------------------------------
inline ERR MacroAsmber::
OPAct_H8L8_Do(int16u loc, Dat4ary &dary, int8u pos, const TriVal &trv)
{ if( not16bit(trv.val) )
   { OutWarning(DataBeTrun16Warn); } // endif

  if( dary.WordPosSettle(trv, pos, loc) )
   { DebugKit(printf("\nErr in WordSettle.\n"); Debugkey;); // debug
     return Have_Errs;
   } // endif

  return OK_no_Err;
} // end OPAct_H8L8_Do
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
inline ERR MacroAsmber::
OPAct_H3L8_Do(int16u loc, Dat4ary &dary, const TriVal &trv)
{ if( not16bit(trv.val) )
   { OutWarning(DataBeTrun16Warn); } // endif

  if( dary.H3L8Settle(trv, loc) )
   { DebugKit(printf("\nErr in WordSettle.\n"); Debugkey;); // debug
     return Have_Errs;
   } // endif

  return OK_no_Err;
} // end OPAct_H3L8_Do
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// loc和len必須預先設置好,輸入str為轉移地址字符串
//---------------------------------------------------------------------------
ERR MacroAsmber::Cal_rel(int16u addr,int8u &val)
{ DebugKit(printf("\nIn cal rel, addr=%xh",addr);); // debug
  register int16 address = addr - Ln->lc - Ln->len;
  if(address>127 || address<-128)
   { OutputErr(RelativeAddrErr); return Have_Errs; } // endif
  val = (int8u)address;          // 會丟棄高位
  return OK_no_Err;
} // end Cal_rel
//---------------------------------------------------------------------------


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





















?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美美女一区二区在线观看| 亚洲欧美日韩综合aⅴ视频| 欧美国产综合色视频| 一区二区三区高清不卡| 极品美女销魂一区二区三区免费| 色综合天天综合给合国产| 国产日韩精品视频一区| 亚洲精品视频一区| 国产乱色国产精品免费视频| 91精品婷婷国产综合久久| 亚洲欧美一区二区三区国产精品 | 国产在线精品免费av| 91福利精品第一导航| 国产精品久久福利| 国产成人综合在线| 日韩精品中文字幕在线不卡尤物| 亚洲精品高清在线观看| 99久久伊人精品| 久久精品视频免费观看| 久久不见久久见中文字幕免费| 欧美三级韩国三级日本三斤| 国产精品久久一卡二卡| 国产成人午夜片在线观看高清观看| 91精品国产综合久久久久久久久久 | 国产精品素人一区二区| 精品在线一区二区三区| 欧美一区二区三区免费大片| 亚洲综合激情另类小说区| 99re这里都是精品| 亚洲欧洲日韩一区二区三区| 成人精品视频.| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 69堂精品视频| 亚洲国产一区在线观看| 欧美视频一区二区三区四区| 亚洲电影你懂得| 欧美伊人精品成人久久综合97 | 91精品办公室少妇高潮对白| 久久成人综合网| 欧美福利视频一区| 日韩成人免费电影| 日韩久久精品一区| 国产福利精品导航| 亚洲欧美日韩电影| 制服丝袜一区二区三区| 精品一区二区三区欧美| 国产亚洲一本大道中文在线| 成人91在线观看| 一区二区三区中文在线| 3d成人动漫网站| 国产成人精品亚洲777人妖 | 欧洲一区二区三区在线| 午夜精品久久久久久久99樱桃 | 亚洲欧美日韩国产一区二区三区 | 美女一区二区三区在线观看| 精品国产不卡一区二区三区| 国产成人精品免费在线| 亚洲精品国产精华液| 欧美老女人在线| 国产精品1区2区3区在线观看| 国产精品美女久久久久久2018| 欧美亚日韩国产aⅴ精品中极品| 秋霞电影一区二区| 国产视频一区二区在线| 欧美三级日韩三级国产三级| 国产乱色国产精品免费视频| 1000部国产精品成人观看| 在线播放中文字幕一区| 国产乱妇无码大片在线观看| 亚洲一区国产视频| 久久女同性恋中文字幕| 欧美唯美清纯偷拍| 国产成人av电影在线| 亚洲电影一区二区| 欧美国产禁国产网站cc| 91麻豆精品91久久久久久清纯| 床上的激情91.| 免费在线观看一区| 一区二区激情视频| 日本一区免费视频| 3atv在线一区二区三区| 色综合久久88色综合天天免费| 老司机精品视频一区二区三区| 亚洲精品国产第一综合99久久| 国产日韩欧美高清| 日韩亚洲欧美成人一区| 在线观看国产一区二区| 波多野结衣中文字幕一区| 老司机免费视频一区二区 | 国产美女在线观看一区| 午夜精品一区在线观看| 亚洲精品国产视频| 国产精品午夜久久| 久久午夜电影网| 欧美一级日韩不卡播放免费| 色婷婷精品久久二区二区蜜臂av| 国产大陆a不卡| 国产精品资源在线观看| 琪琪久久久久日韩精品| 日韩精品一级中文字幕精品视频免费观看 | 亚洲欧美日韩在线| 国产精品久久久久久户外露出 | 成人免费视频在线观看| 国产女人水真多18毛片18精品视频 | 欧美丰满嫩嫩电影| 在线观看日韩电影| 欧美自拍丝袜亚洲| 91久久线看在观草草青青| 99国产精品视频免费观看| 成人国产精品免费观看动漫| 国产精品88888| 懂色av一区二区三区蜜臀| 国内精品国产三级国产a久久| 麻豆精品一二三| 精品影院一区二区久久久| 美脚の诱脚舐め脚责91| 日本最新不卡在线| 奇米精品一区二区三区在线观看 | 欧美日韩你懂的| 欧美日韩一二三| 欧美男同性恋视频网站| 欧美电影一区二区三区| 在线观看91av| 日韩美女一区二区三区| 久久综合久久综合亚洲| 国产三级欧美三级日产三级99| 国产午夜精品理论片a级大结局 | 久久精品欧美日韩| 中文字幕精品综合| 中文字幕亚洲综合久久菠萝蜜| 亚洲激情欧美激情| 五月天亚洲婷婷| 精品亚洲国产成人av制服丝袜 | 亚洲女人小视频在线观看| 一区二区欧美精品| 午夜视黄欧洲亚洲| 久久精品国产精品青草| 国产**成人网毛片九色 | 日本aⅴ免费视频一区二区三区 | 亚洲欧洲综合另类| 图片区日韩欧美亚洲| 国产精品1区2区| 色成人在线视频| 日韩欧美在线观看一区二区三区| 久久精品一二三| 一区二区三区.www| 卡一卡二国产精品| 不卡区在线中文字幕| 欧美福利视频一区| 国产精品婷婷午夜在线观看| 午夜亚洲国产au精品一区二区| 国产一区中文字幕| 日本韩国精品在线| www成人在线观看| 亚洲免费在线观看| 久久 天天综合| 欧美性猛交xxxxxxxx| 久久久久青草大香线综合精品| 一区二区三区在线观看视频 | 日韩av一区二区三区四区| 成人小视频在线| 日韩欧美成人午夜| 一区二区免费视频| 成人一级片在线观看| 欧美一区二区三区免费大片 | 欧美xingq一区二区| 亚洲人123区| 国产乱码精品一区二区三区五月婷| 91免费看片在线观看| 久久精品一区二区三区不卡| 日韩高清一区二区| 91精品办公室少妇高潮对白| 欧美极品美女视频| 久久er精品视频| 欧美日韩综合色| 亚洲日本一区二区三区| 国产高清成人在线| 精品日韩在线一区| 日韩精品成人一区二区三区| 日本精品免费观看高清观看| 国产精品伦理一区二区| 国产一区二区不卡在线| 欧美性xxxxxx少妇| ...xxx性欧美| 国产成人av一区| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩精品乱码av一区二区| 欧美体内she精高潮| 夜夜嗨av一区二区三区四季av| 99久久综合国产精品| 国产精品久久一卡二卡| 成人国产精品免费观看动漫| 中文字幕av一区二区三区高 | 性欧美疯狂xxxxbbbb| 欧美在线一区二区三区| 亚洲一区影音先锋| 在线观看www91| 图片区小说区区亚洲影院| 欧美电影影音先锋| 美女视频黄免费的久久|