📄 z8k-opc.h
字号:
/* THIS FILE IS AUTOMAGICALLY GENERATED, DON'T EDIT IT */#define ARG_MASK 0x0f#define ARG_SRC 0x01#define ARG_DST 0x02#define ARG_RS 0x01#define ARG_RD 0x02#define ARG_RA 0x03#define ARG_RB 0x04#define ARG_RR 0x05#define ARG_RX 0x06#define ARG_IMM4 0x01#define ARG_IMM8 0x02#define ARG_IMM16 0x03#define ARG_IMM32 0x04#define ARG_IMMN 0x05#define ARG_IMMNMINUS1 0x05#define ARG_IMM_1 0x06#define ARG_IMM_2 0x07#define ARG_DISP16 0x08#define ARG_NIM8 0x09#define ARG_IMM2 0x0a#define ARG_IMM1OR2 0x0b#define ARG_DISP12 0x0b#define ARG_DISP8 0x0c#define ARG_IMM4M1 0x0d#define CLASS_MASK 0x1fff0#define CLASS_X 0x10#define CLASS_BA 0x20#define CLASS_DA 0x30#define CLASS_BX 0x40#define CLASS_DISP 0x50#define CLASS_IMM 0x60#define CLASS_CC 0x70#define CLASS_CTRL 0x80#define CLASS_ADDRESS 0xd0#define CLASS_0CCC 0xe0#define CLASS_1CCC 0xf0#define CLASS_0DISP7 0x100#define CLASS_1DISP7 0x200#define CLASS_01II 0x300#define CLASS_00II 0x400#define CLASS_BIT 0x500#define CLASS_FLAGS 0x600#define CLASS_IR 0x700#define CLASS_DISP8 0x800#define CLASS_BIT_1OR2 0x900#define CLASS_REG 0x7000#define CLASS_REG_BYTE 0x2000#define CLASS_REG_WORD 0x3000#define CLASS_REG_QUAD 0x4000#define CLASS_REG_LONG 0x5000#define CLASS_REGN0 0x8000#define CLASS_PR 0x10000#define OPC_adc 0#define OPC_adcb 1#define OPC_add 2#define OPC_addb 3#define OPC_addl 4#define OPC_and 5#define OPC_andb 6#define OPC_bit 7#define OPC_bitb 8#define OPC_call 9#define OPC_calr 10#define OPC_clr 11#define OPC_clrb 12#define OPC_com 13#define OPC_comb 14#define OPC_comflg 15#define OPC_cp 16#define OPC_cpb 17#define OPC_cpd 18#define OPC_cpdb 19#define OPC_cpdr 20#define OPC_cpdrb 21#define OPC_cpi 22#define OPC_cpib 23#define OPC_cpir 24#define OPC_cpirb 25#define OPC_cpl 26#define OPC_cpsd 27#define OPC_cpsdb 28#define OPC_cpsdr 29#define OPC_cpsdrb 30#define OPC_cpsi 31#define OPC_cpsib 32#define OPC_cpsir 33#define OPC_cpsirb 34#define OPC_dab 35#define OPC_dbjnz 36#define OPC_dec 37#define OPC_decb 38#define OPC_di 39#define OPC_div 40#define OPC_divl 41#define OPC_djnz 42#define OPC_ei 43#define OPC_ex 44#define OPC_exb 45#define OPC_exts 46#define OPC_extsb 47#define OPC_extsl 48#define OPC_halt 49#define OPC_in 50#define OPC_inb 51#define OPC_inc 52#define OPC_incb 53#define OPC_ind 54#define OPC_indb 55#define OPC_inib 56#define OPC_inibr 57#define OPC_iret 58#define OPC_jp 59#define OPC_jr 60#define OPC_ld 61#define OPC_lda 62#define OPC_ldar 63#define OPC_ldb 64#define OPC_ldctl 65#define OPC_ldir 66#define OPC_ldirb 67#define OPC_ldk 68#define OPC_ldl 69#define OPC_ldm 70#define OPC_ldps 71#define OPC_ldr 72#define OPC_ldrb 73#define OPC_ldrl 74#define OPC_mbit 75#define OPC_mreq 76#define OPC_mres 77#define OPC_mset 78#define OPC_mult 79#define OPC_multl 80#define OPC_neg 81#define OPC_negb 82#define OPC_nop 83#define OPC_or 84#define OPC_orb 85#define OPC_out 86#define OPC_outb 87#define OPC_outd 88#define OPC_outdb 89#define OPC_outib 90#define OPC_outibr 91#define OPC_pop 92#define OPC_popl 93#define OPC_push 94#define OPC_pushl 95#define OPC_res 96#define OPC_resb 97#define OPC_resflg 98#define OPC_ret 99#define OPC_rl 100#define OPC_rlb 101#define OPC_rlc 102#define OPC_rlcb 103#define OPC_rldb 104#define OPC_rr 105#define OPC_rrb 106#define OPC_rrc 107#define OPC_rrcb 108#define OPC_rrdb 109#define OPC_sbc 110#define OPC_sbcb 111#define OPC_sda 112#define OPC_sdab 113#define OPC_sdal 114#define OPC_sdl 115#define OPC_sdlb 116#define OPC_sdll 117#define OPC_set 118#define OPC_setb 119#define OPC_setflg 120#define OPC_sinb 121#define OPC_sind 122#define OPC_sindb 123#define OPC_sinib 124#define OPC_sinibr 125#define OPC_sla 126#define OPC_slab 127#define OPC_slal 128#define OPC_sll 129#define OPC_sllb 130#define OPC_slll 131#define OPC_sout 132#define OPC_soutb 133#define OPC_soutd 134#define OPC_soutdb 135#define OPC_soutib 136#define OPC_soutibr 137#define OPC_sra 138#define OPC_srab 139#define OPC_sral 140#define OPC_srl 141#define OPC_srlb 142#define OPC_srll 143#define OPC_sub 144#define OPC_subb 145#define OPC_subl 146#define OPC_tcc 147#define OPC_tccb 148#define OPC_test 149#define OPC_testb 150#define OPC_testl 151#define OPC_trdb 152#define OPC_trdrb 153#define OPC_trib 154#define OPC_trirb 155#define OPC_trtdrb 156#define OPC_trtib 157#define OPC_trtirb 158#define OPC_trtdb 159#define OPC_tset 160#define OPC_tsetb 161#define OPC_xor 162#define OPC_xorb 163#define OPC_ldd 164 #define OPC_lddb 165 #define OPC_lddr 166 #define OPC_lddrb 167 #define OPC_ldi 168 #define OPC_ldib 169 #define OPC_sc 170#define OPC_bpt 171#define OPC_ext0e 172#define OPC_ext0f 172#define OPC_ext8e 172#define OPC_ext8f 172#define OPC_rsvd36 172#define OPC_rsvd38 172#define OPC_rsvd78 172#define OPC_rsvd7e 172#define OPC_rsvd9d 172#define OPC_rsvd9f 172#define OPC_rsvdb9 172#define OPC_rsvdbf 172#define OPC_outi 173typedef struct {#ifdef NICENAMESchar *nicename;int type;int cycles;int flags;#endifchar *name;unsigned char opcode;void (*func)();unsigned int arg_info[4];unsigned int byte_info[10];int noperands;int length;int idx;} opcode_entry_type;#ifdef DEFINE_TABLEopcode_entry_type z8k_table[] = {/* 1011 0101 ssss dddd *** adc rd,rs */{#ifdef NICENAMES"adc rd,rs",16,5,0x3c,#endif"adc",OPC_adc,0,{CLASS_REG_WORD+(ARG_RD),CLASS_REG_WORD+(ARG_RS),}, {CLASS_BIT+0xb,CLASS_BIT+5,CLASS_REG+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,0},/* 1011 0100 ssss dddd *** adcb rbd,rbs */{#ifdef NICENAMES"adcb rbd,rbs",8,5,0x3f,#endif"adcb",OPC_adcb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_REG_BYTE+(ARG_RS),}, {CLASS_BIT+0xb,CLASS_BIT+4,CLASS_REG+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,1},/* 0000 0001 ssN0 dddd *** add rd,@rs */{#ifdef NICENAMES"add rd,@rs",16,7,0x3c,#endif"add",OPC_add,0,{CLASS_REG_WORD+(ARG_RD),CLASS_IR+(ARG_RS),}, {CLASS_BIT+0,CLASS_BIT+1,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,2},/* 0100 0001 0000 dddd address_src *** add rd,address_src */{#ifdef NICENAMES"add rd,address_src",16,9,0x3c,#endif"add",OPC_add,0,{CLASS_REG_WORD+(ARG_RD),CLASS_DA+(ARG_SRC),}, {CLASS_BIT+4,CLASS_BIT+1,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_ADDRESS+(ARG_SRC),0,0,0,0,},2,4,3},/* 0100 0001 ssN0 dddd address_src *** add rd,address_src(rs) */{#ifdef NICENAMES"add rd,address_src(rs)",16,10,0x3c,#endif"add",OPC_add,0,{CLASS_REG_WORD+(ARG_RD),CLASS_X+(ARG_RS),}, {CLASS_BIT+4,CLASS_BIT+1,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),CLASS_ADDRESS+(ARG_SRC),0,0,0,0,},2,4,4},/* 0000 0001 0000 dddd imm16 *** add rd,imm16 */{#ifdef NICENAMES"add rd,imm16",16,7,0x3c,#endif"add",OPC_add,0,{CLASS_REG_WORD+(ARG_RD),CLASS_IMM+(ARG_IMM16),}, {CLASS_BIT+0,CLASS_BIT+1,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_IMM+(ARG_IMM16),0,0,0,0,},2,4,5},/* 1000 0001 ssss dddd *** add rd,rs */{#ifdef NICENAMES"add rd,rs",16,4,0x3c,#endif"add",OPC_add,0,{CLASS_REG_WORD+(ARG_RD),CLASS_REG_WORD+(ARG_RS),}, {CLASS_BIT+8,CLASS_BIT+1,CLASS_REG+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,6},/* 0000 0000 ssN0 dddd *** addb rbd,@rs */{#ifdef NICENAMES"addb rbd,@rs",8,7,0x3f,#endif"addb",OPC_addb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IR+(ARG_RS),}, {CLASS_BIT+0,CLASS_BIT+0,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,7},/* 0100 0000 0000 dddd address_src *** addb rbd,address_src */{#ifdef NICENAMES"addb rbd,address_src",8,9,0x3f,#endif"addb",OPC_addb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_DA+(ARG_SRC),}, {CLASS_BIT+4,CLASS_BIT+0,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_ADDRESS+(ARG_SRC),0,0,0,0,},2,4,8},/* 0100 0000 ssN0 dddd address_src *** addb rbd,address_src(rs) */{#ifdef NICENAMES"addb rbd,address_src(rs)",8,10,0x3f,#endif"addb",OPC_addb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_X+(ARG_RS),}, {CLASS_BIT+4,CLASS_BIT+0,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),CLASS_ADDRESS+(ARG_SRC),0,0,0,0,},2,4,9},/* 0000 0000 0000 dddd imm8 imm8 *** addb rbd,imm8 */{#ifdef NICENAMES"addb rbd,imm8",8,7,0x3f,#endif"addb",OPC_addb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_IMM+(ARG_IMM8),}, {CLASS_BIT+0,CLASS_BIT+0,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_IMM+(ARG_IMM8),CLASS_IMM+(ARG_IMM8),0,0,0,},2,4,10},/* 1000 0000 ssss dddd *** addb rbd,rbs */{#ifdef NICENAMES"addb rbd,rbs",8,4,0x3f,#endif"addb",OPC_addb,0,{CLASS_REG_BYTE+(ARG_RD),CLASS_REG_BYTE+(ARG_RS),}, {CLASS_BIT+8,CLASS_BIT+0,CLASS_REG+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,11},/* 0001 0110 ssN0 dddd *** addl rrd,@rs */{#ifdef NICENAMES"addl rrd,@rs",32,14,0x3c,#endif"addl",OPC_addl,0,{CLASS_REG_LONG+(ARG_RD),CLASS_IR+(ARG_RS),}, {CLASS_BIT+1,CLASS_BIT+6,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,12},/* 0101 0110 0000 dddd address_src *** addl rrd,address_src */{#ifdef NICENAMES"addl rrd,address_src",32,15,0x3c,#endif"addl",OPC_addl,0,{CLASS_REG_LONG+(ARG_RD),CLASS_DA+(ARG_SRC),}, {CLASS_BIT+5,CLASS_BIT+6,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_ADDRESS+(ARG_SRC),0,0,0,0,},2,4,13},/* 0101 0110 ssN0 dddd address_src *** addl rrd,address_src(rs) */{#ifdef NICENAMES"addl rrd,address_src(rs)",32,16,0x3c,#endif"addl",OPC_addl,0,{CLASS_REG_LONG+(ARG_RD),CLASS_X+(ARG_RS),}, {CLASS_BIT+5,CLASS_BIT+6,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),CLASS_ADDRESS+(ARG_SRC),0,0,0,0,},2,4,14},/* 0001 0110 0000 dddd imm32 *** addl rrd,imm32 */{#ifdef NICENAMES"addl rrd,imm32",32,14,0x3c,#endif"addl",OPC_addl,0,{CLASS_REG_LONG+(ARG_RD),CLASS_IMM+(ARG_IMM32),}, {CLASS_BIT+1,CLASS_BIT+6,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_IMM+(ARG_IMM32),0,0,0,0,},2,6,15},/* 1001 0110 ssss dddd *** addl rrd,rrs */{#ifdef NICENAMES"addl rrd,rrs",32,8,0x3c,#endif"addl",OPC_addl,0,{CLASS_REG_LONG+(ARG_RD),CLASS_REG_LONG+(ARG_RS),}, {CLASS_BIT+9,CLASS_BIT+6,CLASS_REG+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,16},/* 0000 0111 ssN0 dddd *** and rd,@rs */{#ifdef NICENAMES"and rd,@rs",16,7,0x18,#endif"and",OPC_and,0,{CLASS_REG_WORD+(ARG_RD),CLASS_IR+(ARG_RS),}, {CLASS_BIT+0,CLASS_BIT+7,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,17},/* 0100 0111 0000 dddd address_src *** and rd,address_src */{#ifdef NICENAMES"and rd,address_src",16,9,0x18,#endif"and",OPC_and,0,{CLASS_REG_WORD+(ARG_RD),CLASS_DA+(ARG_SRC),}, {CLASS_BIT+4,CLASS_BIT+7,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_ADDRESS+(ARG_SRC),0,0,0,0,},2,4,18},/* 0100 0111 ssN0 dddd address_src *** and rd,address_src(rs) */{#ifdef NICENAMES"and rd,address_src(rs)",16,10,0x18,#endif"and",OPC_and,0,{CLASS_REG_WORD+(ARG_RD),CLASS_X+(ARG_RS),}, {CLASS_BIT+4,CLASS_BIT+7,CLASS_REGN0+(ARG_RS),CLASS_REG+(ARG_RD),CLASS_ADDRESS+(ARG_SRC),0,0,0,0,},2,4,19},/* 0000 0111 0000 dddd imm16 *** and rd,imm16 */{#ifdef NICENAMES"and rd,imm16",16,7,0x18,#endif"and",OPC_and,0,{CLASS_REG_WORD+(ARG_RD),CLASS_IMM+(ARG_IMM16),}, {CLASS_BIT+0,CLASS_BIT+7,CLASS_BIT+0,CLASS_REG+(ARG_RD),CLASS_IMM+(ARG_IMM16),0,0,0,0,},2,4,20},/* 1000 0111 ssss dddd *** and rd,rs */{#ifdef NICENAMES"and rd,rs",16,4,0x18,#endif"and",OPC_and,0,{CLASS_REG_WORD+(ARG_RD),CLASS_REG_WORD+(ARG_RS),}, {CLASS_BIT+8,CLASS_BIT+7,CLASS_REG+(ARG_RS),CLASS_REG+(ARG_RD),0,0,0,0,0,},2,2,21},/* 0000 0110 ssN0 dddd *** andb rbd,@rs */{#ifdef NICENAMES"andb rbd,@rs",8,7,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -