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

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

?? asm.c

?? 數據結構實現代碼,詳細代碼請查看,本資源也是共享的.
?? C
?? 第 1 頁 / 共 2 頁
字號:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/* Instruction Set */

#define LOADA	   0X00
#define LOADB	   0X01
#define LOADAI    0X02
#define LOADBI    0X03
#define NOP	      0X04
#define STOREA    0X05
#define STOREB    0X06
#define ADDA	   0X07
#define ADDB	   0X08
#define COMPAI    0X09
#define COMPBI    0X0A
#define BLT	      0X0B
#define BGT 	   0X0C
#define JUMP	   0X0D
#define PRINTA    0X0E
#define BREAK     0x0F

#define MAX_LINE 1024

#define FALSE     0
#define TRUE      (!FALSE)

#define ADDRESS_LENGTH   2
#define IMMEDIATE_LENGTH 1

#define ADDRESS_SPACE    65536

typedef enum {NONE, IMMEDIATE, ADDRESS} OPERAND_TYPE;

typedef int BOOL;

typedef struct
{
   char*         InstructionName;
   OPERAND_TYPE  Operand;
   unsigned char MachineCode;
} INSTRUCTION;

static INSTRUCTION InstructionTable[] = {"LOADA",  ADDRESS,   LOADA, 
                                         "LOADB",  ADDRESS,   LOADB,	
                                         "LOADAI", IMMEDIATE, LOADAI,
                                         "LOADBI", IMMEDIATE, LOADBI,
                                         "NOP",    NONE,      NOP,	   
                                         "STOREA", ADDRESS,   STOREA,
                                         "STOREB", ADDRESS,   STOREB,
                                         "ADDA",   IMMEDIATE, ADDA,	
                                         "ADDB",   IMMEDIATE, ADDB,	
                                         "COMPAI", IMMEDIATE, COMPAI,
                                         "COMPBI", IMMEDIATE, COMPBI,
                                         "BLT",    ADDRESS,   BLT,  
                                         "BGT",    ADDRESS,   BGT, 	
                                         "JUMP",   ADDRESS,   JUMP,	
                                         "PRINTA", NONE,      PRINTA,
                                         "BREAK",  NONE,      BREAK };


typedef struct
{
	char* Symbol;
	int	MemLocation;
	int   Line;
} SYMTAB_ENTRY;

typedef struct
{
   SYMTAB_ENTRY Entry[1024];
   int          Count;
} SYM_T;



typedef struct
{
   unsigned int   RegA;
   unsigned int   RegB;
   unsigned int   PC;
            int   SR;
} REGISTERS;



INSTRUCTION* FindInstruction (char* Token)
{
   int            i = 0;
   INSTRUCTION*   Entry = NULL;

   for (i = 0; i < sizeof InstructionTable / sizeof InstructionTable[0]; i++)
   {
      if (0 == strcmp (InstructionTable[i].InstructionName, Token))
      {
         Entry = &InstructionTable[i];
      }
   }
   return Entry;
}


void InsertSymbol (char* Token, int MemLocation, SYM_T* SymTable)
{
   SYMTAB_ENTRY*  Entry;

   Entry = &SymTable->Entry[SymTable->Count];

   /* perform equivalent of strdup */
   Entry->Symbol = malloc (strlen(Token) + 1);
   if (NULL != Entry->Symbol)
   {
      strcpy (Entry->Symbol, Token);
   }

   SymTable->Count++;

   Entry->MemLocation = MemLocation;
}


SYMTAB_ENTRY* FindSymbol (SYM_T* SymbolTable, char* Symbol)
{
   int i = 0;
   
   SYMTAB_ENTRY*  Entry = NULL;

   for (i=0; i< SymbolTable->Count; i++)
   {
      if (0 == strcmp (SymbolTable->Entry[i].Symbol, Symbol))
      {
         Entry = &SymbolTable->Entry[i];
         break;
      }
   }
   return Entry;
}


void ReadAssembly (char* Memory, int MemLocation, char* FileName)
{
   FILE*    Fp             = NULL;
   char	   Line[MAX_LINE] = {0};
   int	   LineNo	      = 0;
   char*    Token          = NULL;
   char     Seps[]         = " ,\t\n";
   SYM_T    SymbolTable    = {0};

   BOOL     IsOk           = TRUE;

   INSTRUCTION*   Instruction = NULL;
   SYMTAB_ENTRY*  Symbol      = NULL;


   Fp = fopen ( FileName, "r" );

	if ( NULL == Fp )
	{
		fprintf ( stderr, "cannot open file %s\n", FileName );
		IsOk = FALSE;
	}

	/* go through each line */

   while (IsOk && NULL != fgets (Line, MAX_LINE, Fp ))
   {
      LineNo++;
      
      if ( '*' == Line[0] || '#' == Line[0] || '\n' == Line[0] )
      {
         /* discard comments */
         continue;
      }
      /* parse the line */
      Token = strtok (Line, Seps);
      
      if (NULL == Token)
      {
         continue;
      }
      
      /* check to see if this a label, if so then add to the symbol table */
      if (':' == Token[0])
      {
         Token++;
         InsertSymbol (Token, MemLocation, &SymbolTable);
         
      }
      else
      {
         /* assemble the token into memory */
         Instruction = FindInstruction (Token);

         if (NULL == Instruction)
         {
            printf ("Error at line %d; Do not recognise instruction %s\n",
                    LineNo, Token);
            IsOk = FALSE;
         }
         else
         {
            Memory [MemLocation] = Instruction->MachineCode;
            MemLocation++;
         
            if (IMMEDIATE == Instruction->Operand || 
               ADDRESS == Instruction->Operand)
            {
               /* Get the operand */
               Token = strtok (NULL, Seps);	
               if (NULL == Token)
               {
                  printf("Error\n");
                  break;
               }
            }
            
            /* We need to put one extra byte into memory */
            if ( IMMEDIATE == Instruction->Operand)
            {
               Memory [MemLocation] = (unsigned char) strtol (Token, NULL, 16);
               MemLocation++;
            }
            
            /* We need to put two extra bytes into memory */
            if ( ADDRESS == Instruction->Operand)
            {
               Symbol = FindSymbol (&SymbolTable, Token);

               /* make sure Symbol has already been defined */

               if (NULL == Symbol)
               {
                  printf ("Error at Line %d. Label %s not defined\n",
                           LineNo, Token);

                  IsOk = FALSE;
               }
               else
               {
                  /* the machine is big endian, so store the high byte first */
                  Memory [MemLocation] = (Symbol->MemLocation >> 8) & 0xFF;
                  MemLocation++;
                  Memory [MemLocation] = Symbol->MemLocation &0xFF;
                  MemLocation++;
               }
            }
         }
      }
   }

   if (NULL != Fp)
      fclose (Fp);
}

unsigned int LoadAddress (unsigned char* Location)
{
   unsigned int Address;

   Address = Location[0] << 8;
   Address += Location[1];

   return Address;
}


int Execute (unsigned char *Memory, REGISTERS* Reg)
{
   unsigned int   Address      = 0;
   unsigned int   Instruction  = 0;
   unsigned int   RegA         = Reg->RegA;
   unsigned int   RegB         = Reg->RegB;
           
   unsigned int   PC           = Reg->PC;
            int   SR           = Reg->SR;

   unsigned char* Operand     = NULL;

   int      Stop = FALSE;

  
   Instruction = Memory[PC];
   PC++;
   Operand     = &Memory[PC];

	/* Decode the instruction instruction */
   switch ( Instruction )
   {
   case LOADA:
      Address = LoadAddress(Operand);

      RegA = Memory[Address];
      PC += ADDRESS_LENGTH;
      break;

   case LOADB:
      Address = LoadAddress(Operand);

      RegB = Memory[Address];
      PC += ADDRESS_LENGTH;
      break;
      
   case LOADAI:
      RegA = *Operand;
      PC += IMMEDIATE_LENGTH;
      break;

   case LOADBI:
      RegB = *Operand;
      PC += IMMEDIATE_LENGTH;
      break;

   case NOP:
      break;
      
   case STOREA:
      Address = LoadAddress(Operand);
      Memory[Address] =  RegA;
      PC += ADDRESS_LENGTH;
      break;

   case STOREB:
      Address = LoadAddress(Operand);
      Memory[Address] =  RegB;
      PC += ADDRESS_LENGTH;
      break;

   case ADDA:
      RegA += *Operand;
      PC += IMMEDIATE_LENGTH;
      break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一二三区| 五月婷婷久久丁香| 久久综合久久久久88| 欧美一区二区三区在| 欧美综合久久久| 在线视频你懂得一区二区三区| 91在线观看视频| 色综合天天综合| 欧美三级视频在线| 欧美人与性动xxxx| 日韩三级在线免费观看| 亚洲精品在线网站| 国产精品色在线| 一区二区三区在线观看网站| 亚洲妇女屁股眼交7| 日韩中文字幕区一区有砖一区 | 亚洲成人免费影院| 五月天一区二区| 精品影视av免费| 成人黄动漫网站免费app| 色香蕉久久蜜桃| 6080国产精品一区二区| 亚洲精品在线三区| 亚洲精品一二三四区| 日本不卡在线视频| 国产盗摄一区二区| 色一情一乱一乱一91av| 日韩一卡二卡三卡四卡| 国产精品免费人成网站| 一区二区三区四区高清精品免费观看 | 91首页免费视频| 欧美巨大另类极品videosbest | 久久国内精品自在自线400部| 极品少妇xxxx精品少妇| 99国产精品久久久久久久久久久| 91成人国产精品| 日韩欧美www| 亚洲人成网站影音先锋播放| 日产国产高清一区二区三区| av资源站一区| 精品美女被调教视频大全网站| 国产精品久久久久久一区二区三区 | 96av麻豆蜜桃一区二区| 制服丝袜亚洲网站| 亚洲三级在线观看| 韩国一区二区视频| 欧美三级日韩三级国产三级| 欧美极品另类videosde| 青青草国产成人99久久| 欧洲国内综合视频| 国产精品色一区二区三区| 蜜桃av一区二区在线观看| 91视频免费播放| 久久精品一区二区三区av| 日韩激情一区二区| 成人18精品视频| 国产亚洲欧美色| 美女在线一区二区| 欧美在线免费视屏| 自拍偷拍国产亚洲| 成人av免费在线观看| 久久九九国产精品| 韩国av一区二区| 日韩一级免费观看| 男女激情视频一区| 7777精品久久久大香线蕉| 亚洲人成网站精品片在线观看| 国产成人午夜高潮毛片| 久久婷婷国产综合国色天香| 蜜臀久久99精品久久久久久9| 欧美日韩二区三区| 午夜精品久久久久久久| 欧美性色aⅴ视频一区日韩精品| 国产精品不卡一区二区三区| 国产福利一区二区三区| 欧美国产精品一区二区三区| 国产mv日韩mv欧美| 国产日产精品一区| 国产黑丝在线一区二区三区| 国产欧美va欧美不卡在线| 国产成人99久久亚洲综合精品| 精品国产乱码久久久久久夜甘婷婷| 欧美aaaaa成人免费观看视频| 欧美一级夜夜爽| 美女www一区二区| 精品日产卡一卡二卡麻豆| 国产在线观看免费一区| 欧美极品美女视频| 色素色在线综合| 亚洲一二三区视频在线观看| 91精品国产色综合久久不卡蜜臀| 日韩电影免费一区| 精品久久一区二区| 粉嫩aⅴ一区二区三区四区五区| 国产精品看片你懂得| 欧美在线播放高清精品| 日韩电影在线观看一区| 国产午夜精品久久久久久久 | 亚洲欧美偷拍卡通变态| 欧美最猛性xxxxx直播| 丝袜诱惑制服诱惑色一区在线观看| 这里只有精品电影| 国产麻豆欧美日韩一区| 亚洲精品精品亚洲| 日韩视频免费直播| 成人午夜视频网站| 五月婷婷久久丁香| 国产欧美一区二区精品秋霞影院| 色综合天天综合色综合av| 蜜臂av日日欢夜夜爽一区| 国产精品午夜电影| 67194成人在线观看| 处破女av一区二区| 日韩av在线免费观看不卡| 国产日韩成人精品| 欧美精品久久一区| 成人av资源在线| 免费在线观看视频一区| 中文字幕在线免费不卡| 欧美一区二区在线观看| 不卡一区二区在线| 九色|91porny| 亚洲电影中文字幕在线观看| 国产色一区二区| 91麻豆精品国产91久久久久久| 成人综合激情网| 久久av中文字幕片| 亚洲福利视频一区| 亚洲视频狠狠干| 欧美激情在线一区二区| 日韩一区二区三区免费看| 欧美在线free| 欧美综合亚洲图片综合区| 成人午夜电影久久影院| 极品尤物av久久免费看| 青青草91视频| 免费视频一区二区| 午夜久久电影网| 一区二区三区蜜桃网| 亚洲色图欧美在线| 国产精品久久久久久久久免费丝袜| 欧美videos大乳护士334| 8x福利精品第一导航| 欧洲一区二区av| 色综合久久久久综合| www.视频一区| caoporn国产一区二区| 成人久久18免费网站麻豆| 国产呦萝稀缺另类资源| 精品中文字幕一区二区| 麻豆国产一区二区| 久久av资源站| 国产馆精品极品| 成人aa视频在线观看| 95精品视频在线| 欧美视频完全免费看| 欧美视频三区在线播放| 欧美日韩午夜在线| 7777精品伊人久久久大香线蕉最新版| 在线亚洲免费视频| 欧美日韩久久一区二区| 91精品国模一区二区三区| 91精品在线麻豆| 精品国产成人系列| 国产香蕉久久精品综合网| 一区在线播放视频| 亚洲黄色小视频| 亚洲高清不卡在线| 看片的网站亚洲| 福利一区二区在线| 日本高清不卡视频| 777亚洲妇女| 国产女人18水真多18精品一级做| 国产精品久久久久毛片软件| 一区二区三区91| 麻豆成人在线观看| 成人精品视频一区二区三区| 色婷婷av一区二区三区gif| 日韩视频在线你懂得| 中文久久乱码一区二区| 亚洲国产一区二区视频| 另类专区欧美蜜桃臀第一页| av不卡在线观看| 欧美日韩美少妇| 欧美激情综合在线| 无码av免费一区二区三区试看 | 99视频精品全部免费在线| 欧美日韩在线播放一区| 国产视频在线观看一区二区三区 | 日韩成人一级大片| 国产一区不卡在线| 欧美视频中文字幕| 日本一区二区三区四区| 水蜜桃久久夜色精品一区的特点| 国产在线麻豆精品观看| 欧美三电影在线| 国产精品久久久久婷婷| 国产乱子伦一区二区三区国色天香| 日本久久一区二区| 精品国产乱码久久久久久蜜臀|