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

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

?? cgen.h

?? TINY語言的編譯器
?? H
字號(hào):


class Cgen:public Code,public SymTab
{
private:

	static int tmpOffset;
	

	void cGen (TreeNode * tree);
	void genStmt( TreeNode * tree);
	void genExp( TreeNode * tree);

public:
	Cgen(char *codefile):Code(codefile)
	{	 
	}

	void codeGen(TreeNode * syntaxTree, char * codefile);

};


int Cgen::tmpOffset = 0;


void Cgen:: genStmt( TreeNode * tree)
{ 
	TreeNode * p1, * p2, * p3;
    int savedLoc1,savedLoc2,currentLoc;
    int loc;
    switch (tree->kind.stmt) 
	{
	 case IfK :
         emitComment("-> if") ;
         p1 = tree->child[0] ;
         p2 = tree->child[1] ;
         p3 = tree->child[2] ;
        
         cGen(p1);
         savedLoc1 = emitSkip(1) ;
         emitComment("if: jump to else belongs here");
         
         cGen(p2);
         savedLoc2 = emitSkip(1) ;
         emitComment("if: jump to end belongs here");
         currentLoc = emitSkip(0) ;
         emitBackup(savedLoc1) ;
         emitRM_Abs("JEQ",ac,currentLoc,"if: jmp to else");
         emitRestore() ;
         
         cGen(p3);
         currentLoc = emitSkip(0) ;
         emitBackup(savedLoc2) ;
         emitRM_Abs("LDA",pc,currentLoc,"jmp to end") ;
         emitRestore() ;
         emitComment("<- if") ;
         break;

      case RepeatK:
         emitComment("-> repeat") ;
         p1 = tree->child[0] ;
         p2 = tree->child[1] ;
         savedLoc1 = emitSkip(0);
         emitComment("repeat: jump after body comes back here");
         
         cGen(p1);
        
         cGen(p2);
         emitRM_Abs("JEQ",ac,savedLoc1,"repeat: jmp back to body");
         emitComment("<- repeat") ;
         break;

      case AssignK:
         emitComment("-> assign") ;
         
         cGen(tree->child[0]);
         
         loc = Find(tree->attr.name);
         emitRM("ST",ac,loc,gp,"assign: store value");
         emitComment("<- assign") ;
         break;
      case ReadK:
         emitRO("IN",ac,0,0,"read integer value");
         loc = Find(tree->attr.name);
         emitRM("ST",ac,loc,gp,"read: store value");
         break;
      case WriteK:
         
         cGen(tree->child[0]);
         
         emitRO("OUT",ac,0,0,"write ac");
         break;
      default:
         break;
    }
} 

void Cgen:: genExp( TreeNode * tree)
{ 
	int loc;
    TreeNode * p1, * p2;
    switch (tree->kind.exp) 
	{

    case ConstK :
        emitComment("-> Const") ;
     
        emitRM("LDC",ac,tree->attr.val,0,"load const");
        emitComment("<- Const") ;
        break;
    
    case IdK :
        emitComment("-> Id") ;
        loc = Find(tree->attr.name);
        emitRM("LD",ac,loc,gp,"load id value");
        emitComment("<- Id") ;
        break;
    case OpK :
         emitComment("-> Op") ;
         p1 = tree->child[0];
         p2 = tree->child[1];
         
         cGen(p1);
        
         emitRM("ST",ac,tmpOffset--,mp,"op: push left");
         
         cGen(p2);
        
         emitRM("LD",ac1,++tmpOffset,mp,"op: load left");
         switch (tree->attr.op) {
            case PLUS :
               emitRO("ADD",ac,ac1,ac,"op +");
               break;
            case MINUS :
               emitRO("SUB",ac,ac1,ac,"op -");
               break;
            case TIMES :
               emitRO("MUL",ac,ac1,ac,"op *");
               break;
            case OVER :
               emitRO("DIV",ac,ac1,ac,"op /");
               break;
            case LT :
               emitRO("SUB",ac,ac1,ac,"op <") ;
               emitRM("JLT",ac,2,pc,"br if true") ;
               emitRM("LDC",ac,0,ac,"false case") ;
               emitRM("LDA",pc,1,pc,"unconditional jmp") ;
               emitRM("LDC",ac,1,ac,"true case") ;
               break;
            case EQ :
               emitRO("SUB",ac,ac1,ac,"op ==") ;
               emitRM("JEQ",ac,2,pc,"br if true");
               emitRM("LDC",ac,0,ac,"false case") ;
               emitRM("LDA",pc,1,pc,"unconditional jmp") ;
               emitRM("LDC",ac,1,ac,"true case") ;
               break;
            default:
               emitComment("BUG: Unknown operator");
               break;
         }
         emitComment("<- Op") ;
         break;

    default:
      break;
  }
} 


void Cgen::cGen( TreeNode * tree)
{ if (tree != NULL)
  { switch (tree->nodekind) {
      case StmtK:
        genStmt(tree);
        break;
      case ExpK:
        genExp(tree);
        break;
      default:
        break;
    }
    cGen(tree->sibling);
  }
}


void Cgen::codeGen(TreeNode * syntaxTree, char * codefile)
{
	char * s = new char[strlen(codefile)+7];
    strcpy(s,"File: ");
    strcat(s,codefile);
    emitComment("TINY Compilation to TM Code");
    emitComment(s);
  
    emitComment("Standard prelude:");
    emitRM("LD",mp,0,ac,"load maxaddress from location 0");
    emitRM("ST",ac,0,ac,"clear location 0");
    emitComment("End of standard prelude.");

    cGen(syntaxTree);
   
    emitComment("End of execution.");
    emitRO("HALT",0,0,0,"");
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精选视频在线| 亚洲综合精品久久| 欧美在线一区二区| 国内成人免费视频| 一区二区三区高清| 国产清纯美女被跳蛋高潮一区二区久久w| 91在线观看地址| 国产一区二区三区免费在线观看| 亚洲综合999| 中文字幕字幕中文在线中不卡视频| 欧美一区二区视频在线观看 | 国产一区二区不卡在线| 尤物在线观看一区| 欧美国产一区在线| 欧美不卡123| 欧美酷刑日本凌虐凌虐| 91免费看视频| 成人午夜伦理影院| 国产乱人伦偷精品视频不卡| 日韩经典一区二区| 午夜电影网亚洲视频| 亚洲视频小说图片| 国产精品免费丝袜| 久久久久国产精品免费免费搜索| 在线播放国产精品二区一二区四区 | 国产精品超碰97尤物18| 日韩你懂的在线观看| 欧美视频在线不卡| 色菇凉天天综合网| 91丨porny丨中文| 国产精品一区二区三区四区| 免费成人av在线播放| 午夜精品一区二区三区免费视频 | 美国精品在线观看| 天天做天天摸天天爽国产一区 | 成人综合婷婷国产精品久久蜜臀| 日本不卡一二三| 日韩成人午夜电影| 奇米一区二区三区av| 午夜精品一区在线观看| 亚洲国产欧美另类丝袜| 一区二区三区四区国产精品| 亚洲视频一区在线| 亚洲尤物视频在线| 亚洲成人一区在线| 日韩高清中文字幕一区| 日韩**一区毛片| 老司机一区二区| 韩国成人在线视频| 国产a精品视频| 成人免费毛片片v| 99re热视频这里只精品| 色婷婷精品大在线视频| 在线日韩av片| 欧美高清性hdvideosex| 91精品国产综合久久精品图片| 欧美男女性生活在线直播观看| 欧美人牲a欧美精品| 日韩精品一区二| 国产日韩欧美在线一区| 综合欧美亚洲日本| 亚洲成人在线观看视频| 久久99蜜桃精品| 成人深夜视频在线观看| 在线日韩国产精品| 日韩精品一区二区三区在线播放 | 爽好久久久欧美精品| 日本vs亚洲vs韩国一区三区二区| 捆绑调教美女网站视频一区| 国产麻豆91精品| 91麻豆福利精品推荐| 欧美日韩另类国产亚洲欧美一级| 日韩欧美123| 国产精品伦理一区二区| 亚洲一区二区在线播放相泽| 蜜臂av日日欢夜夜爽一区| 国产精品一区免费在线观看| 一本一道波多野结衣一区二区| 欧美日韩中文字幕一区| 久久亚洲捆绑美女| 亚洲欧美色图小说| 蜜桃传媒麻豆第一区在线观看| 国产成人av一区二区三区在线 | 国产亚洲女人久久久久毛片| 亚洲丝袜制服诱惑| 久久电影国产免费久久电影| 丁香五精品蜜臀久久久久99网站| 欧美少妇bbb| 久久久不卡影院| 亚洲成人激情av| 国产成人丝袜美腿| 在线成人小视频| 中文字幕一区二区三区在线不卡| 午夜视频在线观看一区二区| 国产成人福利片| 欧美一区二区三区在线电影 | 亚洲愉拍自拍另类高清精品| 国产综合久久久久影院| 91在线视频观看| 欧美成人vr18sexvr| 亚洲精品高清在线观看| 国产原创一区二区三区| 在线电影院国产精品| 亚洲男女一区二区三区| 国产一区在线观看麻豆| 6080国产精品一区二区| 亚洲欧美激情在线| 成人免费观看视频| 精品久久久三级丝袜| 午夜不卡在线视频| 一本在线高清不卡dvd| 国产欧美一区视频| 免费在线看一区| 在线亚洲欧美专区二区| 中文欧美字幕免费| 国产制服丝袜一区| 日韩色视频在线观看| 亚洲 欧美综合在线网络| 色香蕉成人二区免费| 国产精品污网站| 国产激情一区二区三区| 久久免费看少妇高潮| 黄网站免费久久| 欧美美女激情18p| 亚洲国产精品一区二区久久恐怖片| av一本久道久久综合久久鬼色| 久久久久9999亚洲精品| 久国产精品韩国三级视频| 制服丝袜中文字幕一区| 亚洲成人激情综合网| 欧美日韩国产精品自在自线| 亚洲与欧洲av电影| 欧美亚洲日本一区| 亚洲一区欧美一区| 欧美日韩国产片| 三级在线观看一区二区| 欧美日韩视频在线一区二区| 亚洲一区二区在线观看视频| 欧美日韩亚洲丝袜制服| 亚洲aaa精品| 欧美一级精品大片| 精品一区二区三区视频在线观看| 欧美一区二区成人6969| 开心九九激情九九欧美日韩精美视频电影 | 亚洲第一福利一区| 欧美欧美欧美欧美| 蜜桃av一区二区在线观看 | 国产欧美日韩综合| 成人污污视频在线观看| 亚洲色大成网站www久久九九| 91网站在线播放| 亚洲一区二区三区三| 91麻豆精品国产91久久久| 蜜臀av一区二区在线免费观看| 日韩精品一区二区三区swag| 国产美女在线精品| 最新国产成人在线观看| 在线观看一区日韩| 麻豆成人久久精品二区三区小说| 久久蜜桃av一区二区天堂 | 免费成人在线观看视频| 精品毛片乱码1区2区3区| 国产精品自拍毛片| 亚洲特级片在线| 91麻豆精品国产91久久久| 国产露脸91国语对白| 成人免费在线视频观看| 欧美日韩在线不卡| 国产精品一二一区| 亚洲美女屁股眼交| 欧美一级日韩不卡播放免费| 国产一区二区看久久| 亚洲视频在线一区| 欧美一区二区三区四区在线观看| 国产美女精品一区二区三区| 亚洲欧美二区三区| 日韩美女视频在线| 一本久道中文字幕精品亚洲嫩| 天堂久久一区二区三区| 国产三级欧美三级| 欧美三级一区二区| 国产乱码字幕精品高清av| 夜夜夜精品看看| 久久久久久久久久久黄色| 色综合天天综合网国产成人综合天| 日本系列欧美系列| 亚洲情趣在线观看| 久久毛片高清国产| 欧美人狂配大交3d怪物一区| 丰满亚洲少妇av| 日韩av电影免费观看高清完整版| 中文字幕av一区 二区| 5月丁香婷婷综合| 色综合久久88色综合天天免费| 黄色精品一二区| 亚洲第一在线综合网站| 亚洲欧洲日韩女同| 久久久www免费人成精品| 欧美日韩国产首页在线观看| av成人老司机|