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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? tm.cpp

?? 學(xué)習(xí)編譯原理
?? CPP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/***** 該代碼文件所包含頭文件 *****/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/* 宏定義常量TRUE為1 */
#ifndef TRUE
#define TRUE 1
#endif
/* 宏定義常量FALSE為0 */
#ifndef FALSE
#define FALSE 0
#endif


/***************** 常量 *******************/

/* 為大型程序擴(kuò)展,指令存儲(chǔ)區(qū)大小,定義為1024 */
#define   IADDR_SIZE  1024 
/* 為大型程序擴(kuò)展,數(shù)據(jù)存儲(chǔ)區(qū)大小,定義為1024 */
#define   DADDR_SIZE  1024 
/* 寄存器數(shù)量,定義為8 */
#define   NO_REGS 8
/* PC寄存器,定義為7 */
#define   PC_REG  7
/* 目標(biāo)代碼行大小,定義為121 */
#define   LINESIZE  121
/* 字大小,定義為20 */
#define   WORDSIZE  20


/**************** 類(lèi)型 *******************/

/* 指令尋址模式類(lèi)型 */
typedef enum 
{
   opclRR,		/* 寄存器尋址模式類(lèi)型,操作數(shù)使用寄存器r,s,t */
   opclRM,		/* 寄存器-內(nèi)存尋址模式類(lèi)型,操作數(shù)使用寄存器r,內(nèi)存地址d+s */
   opclRA		/* 寄存器-立即數(shù)尋址模式類(lèi)型,操作數(shù)使用寄存器r,立即數(shù)值d+s */
} OPCLASS;

/* 操作指令標(biāo)識(shí)碼類(lèi)型 */
typedef enum opcode{

   /************* 寄存器尋址模式指令標(biāo)識(shí)碼 ***************/

   opHALT,	/* 停止指令:結(jié)束程序執(zhí)行,忽略操作數(shù) */
   
   opIN,	/* 輸入指令:將外部變量讀入寄存器,使用第r個(gè)寄存器,忽略s,t參數(shù) */

   opOUT,	/* 輸出指令:將寄存器的值輸出,使用第r個(gè)寄存器,忽略s,t參數(shù) */

   opADD,   /* 加法指令:寄存器r的值賦為寄存器s的值與寄存器t的值的和 */

   opSUB,   /* 減法指令:寄存器r的值賦為寄存器s的值與寄存器t的值的差 */

   opMUL,   /* 乘法指令:寄存器r的值賦為寄存器s的值與寄存器t的值的積 */

   opDIV,   /* 除法指令:寄存器r的值賦為寄存器s的值與寄存器t的值的商 */

   /* 寄存器尋址模式指令限制標(biāo)志,							*
    * 操作標(biāo)識(shí)碼枚舉值小于opRRLim的指令均為寄存器尋址模式指令	*/
   opRRLim,  

   /************** 寄存器-內(nèi)存尋址模式指令標(biāo)識(shí)碼 ****************/

   opLD,	/* 載入指令:寄存器r的值賦為地址為d+reg(s)的內(nèi)存單元的值 */

   opST,    /* 設(shè)置指令:將地址為d+reg(s)的內(nèi)存單元值賦為寄存器r的值 */

   /* 寄存器-內(nèi)存尋址模式指令限制標(biāo)志										*
    * 操作標(biāo)識(shí)碼枚舉值小于opRMLim且大于opRRLim的均為寄存器-內(nèi)存尋址模式指令 */
   opRMLim, 

  
   /************* 寄存器-立即數(shù)尋址模式指令標(biāo)識(shí)碼 ****************/

   opLDA,	/* 載入指令:將寄存器r的值賦為立即數(shù)d與寄存器s的值的和 */

   opLDC,   /* 載入指令:將寄存器r的值賦為立即數(shù)d,參數(shù)s被忽略 */

   opJLT,   /* 如果寄存器r的值小于0,將第7個(gè)寄存器的值賦為d+reg(s)	*
			 * 第7個(gè)寄存器為pc程序計(jì)數(shù)寄存器						*/

   opJLE,   /* 如果寄存器r的值小于等于0,將pc寄存器的值賦為d+reg(s) */

   opJGT,   /* 如果寄存器r的值大于0,將pc寄存器的值賦為d+reg(s) */

   opJGE,   /* 如果寄存器r的值大于等于0,將pc寄存器的值賦為d+reg(s) */

   opJEQ,   /* 如果寄存器r的值等于0,將pc寄存器的值賦為d+reg(s) */

   opJNE,   /* 如果寄存器r的值不等于0,將pc寄存器的值賦為d+reg(s) */

   /* 寄存器-立即數(shù)尋址模式指令限制標(biāo)志
    * 操作標(biāo)識(shí)碼枚舉值小于opRALim且大于opRMLim的均為寄存器-立即數(shù)尋址模式指令 */
   opRALim    

   } OPCODE;						

/************ 指令單步執(zhí)行結(jié)果類(lèi)型 ************/
typedef enum {
   srOKAY,			/* 正常 */

   srHALT,			/* 停止 */

   srIMEM_ERR,		/* 指令存儲(chǔ)錯(cuò) */

   srDMEM_ERR,		/* 數(shù)據(jù)存儲(chǔ)錯(cuò) */

   srZERODIVIDE		/* 除數(shù)為零錯(cuò) */

   } STEPRESULT;

/* 指令結(jié)構(gòu)類(lèi)型:操作碼,操作數(shù)1,操作數(shù)2,操作數(shù)3 */
typedef struct {
      int iop  ;
      int iarg1  ;
      int iarg2  ;
      int iarg3  ;
   } INSTRUCTION;


/******** 變量 ********/

int iloc = 0 ;			/* 指令存儲(chǔ)計(jì)數(shù)指針,初始為0 */

int dloc = 0 ;			/* 數(shù)據(jù)存儲(chǔ)計(jì)數(shù)指針,初始為0 */

int traceflag = FALSE;	/* 指令執(zhí)行追蹤標(biāo)志,初始為FALSE */

int icountflag = FALSE;	/* 指令執(zhí)行計(jì)數(shù)標(biāo)志,初始為FALSE */

/* iMem用于指令存儲(chǔ),為1024長(zhǎng)的指令結(jié)構(gòu)數(shù)組 */
INSTRUCTION iMem [IADDR_SIZE];				

/* dMem用于數(shù)據(jù)存儲(chǔ),為1024長(zhǎng)的整數(shù)類(lèi)型數(shù)組 */
int dMem [DADDR_SIZE];						

/* reg用于寄存器存儲(chǔ),為8長(zhǎng)的整數(shù)類(lèi)型數(shù)組 */
int reg [NO_REGS];							


/* 指令操作碼表,對(duì)應(yīng)尋址模式分為三類(lèi) */
char * opCodeTab[]

        = {"HALT","IN","OUT","ADD","SUB","MUL","DIV","????",
          /* 寄存器尋址模式指令類(lèi)型 */

           "LD","ST","????", 
		  /* 寄存器-內(nèi)存尋址模式指令類(lèi)型 */

           "LDA","LDC","JLT","JLE","JGT","JGE","JEQ","JNE","????"
          /* 寄存器-立即數(shù)尋址模式指令類(lèi)型 */
          };

/** 單步執(zhí)行結(jié)果狀態(tài)表 **/
char * stepResultTab[]

        = {"OK","Halted","Instruction Memory Fault",
           "Data Memory Fault","Division by 0"
          };

char pgmName[20];			/* 用于存儲(chǔ)程序文件名 */

FILE *pgm  ;				/* 程序文件指針 */

char in_Line[LINESIZE] ;	/* 用于存儲(chǔ)一行代碼,為121長(zhǎng)的字符數(shù)組 */

int lineLen ;				/* in_Line中行結(jié)尾字符位置 */

int inCol  ;				/* 用于指出在in_Line中的當(dāng)前字符位置 */

int num  ;					/* 用于存儲(chǔ)當(dāng)前所得數(shù)值 */

char word[WORDSIZE] ;		/* 用于存儲(chǔ)當(dāng)前的字,為20長(zhǎng)的字符數(shù)組 */

char ch  ;					/* 當(dāng)前代碼行中當(dāng)前位置上的字符 */

int done  ;



/****************************************************/
/* 函數(shù)名 opClass									*/
/* 功  能 指令尋址模式分類(lèi)函數(shù)						*/
/* 說(shuō)  明 該函數(shù)對(duì)給定的指令操作碼枚舉值c進(jìn)行分類(lèi)	*/
/*        返回指令所屬尋址模式						*/
/****************************************************/
int opClass( int c )

{ 
  /* 如果枚舉值c小于opRRLim,則指令為寄存器尋址模式指令類(lèi)型 */
  if      ( c <= opRRLim) return ( opclRR );

  /* 如果枚舉值c小于opRMLim,則指令為寄存器-內(nèi)存尋址模式指令類(lèi)型 */
  else if ( c <= opRMLim) return ( opclRM );

  /* 為寄存器-立即數(shù)尋址模式指令類(lèi)型 */
  else                    return ( opclRA );

} 

/********************************************************/
/* 函數(shù)名 writeInstruction								*/
/* 功  能 指令輸出函數(shù)									*/
/* 說(shuō)  明 該函數(shù)將指令存儲(chǔ)區(qū)中指令以指定格式輸出到屏幕	*/
/********************************************************/
void writeInstruction ( int loc )

{  
  /* loc為所要輸出的指令在指令存儲(chǔ)區(qū)中地址,輸出到屏幕 */
  printf( "%5d: ", loc) ;

  /* 輸出指令地址loc在0-1023有效的指令存儲(chǔ)區(qū)地址范圍之內(nèi) */
  if ( (loc >= 0) && (loc < IADDR_SIZE) )

  { 
    /* 輸出地址為loc上的指令操作碼值iMem[loc].iop和第一操作數(shù)iMem[loc].iarg1 */
	printf("%6s%3d,", opCodeTab[iMem[loc].iop], iMem[loc].iarg1);

	/* 根據(jù)指令的尋址模式分類(lèi)處理 */
    switch ( opClass(iMem[loc].iop) )

    { 
      /* 輸出指令為寄存器尋址模式指令,以給定形式輸出操作數(shù)2,操作數(shù)3 */
	  case opclRR: printf("%1d,%1d", iMem[loc].iarg2, iMem[loc].iarg3);
                   break;		

      /* 輸出指令為寄存器-立即數(shù)尋址模式指令,和寄存器-內(nèi)存尋址模式指令	*
	   * 以給定形式輸出操作數(shù)2,操作數(shù)3									*/
      case opclRM: 
      case opclRA: printf("%3d(%1d)", iMem[loc].iarg2, iMem[loc].iarg3);
                   break;	
    }
   	/* 向屏幕輸出換行符 */
	printf ("\n") ;
  }
} /* writeInstruction */

/****************************************************/
/* 函數(shù)名 getCh										*/
/* 功  能 字符獲取函數(shù)								*/
/* 說(shuō)  明 如果當(dāng)前行中字符未讀完,則函數(shù)返回當(dāng)前字符	*/
/*		  否則,函數(shù)返回空格字符						*/
/****************************************************/
void getCh (void)

{ 
  /* 在當(dāng)前代碼行in_Line中,當(dāng)前字符列數(shù)inCol未超過(guò)代碼行實(shí)際長(zhǎng)度lineLen *
   * 取得當(dāng)前行中當(dāng)前位置的字符,送入ch									*/
  if (++inCol < lineLen)
  ch = in_Line[inCol] ;

  /* 如果inCol超出當(dāng)前代碼行長(zhǎng)度范圍,則ch賦為空格 */
  else ch = ' ' ;

} /* getCh */



/********************************************************/
/* 函數(shù)名 nonBlank										*/
/* 功  能 非空字符獲取函數(shù)								*/
/* 說(shuō)  明 如果成功從當(dāng)前行中取得非空字符,函數(shù)返回TRUE	*/
/*		  否則,函數(shù)返回FALSE							*/
/********************************************************/
int nonBlank (void)

{ 
  /* 在當(dāng)前代碼行in_Line中,當(dāng)前字符位置inCol中為空格字符	*  
   * 在當(dāng)前代碼行in_Line中,當(dāng)前字符位置inCol下移,略過(guò)空格	*/
  while ((inCol < lineLen)
         && (in_Line[inCol] == ' ') )
		 inCol++ ;

  /* 在當(dāng)前代碼行in_Line中,遇到非空字符 */
  if (inCol < lineLen)

  { 
    /* 取當(dāng)前字符位置inCol中的字符送入ch,		*
	 * 函數(shù)返回TRUE(已定義為1),ch中得到非空字符	*/
	ch = in_Line[inCol] ;
    return TRUE ; }

  /* 當(dāng)前代碼行已經(jīng)讀完,將當(dāng)前字符ch 賦為空格,	*
   * 函數(shù)返回FALSE(已定義為0),ch中為空格字符	*/
  else
  { ch = ' ' ;
    return FALSE ; }
} /* nonBlank */


/****************************************************************/
/* 函數(shù)名 getNum												*/
/* 功  能 數(shù)值獲取函數(shù)											*/
/* 說(shuō)  明 將代碼行中連續(xù)出現(xiàn)的有加減運(yùn)算的數(shù)term合并計(jì)數(shù),		*/
/*        所的數(shù)值送入為num.如果成功得到數(shù)值,則函數(shù)返回TRUE;	*/
/*        否則,函數(shù)返回FALSE									*/
/****************************************************************/
int getNum (void)

{ int sign;				/* 符號(hào)因子 */

  int term;				/* 用于記錄當(dāng)前錄入的局部數(shù)值 */

  int temp = FALSE;		/* 記錄函數(shù)返回值,初始為假 */

  num = 0 ;				/* 用于記錄所有加減運(yùn)算后的最終數(shù)值結(jié)果 */

  do
  { sign = 1;			/* 符號(hào)因子初始為1 */

    /* 調(diào)用函數(shù)nonBlank()略過(guò)當(dāng)前位置的空格后,			*
     * 所得到的當(dāng)前非空字符ch為+或-.(+/-的連續(xù)出現(xiàn)處理)	*/
    while ( nonBlank() && ((ch == '+') || (ch == '-')) )

    { temp = FALSE ;

	  /* 當(dāng)前字符ch為"-"時(shí),符號(hào)因子sign設(shè)為-1 */
	  if (ch == '-')  sign = - sign ;

	  /* 取當(dāng)前代碼行中下一字符到當(dāng)前字符ch中 */
      getCh();
    }

    term = 0 ;		/* 當(dāng)前錄入的局部數(shù)值初始為0 */

    nonBlank();		/* 略過(guò)當(dāng)前位置上的空格 */

	/* 當(dāng)前字符ch為數(shù)字,局部數(shù)值的循環(huán)處理 */
    while (isdigit(ch))				

    { temp = TRUE ;		/* 函數(shù)返回值設(shè)為T(mén)RUE,成功得到數(shù)字 */

	  /* 將字符序列轉(zhuǎn)化為數(shù)值形式,進(jìn)行進(jìn)位累加 */
      term = term * 10 + ( ch - '0' ) ;

      getCh();			/* 取當(dāng)前代碼行中下一字符到當(dāng)前字符ch中 */

    }
	/* 將局部數(shù)值帶符號(hào)累加,得到最終數(shù)值num */
    num = num + (term * sign) ;

  } while ( (nonBlank()) && ((ch == '+') || (ch == '-')) ) ;
  return temp;
} /* getNum */


/****************************************************/
/* 函數(shù)名 getWord									*/
/* 功  能 單詞獲取函數(shù)								*/
/* 說(shuō)  明 函數(shù)從當(dāng)前代碼行中獲取單詞.如果得到字符,	*/
/*		  則函數(shù)返回TRUE;否則,函數(shù)返回FALSE			*/
/****************************************************/
int getWord (void)

{ 
	
  int temp = FALSE;			/* 函數(shù)返回值初始為FALSE */

  int length = 0;			/* 單詞長(zhǎng)度初始為0 */

  /* 在當(dāng)前代碼行中成功獲取非空字符ch */
  if (nonBlank ())

  {
    /* 當(dāng)前非空字符ch為字母或數(shù)字 */
	while (isalnum(ch))

    {
      /* 當(dāng)前單詞word未超過(guò)規(guī)定字長(zhǎng)WORDSIZE-1(為單詞結(jié)束字符留一空位)	*
	   * 將當(dāng)前字符ch讀入到單詞末尾										*/
	  if (length < WORDSIZE-1) word [length++] =  ch ;

      getCh() ;			/* 取當(dāng)前代碼行中下一字符 */
    }

	/* 給當(dāng)前單詞word加入結(jié)束字符 */
    word[length] = '\0';

	/* 設(shè)置函數(shù)返回值,當(dāng)讀入字word非空的時(shí)候?yàn)門(mén)RUE */
    temp = (length != 0);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
依依成人精品视频| 亚洲综合一区二区精品导航| 91麻豆产精品久久久久久| 久久精品久久精品| 国产成人精品免费一区二区| 91国模大尺度私拍在线视频| 国产日韩欧美麻豆| 五月天久久比比资源色| 成人动漫在线一区| 久久久777精品电影网影网 | 日韩三级免费观看| 亚洲免费在线视频一区 二区| 国产麻豆日韩欧美久久| 日韩欧美专区在线| 午夜精品福利久久久| 日本精品免费观看高清观看| 国产亚洲精品aa| 国产综合一区二区| 欧美成人r级一区二区三区| 午夜日韩在线电影| 欧美日韩午夜在线视频| 一级精品视频在线观看宜春院| 国产大片一区二区| 26uuu色噜噜精品一区二区| 日韩专区一卡二卡| 欧美一区二区三区在线看| 亚洲综合区在线| 欧美特级限制片免费在线观看| 中文字幕日韩av资源站| 成人国产在线观看| 国产精品动漫网站| av欧美精品.com| 亚洲图片欧美激情| 91国偷自产一区二区三区成为亚洲经典| 综合婷婷亚洲小说| 色综合久久久久| 亚洲韩国精品一区| 欧美少妇bbb| 日本中文字幕一区二区视频 | 亚洲一区二区黄色| 欧美三级中文字| 日韩和的一区二区| 日韩精品一区二区三区视频播放 | 精品国产乱码久久久久久蜜臀 | 中文字幕精品—区二区四季| 国产成人午夜精品5599| 欧美极品xxx| 91久久精品一区二区三区| 五月婷婷激情综合网| 欧美一区二区大片| 国产不卡在线一区| 一区二区三区不卡视频在线观看| 欧美性淫爽ww久久久久无| 日韩精品亚洲一区| 国产农村妇女精品| 在线观看中文字幕不卡| 免费看欧美女人艹b| 日本一区二区三区四区在线视频| 色噜噜狠狠成人网p站| 午夜精品福利久久久| www久久久久| 日本韩国欧美三级| 激情综合网激情| 亚洲精品亚洲人成人网在线播放| 欧美日本不卡视频| 丁香婷婷综合网| 亚洲高清不卡在线观看| 久久精品视频一区二区三区| 色婷婷国产精品| 激情丁香综合五月| 一区二区三区四区av| 日韩欧美国产一区二区三区| 成人ar影院免费观看视频| 婷婷综合另类小说色区| 国产精品三级电影| 欧美大片拔萝卜| 91福利区一区二区三区| 国产一区二区伦理| 亚洲国产精品影院| 国产精品久久久久婷婷| 日韩欧美国产1| 精品视频一区二区三区免费| www.激情成人| 九九精品视频在线看| 亚洲一区二区三区四区在线免费观看| 2021国产精品久久精品| 欧美日韩精品久久久| 9色porny自拍视频一区二区| 精品午夜久久福利影院| 日韩精品免费专区| 一级中文字幕一区二区| 中文字幕日韩精品一区| 国产日产精品1区| 7777女厕盗摄久久久| 91黄色小视频| 91国产免费看| 色综合久久综合网97色综合 | 亚洲国产激情av| 精品国产免费视频| 日韩午夜三级在线| 91精品国产麻豆| 91精品国产免费| 678五月天丁香亚洲综合网| 欧美三级资源在线| 在线一区二区三区四区五区| 91在线视频免费91| 99精品视频在线免费观看| 成人免费av资源| 国产99久久久国产精品| 国产91精品在线观看| 国产99久久久国产精品潘金 | bt7086福利一区国产| 成人精品在线视频观看| 成人av小说网| 成人黄色av网站在线| 成人小视频免费在线观看| 国产999精品久久久久久绿帽| 国产一区二区三区香蕉| 东方aⅴ免费观看久久av| 成人深夜福利app| 97超碰欧美中文字幕| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 在线观看国产91| 欧美精品777| 91精品国产免费| 久久色视频免费观看| 欧美韩国日本一区| 亚洲日穴在线视频| 一区二区三区色| 日本亚洲一区二区| 狠狠久久亚洲欧美| 91最新地址在线播放| 欧美日本视频在线| 久久亚洲一级片| 中文字幕中文字幕一区二区| 亚洲激情图片一区| 蜜臀av一区二区在线观看| 国产精品 日产精品 欧美精品| 成人激情视频网站| 欧美理论片在线| 久久综合精品国产一区二区三区| 国产精品久久久久久久久久久免费看 | 亚洲欧美欧美一区二区三区| 亚洲一二三级电影| 久久99精品国产麻豆婷婷| 国产精品99久久久久| 欧洲亚洲精品在线| 久久日韩精品一区二区五区| 日韩理论电影院| 久久国产精品色| 色域天天综合网| 日韩欧美成人一区二区| 国产精品福利av| 美女一区二区三区在线观看| 99久久免费国产| 欧美一区二区三区不卡| 国产精品每日更新在线播放网址 | 亚洲最色的网站| 国产一区二区三区综合| 一本到不卡精品视频在线观看| 欧美r级在线观看| 亚洲免费观看视频| 国产一区二区成人久久免费影院| 色哟哟在线观看一区二区三区| 日韩久久免费av| 亚洲地区一二三色| www.66久久| 久久蜜桃一区二区| 视频在线在亚洲| 色综合欧美在线视频区| 国产婷婷一区二区| 蜜臀国产一区二区三区在线播放| 91麻豆精品视频| 欧美激情在线一区二区三区| 美女www一区二区| 8x8x8国产精品| 亚洲国产精品久久不卡毛片| 成人精品在线视频观看| 久久久亚洲高清| 久久精品国产亚洲a| 9191成人精品久久| 亚洲一区二区免费视频| 91麻豆视频网站| 综合久久给合久久狠狠狠97色| 国产福利一区二区三区在线视频| 91精品免费在线观看| 亚洲国产精品影院| 在线视频中文字幕一区二区| 中文字幕一区二区三| 北条麻妃国产九九精品视频| 国产亚洲精品超碰| 国产精品系列在线观看| 国产亚洲一区二区三区在线观看 | 亚洲国产精品二十页| 国产精品自拍av| 久久九九久精品国产免费直播| 精品一区二区综合| 精品毛片乱码1区2区3区 | 五月天久久比比资源色| 欧美群妇大交群的观看方式|