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 + -
显示快捷键?