#ifndef __OPCODE_H__ # define __OPCODE_H__ #include #include #include /* opcode - instruction data part. */ struct opcode { const char *name; uint16_t mask; uint16_t code; uint16_t arg_mask[ARGUMENTS_MAX]; }; // Define ALL SH3 instructions. static const struct opcode opcode[] = { { .name = "add #h'%x,r%d", .mask = 0b1111000000000000, .code = 0b0111000000000000, .arg_mask = { 0b0000000011111111, 0b0000111100000000, 0b0000000000000000 } }, { .name = "add r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000001100, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "addc r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000001110, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "addv r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000001111, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "and #h'%x,r0", .mask = 0b1111111100000000, .code = 0b1100100100000000, .arg_mask = { 0b000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "and r%d,r%d", .mask = 0b1111000000001111, .code = 0b0010000000001001, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "and.b #h'%x,@(r0,GBR)", .mask = 0b1111111100000000, .code = 0b1100110100000000, .arg_mask = { 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "bf #h'%x", .mask = 0b1111111100000000, .code = 0b1000101100000000, .arg_mask = { 0b000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "bs/s #h'%x", .mask = 0b1111111100000000, .code = 0b1000111100000000, .arg_mask = { 0b000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "bra #h'%x", .mask = 0b1111000000000000, .code = 0b1010000000000000, .arg_mask = { 0b0000111111111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "braf r%d", .mask = 0b1111000011111111, .code = 0b0000000000100011, .arg_mask = { 0b000011110000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "bsr #h'%x", .mask = 0b1111000000000000, .code = 0b1011000000000000, .arg_mask = { 0b0000111111111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "bsrf r%d", .mask = 0b1111000011111111, .code = 0b0000000000000011, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "bt #h'%x", .mask = 0b1111111100000000, .code = 0b1000100100000000, .arg_mask = { 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "bt/s #h'%x", .mask = 0b1111111100000000, .code = 0b1000110100000000, .arg_mask = { 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "clrmac", .mask = 0b1111111111111111, .code = 0b0000000000101000, .arg_mask = { 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "clrs", .mask = 0b1111111111111111, .code = 0b0000000001001000, .arg_mask = { 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "clrt", .mask = 0b1111111111111111, .code = 0b0000000000001000, .arg_mask = { 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "cmp/eq #h'%x,r0", .mask = 0b1111111100000000, .code = 0b1000100000000000, .arg_mask = { 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "cmp/eq r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000000000, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "cmp/ge r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000000011, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "cmp/gt r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000000111, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "cmp/hi r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000000110, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "cmp/hs r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000000010, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "cmp/pl r%d", .mask = 0b1111000011111111, .code = 0b0100000000010101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "cmp/pz r%d", .mask = 0b1111000011111111, .code = 0b0100000000010001, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "cmp/str r%d,r%d", .mask = 0b1111000000001111, .code = 0b0010000000001100, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "div0s r%d,r%d", .mask = 0b1111000000001111, .code = 0b0010000000000111, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "div0u", .mask = 0b1111111111111111, .code = 0b0000000000011001, .arg_mask = { 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "div1 r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000000100, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "dmuls.l r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000001101, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "dmulu.l r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000000101, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "dt r%d", .mask = 0b1111000011111111, .code = 0b0100000000010000, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "exts.b r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000001110, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "exts.w r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000001111, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "extu.b r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000001100, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "extu.w r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000001101, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fabs fr%d", .mask = 0b1111000011111111, .code = 0b1111000001011101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "fadd fr%d,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000000000, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fcmp/eq fr%d,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000000100, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fcmp/gt fr%d,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000000101, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fdiv fr%d,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000000011, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fldi0 fr%d", .mask = 0b1111000011111111, .code = 0b1111000010001101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "fldi1 fr%d", .mask = 0b1111000011111111, .code = 0b1111000010011101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "flds fr%d,FPUL", .mask = 0b1111000011111111, .code = 0b1111000000011101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "float FPUL,fr%d", .mask = 0b1111000011111111, .code = 0b1111000000101101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "fmac FR0,fr%d,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000001110, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fmov fr%d,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000001100, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fmov.s @(r0,r%d),fr%d", .mask = 0b1111000000001111, .code = 0b1111000000000110, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fmov.s @r%d+,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000001001, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fmov.s @r%d,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000001000, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fmov.s fr%d,@(r0,r%d)", .mask = 0b1111000000001111, .code = 0b1111000000000111, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fmov.s fr%d,@-r%d", .mask = 0b1111000000001111, .code = 0b1111000000001011, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fmov.s fr%d,@r%d", .mask = 0b1111000000001111, .code = 0b1111000000001010, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fmul fr%d,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000000010, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "fneg fr%d", .mask = 0b1111000011111111, .code = 0b1111000001001101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "fsqrt fr%d", .mask = 0b1111000011111111, .code = 0b1111000001101101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "fsts FPUL,fr%d", .mask = 0b1111000011111111, .code = 0b1111000000001101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "fsub fr%d,fr%d", .mask = 0b1111000000001111, .code = 0b1111000000000001, .arg_mask = { 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "ftrc fr%d,FPUL", .mask = 0b1111000011111111, .code = 0b1111000000111101, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "jmp @r%d", .mask = 0b1111000011111111, .code = 0b0100000000101011, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "jsr @r%d", .mask = 0b1111000011111111, .code = 0b0100000000001011, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,GBR", .mask = 0b1111000011111111, .code = 0b0100000000011110, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,SR", .mask = 0b1111000011111111, .code = 0b0100000000001110, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,VBR", .mask = 0b1111000011111111, .code = 0b0100000000101110, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,SSR", .mask = 0b1111000011111111, .code = 0b0100000000111110, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,SPC", .mask = 0b1111000011111111, .code = 0b0100000001001110, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,MOD", .mask = 0b1111000011111111, .code = 0b0100000001011110, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, //FIXME: find difference between "ldc rm,RE" and "ldc rm,RS" { .name = "ldc r%d,RE/RS", .mask = 0b1111000011111111, .code = 0b0100000001101110, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,R0_BANK", .mask = 0b1111000011111111, .code = 0b0100000010001110, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,R1_BANK", .mask = 0b1111000011111111, .code = 0b0100000010011110, .arg_mask = { 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,R2_BANK", .mask = 0b1111000011111111, .code = 0b0100000010101110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,R3_BANK", .mask = 0b1111000011111111, .code = 0b0100000010111110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,R4_BANK", .mask = 0b1111000011111111, .code = 0b0100000011001110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,R5_BANK", .mask = 0b1111000011111111, .code = 0b0100000011011110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,R6_BANK", .mask = 0b1111000011111111, .code = 0b0100000011101110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc r%d,R7_BANK", .mask = 0b1111000011111111, .code = 0b0100000011111110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,GBR", .mask = 0b1111000011111111, .code = 0b0100000000010111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,SR", .mask = 0b1111000011111111, .code = 0b0100000000000111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,VBR", .mask = 0b1111000011111111, .code = 0b0100000000100111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,SSR", .mask = 0b1111000011111111, .code = 0b0100000000110111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,SPC", .mask = 0b1111000011111111, .code = 0b0100000001000111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,MOD", .mask = 0b1111000011111111, .code = 0b0100000001010111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,RE", .mask = 0b1111000011111111, .code = 0b0100000001110111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,RS", .mask = 0b1111000011111111, .code = 0b0100000001100111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,R0_BANK", .mask = 0b1111000011111111, .code = 0b0100000010000111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,R1_BANK", .mask = 0b1111000011111111, .code = 0b0100000010010111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,R2_BANK", .mask = 0b1111000011111111, .code = 0b0100000010100111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @%d+,R3_BANK", .mask = 0b1111000011111111, .code = 0b0100000010110111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,R4_BANK", .mask = 0b1111000011111111, .code = 0b0100000011000111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,R5_BANK", .mask = 0b1111000011111111, .code = 0b0100000011010111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,R7_BANK", .mask = 0b1111000011111111, .code = 0b0100000011100111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldc.l @r%d+,R7_BANK", .mask = 0b1111000011111111, .code = 0b0100000011110111, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldre @(#h'%x,PC)", .mask = 0b1111111100000000, .code = 0b1000111000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldrs @(#h'%x,PC)", .mask = 0b1111111100000000, .code = 0b1000110000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,FPSCR", .mask = 0b1111000011111111, .code = 0b0100000001101010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,FPUL", .mask = 0b1111000011111111, .code = 0b0100000001011010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,MACH", .mask = 0b1111000011111111, .code = 0b0100000000001010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,MACL", .mask = 0b1111000011111111, .code = 0b0100000000011010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,PR", .mask = 0b1111000011111111, .code = 0b0100000000101010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,A0", .mask = 0b1111000011111111, .code = 0b0100000001101010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,DSR", .mask = 0b1111000011111111, .code = 0b0100000001111010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,X0", .mask = 0b1111000011111111, .code = 0b01000000010001010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,X1", .mask = 0b1111000011111111, .code = 0b0100000010011010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,Y0", .mask = 0b1111000011111111, .code = 0b0100000010101010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds r%d,Y1", .mask = 0b1111000011111111, .code = 0b0100000010111010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,FPSCR", .mask = 0b1111000011111111, .code = 0b0100000001100110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,FPUL", .mask = 0b1111000011111111, .code = 0b0100000001010110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,MACH", .mask = 0b1111000011111111, .code = 0b0100000000000110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,MACL", .mask = 0b1111000011111111, .code = 0b0100000000010110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,PR", .mask = 0b1111000011111111, .code = 0b0100000000100110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,DSR", .mask = 0b1111000011111111, .code = 0b0100000001100110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,A0", .mask = 0b1111000011111111, .code = 0b0100000001110110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,X0", .mask = 0b1111000011111111, .code = 0b0100000001000110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,X1", .mask = 0b1111000011111111, .code = 0b0100000010010110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,Y0", .mask = 0b1111000011111111, .code = 0b0100000010100110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "lds.l @r%d+,Y1", .mask = 0b1111000011111111, .code = 0b0100000010110110, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "ldtlb", .mask = 0b1111111111111111, .code = 0b0000000000111000, .arg_mask ={ 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "mac.l @r%d+,@r%d+", .mask = 0b1111000000001111, .code = 0b0000000000001111, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mac.w @r%d+,@r%d+", .mask = 0b1111000000001111, .code = 0b0100000000001111, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov #h'%x,r%d", .mask = 0b1111000000000000, .code = 0b1110000000000000, .arg_mask ={ 0b0000000011111111, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000000011, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.b @(#h'%x,GBR),r0", .mask = 0b1111111100000000, .code = 0b1100010000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "mov.b @(#h'%x,r%d),r0", .mask = 0b1111111100000000, .code = 0b1000010000000000, .arg_mask ={ 0b0000000000001111, 0b0000000011110000, 0b0000000000000000 } }, { .name = "mov.b @(r0,r%d),r%d", .mask = 0b1111000000001111, .code = 0b0000000000001100, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.b @r%d+,r%d", .mask = 0b1111000000001111, .code = 0b0110000000000100, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.b @r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000000000, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.b r0,@(#h'%x,GBR)", .mask = 0b1111111100000000, .code = 0b1100000000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "mov.b r0,@(#h'%x,r%d)", .mask = 0b1111111100000000, .code = 0b1000000000000000, .arg_mask ={ 0b0000000000001111, 0b0000000011110000, 0b0000000000000000 } }, { .name = "mov.b r%d,@(r0,r%d)", .mask = 0b1111000000000000, .code = 0b0000000000000100, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.b r%d,@-r%d", .mask = 0b1111000000000000, .code = 0b0010000000000100, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.b r%d,@r%d", .mask = 0b1111000000001111, .code = 0b0010000000000000, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.l @(#h'%x,GBR),r0", .mask = 0b1111111100000000, .code = 0b1100011000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "mov.l @(#h'%x,PC),r%d", .mask = 0b1111000000000000, .code = 0b1101000000000000, .arg_mask ={ 0b0000000011111111, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.l @(#h'%x,r%d),r%d", .mask = 0b1111000000000000, .code = 0b0101000000000000, .arg_mask ={ 0b0000000000001111, 0b0000000011110000, 0b0000111100000000 } }, { .name = "mov.l @(r0,r%d),r%d", .mask = 0b1111000000001111, .code = 0b0000000000001110, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.l @r%d+,r%d", .mask = 0b1111000000001111, .code = 0b0110000000000110, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.l @r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000000010, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.l r0,@(#h'%x,GBR)", .mask = 0b1111111100000000, .code = 0b1100001000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "mov.l r%d,@(#h'%x,r%d)", .mask = 0b1111000000000000, .code = 0b0001000000000000, .arg_mask ={ 0b0000000000001111, 0b0000000011110000, 0b0000111100000000 } }, { .name = "mov.l r%d,@(r0,r%d)", .mask = 0b1111000000001111, .code = 0b0000000000000110, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.l r%d,@-r%d", .mask = 0b1111000000001111, .code = 0b0010000000000110, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.l r%d,@r%d", .mask = 0b1111000000001111, .code = 0b0010000000000010, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.w @(#h'%x,GBR),r0", .mask = 0b1111111100000000, .code = 0b1100010100000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "mov.w @(#h'%x,PC),r%d", .mask = 0b1111000000000000, .code = 0b1001000000000000, .arg_mask ={ 0b0000000011111111, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.w @(r0,r%d),r%d", .mask = 0b1111000000001111, .code = 0b0000000000001101, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.w @r%d+,r%d", .mask = 0b1111000000001111, .code = 0b0110000000000101, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.w @r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000000001, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.w r0,@(#h'%x,GBR)", .mask = 0b1111111100000000, .code = 0b1100000100000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "mov.w r0,@(#h'%x,,r%d)", .mask = 0b1111111100000000, .code = 0b1000000100000000, .arg_mask ={ 0b0000000000001111, 0b0000000011110000, 0b0000000000000000 } }, { .name = "mov.w r%d,@(r0,r%d)", .mask = 0b1111000000001111, .code = 0b0000000000000101, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.w r%d,@-r%d", .mask = 0b1111000000001111, .code = 0b0010000000000101, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mov.w r%d,@r%d", .mask = 0b1111000000001111, .code = 0b0010000000000001, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mova @(#h'%x,PC),r0", .mask = 0b1111111100000000, .code = 0b1100011100000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "movt r%d", .mask = 0b1111000011111111, .code = 0b0000000000101001, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "mul.l r%d,r%d", .mask = 0b1111000000001111, .code = 0b0000000000000111, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "muls.w r%d,r%d", .mask = 0b1111000000001111, .code = 0b0010000000001111, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "mulu.w r%d,r%d", .mask = 0b1111000000001111, .code = 0b0010000000001110, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "neg r%d,@-r%d", .mask = 0b1111000000001111, .code = 0b0110000000001011, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "negc r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000001010, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "nop", .mask = 0b1111111111111111, .code = 0b0000000000001001, .arg_mask ={ 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "not r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000000111, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "or #h'%x,r0", .mask = 0b1111111100000000, .code = 0b1100101100000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "or r%d,r%d", .mask = 0b1111000000001111, .code = 0b0010000000001011, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "or.b #h'%x,@(r0,GBR)", .mask = 0b1111111100000000, .code = 0b1100111100000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "pref @r%d", .mask = 0b1111000011111111, .code = 0b0000000010000011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "rotcl r%d", .mask = 0b1111000011111111, .code = 0b0100000000100100, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "rotcr r%d", .mask = 0b1111000011111111, .code = 0b0100000000100101, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "rotl r%d", .mask = 0b1111000011111111, .code = 0b0100000000000100, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "rotr r%d", .mask = 0b1111000011111111, .code = 0b0100000000000101, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "rte", .mask = 0b1111111111111111, .code = 0b0000000000101011, .arg_mask ={ 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "rts", .mask = 0b1111111111111111, .code = 0b0000000000001011, .arg_mask ={ 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "setrc r%d", .mask = 0b1111000011111111, .code = 0b0100000000010100, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "setrc #h'%x", .mask = 0b1111111100000000, .code = 0b1000001000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sets", .mask = 0b1111111111111111, .code = 0b0000000001011000, .arg_mask ={ 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sett", .mask = 0b1111111111111111, .code = 0b0000000000011000, .arg_mask ={ 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shad r%d,r%d", .mask = 0b1111000000001111, .code = 0b0100000000001100, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "shal r%d", .mask = 0b1111000011111111, .code = 0b0100000000100000, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shar r%d", .mask = 0b1111000011111111, .code = 0b0100000000100001, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shld r%d,r%d", .mask = 0b1111000000001111, .code = 0b0100000000001101, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "shll r%d", .mask = 0b1111000011111111, .code = 0b0100000000000000, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shll2 r%d", .mask = 0b1111000011111111, .code = 0b0100000000001000, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shll8 r%d", .mask = 0b1111000011111111, .code = 0b0100000000011000, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shll16 r%d", .mask = 0b1111000011111111, .code = 0b0100000000101000, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shlr r%d", .mask = 0b1111000011111111, .code = 0b0100000000000001, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shlr2 r%d", .mask = 0b1111000011111111, .code = 0b0100000000001001, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shlr8 r%d", .mask = 0b1111000011111111, .code = 0b0100000000011001, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "shlr16 r%d", .mask = 0b1111000011111111, .code = 0b0100000000101001, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sleep", .mask = 0b1111111111111111, .code = 0b0000000000011011, .arg_mask ={ 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc GBR,r%d", .mask = 0b1111000011111111, .code = 0b0000000000010010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc SR,r%d", .mask = 0b1111000011111111, .code = 0b0000000000000010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc VBR,r%d", .mask = 0b1111000011111111, .code = 0b0000000000100010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc SSR,r%d", .mask = 0b1111000011111111, .code = 0b0000000000110010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc SPC,r%d", .mask = 0b1111000011111111, .code = 0b0000000001000010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc MOD,r%d", .mask = 0b1111000011111111, .code = 0b0000000001010010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc RE,r%d", .mask = 0b1111000011111111, .code = 0b0000000001110010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc RS,r%d", .mask = 0b1111000011111111, .code = 0b0000000001100010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc R0_BANK,r%d", .mask = 0b1111000011111111, .code = 0b0000000010000010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc R1_BANK,r%d", .mask = 0b1111000011111111, .code = 0b0000000010010010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc R2_BANK,r%d", .mask = 0b1111000011111111, .code = 0b0000000010100010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc R3_BANK,r%d", .mask = 0b1111000011111111, .code = 0b0000000010110010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc R4_BANK,r%d", .mask = 0b1111000011111111, .code = 0b0000000011000010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc R5_BANK,r%d", .mask = 0b1111000011111111, .code = 0b0000000011010010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc R6_BANK,r%d", .mask = 0b1111000011111111, .code = 0b0000000011100010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc R7_BANK,r%d", .mask = 0b1111000011111111, .code = 0b0000000011110010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l GBR,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000000010011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l SR,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000000000011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l VBR,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000000100011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l SSR,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000000110011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l SPC,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000001000011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l MOD,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000001010011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l RE,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000001110011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l RS,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000001100011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l R0_BANK,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000010000011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l R1_BANK,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000010010011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l R2_BANK,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000010100011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l R3_BANK,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000010110011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l R4_BANK,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000011000011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l R5_BANK,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000011010011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l R6_BANK,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000011100011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "stc.l R7_BANK,@r-%d", .mask = 0b1111000011111111, .code = 0b0100000011110011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts FPSCR,r%d", .mask = 0b1111000011111111, .code = 0b0000000001101010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts FPUL,r%d", .mask = 0b1111000011111111, .code = 0b0000000001011010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts MACH,r%d", .mask = 0b1111000011111111, .code = 0b0000000000001010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts MACL,r%d", .mask = 0b1111000011111111, .code = 0b0000000000011010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts PR,r%d", .mask = 0b1111000011111111, .code = 0b0000000000101010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts DSR,r%d", .mask = 0b1111000011111111, .code = 0b0000000001101010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts A0,r%d", .mask = 0b1111000011111111, .code = 0b0000000001111010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts X0,r%d", .mask = 0b1111000011111111, .code = 0b0000000010001010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts X1,r%d", .mask = 0b1111000011111111, .code = 0b0000000010011010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts Y0,r%d", .mask = 0b1111000011111111, .code = 0b0000000010101010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts Y1,r%d", .mask = 0b1111000011111111, .code = 0b0000000010111010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l FPSCR,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000001100010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l FPUL,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000001010010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l MACH,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000000000010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l MACL,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000000010010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l PR,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000000100010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l DSR,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000001100010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l A0,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000001110010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l X0,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000010000010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l X1,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000010010010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l Y0,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000010100010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sts.l Y1,@-r%d", .mask = 0b1111000011111111, .code = 0b0100000010110010, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "sub r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000001000, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "subc r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000001010, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "subv r%d,r%d", .mask = 0b1111000000001111, .code = 0b0011000000001011, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "swap.b r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000001000, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "swap.w r%d,r%d", .mask = 0b1111000000001111, .code = 0b0110000000001001, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "tas.b @r%d", .mask = 0b1111000011111111, .code = 0b0100000000011011, .arg_mask ={ 0b0000111100000000, 0b0000000000000000, 0b0000000000000000 } }, { .name = "trapa #h'%x", .mask = 0b1111111100000000, .code = 0b1100001100000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "tst #h'%x,r0", .mask = 0b1111111100000000, .code = 0b1100100000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "tst r%d,r%d", .mask = 0b1111000000001111, .code = 0b0010000000001000, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "tst.b #h'%x,@(r0,GBR)", .mask = 0b1111111100000000, .code = 0b1100110000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "xor #h'%x,r0", .mask = 0b1111111100000000, .code = 0b1100101000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "xor r%d,r%d", .mask = 0b1111000000001111, .code = 0b0010000000001010, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = "wor.b #h'%x,@(r0,GBR)", .mask = 0b1111111100000000, .code = 0b1100111000000000, .arg_mask ={ 0b0000000011111111, 0b0000000000000000, 0b0000000000000000 } }, { .name = "xtrct r%d,r%d", .mask = 0b1111000000001111, .code = 0b0010000000001101, .arg_mask ={ 0b0000000011110000, 0b0000111100000000, 0b0000000000000000 } }, { .name = NULL, .mask = 0b0000000000000000, .code = 0b0000000000000000, .arg_mask = { 0b0000000000000000, 0b0000000000000000, 0b0000000000000000 } }, }; #endif /*__OPCODE_H__*/