z8kgen.c

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

C
1,314
字号
  "CZS---", 7, 16, "0000 0101 ssN0 dddd", "or rd,@rs", 0,  "CZS---", 9, 16, "0100 0101 0000 dddd address_src", "or rd,address_src", 0,  "CZS---", 10, 16, "0100 0101 ssN0 dddd address_src", "or rd,address_src(rs)", 0,  "CZS---", 7, 16, "0000 0101 0000 dddd imm16", "or rd,imm16", 0,  "CZS---", 4, 16, "1000 0101 ssss dddd", "or rd,rs", 0,  "CZSP--", 7, 8, "0000 0100 ssN0 dddd", "orb rbd,@rs", 0,"CZSP--", 9, 8, "0100 0100 0000 dddd address_src", "orb rbd,address_src", 0,  "CZSP--", 10, 8, "0100 0100 ssN0 dddd address_src", "orb rbd,address_src(rs)", 0,  "CZSP--", 7, 8, "0000 0100 0000 dddd imm8 imm8", "orb rbd,imm8", 0,  "CZSP--", 4, 8, "1000 0100 ssss dddd", "orb rbd,rbs", 0,  "---V--", 0, 16, "0011 1111 ddN0 ssss", "out @rd,rs", 0,  "---V--", 0, 16, "0011 1011 ssss 0110 imm16", "out imm16,rs", 0,  "---V--", 0, 8, "0011 1110 ddN0 ssss", "outb @rd,rbs", 0,  "---V--", 0, 8, "0011 1010 ssss 0110 imm16", "outb imm16,rbs", 0,  "---V--", 0, 16, "0011 1011 ssN0 1010 0000 aaaa ddN0 1000", "outd @rd,@rs,ra", 0,  "---V--", 0, 8, "0011 1010 ssN0 1010 0000 aaaa ddN0 1000", "outdb @rd,@rs,rba", 0,  "---V--", 0, 8, "0011 1100 ssN0 0010 0000 aaaa ddN0 1000", "outib @rd,@rs,ra", 0,  "---V--", 0, 16, "0011 1100 ssN0 0010 0000 aaaa ddN0 0000", "outibr @rd,@rs,ra", 0,  "------", 12, 16, "0001 0111 ssN0 ddN0", "pop @rd,@rs", 0,  "------", 16, 16, "0101 0111 ssN0 ddN0 address_dst", "pop address_dst(rd),@rs", 0,  "------", 16, 16, "0101 0111 ssN0 0000 address_dst", "pop address_dst,@rs", 0,  "------", 8, 16, "1001 0111 ssN0 dddd", "pop rd,@rs", 0,  "------", 19, 32, "0001 0101 ssN0 ddN0", "popl @rd,@rs", 0,  "------", 23, 32, "0101 0101 ssN0 ddN0 address_dst", "popl address_dst(rd),@rs", 0,  "------", 23, 32, "0101 0101 ssN0 0000 address_dst", "popl address_dst,@rs", 0,  "------", 12, 32, "1001 0101 ssN0 dddd", "popl rrd,@rs", 0,  "------", 13, 16, "0001 0011 ddN0 ssN0", "push @rd,@rs", 0,  "------", 14, 16, "0101 0011 ddN0 0000 address_src", "push @rd,address_src", 0,  "------", 14, 16, "0101 0011 ddN0 ssN0 address_src", "push @rd,address_src(rs)", 0,  "------", 12, 16, "0000 1101 ddN0 1001 imm16", "push @rd,imm16", 0,  "------", 9, 16, "1001 0011 ddN0 ssss", "push @rd,rs", 0,  "------", 20, 32, "0001 0001 ddN0 ssN0", "pushl @rd,@rs", 0,  "------", 21, 32, "0101 0001 ddN0 ssN0 address_src", "pushl @rd,address_src(rs)", 0,  "------", 21, 32, "0101 0001 ddN0 0000 address_src", "pushl @rd,address_src", 0,  "------", 12, 32, "1001 0001 ddN0 ssss", "pushl @rd,rrs", 0,  "------", 11, 16, "0010 0011 ddN0 imm4", "res @rd,imm4", 0,  "------", 14, 16, "0110 0011 ddN0 imm4 address_dst", "res address_dst(rd),imm4", 0,  "------", 13, 16, "0110 0011 0000 imm4 address_dst", "res address_dst,imm4", 0,  "------", 4, 16, "1010 0011 dddd imm4", "res rd,imm4", 0,"------", 10, 16, "0010 0011 0000 ssss 0000 dddd 0000 0000", "res rd,rs", 0,  "------", 11, 8, "0010 0010 ddN0 imm4", "resb @rd,imm4", 0,  "------", 14, 8, "0110 0010 ddN0 imm4 address_dst", "resb address_dst(rd),imm4", 0,  "------", 13, 8, "0110 0010 0000 imm4 address_dst", "resb address_dst,imm4", 0,  "------", 4, 8, "1010 0010 dddd imm4", "resb rbd,imm4", 0,"------", 10, 8, "0010 0010 0000 ssss 0000 dddd 0000 0000", "resb rbd,rs", 0,  "CZSV--", 7, 16, "1000 1101 imm4 0011", "resflg imm4", 0,  "------", 10, 16, "1001 1110 0000 cccc", "ret cc", 0,  "CZSV--", 6, 16, "1011 0011 dddd 00I0", "rl rd,imm1or2", 0,  "CZSV--", 6, 8, "1011 0010 dddd 00I0", "rlb rbd,imm1or2", 0,  "CZSV--", 6, 16, "1011 0011 dddd 10I0", "rlc rd,imm1or2", 0,  "-Z----", 9, 8, "1011 0010 dddd 10I0", "rlcb rbd,imm1or2", 0,  "-Z----", 9, 8, "1011 1110 aaaa bbbb", "rldb rbb,rba", 0,  "CZSV--", 6, 16, "1011 0011 dddd 01I0", "rr rd,imm1or2", 0,  "CZSV--", 6, 8, "1011 0010 dddd 01I0", "rrb rbd,imm1or2", 0,  "CZSV--", 6, 16, "1011 0011 dddd 11I0", "rrc rd,imm1or2", 0,  "-Z----", 9, 8, "1011 0010 dddd 11I0", "rrcb rbd,imm1or2", 0,  "-Z----", 9, 8, "1011 1100 aaaa bbbb", "rrdb rbb,rba", 0,  "CZSV--", 5, 16, "1011 0111 ssss dddd", "sbc rd,rs", 0,  "CZSVDH", 5, 8, "1011 0110 ssss dddd", "sbcb rbd,rbs", 0,  "CZSVDH", 33, 8, "0111 1111 imm8", "sc imm8", 0,"CZSV--", 15, 16, "1011 0011 dddd 1011 0000 ssss 0000 0000", "sda rd,rs", 0,"CZSV--", 15, 8, "1011 0010 dddd 1011 0000 ssss 0000 0000", "sdab rbd,rs", 0,  "CZSV--", 15, 32, "1011 0011 dddd 1111 0000 ssss 0000 0000", "sdal rrd,rs", 0,"CZS---", 15, 16, "1011 0011 dddd 0011 0000 ssss 0000 0000", "sdl rd,rs", 0,"CZS---", 15, 8, "1011 0010 dddd 0011 0000 ssss 0000 0000", "sdlb rbd,rs", 0,  "CZS---", 15, 32, "1011 0011 dddd 0111 0000 ssss 0000 0000", "sdll rrd,rs", 0,  "------", 11, 16, "0010 0101 ddN0 imm4", "set @rd,imm4", 0,  "------", 14, 16, "0110 0101 ddN0 imm4 address_dst", "set address_dst(rd),imm4", 0,  "------", 13, 16, "0110 0101 0000 imm4 address_dst", "set address_dst,imm4", 0,  "------", 4, 16, "1010 0101 dddd imm4", "set rd,imm4", 0,"------", 10, 16, "0010 0101 0000 ssss 0000 dddd 0000 0000", "set rd,rs", 0,  "------", 11, 8, "0010 0100 ddN0 imm4", "setb @rd,imm4", 0,  "------", 14, 8, "0110 0100 ddN0 imm4 address_dst", "setb address_dst(rd),imm4", 0,  "------", 13, 8, "0110 0100 0000 imm4 address_dst", "setb address_dst,imm4", 0,  "------", 4, 8, "1010 0100 dddd imm4", "setb rbd,imm4", 0,"------", 10, 8, "0010 0100 0000 ssss 0000 dddd 0000 0000", "setb rbd,rs", 0,  "CZSV--", 7, 16, "1000 1101 imm4 0001", "setflg imm4", 0,  "------", 0, 8, "0011 1100 dddd 0101 imm16", "sinb rbd,imm16", 0,  "------", 0, 8, "0011 1101 dddd 0101 imm16", "sinb rd,imm16", 0,  "------", 0, 16, "0011 1011 ssN0 1000 0001 aaaa ddN0 1000", "sind @rd,@rs,ra", 0,  "------", 0, 8, "0011 1010 ssN0 1000 0001 aaaa ddN0 1000", "sindb @rd,@rs,rba", 0,  "------", 0, 8, "0011 1100 ssN0 0001 0000 aaaa ddN0 1000", "sinib @rd,@rs,ra", 0,  "------", 0, 16, "0011 1100 ssN0 0001 0000 aaaa ddN0 0000", "sinibr @rd,@rs,ra", 0,  "CZSV--", 13, 16, "1011 0011 dddd 1001 0000 0000 imm8", "sla rd,imm8", 0,  "CZSV--", 13, 8, "1011 0010 dddd 1001  0000 0000 imm8", "slab rbd,imm8", 0,  "CZSV--", 13, 32, "1011 0011 dddd 1101 0000 0000 imm8", "slal rrd,imm8", 0,  "CZS---", 13, 16, "1011 0011 dddd 0001 0000 0000 imm8", "sll rd,imm8", 0,  "CZS---", 13, 8, "1011 0010 dddd 0001  0000 0000 imm8", "sllb rbd,imm8", 0,  "CZS---", 13, 32, "1011 0011 dddd 0101 0000 0000 imm8", "slll rrd,imm8", 0,  "------", 0, 16, "0011 1011 ssss 0111 imm16", "sout imm16,rs", 0,  "------", 0, 8, "0011 1010 ssss 0111 imm16", "soutb imm16,rbs", 0,  "------", 0, 16, "0011 1011 ssN0 1011 0000 aaaa ddN0 1000", "soutd @rd,@rs,ra", 0,  "------", 0, 8, "0011 1010 ssN0 1011 0000 aaaa ddN0 1000", "soutdb @rd,@rs,rba", 0,  "------", 0, 8, "0011 1100 ssN0 0011 0000 aaaa ddN0 1000", "soutib @rd,@rs,ra", 0,  "------", 0, 16, "0011 1100 ssN0 0011 0000 aaaa ddN0 0000", "soutibr @rd,@rs,ra", 0,  "CZSV--", 13, 16, "1011 0011 dddd 1001 1111 1111 nim8", "sra rd,imm8", 0,  "CZSV--", 13, 8, "1011 0010 dddd 1001 1111 1111 nim8", "srab rbd,imm8", 0,  "CZSV--", 13, 32, "1011 0011 dddd 1101 1111 1111 nim8", "sral rrd,imm8", 0,  "CZSV--", 13, 16, "1011 0011 dddd 0001 1111 1111 nim8", "srl rd,imm8", 0,  "CZSV--", 13, 8, "1011 0010 dddd 0001 1111 1111 nim8", "srlb rbd,imm8", 0,  "CZSV--", 13, 32, "1011 0011 dddd 0101 1111 1111 nim8", "srll rrd,imm8", 0,  "CZSV--", 7, 16, "0000 0011 ssN0 dddd", "sub rd,@rs", 0,"CZSV--", 9, 16, "0100 0011 0000 dddd address_src", "sub rd,address_src", 0,  "CZSV--", 10, 16, "0100 0011 ssN0 dddd address_src", "sub rd,address_src(rs)", 0,  "CZSV--", 7, 16, "0000 0010 0000 dddd imm16", "sub rd,imm16", 0,  "CZSV--", 4, 16, "1000 0011 ssss dddd", "sub rd,rs", 0,  "CZSVDH", 7, 8, "0000 0010 ssN0 dddd", "subb rbd,@rs", 0,"CZSVDH", 9, 8, "0100 0010 0000 dddd address_src", "subb rbd,address_src", 0,  "CZSVDH", 10, 8, "0100 0010 ssN0 dddd address_src", "subb rbd,address_src(rs)", 0,  "CZSVDH", 7, 8, "0000 0010 0000 dddd imm8 imm8", "subb rbd,imm8", 0,  "CZSVDH", 4, 8, "1000 0010 ssss dddd", "subb rbd,rbs", 0,  "CZSV--", 14, 32, "0001 0010 ssN0 dddd", "subl rrd,@rs", 0,  "CZSV--", 15, 32, "0101 0010 0000 dddd address_src", "subl rrd,address_src", 0,  "CZSV--", 16, 32, "0101 0010 ssN0 dddd address_src", "subl rrd,address_src(rs)", 0,  "CZSV--", 14, 32, "0001 0010 0000 dddd imm32", "subl rrd,imm32", 0,  "CZSV--", 8, 32, "1001 0010 ssss dddd", "subl rrd,rrs", 0,  "------", 5, 16, "1010 1111 dddd cccc", "tcc cc,rd", 0,  "------", 5, 8, "1010 1110 dddd cccc", "tccb cc,rbd", 0,  "-ZS---", 8, 16, "0000 1101 ddN0 0100", "test @rd", 0,  "------", 11, 16, "0100 1101 0000 0100 address_dst", "test address_dst", 0,  "------", 12, 16, "0100 1101 ddN0 0100 address_dst", "test address_dst(rd)", 0,  "------", 7, 16, "1000 1101 dddd 0100", "test rd", 0,  "-ZSP--", 8, 8, "0000 1100 ddN0 0100", "testb @rd", 0,  "-ZSP--", 11, 8, "0100 1100 0000 0100 address_dst", "testb address_dst", 0,  "-ZSP--", 12, 8, "0100 1100 ddN0 0100 address_dst", "testb address_dst(rd)", 0,  "-ZSP--", 7, 8, "1000 1100 dddd 0100", "testb rbd", 0,  "-ZS---", 13, 32, "0001 1100 ddN0 1000", "testl @rd", 0,"-ZS---", 16, 32, "0101 1100 0000 1000 address_dst", "testl address_dst", 0,  "-ZS---", 17, 32, "0101 1100 ddN0 1000 address_dst", "testl address_dst(rd)", 0,  "-ZS---", 13, 32, "1001 1100 dddd 1000", "testl rrd", 0,  "-ZSV--", 25, 8, "1011 1000 ddN0 1000 0000 aaaa ssN0 0000", "trdb @rd,@rs,rba", 0,  "-ZSV--", 25, 8, "1011 1000 ddN0 1100 0000 aaaa ssN0 0000", "trdrb @rd,@rs,rba", 0,  "-ZSV--", 25, 8, "1011 1000 ddN0 0000 0000 rrrr ssN0 0000", "trib @rd,@rs,rbr", 0,  "-ZSV--", 25, 8, "1011 1000 ddN0 0100 0000 rrrr ssN0 0000", "trirb @rd,@rs,rbr", 0,  "-ZSV--", 25, 8, "1011 1000 aaN0 1110 0000 rrrr bbN0 1110", "trtdrb @ra,@rb,rbr", 0,  "-ZSV--", 25, 8, "1011 1000 aaN0 0010 0000 rrrr bbN0 0000", "trtib @ra,@rb,rr", 0,  "-ZSV--", 25, 8, "1011 1000 aaN0 0110 0000 rrrr bbN0 1110", "trtirb @ra,@rb,rbr", 0,  "-ZSV--", 25, 8, "1011 1000 aaN0 1010 0000 rrrr bbN0 0000", "trtrb @ra,@rb,rbr", 0,  "--S---", 11, 16, "0000 1101 ddN0 0110", "tset @rd", 0,  "--S---", 14, 16, "0100 1101 0000 0110 address_dst", "tset address_dst", 0,  "--S---", 15, 16, "0100 1101 ddN0 0110 address_dst", "tset address_dst(rd)", 0,  "--S---", 7, 16, "1000 1101 dddd 0110", "tset rd", 0,  "--S---", 11, 8, "0000 1100 ddN0 0110", "tsetb @rd", 0,  "--S---", 14, 8, "0100 1100 0000 0110 address_dst", "tsetb address_dst", 0,  "--S---", 15, 8, "0100 1100 ddN0 0110 address_dst", "tsetb address_dst(rd)", 0,  "--S---", 7, 8, "1000 1100 dddd 0110", "tsetb rbd", 0,  "-ZS---", 7, 16, "0000 1001 ssN0 dddd", "xor rd,@rs", 0,"-ZS---", 9, 16, "0100 1001 0000 dddd address_src", "xor rd,address_src", 0,  "-ZS---", 10, 16, "0100 1001 ssN0 dddd address_src", "xor rd,address_src(rs)", 0,  "-ZS---", 7, 16, "0000 1001 0000 dddd imm16", "xor rd,imm16", 0,  "-ZS---", 4, 16, "1000 1001 ssss dddd", "xor rd,rs", 0,  "-ZSP--", 7, 8, "0000 1000 ssN0 dddd", "xorb rbd,@rs", 0,"-ZSP--", 9, 8, "0100 1000 0000 dddd address_src", "xorb rbd,address_src", 0,  "-ZSP--", 10, 8, "0100 1000 ssN0 dddd address_src", "xorb rbd,address_src(rs)", 0,  "-ZSP--", 7, 8, "0000 1000 0000 dddd imm8 imm8", "xorb rbd,imm8", 0,  "-ZSP--", 4, 8, "1000 1000 ssss dddd", "xorb rbd,rbs", 0,  "*", 4, 8, "1000 1000 ssss dddd", "xorb rbd,rbs", 0,  "*", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};intcount (){  struct op *p = opt;  int r = 0;  while (p->name)    {      r++;      p++;    }  return r;}staticintfunc (a, b)     struct op *a;     struct op *b;{  return strcmp ((a)->name, (b)->name);}/* opcode literal  0000 nnnn insert nnn into stream operand  0001 nnnn  insert operand reg nnn into stream*/struct tok_struct{  char *match;  char *token;  int length;};struct tok_struct args[] ={  {"address_src(rs)", "CLASS_X+(ARG_RS)",},  {"address_dst(rd)", "CLASS_X+(ARG_RD)",},  {"rs(imm16)", "CLASS_BA+(ARG_RS)",},  {"rd(imm16)", "CLASS_BA+(ARG_RD)",},  {"prd",       "CLASS_PR+(ARG_RD)",},  {"address_src", "CLASS_DA+(ARG_SRC)",},  {"address_dst", "CLASS_DA+(ARG_DST)",},  {"rd(rx)", "CLASS_BX+(ARG_RD)",},  {"rs(rx)", "CLASS_BX+(ARG_RS)",},  {"disp16", "CLASS_DISP",},  {"disp12", "CLASS_DISP",},  {"disp7", "CLASS_DISP",},  {"disp8", "CLASS_DISP",},  {"flags", "CLASS_FLAGS",},  {"imm16", "CLASS_IMM+(ARG_IMM16)",},  {"imm1or2", "CLASS_IMM+(ARG_IMM1OR2)",},  {"imm32", "CLASS_IMM+(ARG_IMM32)",},  {"imm4m1", "CLASS_IMM +(ARG_IMM4M1)",},  {"imm4", "CLASS_IMM +(ARG_IMM4)",},  {"n", "CLASS_IMM + (ARG_IMMN)",},  {"ctrl", "CLASS_CTRL",},  {"rba", "CLASS_REG_BYTE+(ARG_RA)",},  {"rbb", "CLASS_REG_BYTE+(ARG_RB)",},  {"rbd", "CLASS_REG_BYTE+(ARG_RD)",},  {"rbs", "CLASS_REG_BYTE+(ARG_RS)",},  {"rbr", "CLASS_REG_BYTE+(ARG_RR)",},  {"rrd", "CLASS_REG_LONG+(ARG_RD)",},  {"rrs", "CLASS_REG_LONG+(ARG_RS)",},  {"rqd", "CLASS_REG_QUAD+(ARG_RD)",},  {"rd", "CLASS_REG_WORD+(ARG_RD)",},  {"rs", "CLASS_REG_WORD+(ARG_RS)",},  {"@rd", "CLASS_IR+(ARG_RD)",},  {"@ra", "CLASS_IR+(ARG_RA)",},  {"@rb", "CLASS_IR+(ARG_RB)",},  {"@rs", "CLASS_IR+(ARG_RS)",},  {"imm8", "CLASS_IMM+(ARG_IMM8)",},  {"i2", "CLASS_IMM+(ARG_IMM2)",},  {"cc", "CLASS_CC",},  {"rr", "CLASS_REG_WORD+(ARG_RR)",},  {"ra", "CLASS_REG_WORD+(ARG_RA)",},  {"rs", "CLASS_REG_WORD+(ARG_RS)",},  {"1", "CLASS_IMM+(ARG_IMM_1)",},  {"2", "CLASS_IMM+(ARG_IMM_2)",},  0, 0};struct tok_struct toks[] ={  "0000", "CLASS_BIT+0", 1,  "0001", "CLASS_BIT+1", 1,  "0010", "CLASS_BIT+2", 1,  "0011", "CLASS_BIT+3", 1,  "0100", "CLASS_BIT+4", 1,  "0101", "CLASS_BIT+5", 1,  "0110", "CLASS_BIT+6", 1,  "0111", "CLASS_BIT+7", 1,  "1000", "CLASS_BIT+8", 1,  "1001", "CLASS_BIT+9", 1,  "1010", "CLASS_BIT+0xa", 1,  "1011", "CLASS_BIT+0xb", 1,  "1100", "CLASS_BIT+0xc", 1,  "1101", "CLASS_BIT+0xd", 1,  "1110", "CLASS_BIT+0xe", 1,  "1111", "CLASS_BIT+0xf", 1,  "00I0", "CLASS_BIT_1OR2+0", 1,  "00I0", "CLASS_BIT_1OR2+1", 1,  "00I0", "CLASS_BIT_1OR2+2", 1,  "00I0", "CLASS_BIT_1OR2+3", 1,  "01I0", "CLASS_BIT_1OR2+4", 1,  "01I0", "CLASS_BIT_1OR2+5", 1,  "01I0", "CLASS_BIT_1OR2+6", 1,  "01I0", "CLASS_BIT_1OR2+7", 1,  "10I0", "CLASS_BIT_1OR2+8", 1,  "10I0", "CLASS_BIT_1OR2+9", 1,  "10I0", "CLASS_BIT_1OR2+0xa", 1,  "10I0", "CLASS_BIT_1OR2+0xb", 1,  "11I0", "CLASS_BIT_1OR2+0xc", 1,  "11I0", "CLASS_BIT_1OR2+0xd", 1,

⌨️ 快捷键说明

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