z8kgen.c

来自「基于4个mips核的noc设计」· C语言 代码 · 共 1,314 行 · 第 1/4 页

C
1,314
字号
  printf ("#define ARG_DISP12 0x0b\n");  printf ("#define ARG_DISP8 0x0c\n");  printf ("#define ARG_IMM4M1 0x0d\n");  printf ("#define CLASS_MASK 0x1fff0\n");  printf ("#define CLASS_X 0x10\n");  printf ("#define CLASS_BA 0x20\n");  printf ("#define CLASS_DA 0x30\n");  printf ("#define CLASS_BX 0x40\n");  printf ("#define CLASS_DISP 0x50\n");  printf ("#define CLASS_IMM 0x60\n");  printf ("#define CLASS_CC 0x70\n");  printf ("#define CLASS_CTRL 0x80\n");  printf ("#define CLASS_ADDRESS 0xd0\n");  printf ("#define CLASS_0CCC 0xe0\n");  printf ("#define CLASS_1CCC 0xf0\n");  printf ("#define CLASS_0DISP7 0x100\n");  printf ("#define CLASS_1DISP7 0x200\n");  printf ("#define CLASS_01II 0x300\n");  printf ("#define CLASS_00II 0x400\n");  printf ("#define CLASS_BIT 0x500\n");  printf ("#define CLASS_FLAGS 0x600\n");  printf ("#define CLASS_IR 0x700\n");  printf ("#define CLASS_DISP8 0x800\n");  printf ("#define CLASS_BIT_1OR2 0x900\n");  printf ("#define CLASS_REG 0x7000\n");  printf ("#define CLASS_REG_BYTE 0x2000\n");  printf ("#define CLASS_REG_WORD 0x3000\n");  printf ("#define CLASS_REG_QUAD 0x4000\n");  printf ("#define CLASS_REG_LONG 0x5000\n");  printf ("#define CLASS_REGN0 0x8000\n");  printf ("#define CLASS_PR 0x10000\n");  printf ("#define OPC_adc 0\n");  printf ("#define OPC_adcb 1\n");  printf ("#define OPC_add 2\n");  printf ("#define OPC_addb 3\n");  printf ("#define OPC_addl 4\n");  printf ("#define OPC_and 5\n");  printf ("#define OPC_andb 6\n");  printf ("#define OPC_bit 7\n");  printf ("#define OPC_bitb 8\n");  printf ("#define OPC_call 9\n");  printf ("#define OPC_calr 10\n");  printf ("#define OPC_clr 11\n");  printf ("#define OPC_clrb 12\n");  printf ("#define OPC_com 13\n");  printf ("#define OPC_comb 14\n");  printf ("#define OPC_comflg 15\n");  printf ("#define OPC_cp 16\n");  printf ("#define OPC_cpb 17\n");  printf ("#define OPC_cpd 18\n");  printf ("#define OPC_cpdb 19\n");  printf ("#define OPC_cpdr 20\n");  printf ("#define OPC_cpdrb 21\n");  printf ("#define OPC_cpi 22\n");  printf ("#define OPC_cpib 23\n");  printf ("#define OPC_cpir 24\n");  printf ("#define OPC_cpirb 25\n");  printf ("#define OPC_cpl 26\n");  printf ("#define OPC_cpsd 27\n");  printf ("#define OPC_cpsdb 28\n");  printf ("#define OPC_cpsdr 29\n");  printf ("#define OPC_cpsdrb 30\n");  printf ("#define OPC_cpsi 31\n");  printf ("#define OPC_cpsib 32\n");  printf ("#define OPC_cpsir 33\n");  printf ("#define OPC_cpsirb 34\n");  printf ("#define OPC_dab 35\n");  printf ("#define OPC_dbjnz 36\n");  printf ("#define OPC_dec 37\n");  printf ("#define OPC_decb 38\n");  printf ("#define OPC_di 39\n");  printf ("#define OPC_div 40\n");  printf ("#define OPC_divl 41\n");  printf ("#define OPC_djnz 42\n");  printf ("#define OPC_ei 43\n");  printf ("#define OPC_ex 44\n");  printf ("#define OPC_exb 45\n");  printf ("#define OPC_exts 46\n");  printf ("#define OPC_extsb 47\n");  printf ("#define OPC_extsl 48\n");  printf ("#define OPC_halt 49\n");  printf ("#define OPC_in 50\n");  printf ("#define OPC_inb 51\n");  printf ("#define OPC_inc 52\n");  printf ("#define OPC_incb 53\n");  printf ("#define OPC_ind 54\n");  printf ("#define OPC_indb 55\n");  printf ("#define OPC_inib 56\n");  printf ("#define OPC_inibr 57\n");  printf ("#define OPC_iret 58\n");  printf ("#define OPC_jp 59\n");  printf ("#define OPC_jr 60\n");  printf ("#define OPC_ld 61\n");  printf ("#define OPC_lda 62\n");  printf ("#define OPC_ldar 63\n");  printf ("#define OPC_ldb 64\n");  printf ("#define OPC_ldctl 65\n");  printf ("#define OPC_ldir 66\n");  printf ("#define OPC_ldirb 67\n");  printf ("#define OPC_ldk 68\n");  printf ("#define OPC_ldl 69\n");  printf ("#define OPC_ldm 70\n");  printf ("#define OPC_ldps 71\n");  printf ("#define OPC_ldr 72\n");  printf ("#define OPC_ldrb 73\n");  printf ("#define OPC_ldrl 74\n");  printf ("#define OPC_mbit 75\n");  printf ("#define OPC_mreq 76\n");  printf ("#define OPC_mres 77\n");  printf ("#define OPC_mset 78\n");  printf ("#define OPC_mult 79\n");  printf ("#define OPC_multl 80\n");  printf ("#define OPC_neg 81\n");  printf ("#define OPC_negb 82\n");  printf ("#define OPC_nop 83\n");  printf ("#define OPC_or 84\n");  printf ("#define OPC_orb 85\n");  printf ("#define OPC_out 86\n");  printf ("#define OPC_outb 87\n");  printf ("#define OPC_outd 88\n");  printf ("#define OPC_outdb 89\n");  printf ("#define OPC_outib 90\n");  printf ("#define OPC_outibr 91\n");  printf ("#define OPC_pop 92\n");  printf ("#define OPC_popl 93\n");  printf ("#define OPC_push 94\n");  printf ("#define OPC_pushl 95\n");  printf ("#define OPC_res 96\n");  printf ("#define OPC_resb 97\n");  printf ("#define OPC_resflg 98\n");  printf ("#define OPC_ret 99\n");  printf ("#define OPC_rl 100\n");  printf ("#define OPC_rlb 101\n");  printf ("#define OPC_rlc 102\n");  printf ("#define OPC_rlcb 103\n");  printf ("#define OPC_rldb 104\n");  printf ("#define OPC_rr 105\n");  printf ("#define OPC_rrb 106\n");  printf ("#define OPC_rrc 107\n");  printf ("#define OPC_rrcb 108\n");  printf ("#define OPC_rrdb 109\n");  printf ("#define OPC_sbc 110\n");  printf ("#define OPC_sbcb 111\n");  printf ("#define OPC_sda 112\n");  printf ("#define OPC_sdab 113\n");  printf ("#define OPC_sdal 114\n");  printf ("#define OPC_sdl 115\n");  printf ("#define OPC_sdlb 116\n");  printf ("#define OPC_sdll 117\n");  printf ("#define OPC_set 118\n");  printf ("#define OPC_setb 119\n");  printf ("#define OPC_setflg 120\n");  printf ("#define OPC_sinb 121\n");  printf ("#define OPC_sind 122\n");  printf ("#define OPC_sindb 123\n");  printf ("#define OPC_sinib 124\n");  printf ("#define OPC_sinibr 125\n");  printf ("#define OPC_sla 126\n");  printf ("#define OPC_slab 127\n");  printf ("#define OPC_slal 128\n");  printf ("#define OPC_sll 129\n");  printf ("#define OPC_sllb 130\n");  printf ("#define OPC_slll 131\n");  printf ("#define OPC_sout 132\n");  printf ("#define OPC_soutb 133\n");  printf ("#define OPC_soutd 134\n");  printf ("#define OPC_soutdb 135\n");  printf ("#define OPC_soutib 136\n");  printf ("#define OPC_soutibr 137\n");  printf ("#define OPC_sra 138\n");  printf ("#define OPC_srab 139\n");  printf ("#define OPC_sral 140\n");  printf ("#define OPC_srl 141\n");  printf ("#define OPC_srlb 142\n");  printf ("#define OPC_srll 143\n");  printf ("#define OPC_sub 144\n");  printf ("#define OPC_subb 145\n");  printf ("#define OPC_subl 146\n");  printf ("#define OPC_tcc 147\n");  printf ("#define OPC_tccb 148\n");  printf ("#define OPC_test 149\n");  printf ("#define OPC_testb 150\n");  printf ("#define OPC_testl 151\n");  printf ("#define OPC_trdb 152\n");  printf ("#define OPC_trdrb 153\n");  printf ("#define OPC_trib 154\n");  printf ("#define OPC_trirb 155\n");  printf ("#define OPC_trtdrb 156\n");  printf ("#define OPC_trtib 157\n");  printf ("#define OPC_trtirb 158\n");  printf ("#define OPC_trtrb 159\n");  printf ("#define OPC_tset 160\n");  printf ("#define OPC_tsetb 161\n");  printf ("#define OPC_xor 162\n");  printf ("#define OPC_xorb 163\n");  printf ("#define OPC_ldd  164 \n");  printf ("#define OPC_lddb  165 \n");  printf ("#define OPC_lddr  166 \n");  printf ("#define OPC_lddrb 167  \n");  printf ("#define OPC_ldi  168 \n");  printf ("#define OPC_ldib 169  \n");  printf ("#define OPC_sc   170\n");  printf ("#define OPC_bpt   171\n");  printf ("#define OPC_ext0e 172\n");  printf ("#define OPC_ext0f 172\n");  printf ("#define OPC_ext8e 172\n");  printf ("#define OPC_ext8f 172\n");  printf ("#define OPC_rsvd36 172\n");  printf ("#define OPC_rsvd38 172\n");  printf ("#define OPC_rsvd78 172\n");  printf ("#define OPC_rsvd7e 172\n");  printf ("#define OPC_rsvd9d 172\n");  printf ("#define OPC_rsvd9f 172\n");  printf ("#define OPC_rsvdb9 172\n");  printf ("#define OPC_rsvdbf 172\n");#if 0  for (i = 0; toks[i].token; i++)    printf ("#define %s\t0x%x\n", toks[i].token, i * 16);#endif  printf ("typedef struct {\n");  printf ("#ifdef NICENAMES\n");  printf ("char *nicename;\n");  printf ("int type;\n");  printf ("int cycles;\n");  printf ("int flags;\n");  printf ("#endif\n");  printf ("char *name;\n");  printf ("unsigned char opcode;\n");  printf ("void (*func)();\n");  printf ("unsigned int arg_info[4];\n");  printf ("unsigned int byte_info[%d];\n", BYTE_INFO_LEN);  printf ("int noperands;\n");  printf ("int length;\n");  printf ("int idx;\n");  printf ("} opcode_entry_type;\n");  printf ("#ifdef DEFINE_TABLE\n");  printf ("opcode_entry_type z8k_table[] = {\n");  while (new->flags && new->flags[0])    {      int nargs;      int length;      printf ("\n\n/* %s *** %s */\n", new->bits, new->name);      printf ("{\n");      printf ("#ifdef NICENAMES\n");      printf ("\"%s\",%d,%d,\n", new->name, new->type, new->cycles);      {	int answer = 0;	char *p = new->flags;	while (*p)	  {	    answer <<= 1;	    if (*p != '-')	      answer |= 1;	    p++;	  }	printf ("0x%02x,\n", answer);      }      printf ("#endif\n");      nargs = chewname (new->name);      printf ("\n\t");      chewbits (new->bits, &length);      length /= 2;      if (length & 1)	abort();      printf (",%d,%d,%d", nargs, length, idx);      idx++;      oldname = new->name;      printf ("},\n");      new++;    }  printf ("0,0};\n");  printf ("#endif\n");}intmain (ac, av)     int ac;     char **av;{  struct op *p = opt;  if (ac == 2 && strcmp (av[1], "-t") == 0)    {      internal ();    }  else if (ac == 2 && strcmp (av[1], "-h") == 0)    {      while (p->name)	{	  printf ("%-25s\t%s\n", p->name, p->bits);	  p++;	}    }  else if (ac == 2 && strcmp (av[1], "-a") == 0)    {      gas ();    }  else if (ac == 2 && strcmp (av[1], "-d") == 0)    {      /*dis();*/    }  else    {      printf ("Usage: %s -t\n", av[0]);      printf ("-t : generate new z8.c internal table\n");      printf ("-a : generate new table for gas\n");      printf ("-d : generate new table for disassemble\n");      printf ("-h : generate new table for humans\n");    }return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?