nkeynes@359 | 1 | ##
|
nkeynes@359 | 2 | ## Instruction file for the SH4 - from the SH4 manual.
|
nkeynes@359 | 3 | ## line ::= bitpattern WHITESPACE result NEWLINE
|
nkeynes@359 | 4 | ## bitpattern ::= { '0' | '1' | '(' operand ')' }
|
nkeynes@359 | 5 | ## operand ::= IDENTIFIER ':' NUMBER signspec
|
nkeynes@359 | 6 | ## signspec ::= 'u' | 's' |
|
nkeynes@359 | 7 | ## result ::= { IDENTIFIER | NON-IDENT-CHAR }
|
nkeynes@359 | 8 |
|
nkeynes@359 | 9 | registers {
|
nkeynes@359 | 10 | uint32 Rm, Rn = r0..r15
|
nkeynes@359 | 11 | uint32 Rm_BANK, Rn_BANK = r8_bank..r15_bank
|
nkeynes@359 | 12 | float Frm, Frn = fr0..fr15
|
nkeynes@359 | 13 | float XFm, XFn = xf0..xf15
|
nkeynes@359 | 14 | double Drm, Drn = dr0..dr8 overlaps fr0..fr15 swapped
|
nkeynes@359 | 15 | double XDm, XDn = xd0..xd8 overlaps xf0..xf15 swapped
|
nkeynes@359 | 16 | float[4] FVm, FVn = fv0..fv3 overlaps fr0..fr15
|
nkeynes@359 | 17 | float[16] XMTRX = xmtrx overlaps xf0..xf15
|
nkeynes@359 | 18 |
|
nkeynes@359 | 19 | ## Special registers
|
nkeynes@359 | 20 | uint32 GBR, SR, VBR, SSR, SGR SPC, DBR
|
nkeynes@359 | 21 | uint32 FPSCR, FPUL, MACH, MACL, PR, PC
|
nkeynes@359 | 22 |
|
nkeynes@359 | 23 | }
|
nkeynes@359 | 24 |
|
nkeynes@359 | 25 | 0011(Rn:4)(Rm:4)1100 ADD Rm, Rn
|
nkeynes@359 | 26 | 0111(Rn:4)(imm:8s) ADD #imm, Rn
|
nkeynes@359 | 27 | 0011(Rn:4)(Rm:4)1110 ADDC Rm, Rn
|
nkeynes@359 | 28 | 0011(Rn:4)(Rm:4)1111 ADDV Rm, Rn
|
nkeynes@359 | 29 | 0010(Rn:4)(Rm:4)1001 AND Rm, Rn
|
nkeynes@359 | 30 | 11001001(imm:8u) AND #imm, R0
|
nkeynes@359 | 31 | 11001101(imm:8u) AND.B #imm, @(R0, GBR)
|
nkeynes@359 | 32 | 10001011(disp:8s<<1) BF disp
|
nkeynes@359 | 33 | 10001111(disp:8s<<1) BF/S disp
|
nkeynes@359 | 34 | 1010(disp:12s<<1) BRA disp
|
nkeynes@359 | 35 | 0000(Rn:4)00100011 BRAF Rn
|
nkeynes@359 | 36 | 1011(disp:12s<<1) BSR disp
|
nkeynes@359 | 37 | 0000(Rn:4)00000011 BSRF Rn
|
nkeynes@359 | 38 | 10001001(disp:8s<<1) BT disp
|
nkeynes@359 | 39 | 10001101(disp:8s<<1) BT/S disp
|
nkeynes@359 | 40 | 0000000000101000 CLRMAC
|
nkeynes@359 | 41 | 0000000001001000 CLRS
|
nkeynes@359 | 42 | 0000000000001000 CLRT
|
nkeynes@359 | 43 | 0011(Rn:4)(Rm:4)0000 CMP/EQ Rm, Rn
|
nkeynes@359 | 44 | 10001000(imm:8s) CMP/EQ #imm, R0
|
nkeynes@359 | 45 | 0011(Rn:4)(Rm:4)0011 CMP/GE Rm, Rn
|
nkeynes@359 | 46 | 0011(Rn:4)(Rm:4)0111 CMP/GT Rm, Rn
|
nkeynes@359 | 47 | 0011(Rn:4)(Rm:4)0110 CMP/HI Rm, Rn
|
nkeynes@359 | 48 | 0011(Rn:4)(Rm:4)0010 CMP/HS Rm, Rn
|
nkeynes@359 | 49 | 0100(Rn:4)00010101 CMP/PL Rn
|
nkeynes@359 | 50 | 0100(Rn:4)00010001 CMP/PZ Rn
|
nkeynes@359 | 51 | 0010(Rn:4)(Rm:4)1100 CMP/STR Rm, Rn
|
nkeynes@359 | 52 | 0010(Rn:4)(Rm:4)0111 DIV0S Rm, Rn
|
nkeynes@359 | 53 | 0000000000011001 DIV0U
|
nkeynes@359 | 54 | 0011(Rn:4)(Rm:4)0100 DIV1 Rm, Rn
|
nkeynes@359 | 55 | 0011(Rn:4)(Rm:4)1101 DMULS.L Rm, Rn
|
nkeynes@359 | 56 | 0011(Rn:4)(Rm:4)0101 DMULU.L Rm, Rn
|
nkeynes@359 | 57 | 0100(Rn:4)00010000 DT Rn
|
nkeynes@359 | 58 | 0110(Rn:4)(Rm:4)1110 EXTS.B Rm, Rn
|
nkeynes@359 | 59 | 0110(Rn:4)(Rm:4)1111 EXTS.W Rm, Rn
|
nkeynes@359 | 60 | 0110(Rn:4)(Rm:4)1100 EXTU.B Rm, Rn
|
nkeynes@359 | 61 | 0110(Rn:4)(Rm:4)1101 EXTU.W Rm, Rn
|
nkeynes@359 | 62 | 1111(FRn:4)01011101 FABS FRn
|
nkeynes@359 | 63 | 1111(FRn:4)(FRm:4)0000 FADD FRm, FRn
|
nkeynes@359 | 64 | 1111(FRn:4)(FRm:4)0100 FCMP/EQ FRm, FRn
|
nkeynes@359 | 65 | 1111(FRn:4)(FRm:4)0101 FCMP/GT FRm, FRn
|
nkeynes@359 | 66 | 1111(FRm:4)10111101 FCNVDS FRm, FPUL
|
nkeynes@359 | 67 | 1111(FRn:4)10101101 FCNVSD FPUL, FRn
|
nkeynes@359 | 68 | 1111(FRn:4)(FRm:4)0011 FDIV FRm, FRn
|
nkeynes@359 | 69 | 1111(FVn:2)(FVm:2)11101101 FIPR FVm, FVn
|
nkeynes@359 | 70 | 1111(FRm:4)00011101 FLDS FRm, FPUL
|
nkeynes@359 | 71 | 1111(FRn:4)10001101 FLDI0 FRn
|
nkeynes@359 | 72 | 1111(FRn:4)10011101 FLDI1 FRn
|
nkeynes@359 | 73 | 1111(FRn:4)00101101 FLOAT FPUL, FRn
|
nkeynes@359 | 74 | 1111(FRn:4)(FRm:4)1110 FMAC FR0, FRm, FRn
|
nkeynes@359 | 75 | 1111(FRn:4)(FRm:4)1100 FMOV FRm, FRn
|
nkeynes@359 | 76 | 1111(Rn:4)(FRm:4)1010 FMOV FRm, @Rn
|
nkeynes@359 | 77 | 1111(Rn:4)(FRm:4)1011 FMOV FRm, @-Rn
|
nkeynes@359 | 78 | 1111(Rn:4)(FRm:4)0111 FMOV FRm, @(R0, Rn)
|
nkeynes@359 | 79 | 1111(FRn:4)(Rm:4)1000 FMOV @Rm, FRn
|
nkeynes@359 | 80 | 1111(FRn:4)(Rm:4)1001 FMOV @Rm+, FRn
|
nkeynes@359 | 81 | 1111(FRn:4)(Rm:4)0110 FMOV @(R0, Rm), FRn
|
nkeynes@359 | 82 | 1111(FRn:4)(FRm:4)0010 FMUL FRm, FRn
|
nkeynes@359 | 83 | 1111(FRn:4)01001101 FNEG FRn
|
nkeynes@359 | 84 | 1111101111111101 FRCHG
|
nkeynes@359 | 85 | 1111(FRn:3<<1)011111101 FSCA FPUL, FRn
|
nkeynes@359 | 86 | 1111001111111101 FSCHG
|
nkeynes@359 | 87 | 1111(FRn:4)01101101 FSQRT FRn
|
nkeynes@359 | 88 | 1111(FRn:4)01111101 FSRRA FRn
|
nkeynes@359 | 89 | 1111(FRn:4)00001101 FSTS FPUL, FRn
|
nkeynes@359 | 90 | 1111(FRn:4)(FRm:4)0001 FSUB FRm, FRn
|
nkeynes@359 | 91 | 1111(FRm:4)00111101 FTRC FRm, FPUL
|
nkeynes@359 | 92 | 1111(FVn:2)0111111101 FTRV XMTRX, FVn
|
nkeynes@359 | 93 | 0100(Rn:4)00101011 JMP @Rn
|
nkeynes@359 | 94 | 0100(Rn:4)00001011 JSR @Rn
|
nkeynes@359 | 95 | 0100(Rm:4)00011110 LDC Rm, GBR
|
nkeynes@359 | 96 | 0100(Rm:4)00001110 LDC Rm, SR
|
nkeynes@359 | 97 | 0100(Rm:4)00101110 LDC Rm, VBR
|
nkeynes@359 | 98 | 0100(Rm:4)00111110 LDC Rm, SSR
|
nkeynes@359 | 99 | 0100(Rm:4)00111010 LDC Rm, SGR
|
nkeynes@359 | 100 | 0100(Rm:4)01001110 LDC Rm, SPC
|
nkeynes@359 | 101 | 0100(Rm:4)11111010 LDC Rm, DBR
|
nkeynes@359 | 102 | 0100(Rm:4)1(Rn_BANK:3)1110 LDC Rm, Rn_BANK
|
nkeynes@359 | 103 | 0100(Rm:4)00010111 LDC.L @Rm+, GBR
|
nkeynes@359 | 104 | 0100(Rm:4)00000111 LDC.L @Rm+, SR
|
nkeynes@359 | 105 | 0100(Rm:4)00100111 LDC.L @Rm+, VBR
|
nkeynes@359 | 106 | 0100(Rm:4)00110111 LDC.L @Rm+, SSR
|
nkeynes@359 | 107 | 0100(Rm:4)00110110 LDC.L @Rm+, SGR
|
nkeynes@359 | 108 | 0100(Rm:4)01000111 LDC.L @Rm+, SPC
|
nkeynes@359 | 109 | 0100(Rm:4)11110110 LDC.L @Rm+, DBR
|
nkeynes@359 | 110 | 0100(Rm:4)1(Rn_BANK:3)0111 LDC.L @Rm+, Rn_BANK
|
nkeynes@359 | 111 | 0100(Rm:4)01101010 LDS Rm, FPSCR
|
nkeynes@359 | 112 | 0100(Rm:4)01100110 LDS.L @Rm+, FPSCR
|
nkeynes@359 | 113 | 0100(Rm:4)01011010 LDS Rm, FPUL
|
nkeynes@359 | 114 | 0100(Rm:4)01010110 LDS.L @Rm+, FPUL
|
nkeynes@359 | 115 | 0100(Rm:4)00001010 LDS Rm, MACH
|
nkeynes@359 | 116 | 0100(Rm:4)00000110 LDS.L @Rm+, MACH
|
nkeynes@359 | 117 | 0100(Rm:4)00011010 LDS Rm, MACL
|
nkeynes@359 | 118 | 0100(Rm:4)00010110 LDS.L @Rm+, MACL
|
nkeynes@359 | 119 | 0100(Rm:4)00101010 LDS Rm, PR
|
nkeynes@359 | 120 | 0100(Rm:4)00100110 LDS.L @Rm+, PR
|
nkeynes@359 | 121 | 0000000000111000 LDTLB
|
nkeynes@359 | 122 | 0000(Rn:4)(Rm:4)1111 MAC.L @Rm+, @Rn+
|
nkeynes@359 | 123 | 0100(Rn:4)(Rm:4)1111 MAC.W @Rm+, @Rn+
|
nkeynes@359 | 124 | 0110(Rn:4)(Rm:4)0011 MOV Rm, Rn
|
nkeynes@359 | 125 | 1110(Rn:4)(imm:8s) MOV #imm, Rn
|
nkeynes@359 | 126 | 0010(Rn:4)(Rm:4)0000 MOV.B Rm, @Rn
|
nkeynes@359 | 127 | 0010(Rn:4)(Rm:4)0100 MOV.B Rm, @-Rn
|
nkeynes@359 | 128 | 0000(Rn:4)(Rm:4)0100 MOV.B Rm, @(R0, Rn)
|
nkeynes@359 | 129 | 11000000(disp:8) MOV.B R0, @(disp, GBR)
|
nkeynes@359 | 130 | 10000000(Rn:4)(disp:4) MOV.B R0, @(disp, Rn)
|
nkeynes@359 | 131 | 0110(Rn:4)(Rm:4)0000 MOV.B @Rm, Rn
|
nkeynes@359 | 132 | 0110(Rn:4)(Rm:4)0100 MOV.B @Rm+, Rn
|
nkeynes@359 | 133 | 0000(Rn:4)(Rm:4)1100 MOV.B @(R0, Rm), Rn
|
nkeynes@359 | 134 | 11000100(disp:8) MOV.B @(disp, GBR), R0
|
nkeynes@359 | 135 | 10000100(Rm:4)(disp:4) MOV.B @(disp, Rm), R0
|
nkeynes@359 | 136 | 0010(Rn:4)(Rm:4)0010 MOV.L Rm, @Rn
|
nkeynes@359 | 137 | 0010(Rn:4)(Rm:4)0110 MOV.L Rm, @-Rn
|
nkeynes@359 | 138 | 0000(Rn:4)(Rm:4)0110 MOV.L Rm, @(R0, Rn)
|
nkeynes@359 | 139 | 11000010(disp:8<<2) MOV.L R0, @(disp, GBR)
|
nkeynes@359 | 140 | 0001(Rn:4)(Rm:4)(disp:4<<2) MOV.L Rm, @(disp, Rn)
|
nkeynes@359 | 141 | 0110(Rn:4)(Rm:4)0010 MOV.L @Rm, Rn
|
nkeynes@359 | 142 | 0110(Rn:4)(Rm:4)0110 MOV.L @Rm+, Rn
|
nkeynes@359 | 143 | 0000(Rn:4)(Rm:4)1110 MOV.L @(R0, Rm), Rn
|
nkeynes@359 | 144 | 11000110(disp:8<<2) MOV.L @(disp, GBR), R0
|
nkeynes@359 | 145 | 1101(Rn:4)(disp:8<<2) MOV.L @(disp, PC), Rn
|
nkeynes@359 | 146 | 0101(Rn:4)(Rm:4)(disp:4<<2) MOV.L @(disp, Rm), Rn
|
nkeynes@359 | 147 | 0010(Rn:4)(Rm:4)0001 MOV.W Rm, @Rn
|
nkeynes@359 | 148 | 0010(Rn:4)(Rm:4)0101 MOV.W Rm, @-Rn
|
nkeynes@359 | 149 | 0000(Rn:4)(Rm:4)0101 MOV.W Rm, @(R0, Rn)
|
nkeynes@359 | 150 | 11000001(disp:8<<1) MOV.W R0, @(disp, GBR)
|
nkeynes@359 | 151 | 10000001(Rn:4)(disp:4<<1) MOV.W R0, @(disp, Rn)
|
nkeynes@359 | 152 | 0110(Rn:4)(Rm:4)0001 MOV.W @Rm, Rn
|
nkeynes@359 | 153 | 0110(Rn:4)(Rm:4)0101 MOV.W @Rm+, Rn
|
nkeynes@359 | 154 | 0000(Rn:4)(Rm:4)1101 MOV.W @(R0, Rm), Rn
|
nkeynes@359 | 155 | 11000101(disp:8<<1) MOV.W @(disp, GBR), R0
|
nkeynes@359 | 156 | 1001(Rn:4)(disp:8<<1) MOV.W @(disp, PC), Rn
|
nkeynes@359 | 157 | 10000101(Rm:4)(disp:4<<1) MOV.W @(disp, Rm), R0
|
nkeynes@359 | 158 | 11000111(disp:8<<2) MOVA @(disp, PC), R0
|
nkeynes@359 | 159 | 0000(Rn:4)11000011 MOVCA.L R0, @Rn
|
nkeynes@359 | 160 | 0000(Rn:4)00101001 MOVT Rn
|
nkeynes@359 | 161 | 0000(Rn:4)(Rm:4)0111 MUL.L Rm, Rn
|
nkeynes@359 | 162 | 0010(Rn:4)(Rm:4)1111 MULS.W Rm, Rn
|
nkeynes@359 | 163 | 0010(Rn:4)(Rm:4)1110 MULU.W Rm, Rn
|
nkeynes@359 | 164 | 0110(Rn:4)(Rm:4)1011 NEG Rm, Rn
|
nkeynes@359 | 165 | 0110(Rn:4)(Rm:4)1010 NEGC Rm, Rn
|
nkeynes@359 | 166 | 0000000000001001 NOP
|
nkeynes@359 | 167 | 0110(Rn:4)(Rm:4)0111 NOT Rm, Rn
|
nkeynes@359 | 168 | 0000(Rn:4)10010011 OCBI @Rn
|
nkeynes@359 | 169 | 0000(Rn:4)10100011 OCBP @Rn
|
nkeynes@359 | 170 | 0000(Rn:4)10110011 OCBWB @Rn
|
nkeynes@359 | 171 | 0010(Rn:4)(Rm:4)1011 OR Rm, Rn
|
nkeynes@359 | 172 | 11001011(imm:8) OR #imm, R0
|
nkeynes@359 | 173 | 11001111(imm:8) OR.B #imm, @(R0, GBR)
|
nkeynes@359 | 174 | 0000(Rn:4)10000011 PREF @Rn
|
nkeynes@359 | 175 | 0100(Rn:4)00100100 ROTCL Rn
|
nkeynes@359 | 176 | 0100(Rn:4)00100101 ROTCR Rn
|
nkeynes@359 | 177 | 0100(Rn:4)00000100 ROTL Rn
|
nkeynes@359 | 178 | 0100(Rn:4)00000101 ROTR Rn
|
nkeynes@359 | 179 | 0000000000101011 RTE
|
nkeynes@359 | 180 | 0000000000001011 RTS
|
nkeynes@359 | 181 | 0000000001011000 SETS
|
nkeynes@359 | 182 | 0000000000011000 SETT
|
nkeynes@359 | 183 | 0100(Rn:4)(Rm:4)1100 SHAD Rm, Rn
|
nkeynes@359 | 184 | 0100(Rn:4)00100000 SHAL Rn
|
nkeynes@359 | 185 | 0100(Rn:4)00100001 SHAR Rn
|
nkeynes@359 | 186 | 0100(Rn:4)(Rm:4)1101 SHLD Rm, Rn
|
nkeynes@359 | 187 | 0100(Rn:4)00000000 SHLL Rn
|
nkeynes@359 | 188 | 0100(Rn:4)00001000 SHLL2 Rn
|
nkeynes@359 | 189 | 0100(Rn:4)00011000 SHLL8 Rn
|
nkeynes@359 | 190 | 0100(Rn:4)00101000 SHLL16 Rn
|
nkeynes@359 | 191 | 0100(Rn:4)00000001 SHLR Rn
|
nkeynes@359 | 192 | 0100(Rn:4)00001001 SHLR2 Rn
|
nkeynes@359 | 193 | 0100(Rn:4)00011001 SHLR8 Rn
|
nkeynes@359 | 194 | 0100(Rn:4)00101001 SHLR16 Rn
|
nkeynes@359 | 195 | 0000000000011011 SLEEP
|
nkeynes@359 | 196 | 0000(Rn:4)00000010 STC SR, Rn
|
nkeynes@359 | 197 | 0000(Rn:4)00010010 STC GBR, Rn
|
nkeynes@359 | 198 | 0000(Rn:4)00100010 STC VBR, Rn
|
nkeynes@359 | 199 | 0000(Rn:4)00110010 STC SSR, Rn
|
nkeynes@359 | 200 | 0000(Rn:4)01000010 STC SPC, Rn
|
nkeynes@359 | 201 | 0000(Rn:4)00111010 STC SGR, Rn
|
nkeynes@359 | 202 | 0000(Rn:4)11111010 STC DBR, Rn
|
nkeynes@359 | 203 | 0000(Rn:4)1(Rm_BANK:3)0010 STC Rm_BANK, Rn
|
nkeynes@359 | 204 | 0100(Rn:4)00000011 STC.L SR, @-Rn
|
nkeynes@359 | 205 | 0100(Rn:4)00100011 STC.L VBR, @-Rn
|
nkeynes@359 | 206 | 0100(Rn:4)00110011 STC.L SSR, @-Rn
|
nkeynes@359 | 207 | 0100(Rn:4)01000011 STC.L SPC, @-Rn
|
nkeynes@359 | 208 | 0100(Rn:4)00110010 STC.L SGR, @-Rn
|
nkeynes@359 | 209 | 0100(Rn:4)11110010 STC.L DBR, @-Rn
|
nkeynes@359 | 210 | 0100(Rn:4)1(Rm_BANK:3)0011 STC.L Rm_BANK, @-Rn
|
nkeynes@359 | 211 | 0100(Rn:4)00010011 STC.L GBR, @-Rn
|
nkeynes@359 | 212 | 0000(Rn:4)01101010 STS FPSCR, Rn
|
nkeynes@359 | 213 | 0100(Rn:4)01100010 STS.L FPSCR, @-Rn
|
nkeynes@359 | 214 | 0000(Rn:4)01011010 STS FPUL, Rn
|
nkeynes@359 | 215 | 0100(Rn:4)01010010 STS.L FPUL, @-Rn
|
nkeynes@359 | 216 | 0000(Rn:4)00001010 STS MACH, Rn
|
nkeynes@359 | 217 | 0100(Rn:4)00000010 STS.L MACH, @-Rn
|
nkeynes@359 | 218 | 0000(Rn:4)00011010 STS MACL, Rn
|
nkeynes@359 | 219 | 0100(Rn:4)00010010 STS.L MACL, @-Rn
|
nkeynes@359 | 220 | 0000(Rn:4)00101010 STS PR, Rn
|
nkeynes@359 | 221 | 0100(Rn:4)00100010 STS.L PR, @-Rn
|
nkeynes@359 | 222 | 0011(Rn:4)(Rm:4)1000 SUB Rm, Rn
|
nkeynes@359 | 223 | 0011(Rn:4)(Rm:4)1010 SUBC Rm, Rn
|
nkeynes@359 | 224 | 0011(Rn:4)(Rm:4)1011 SUBV Rm, Rn
|
nkeynes@359 | 225 | 0110(Rn:4)(Rm:4)1000 SWAP.B Rm, Rn
|
nkeynes@359 | 226 | 0110(Rn:4)(Rm:4)1001 SWAP.W Rm, Rn
|
nkeynes@359 | 227 | 0100(Rn:4)00011011 TAS.B @Rn
|
nkeynes@359 | 228 | 11000011(imm:8) TRAPA #imm
|
nkeynes@359 | 229 | 0010(Rn:4)(Rm:4)1000 TST Rm, Rn
|
nkeynes@359 | 230 | 11001000(imm:8) TST #imm, R0
|
nkeynes@359 | 231 | 11001100(imm:8) TST.B #imm, @(R0, GBR)
|
nkeynes@359 | 232 | 0010(Rn:4)(Rm:4)1010 XOR Rm, Rn
|
nkeynes@359 | 233 | 11001010(imm:8) XOR #imm, R0
|
nkeynes@359 | 234 | 11001110(imm:8) XOR.B #imm, @(R0, GBR)
|
nkeynes@359 | 235 | 0010(Rn:4)(Rm:4)1101 XTRCT Rm, Rn
|
nkeynes@359 | 236 | 1111111111111101 UNDEF
|