亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩影院在线观看| 亚洲激情六月丁香| 91在线观看高清| 午夜电影一区二区三区| 日韩欧美国产成人一区二区| 国产v综合v亚洲欧| 亚洲另类春色校园小说| 精品国产一区二区三区四区四| 国产成人精品免费网站| 亚洲永久精品大片| 99视频在线精品| 欧美日韩免费电影| 国产一区高清在线| 欧美精品777| 国产精品激情偷乱一区二区∴| 欧美激情一区二区三区全黄| 日韩精品亚洲专区| 91福利视频久久久久| 亚洲黄色免费网站| 国产一区二区三区免费| 最新国产精品久久精品| 欧美蜜桃一区二区三区| 国产成人在线色| 五月婷婷激情综合网| 国产精品国产三级国产普通话99 | 91女人视频在线观看| 日本va欧美va精品发布| 亚洲欧美日韩国产成人精品影院| 日韩免费观看2025年上映的电影| 9色porny自拍视频一区二区| 午夜视频一区二区| 国产亚洲欧美色| 欧美一区二区三区四区高清| 色狠狠色噜噜噜综合网| 国产精品小仙女| 免费观看久久久4p| 亚洲一区二区三区爽爽爽爽爽| 国产亚洲欧美在线| 日韩精品中文字幕一区| 欧美日韩高清不卡| 色成人在线视频| 成人黄色免费短视频| 国内精品写真在线观看| 视频一区二区不卡| 亚洲成人你懂的| 一区二区三区91| 亚洲激情av在线| 亚洲色图制服丝袜| 国产精品第四页| 日本一区二区三区国色天香| 日韩一级片在线观看| 欧美日韩精品欧美日韩精品 | 欧美午夜影院一区| 91猫先生在线| www.av精品| 成人国产精品免费网站| 国产成人免费高清| 丁香激情综合国产| 国产精品一级黄| 国产精品一级黄| 国内成人精品2018免费看| 毛片基地黄久久久久久天堂| 五月婷婷色综合| 日韩激情视频网站| 日韩制服丝袜先锋影音| 丝袜诱惑亚洲看片| 另类小说图片综合网| 看电视剧不卡顿的网站| 久久精品理论片| 国产自产视频一区二区三区| 国产久卡久卡久卡久卡视频精品| 久久成人免费网| 国产成人在线观看免费网站| 国产69精品久久99不卡| 成人综合婷婷国产精品久久免费| 粉嫩绯色av一区二区在线观看| eeuss鲁片一区二区三区| 99久久免费精品| 欧美日韩国产首页在线观看| 一本到一区二区三区| 欧美性感一类影片在线播放| 欧美疯狂做受xxxx富婆| 欧美人妇做爰xxxⅹ性高电影| 欧美一区二区三区在线视频| 精品国产第一区二区三区观看体验| 精品电影一区二区| 最新日韩在线视频| 天堂午夜影视日韩欧美一区二区| 久久精品国产精品青草| 国产999精品久久久久久绿帽| 成人sese在线| 欧美久久久久中文字幕| xfplay精品久久| 亚洲欧美日韩国产另类专区| 首页国产丝袜综合| 国产麻豆成人传媒免费观看| 99re这里只有精品首页| 欧美欧美欧美欧美首页| 久久精品视频一区二区三区| 亚洲男人的天堂一区二区| 免费成人你懂的| 懂色av中文一区二区三区| 欧美视频一区二区三区四区 | 欧美一区二区观看视频| 国产喷白浆一区二区三区| 亚洲一区二区三区在线播放| 国产一区二区女| 日本韩国视频一区二区| xfplay精品久久| 亚洲制服丝袜在线| 精品亚洲成a人| 色屁屁一区二区| 亚洲精品一区二区三区99| 亚洲裸体在线观看| 久久99这里只有精品| 91蜜桃在线免费视频| 日韩久久久精品| 亚洲图片欧美一区| 成人国产免费视频| 精品国产露脸精彩对白| 性久久久久久久| 大胆欧美人体老妇| 91精品综合久久久久久| 亚洲欧美日韩国产综合| 国产综合久久久久影院| 欧美一区2区视频在线观看| 亚洲激情中文1区| 国产成人在线色| 精品三级av在线| 日韩中文字幕麻豆| 欧洲激情一区二区| 1区2区3区精品视频| 国产精品一区在线| 欧美videos中文字幕| 五月婷婷久久丁香| 欧美怡红院视频| 亚洲人成亚洲人成在线观看图片| 国产精品2024| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲电影在线免费观看| 91影院在线免费观看| 欧美—级在线免费片| 国产麻豆午夜三级精品| 欧美mv日韩mv亚洲| 免费观看成人av| 在线播放欧美女士性生活| 午夜久久福利影院| 欧美日韩精品一区二区| 亚洲国产日韩在线一区模特| 色猫猫国产区一区二在线视频| 亚洲欧洲av一区二区三区久久| 国产福利一区二区三区视频 | 欧美mv和日韩mv的网站| 午夜影视日本亚洲欧洲精品| 91免费国产在线| 亚洲人精品一区| 欧美日韩mp4| 日日摸夜夜添夜夜添亚洲女人| 欧美疯狂做受xxxx富婆| 日本一道高清亚洲日美韩| 91精品国产综合久久婷婷香蕉 | 国产日产欧产精品推荐色| 久久99热99| 日韩欧美高清一区| 老司机免费视频一区二区| 欧美tickling网站挠脚心| 精品制服美女久久| 国产三级欧美三级日产三级99| 国产一区二区三区四区五区入口| 欧美高清你懂得| 免费在线成人网| 久久久久久99久久久精品网站| 麻豆极品一区二区三区| 久久久久久久久99精品| 成人av先锋影音| 亚洲人123区| 欧美人妖巨大在线| 国内外成人在线| 国产精品久久久久影院老司| 一本到高清视频免费精品| 亚洲午夜一区二区三区| 91麻豆精品国产91久久久久久久久| 免费av成人在线| 国产欧美日韩中文久久| 99精品视频中文字幕| 亚洲一区二区不卡免费| 91麻豆精品国产综合久久久久久| 黑人巨大精品欧美一区| 成人欧美一区二区三区1314| 在线精品亚洲一区二区不卡| 一区二区欧美精品| 欧美片在线播放| 国产成人精品免费视频网站| 亚洲美女免费在线| 日韩精品专区在线影院观看| 国产成人亚洲综合a∨婷婷图片| 国产精品二三区| 欧美一区二区在线不卡| 成人的网站免费观看| 丝袜诱惑亚洲看片|