| 1 | /* Copyright (c) 1982 Regents of the University of California */ |
| 2 | |
| 3 | static char sccsid[] = "@(#)ops.c 1.3 %G%"; |
| 4 | |
| 5 | /* |
| 6 | * Machine operators. |
| 7 | */ |
| 8 | |
| 9 | #include "defs.h" |
| 10 | #include "ops.h" |
| 11 | |
| 12 | #ifndef public |
| 13 | typedef unsigned char VaxOpcode; |
| 14 | |
| 15 | #define O_HALT 0x00 /* halt */ |
| 16 | #define O_NOP 0x01 /* no operation */ |
| 17 | #define O_REI 0x02 /* return from exception or interrupt */ |
| 18 | #define O_BPT 0x03 /* break point fault */ |
| 19 | #define O_RET 0x04 /* return from called procedure */ |
| 20 | #define O_RSB 0x05 /* return from subroutine */ |
| 21 | #define O_LDPCTX 0x06 /* load process context */ |
| 22 | #define O_SVPCTX 0x07 /* save process context */ |
| 23 | #define O_CVTPS 0x08 /* convert packed to leading separate numeric */ |
| 24 | #define O_CVTSP 0x09 /* convert leading separate numeric to packed */ |
| 25 | #define O_INDEX 0x0A /* compute index */ |
| 26 | #define O_CRC 0x0B /* calculate cyclic redundancy check */ |
| 27 | #define O_PROBER 0x0C /* probe read access */ |
| 28 | #define O_PROBEW 0x0D /* probe write access */ |
| 29 | #define O_INSQUE 0x0E /* insert into queue */ |
| 30 | #define O_REMQUE 0x0F /* remove from queue */ |
| 31 | #define O_BSBB 0x10 /* branch to subroutine with byte disp */ |
| 32 | #define O_BRB 0x11 /* branch with byte disp */ |
| 33 | #define O_BNEQ 0x12 /* branch on not equal (also BNEQU) */ |
| 34 | #define O_BEQL 0x13 /* branch on equal (also BEQLU */ |
| 35 | #define O_BGTR 0x14 /* branch on greater */ |
| 36 | #define O_BLEQ 0x15 /* branch on less or equal */ |
| 37 | #define O_JSB 0x16 /* jump to subroutine */ |
| 38 | #define O_JMP 0x17 /* jump */ |
| 39 | #define O_BGEQ 0x18 /* branch on greater or equal */ |
| 40 | #define O_BLSS 0x19 /* branch on less */ |
| 41 | #define O_BGTRU 0x1A /* branch on greater unsigned */ |
| 42 | #define O_BLEQU 0x1B /* branch on less of equal unsigned */ |
| 43 | #define O_BVC 0x1C /* branch on overflow clear */ |
| 44 | #define O_BVS 0x1D /* branch on overflow set */ |
| 45 | #define O_BCC 0x1E /* branch on carry clear (also BGEQU) */ |
| 46 | #define O_BCS 0x1F /* branch on carry set (also BLSSU) */ |
| 47 | #define O_ADDP4 0x20 /* add packed 4 operand */ |
| 48 | #define O_ADDP6 0x21 /* add packed 6 operand */ |
| 49 | #define O_SUBP4 0x22 /* subtract packed 4 operand */ |
| 50 | #define O_SUBP6 0x23 /* subtract packed 6 operand */ |
| 51 | #define O_CVTPT 0x24 /* convert packed to trailing numeric */ |
| 52 | #define O_MULP 0x25 /* multiply packed */ |
| 53 | #define O_CVTTP 0x26 /* convert trailing numeric to packed */ |
| 54 | #define O_DIVP 0x27 /* divide packed */ |
| 55 | #define O_MOVC3 0x28 /* move character 3 operand */ |
| 56 | #define O_CMPC3 0x29 /* compare character 3 operand */ |
| 57 | #define O_SCANC 0x2A /* scan for character */ |
| 58 | #define O_SPANC 0x2B /* span characters */ |
| 59 | #define O_MOVC5 0x2C /* move character 5 operand */ |
| 60 | #define O_CMPC5 0x2D /* compare character 5 operand */ |
| 61 | #define O_MOVTC 0x2E /* move translated characters */ |
| 62 | #define O_MOVTUC 0x2F /* move translated until character */ |
| 63 | #define O_BSBW 0x30 /* branch to subroutine with word disp */ |
| 64 | #define O_BRW 0x31 /* branch with word disp */ |
| 65 | #define O_CVTWL 0x32 /* convert word to long */ |
| 66 | #define O_CVTWB 0x33 /* convert word to byte */ |
| 67 | #define O_MOVP 0x34 /* move packed */ |
| 68 | #define O_CMPP3 0x35 /* compare packed 3 operand */ |
| 69 | #define O_CVTPL 0x36 /* convert packed to long */ |
| 70 | #define O_CMPP4 0x37 /* compare packed 4 operand */ |
| 71 | #define O_EDITPC 0x38 /* edit packed to character */ |
| 72 | #define O_MATCHC 0x39 /* match characters */ |
| 73 | #define O_LOCC 0x3A /* locate characters */ |
| 74 | #define O_SKPC 0x3B /* skip character */ |
| 75 | #define O_MOVZWL 0x3C /* move zero-extended word to long */ |
| 76 | #define O_ACBW 0x3D /* add compare and branch word */ |
| 77 | #define O_MOVAW 0x3E /* move address of word */ |
| 78 | #define O_PUSHAW 0x3F /* push address of word */ |
| 79 | #define O_ADDF2 0x40 /* add floating 2 operand */ |
| 80 | #define O_ADDF3 0x41 /* add floating 3 operand */ |
| 81 | #define O_SUBF2 0x42 /* subtract floating 2 operand */ |
| 82 | #define O_SUBF3 0x43 /* subtract floating 3 operand */ |
| 83 | #define O_MULF2 0x44 /* multiply floating 2 operand */ |
| 84 | #define O_MULF3 0x45 /* multiply floating 3 operand */ |
| 85 | #define O_DIVF2 0x46 /* divide floating 2 operand */ |
| 86 | #define O_DIVF3 0x47 /* divide floating 3 operand */ |
| 87 | #define O_CVTFB 0x48 /* convert float to byte */ |
| 88 | #define O_CVTFW 0x49 /* convert float to word */ |
| 89 | #define O_CVTFL 0x4A /* convert float to long */ |
| 90 | #define O_CVTRFL 0x4B /* convert rounded float to long */ |
| 91 | #define O_CVTBF 0x4C /* convert byte to float */ |
| 92 | #define O_CVTWF 0x4D /* convert word to float */ |
| 93 | #define O_CVTLF 0x4E /* convert long to float */ |
| 94 | #define O_ACBF 0x4F /* add compare and branch floating */ |
| 95 | #define O_MOVF 0x50 /* move float */ |
| 96 | #define O_CMPF 0x51 /* compare floating */ |
| 97 | #define O_MNEGF 0x52 /* move negated floating */ |
| 98 | #define O_TSTF 0x53 /* test float */ |
| 99 | #define O_EMODF 0x54 /* extended modulus floating */ |
| 100 | #define O_POLYF 0x55 /* evaluate polynomial floating */ |
| 101 | #define O_CVTFD 0x56 /* convert float to double */ |
| 102 | #define O_DUMMY57 0x57 /* RESERVED to DIGITAL */ |
| 103 | #define O_ADAWI 0x58 /* add aligned word interlocked */ |
| 104 | #define O_DUMMY59 0x59 /* RESERVED to DIGITAL */ |
| 105 | #define O_DUMMY5a 0x5A /* RESERVED to DIGITAL */ |
| 106 | #define O_DUMMY5b 0x5B /* RESERVED to DIGITAL */ |
| 107 | #define O_INSQHI 0x5C /* insert into queue head, interlocked */ |
| 108 | #define O_INSQTI 0x5D /* insert into queue tail, interlocked */ |
| 109 | #define O_REMQHI 0x5E /* remove from queue head, interlocked */ |
| 110 | #define O_REMQTI 0x5F /* remove from queue tail, interlocked */ |
| 111 | #define O_ADDD2 0x60 /* add double 2 operand */ |
| 112 | #define O_ADDD3 0x61 /* add double 3 operand */ |
| 113 | #define O_SUBD2 0x62 /* subtract double 2 operand */ |
| 114 | #define O_SUBD3 0x63 /* subtrace double 3 operand */ |
| 115 | #define O_MULD2 0x64 /* multiply double 2 operand */ |
| 116 | #define O_MULD3 0x65 /* multiply double 3 operand */ |
| 117 | #define O_DIVD2 0x66 /* divide double 2 operand */ |
| 118 | #define O_DIVD3 0x67 /* divide double 3 operand */ |
| 119 | #define O_CVTDB 0x68 /* convert double to byte */ |
| 120 | #define O_CVTDW 0x69 /* convert double to word */ |
| 121 | #define O_CVTDL 0x6A /* convert double to long */ |
| 122 | #define O_CVTRDL 0x6B /* convert rounded double to long */ |
| 123 | #define O_CVTBD 0x6C /* convert byte to double */ |
| 124 | #define O_CVTWD 0x6D /* convert word to double */ |
| 125 | #define O_CVTLD 0x6E /* convert long to double */ |
| 126 | #define O_ACBD 0x6F /* add compare and branch double */ |
| 127 | #define O_MOVD 0x70 /* move double */ |
| 128 | #define O_CMPD 0x71 /* compare double */ |
| 129 | #define O_MNEGD 0x72 /* move negated double */ |
| 130 | #define O_TSTD 0x73 /* test double */ |
| 131 | #define O_EMODD 0x74 /* extended modulus double */ |
| 132 | #define O_POLYD 0x75 /* evaluate polynomial double */ |
| 133 | #define O_CVTDF 0x76 /* convert double to float */ |
| 134 | #define O_DUMMY77 0x77 /* RESERVED to DIGITAL */ |
| 135 | #define O_ASHL 0x78 /* arithmetic shift long */ |
| 136 | #define O_ASHQ 0x79 /* arithmetic shift quad */ |
| 137 | #define O_EMUL 0x7A /* extended multiply */ |
| 138 | #define O_EDIV 0x7B /* extended divide */ |
| 139 | #define O_CLRQ 0x7C /* clear quad (also CLRD) */ |
| 140 | #define O_MOVQ 0x7D /* move quad */ |
| 141 | #define O_MOVAQ 0x7E /* move address of quad (also MOVAD) */ |
| 142 | #define O_PUSHAQ 0x7F /* push address of quad (also PUSHAD) */ |
| 143 | #define O_ADDB2 0x80 /* add byte 2 operand */ |
| 144 | #define O_ADDB3 0x81 /* add byte 3 operand */ |
| 145 | #define O_SUBB2 0x82 /* subtract byte 2 operand */ |
| 146 | #define O_SUBB3 0x83 /* subtract byte 3 operand */ |
| 147 | #define O_MULB2 0x84 /* multiply byte 2 operand */ |
| 148 | #define O_MULB3 0x85 /* multiply byte 3 operand */ |
| 149 | #define O_DIVB2 0x86 /* divide byte 2 operand */ |
| 150 | #define O_DIVB3 0x87 /* divide byte 3 operand */ |
| 151 | #define O_BISB2 0x88 /* bit set byte 2 operand */ |
| 152 | #define O_BISB3 0x89 /* bit set byte 3 operand */ |
| 153 | #define O_BICB2 0x8A /* bit clear byte 2 operand */ |
| 154 | #define O_BICB3 0x8B /* bit clear byte 3 operand */ |
| 155 | #define O_XORB2 0x8C /* exclusive or byte 2 operand */ |
| 156 | #define O_XORB3 0x8D /* exclusive or byte 3 operand */ |
| 157 | #define O_MNEGB 0x8E /* move negated byte */ |
| 158 | #define O_CASEB 0x8F /* case byte */ |
| 159 | #define O_MOVB 0x90 /* move byte */ |
| 160 | #define O_CMPB 0x91 /* compare byte */ |
| 161 | #define O_MCOMB 0x92 /* move complemented byte */ |
| 162 | #define O_BITB 0x93 /* bit test byte */ |
| 163 | #define O_CLRB 0x94 /* clear byte */ |
| 164 | #define O_TSTB 0x95 /* test byte */ |
| 165 | #define O_INCB 0x96 /* increment byte */ |
| 166 | #define O_DECB 0x97 /* decrement byte */ |
| 167 | #define O_CVTBL 0x98 /* convert byte to long */ |
| 168 | #define O_CVTBW 0x99 /* convert byte to word */ |
| 169 | #define O_MOVZBL 0x9A /* move zero-extended byte to long */ |
| 170 | #define O_MOVZBW 0x9B /* move zero-extended byte to word */ |
| 171 | #define O_ROTL 0x9C /* rotate long */ |
| 172 | #define O_ACBB 0x9D /* add compare and branch byte */ |
| 173 | #define O_MOVAB 0x9E /* move address of byte */ |
| 174 | #define O_PUSHAB 0x9F /* push address of byte */ |
| 175 | #define O_ADDW2 0xA0 /* add word 2 operand */ |
| 176 | #define O_ADDW3 0xA1 /* add word 3 operand */ |
| 177 | #define O_SUBW2 0xA2 /* subtract word 2 operand */ |
| 178 | #define O_SUBW3 0xA3 /* subtract word 3 operand */ |
| 179 | #define O_MULW2 0xA4 /* multiply word 2 operand */ |
| 180 | #define O_MULW3 0xA5 /* multiply word 3 operand */ |
| 181 | #define O_DIVW2 0xA6 /* divide word 2 operand */ |
| 182 | #define O_DIVW3 0xA7 /* divide word 3 operand */ |
| 183 | #define O_BISW2 0xA8 /* bit set word 2 operand */ |
| 184 | #define O_BISW3 0xA9 /* bit set word 3 operand */ |
| 185 | #define O_BICW2 0xAA /* bit clear word 2 operand */ |
| 186 | #define O_BICW3 0xAB /* bit clear word 3 operand */ |
| 187 | #define O_XORW2 0xAC /* exclusive or word 2 operand */ |
| 188 | #define O_XORW3 0xAD /* exclusive or word 3 operand */ |
| 189 | #define O_MNEGW 0xAE /* move negated word */ |
| 190 | #define O_CASEW 0xAF /* case word */ |
| 191 | #define O_MOVW 0xB0 /* move word */ |
| 192 | #define O_CMPW 0xB1 /* compare word */ |
| 193 | #define O_MCOMW 0xB2 /* move complemented word */ |
| 194 | #define O_BITW 0xB3 /* bit test word */ |
| 195 | #define O_CLRW 0xB4 /* clear word */ |
| 196 | #define O_TSTW 0xB5 /* test word */ |
| 197 | #define O_INCW 0xB6 /* increment word */ |
| 198 | #define O_DECW 0xB7 /* decrement word */ |
| 199 | #define O_BISPSW 0xB8 /* bit set processor status word */ |
| 200 | #define O_BICPSW 0xB9 /* bit clear processor status word */ |
| 201 | #define O_POPR 0xBA /* pop register */ |
| 202 | #define O_PUSHR 0xBB /* push register */ |
| 203 | #define O_CHMK 0xBC /* change mode to kernel */ |
| 204 | #define O_CHME 0xBD /* change mode to executive */ |
| 205 | #define O_CHMS 0xBE /* change mode to supervisor */ |
| 206 | #define O_CHMU 0xBF /* change mode to user */ |
| 207 | #define O_ADDL2 0xC0 /* add long 2 operand */ |
| 208 | #define O_ADDL3 0xC1 /* add long 3 operand */ |
| 209 | #define O_SUBL2 0xC2 /* subtract long 2 operand */ |
| 210 | #define O_SUBL3 0xC3 /* subtract long 3 operand */ |
| 211 | #define O_MULL2 0xC4 /* multiply long 2 operand */ |
| 212 | #define O_MULL3 0xC5 /* multiply long 3 operand */ |
| 213 | #define O_DIVL2 0xC6 /* divide long 2 operand */ |
| 214 | #define O_DIVL3 0xC7 /* divide long 3 operand */ |
| 215 | #define O_BISL2 0xC8 /* bit set long 2 operand */ |
| 216 | #define O_BISL3 0xC9 /* bit set long 3 operand */ |
| 217 | #define O_BICL2 0xCA /* bit clear long 2 operand */ |
| 218 | #define O_BICL3 0xCB /* bit clear long 3 operand */ |
| 219 | #define O_XORL2 0xCC /* exclusive or long 2 operand */ |
| 220 | #define O_XORL3 0xCD /* exclusive or long 3 operand */ |
| 221 | #define O_MNEGL 0xCE /* move negated long */ |
| 222 | #define O_CASEL 0xCF /* case long */ |
| 223 | #define O_MOVL 0xD0 /* move long */ |
| 224 | #define O_CMPL 0xD1 /* compare long */ |
| 225 | #define O_MCOML 0xD2 /* move complemented long */ |
| 226 | #define O_BITL 0xD3 /* bit test long */ |
| 227 | #define O_CLRL 0xD4 /* clear long (also CLRF) */ |
| 228 | #define O_TSTL 0xD5 /* test long */ |
| 229 | #define O_INCL 0xD6 /* increment long */ |
| 230 | #define O_DECL 0xD7 /* decrement long */ |
| 231 | #define O_ADWC 0xD8 /* add with carry */ |
| 232 | #define O_SBWC 0xD9 /* subtrace with carry */ |
| 233 | #define O_MTPR 0xDA /* move to processor register */ |
| 234 | #define O_MFPR 0xDB /* move from processor register */ |
| 235 | #define O_MOVPSL 0xDC /* move processor status longword */ |
| 236 | #define O_PUSHL 0xDD /* push long */ |
| 237 | #define O_MOVAL 0xDE /* move address of long (also MOVAF) */ |
| 238 | #define O_PUSHAL 0xDF /* push address of long (also PUSHAF) */ |
| 239 | #define O_BBS 0xE0 /* branch on bit set */ |
| 240 | #define O_BBC 0xE1 /* branch on bit clear */ |
| 241 | #define O_BBSS 0xE2 /* branch on bit set and set */ |
| 242 | #define O_BBCS 0xE3 /* branch on bit clear and set */ |
| 243 | #define O_BBSC 0xE4 /* branch on bit set and clear */ |
| 244 | #define O_BBCC 0xE5 /* branch on bit clear and clear */ |
| 245 | #define O_BBSSI 0xE6 /* branch on bit set and set interlocked */ |
| 246 | #define O_BBCCI 0xE7 /* branch on bit clear and clear interlocked */ |
| 247 | #define O_BLBS 0xE8 /* branch on low bit set */ |
| 248 | #define O_BLBC 0xE9 /* branch on low bit clear */ |
| 249 | #define O_FFS 0xEA /* find first set bit */ |
| 250 | #define O_FFC 0xEB /* find first clear bit */ |
| 251 | #define O_CMPV 0xEC /* compare field */ |
| 252 | #define O_CMPZV 0xED /* compare zero-extended field */ |
| 253 | #define O_EXTV 0xEE /* extract field */ |
| 254 | #define O_EXTZV 0xEF /* extract zero-extended field */ |
| 255 | #define O_INSV 0xF0 /* insert field */ |
| 256 | #define O_ACBL 0xF1 /* add compare and branch long */ |
| 257 | #define O_AOBLSS 0xF2 /* add one and branch on less */ |
| 258 | #define O_AOBLEQ 0xF3 /* add one and branch on less or equal */ |
| 259 | #define O_SOBGEQ 0xF4 /* subtract one and branch on gtr or equal */ |
| 260 | #define O_SOBGTR 0xF5 /* subtract one and branch on greater */ |
| 261 | #define O_CVTLB 0xF6 /* convert long to byte */ |
| 262 | #define O_CVTLW 0xF7 /* convert long to word */ |
| 263 | #define O_ASHP 0xF8 /* arithmetic shift and round packed */ |
| 264 | #define O_CVTLP 0xF9 /* convert long to packed */ |
| 265 | #define O_CALLG 0xFA /* call with general argument list */ |
| 266 | #define O_CALLS 0xFB /* call with stack */ |
| 267 | #define O_XFC 0xFC /* extended function call */ |
| 268 | #define O_ESCD 0xFD /* ESCD to DIGITAL */ |
| 269 | #define O_ESCE 0xFE /* ESCE to DIGITAL */ |
| 270 | #define O_ESCF 0xFF /* ESCF to DIGITAL */ |
| 271 | |
| 272 | /* |
| 273 | * Opcode definitions. |
| 274 | * |
| 275 | * Much of this was taken from the assembler. |
| 276 | */ |
| 277 | |
| 278 | /* |
| 279 | * Argument access types. |
| 280 | */ |
| 281 | |
| 282 | #define ACCA 0100 /* address only */ |
| 283 | #define ACCR 010 /* read */ |
| 284 | #define ACCW 020 /* write */ |
| 285 | #define ACCM 030 /* modify */ |
| 286 | #define ACCB 040 /* branch displacement */ |
| 287 | #define ACCI 050 /* variable field */ |
| 288 | |
| 289 | /* |
| 290 | * Argument lengths. |
| 291 | */ |
| 292 | |
| 293 | #define TYPB 0 /* byte */ |
| 294 | #define TYPW 01 /* word */ |
| 295 | #define TYPL 02 /* long */ |
| 296 | #define TYPQ 03 /* quad */ |
| 297 | #define TYPF 04 /* floating */ |
| 298 | #define TYPD 05 /* double floating */ |
| 299 | |
| 300 | /* |
| 301 | * Addressing modes. |
| 302 | */ |
| 303 | |
| 304 | #define LITSHORT 0x0 /* short literals */ |
| 305 | #define LITUPTO31 0x1 |
| 306 | #define LITUPTO47 0x2 |
| 307 | #define LITUPTO63 0x3 |
| 308 | #define INDEX 0x4 /* i[r] */ |
| 309 | #define REG 0x5 /* r */ |
| 310 | #define REGDEF 0x6 /* (r) */ |
| 311 | #define AUTODEC 0x7 /* -(r) */ |
| 312 | #define AUTOINC 0x8 /* (r)+ */ |
| 313 | #define AUTOINCDEF 0x9 /* *(r)+ */ |
| 314 | #define BYTEDISP 0xA /* BD(r) */ |
| 315 | #define BYTEDISPDEF 0xB /* *BD(r) */ |
| 316 | #define WORDDISP 0xC /* WD(r) */ |
| 317 | #define WORDDISPDEF 0xD /* *WD(r) */ |
| 318 | #define LONGDISP 0xE /* LD(r) */ |
| 319 | #define LONGDISPDEF 0xF /* *LD(r) */ |
| 320 | |
| 321 | #define is_branch_disp(arg) ((arg & ACCB) != 0) |
| 322 | #define typelen(arg) (arg & 07) |
| 323 | #define regnm(mode) (mode & 0xF) |
| 324 | #define addrmode(mode) (mode >> 4) |
| 325 | |
| 326 | /* |
| 327 | * Operator information structure. |
| 328 | */ |
| 329 | |
| 330 | typedef struct { |
| 331 | char *iname; |
| 332 | char val; |
| 333 | char numargs; |
| 334 | char argtype[6]; |
| 335 | } Optab; |
| 336 | |
| 337 | #endif |
| 338 | |
| 339 | public Optab optab[] = { |
| 340 | {"halt", 0x00, 0, 0, 0, 0, 0, 0, 0}, |
| 341 | {"nop", 0x01, 0, 0, 0, 0, 0, 0, 0}, |
| 342 | {"rei", 0x02, 0, 0, 0, 0, 0, 0, 0}, |
| 343 | {"bpt", 0x03, 0, 0, 0, 0, 0, 0, 0}, |
| 344 | {"ret", 0x04, 0, 0, 0, 0, 0, 0, 0}, |
| 345 | {"rsb", 0x05, 0, 0, 0, 0, 0, 0, 0}, |
| 346 | {"ldpctx", 0x06, 0, 0, 0, 0, 0, 0, 0}, |
| 347 | {"svpctx", 0x07, 0, 0, 0, 0, 0, 0, 0}, |
| 348 | {"cvtps", 0x08, 4, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0}, |
| 349 | {"cvtsp", 0x09, 4, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0}, |
| 350 | {"index", 0x0a, 6, ACCR+TYPL, ACCR+TYPL, ACCR+TYPL, ACCR+TYPL, ACCR+TYPL, ACCW+TYPL}, |
| 351 | {"crc", 0x0b, 4, ACCA+TYPB, ACCR+TYPL, ACCR+TYPW, ACCA+TYPB, 0, 0}, |
| 352 | {"prober", 0x0c, 3, ACCR+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0, 0}, |
| 353 | {"probew", 0x0d, 3, ACCR+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0, 0}, |
| 354 | {"insque", 0x0e, 2, ACCA+TYPB, ACCA+TYPB, 0, 0, 0, 0}, |
| 355 | {"remque", 0x0f, 2, ACCA+TYPB, ACCW+TYPL, 0, 0, 0, 0}, |
| 356 | {"bsbb", 0x10, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 357 | {"brb", 0x11, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 358 | {"bneq", 0x12, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 359 | {"beql", 0x13, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 360 | {"bgtr", 0x14, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 361 | {"bleq", 0x15, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 362 | {"jsb", 0x16, 1, ACCA+TYPB, 0, 0, 0, 0, 0}, |
| 363 | {"jmp", 0x17, 1, ACCA+TYPB, 0, 0, 0, 0, 0}, |
| 364 | {"bgeq", 0x18, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 365 | {"blss", 0x19, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 366 | {"bgtru", 0x1a, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 367 | {"blequ", 0x1b, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 368 | {"bvc", 0x1c, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 369 | {"bvs", 0x1d, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 370 | {"bcc", 0x1e, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 371 | {"bcs", 0x1f, 1, ACCB+TYPB, 0, 0, 0, 0, 0}, |
| 372 | {"addp4", 0x20, 4, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0}, |
| 373 | {"addp6", 0x21, 6, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB}, |
| 374 | {"subp4", 0x22, 4, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0}, |
| 375 | {"subp6", 0x23, 6, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB}, |
| 376 | {"cvtpt", 0x24, 5, ACCR+TYPW, ACCA+TYPB, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, 0}, |
| 377 | {"mulp", 0x25, 6, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB}, |
| 378 | {"cvttp", 0x26, 5, ACCR+TYPW, ACCA+TYPB, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, 0}, |
| 379 | {"divp", 0x27, 6, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB}, |
| 380 | {"movc3", 0x28, 3, ACCR+TYPW, ACCA+TYPB, ACCA+TYPB, 0, 0, 0}, |
| 381 | {"cmpc3", 0x29, 3, ACCR+TYPW, ACCA+TYPB, ACCA+TYPB, 0, 0, 0}, |
| 382 | {"scanc", 0x2a, 4, ACCR+TYPW, ACCA+TYPB, ACCA+TYPB, ACCR+TYPB, 0, 0}, |
| 383 | {"spanc", 0x2b, 4, ACCR+TYPW, ACCA+TYPB, ACCA+TYPB, ACCR+TYPB, 0, 0}, |
| 384 | {"movc5", 0x2c, 5, ACCR+TYPW, ACCA+TYPB, ACCR+TYPB, ACCR+TYPW, ACCA+TYPB, 0}, |
| 385 | {"cmpc5", 0x2d, 5, ACCR+TYPW, ACCA+TYPB, ACCR+TYPB, ACCR+TYPW, ACCA+TYPB, 0}, |
| 386 | {"movtc", 0x2e, 6, ACCR+TYPW, ACCA+TYPB, ACCR+TYPB, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB}, |
| 387 | {"movtuc", 0x2f, 6, ACCR+TYPW, ACCA+TYPB, ACCR+TYPB, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB}, |
| 388 | {"bsbw", 0x30, 1, ACCB+TYPW, 0, 0, 0, 0, 0}, |
| 389 | {"brw", 0x31, 1, ACCB+TYPW, 0, 0, 0, 0, 0}, |
| 390 | {"cvtwl", 0x32, 2, ACCR+TYPW, ACCW+TYPL, 0, 0, 0, 0}, |
| 391 | {"cvtwb", 0x33, 2, ACCR+TYPW, ACCW+TYPB, 0, 0, 0, 0}, |
| 392 | {"movp", 0x34, 3, ACCR+TYPW, ACCA+TYPB, ACCA+TYPB, 0, 0, 0}, |
| 393 | {"cmpp3", 0x35, 3, ACCR+TYPW, ACCA+TYPB, ACCA+TYPB, 0, 0, 0}, |
| 394 | {"cvtpl", 0x36, 3, ACCR+TYPW, ACCA+TYPB, ACCW+TYPL, 0, 0, 0}, |
| 395 | {"cmpp4", 0x37, 4, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0}, |
| 396 | {"editpc", 0x38, 4, ACCR+TYPW, ACCA+TYPB, ACCA+TYPB, ACCA+TYPB, 0, 0}, |
| 397 | {"matchc", 0x39, 4, ACCR+TYPW, ACCA+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0}, |
| 398 | {"locc", 0x3a, 3, ACCR+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0, 0}, |
| 399 | {"skpc", 0x3b, 3, ACCR+TYPB, ACCR+TYPW, ACCA+TYPB, 0, 0, 0}, |
| 400 | {"movzwl", 0x3c, 2, ACCR+TYPW, ACCW+TYPL, 0, 0, 0, 0}, |
| 401 | {"acbw", 0x3d, 4, ACCR+TYPW, ACCR+TYPW, ACCM+TYPW, ACCB+TYPW, 0, 0}, |
| 402 | {"movaw", 0x3e, 2, ACCA+TYPW, ACCW+TYPL, 0, 0, 0, 0}, |
| 403 | {"pushaw", 0x3f, 1, ACCA+TYPW, 0, 0, 0, 0, 0}, |
| 404 | {"addf2", 0x40, 2, ACCR+TYPF, ACCM+TYPF, 0, 0, 0, 0}, |
| 405 | {"addf3", 0x41, 3, ACCR+TYPF, ACCR+TYPF, ACCW+TYPF, 0, 0, 0}, |
| 406 | {"subf2", 0x42, 2, ACCR+TYPF, ACCM+TYPF, 0, 0, 0, 0}, |
| 407 | {"subf3", 0x43, 3, ACCR+TYPF, ACCR+TYPF, ACCW+TYPF, 0, 0, 0}, |
| 408 | {"mulf2", 0x44, 2, ACCR+TYPF, ACCM+TYPF, 0, 0, 0, 0}, |
| 409 | {"mulf3", 0x45, 3, ACCR+TYPF, ACCR+TYPF, ACCW+TYPF, 0, 0, 0}, |
| 410 | {"divf2", 0x46, 2, ACCR+TYPF, ACCM+TYPF, 0, 0, 0, 0}, |
| 411 | {"divf3", 0x47, 3, ACCR+TYPF, ACCR+TYPF, ACCW+TYPF, 0, 0, 0}, |
| 412 | {"cvtfb", 0x48, 2, ACCR+TYPF, ACCW+TYPB, 0, 0, 0, 0}, |
| 413 | {"cvtfw", 0x49, 2, ACCR+TYPF, ACCW+TYPW, 0, 0, 0, 0}, |
| 414 | {"cvtfl", 0x4a, 2, ACCR+TYPF, ACCW+TYPL, 0, 0, 0, 0}, |
| 415 | {"cvtrfl", 0x4b, 2, ACCR+TYPF, ACCW+TYPL, 0, 0, 0, 0}, |
| 416 | {"cvtbf", 0x4c, 2, ACCR+TYPB, ACCW+TYPB, 0, 0, 0, 0}, |
| 417 | {"cvtwf", 0x4d, 2, ACCR+TYPW, ACCW+TYPF, 0, 0, 0, 0}, |
| 418 | {"cvtlf", 0x4e, 2, ACCR+TYPL, ACCW+TYPF, 0, 0, 0, 0}, |
| 419 | {"acbf", 0x4f, 4, ACCR+TYPF, ACCR+TYPF, ACCM+TYPF, ACCB+TYPW, 0, 0}, |
| 420 | {"movf", 0x50, 2, ACCR+TYPF, ACCW+TYPF, 0, 0, 0, 0}, |
| 421 | {"cmpf", 0x51, 2, ACCR+TYPF, ACCR+TYPF, 0, 0, 0, 0}, |
| 422 | {"mnegf", 0x52, 2, ACCR+TYPF, ACCW+TYPF, 0, 0, 0, 0}, |
| 423 | {"tstf", 0x53, 1, ACCR+TYPF, 0, 0, 0, 0, 0}, |
| 424 | {"emodf", 0x54, 5, ACCR+TYPF, ACCR+TYPB, ACCR+TYPF, ACCW+TYPL, ACCW+TYPF, 0}, |
| 425 | {"polyf", 0x55, 3, ACCR+TYPF, ACCR+TYPW, ACCA+TYPB, 0, 0, 0}, |
| 426 | {"cvtfd", 0x56, 2, ACCR+TYPF, ACCW+TYPD, 0, 0, 0, 0}, |
| 427 | {"dummy", 0x57, 0, 0, 0, 0, 0, 0, 0}, |
| 428 | {"adawi", 0x58, 2, ACCR+TYPW, ACCM+TYPW, 0, 0, 0, 0}, |
| 429 | {"dummy", 0x59, 0, 0, 0, 0, 0, 0, 0}, |
| 430 | {"dummy", 0x5a, 0, 0, 0, 0, 0, 0, 0}, |
| 431 | {"dummy", 0x5b, 0, 0, 0, 0, 0, 0, 0}, |
| 432 | {"dummy", 0x5c, 0, 0, 0, 0, 0, 0, 0}, |
| 433 | {"dummy", 0x5d, 0, 0, 0, 0, 0, 0, 0}, |
| 434 | {"dummy", 0x5e, 0, 0, 0, 0, 0, 0, 0}, |
| 435 | {"dummy", 0x5f, 0, 0, 0, 0, 0, 0, 0}, |
| 436 | {"addd2", 0x60, 2, ACCR+TYPD, ACCM+TYPD, 0, 0, 0, 0}, |
| 437 | {"addd3", 0x61, 3, ACCR+TYPD, ACCR+TYPD, ACCW+TYPD, 0, 0, 0}, |
| 438 | {"subd2", 0x62, 2, ACCR+TYPD, ACCM+TYPD, 0, 0, 0, 0}, |
| 439 | {"subd3", 0x63, 3, ACCR+TYPD, ACCR+TYPD, ACCW+TYPD, 0, 0, 0}, |
| 440 | {"muld2", 0x64, 2, ACCR+TYPD, ACCM+TYPD, 0, 0, 0, 0}, |
| 441 | {"muld3", 0x65, 3, ACCR+TYPD, ACCR+TYPD, ACCW+TYPD, 0, 0, 0}, |
| 442 | {"divd2", 0x66, 2, ACCR+TYPD, ACCM+TYPD, 0, 0, 0, 0}, |
| 443 | {"divd3", 0x67, 3, ACCR+TYPD, ACCR+TYPD, ACCR+TYPD, 0, 0, 0}, |
| 444 | {"cvtdb", 0x68, 2, ACCR+TYPD, ACCW+TYPB, 0, 0, 0, 0}, |
| 445 | {"cvtdw", 0x69, 2, ACCR+TYPD, ACCW+TYPW, 0, 0, 0, 0}, |
| 446 | {"cvtdl", 0x6a, 2, ACCR+TYPD, ACCW+TYPL, 0, 0, 0, 0}, |
| 447 | {"cvtrdl", 0x6b, 2, ACCR+TYPD, ACCW+TYPL, 0, 0, 0, 0}, |
| 448 | {"cvtbd", 0x6c, 2, ACCR+TYPB, ACCW+TYPD, 0, 0, 0, 0}, |
| 449 | {"cvtwd", 0x6d, 2, ACCR+TYPW, ACCW+TYPD, 0, 0, 0, 0}, |
| 450 | {"cvtld", 0x6e, 2, ACCR+TYPL, ACCW+TYPD, 0, 0, 0, 0}, |
| 451 | {"acbd", 0x6f, 4, ACCR+TYPD, ACCR+TYPD, ACCM+TYPD, ACCB+TYPW, 0, 0}, |
| 452 | {"movd", 0x70, 2, ACCR+TYPD, ACCW+TYPD, 0, 0, 0, 0}, |
| 453 | {"cmpd", 0x71, 2, ACCR+TYPD, ACCR+TYPD, 0, 0, 0, 0}, |
| 454 | {"mnegd", 0x72, 2, ACCR+TYPD, ACCW+TYPD, 0, 0, 0, 0}, |
| 455 | {"tstd", 0x73, 1, ACCR+TYPD, 0, 0, 0, 0, 0}, |
| 456 | {"emodd", 0x74, 5, ACCR+TYPD, ACCR+TYPB, ACCR+TYPD, ACCW+TYPL, ACCW+TYPD, 0}, |
| 457 | {"polyd", 0x75, 3, ACCR+TYPD, ACCR+TYPW, ACCA+TYPB, 0, 0, 0}, |
| 458 | {"cvtdf", 0x76, 2, ACCR+TYPD, ACCW+TYPF, 0, 0, 0, 0}, |
| 459 | {"dummy0x77", 0x77, 0, 0, 0, 0, 0, 0, 0}, |
| 460 | {"ashl", 0x78, 3, ACCR+TYPB, ACCR+TYPL, ACCW+TYPL, 0, 0, 0}, |
| 461 | {"ashq", 0x79, 3, ACCR+TYPB, ACCR+TYPQ, ACCW+TYPQ, 0, 0, 0}, |
| 462 | {"emul", 0x7a, 4, ACCR+TYPL, ACCR+TYPL, ACCR+TYPL, ACCW+TYPQ, 0, 0}, |
| 463 | {"ediv", 0x7b, 4, ACCR+TYPL, ACCR+TYPQ, ACCW+TYPL, ACCW+TYPL, 0, 0}, |
| 464 | {"clrq", 0x7c, 1, ACCW+TYPD, 0, 0, 0, 0, 0}, |
| 465 | {"movq", 0x7d, 2, ACCR+TYPQ, ACCW+TYPQ, 0, 0, 0, 0}, |
| 466 | {"movaq", 0x7e, 2, ACCA+TYPQ, ACCW+TYPL, 0, 0, 0, 0}, |
| 467 | {"pushaq", 0x7f, 1, ACCA+TYPQ, 0, 0, 0, 0, 0}, |
| 468 | {"addb2", 0x80, 2, ACCR+TYPB, ACCM+TYPB, 0, 0, 0, 0}, |
| 469 | {"addb3", 0x81, 3, ACCR+TYPB, ACCR+TYPB, ACCW+TYPB, 0, 0, 0}, |
| 470 | {"subb2", 0x82, 2, ACCR+TYPB, ACCM+TYPB, 0, 0, 0, 0}, |
| 471 | {"subb3", 0x83, 3, ACCR+TYPB, ACCR+TYPB, ACCW+TYPB, 0, 0, 0}, |
| 472 | {"mulb2", 0x84, 2, ACCR+TYPB, ACCM+TYPB, 0, 0, 0, 0}, |
| 473 | {"mulb3", 0x85, 3, ACCR+TYPB, ACCR+TYPB, ACCW+TYPB, 0, 0, 0}, |
| 474 | {"divb2", 0x86, 2, ACCR+TYPB, ACCM+TYPB, 0, 0, 0, 0}, |
| 475 | {"divb3", 0x87, 3, ACCR+TYPB, ACCR+TYPB, ACCW+TYPB, 0, 0, 0}, |
| 476 | {"bisb2", 0x88, 2, ACCR+TYPB, ACCM+TYPB, 0, 0, 0, 0}, |
| 477 | {"bisb3", 0x89, 3, ACCR+TYPB, ACCR+TYPB, ACCW+TYPB, 0, 0, 0}, |
| 478 | {"bicb2", 0x8a, 2, ACCR+TYPB, ACCM+TYPB, 0, 0, 0, 0}, |
| 479 | {"bicb3", 0x8b, 3, ACCR+TYPB, ACCR+TYPB, ACCW+TYPB, 0, 0, 0}, |
| 480 | {"xorb2", 0x8c, 2, ACCR+TYPB, ACCM+TYPB, 0, 0, 0, 0}, |
| 481 | {"xorb3", 0x8d, 3, ACCR+TYPB, ACCR+TYPB, ACCW+TYPB, 0, 0, 0}, |
| 482 | {"mnegb", 0x8e, 2, ACCR+TYPB, ACCW+TYPB, 0, 0, 0, 0}, |
| 483 | {"caseb", 0x8f, 3, ACCR+TYPB, ACCR+TYPB, ACCR+TYPB, 0, 0, 0}, |
| 484 | {"movb", 0x90, 2, ACCR+TYPB, ACCW+TYPB, 0, 0, 0, 0}, |
| 485 | {"cmpb", 0x91, 2, ACCR+TYPB, ACCR+TYPB, 0, 0, 0, 0}, |
| 486 | {"mcomb", 0x92, 2, ACCR+TYPB, ACCW+TYPB, 0, 0, 0, 0}, |
| 487 | {"bitb", 0x93, 2, ACCR+TYPB, ACCR+TYPB, 0, 0, 0, 0}, |
| 488 | {"clrb", 0x94, 1, ACCW+TYPB, 0, 0, 0, 0, 0}, |
| 489 | {"tstb", 0x95, 1, ACCR+TYPB, 0, 0, 0, 0, 0}, |
| 490 | {"incb", 0x96, 1, ACCM+TYPB, 0, 0, 0, 0, 0}, |
| 491 | {"decb", 0x97, 1, ACCM+TYPB, 0, 0, 0, 0, 0}, |
| 492 | {"cvtbl", 0x98, 2, ACCR+TYPB, ACCW+TYPL, 0, 0, 0, 0}, |
| 493 | {"cvtbw", 0x99, 2, ACCR+TYPB, ACCW+TYPW, 0, 0, 0, 0}, |
| 494 | {"movzbl", 0x9a, 2, ACCR+TYPB, ACCW+TYPL, 0, 0, 0, 0}, |
| 495 | {"movzbw", 0x9b, 2, ACCR+TYPB, ACCW+TYPW, 0, 0, 0, 0}, |
| 496 | {"rotl", 0x9c, 3, ACCR+TYPB, ACCR+TYPL, ACCW+TYPL, 0, 0, 0}, |
| 497 | {"acbb", 0x9d, 4, ACCR+TYPB, ACCR+TYPB, ACCM+TYPB, ACCB+TYPW, 0, 0}, |
| 498 | {"movab", 0x9e, 2, ACCA+TYPB, ACCW+TYPL, 0, 0, 0, 0}, |
| 499 | {"pushab", 0x9f, 1, ACCA+TYPB, 0, 0, 0, 0, 0}, |
| 500 | {"addw2", 0xa0, 2, ACCR+TYPW, ACCM+TYPW, 0, 0, 0, 0}, |
| 501 | {"addw3", 0xa1, 3, ACCR+TYPW, ACCR+TYPW, ACCW+TYPW, 0, 0, 0}, |
| 502 | {"subw2", 0xa2, 2, ACCR+TYPW, ACCM+TYPW, 0, 0, 0, 0}, |
| 503 | {"subw3", 0xa3, 3, ACCR+TYPW, ACCR+TYPW, ACCW+TYPW, 0, 0, 0}, |
| 504 | {"mulw2", 0xa4, 2, ACCR+TYPW, ACCM+TYPW, 0, 0, 0, 0}, |
| 505 | {"mulw3", 0xa5, 3, ACCR+TYPW, ACCR+TYPW, ACCW+TYPW, 0, 0, 0}, |
| 506 | {"divw2", 0xa6, 2, ACCR+TYPW, ACCM+TYPW, 0, 0, 0, 0}, |
| 507 | {"divw3", 0xa7, 3, ACCR+TYPW, ACCR+TYPW, ACCW+TYPW, 0, 0, 0}, |
| 508 | {"bisw2", 0xa8, 2, ACCR+TYPW, ACCM+TYPW, 0, 0, 0, 0}, |
| 509 | {"bisw3", 0xa9, 3, ACCR+TYPW, ACCR+TYPW, ACCW+TYPW, 0, 0, 0}, |
| 510 | {"bicw2", 0xaa, 2, ACCR+TYPW, ACCM+TYPW, 0, 0, 0, 0}, |
| 511 | {"bicw3", 0xab, 3, ACCR+TYPW, ACCR+TYPW, ACCW+TYPW, 0, 0, 0}, |
| 512 | {"xorw2", 0xac, 2, ACCR+TYPW, ACCM+TYPW, 0, 0, 0, 0}, |
| 513 | {"xorw3", 0xad, 3, ACCR+TYPW, ACCR+TYPW, ACCW+TYPW, 0, 0, 0}, |
| 514 | {"mnegw", 0xae, 2, ACCR+TYPW, ACCW+TYPL, 0, 0, 0, 0}, |
| 515 | {"casew", 0xaf, 3, ACCR+TYPW, ACCR+TYPW, ACCR+TYPW, 0, 0, 0}, |
| 516 | {"movw", 0xb0, 2, ACCR+TYPW, ACCW+TYPW, 0, 0, 0, 0}, |
| 517 | {"cmpw", 0xb1, 2, ACCR+TYPW, ACCR+TYPW, 0, 0, 0, 0}, |
| 518 | {"mcomw", 0xb2, 2, ACCR+TYPW, ACCW+TYPW, 0, 0, 0, 0}, |
| 519 | {"bitw", 0xb3, 2, ACCR+TYPW, ACCR+TYPW, 0, 0, 0, 0}, |
| 520 | {"clrw", 0xb4, 1, ACCW+TYPW, 0, 0, 0, 0, 0}, |
| 521 | {"tstw", 0xb5, 1, ACCR+TYPW, 0, 0, 0, 0, 0}, |
| 522 | {"incw", 0xb6, 1, ACCM+TYPW, 0, 0, 0, 0, 0}, |
| 523 | {"decw", 0xb7, 1, ACCM+TYPW, 0, 0, 0, 0, 0}, |
| 524 | {"bispsw", 0xb8, 1, ACCR+TYPW, 0, 0, 0, 0, 0}, |
| 525 | {"bicpsw", 0xb9, 1, ACCR+TYPW, 0, 0, 0, 0, 0}, |
| 526 | {"popr", 0xba, 1, ACCR+TYPW, 0, 0, 0, 0, 0}, |
| 527 | {"pushr", 0xbb, 1, ACCR+TYPW, 0, 0, 0, 0, 0}, |
| 528 | {"chmk", 0xbc, 1, ACCR+TYPW, 0, 0, 0, 0, 0}, |
| 529 | {"chme", 0xbd, 1, ACCR+TYPW, 0, 0, 0, 0, 0}, |
| 530 | {"chms", 0xbe, 1, ACCR+TYPW, 0, 0, 0, 0, 0}, |
| 531 | {"chmu", 0xbf, 1, ACCR+TYPW, 0, 0, 0, 0, 0}, |
| 532 | {"addl2", 0xc0, 2, ACCR+TYPL, ACCM+TYPL, 0, 0, 0, 0}, |
| 533 | {"addl3", 0xc1, 3, ACCR+TYPL, ACCR+TYPL, ACCW+TYPL, 0, 0, 0}, |
| 534 | {"subl2", 0xc2, 2, ACCR+TYPL, ACCM+TYPL, 0, 0, 0, 0}, |
| 535 | {"subl3", 0xc3, 3, ACCR+TYPL, ACCR+TYPL, ACCW+TYPL, 0, 0, 0}, |
| 536 | {"mull2", 0xc4, 2, ACCR+TYPL, ACCM+TYPL, 0, 0, 0, 0}, |
| 537 | {"mull3", 0xc5, 3, ACCR+TYPL, ACCR+TYPL, ACCW+TYPL, 0, 0, 0}, |
| 538 | {"divl2", 0xc6, 2, ACCR+TYPL, ACCM+TYPL, 0, 0, 0, 0}, |
| 539 | {"divl3", 0xc7, 3, ACCR+TYPL, ACCR+TYPL, ACCW+TYPL, 0, 0, 0}, |
| 540 | {"bisl2", 0xc8, 2, ACCR+TYPL, ACCM+TYPL, 0, 0, 0, 0}, |
| 541 | {"bisl3", 0xc9, 3, ACCR+TYPL, ACCR+TYPL, ACCW+TYPL, 0, 0, 0}, |
| 542 | {"bicl2", 0xca, 2, ACCR+TYPL, ACCM+TYPL, 0, 0, 0, 0}, |
| 543 | {"bicl3", 0xcb, 3, ACCR+TYPL, ACCR+TYPL, ACCW+TYPL, 0, 0, 0}, |
| 544 | {"xorl2", 0xcc, 2, ACCR+TYPL, ACCM+TYPL, 0, 0, 0, 0}, |
| 545 | {"xorl3", 0xcd, 3, ACCR+TYPL, ACCR+TYPL, ACCW+TYPL, 0, 0, 0}, |
| 546 | {"mnegl", 0xce, 2, ACCR+TYPL, ACCW+TYPL, 0, 0, 0, 0}, |
| 547 | {"casel", 0xcf, 3, ACCR+TYPL, ACCR+TYPL, ACCR+TYPL, 0, 0, 0}, |
| 548 | {"movl", 0xd0, 2, ACCR+TYPL, ACCW+TYPL, 0, 0, 0, 0}, |
| 549 | {"cmpl", 0xd1, 2, ACCR+TYPL, ACCR+TYPL, 0, 0, 0, 0}, |
| 550 | {"mcoml", 0xd2, 2, ACCR+TYPL, ACCW+TYPL, 0, 0, 0, 0}, |
| 551 | {"bitl", 0xd3, 2, ACCR+TYPL, ACCR+TYPL, 0, 0, 0, 0}, |
| 552 | {"clrl", 0xd4, 1, ACCW+TYPL, 0, 0, 0, 0, 0}, |
| 553 | {"tstl", 0xd5, 1, ACCR+TYPL, 0, 0, 0, 0, 0}, |
| 554 | {"incl", 0xd6, 1, ACCM+TYPL, 0, 0, 0, 0, 0}, |
| 555 | {"decl", 0xd7, 1, ACCM+TYPL, 0, 0, 0, 0, 0}, |
| 556 | {"adwc", 0xd8, 2, ACCR+TYPL, ACCM+TYPL, 0, 0, 0, 0}, |
| 557 | {"sbwc", 0xd9, 2, ACCR+TYPL, ACCM+TYPL, 0, 0, 0, 0}, |
| 558 | {"mtpr", 0xda, 2, ACCR+TYPL, ACCR+TYPL, 0, 0, 0, 0}, |
| 559 | {"mfpr", 0xdb, 2, ACCR+TYPL, ACCW+TYPL, 0, 0, 0, 0}, |
| 560 | {"movpsl", 0xdc, 1, ACCW+TYPL, 0, 0, 0, 0, 0}, |
| 561 | {"pushl", 0xdd, 1, ACCR+TYPL, 0, 0, 0, 0, 0}, |
| 562 | {"moval", 0xde, 2, ACCA+TYPL, ACCW+TYPL, 0, 0, 0, 0}, |
| 563 | {"pushal", 0xdf, 1, ACCA+TYPL, 0, 0, 0, 0, 0}, |
| 564 | {"bbs", 0xe0, 3, ACCR+TYPL, ACCR+TYPB, ACCB+TYPB, 0, 0, 0}, |
| 565 | {"bbc", 0xe1, 3, ACCR+TYPL, ACCR+TYPB, ACCB+TYPB, 0, 0, 0}, |
| 566 | {"bbss", 0xe2, 3, ACCR+TYPL, ACCR+TYPB, ACCB+TYPB, 0, 0, 0}, |
| 567 | {"bbcs", 0xe3, 3, ACCR+TYPL, ACCR+TYPB, ACCB+TYPB, 0, 0, 0}, |
| 568 | {"bbsc", 0xe4, 3, ACCR+TYPL, ACCR+TYPB, ACCB+TYPB, 0, 0, 0}, |
| 569 | {"bbcc", 0xe5, 3, ACCR+TYPL, ACCR+TYPB, ACCB+TYPB, 0, 0, 0}, |
| 570 | {"bbssi", 0xe6, 3, ACCR+TYPL, ACCR+TYPB, ACCB+TYPB, 0, 0, 0}, |
| 571 | {"bbcci", 0xe7, 3, ACCR+TYPL, ACCR+TYPB, ACCB+TYPB, 0, 0, 0}, |
| 572 | {"blbs", 0xe8, 2, ACCR+TYPL, ACCB+TYPB, 0, 0, 0, 0}, |
| 573 | {"blbc", 0xe9, 2, ACCR+TYPL, ACCB+TYPB, 0, 0, 0, 0}, |
| 574 | {"ffs", 0xea, 4, ACCR+TYPL, ACCR+TYPB, ACCR+TYPB, ACCW+TYPL, 0, 0}, |
| 575 | {"ffc", 0xeb, 4, ACCR+TYPL, ACCR+TYPB, ACCR+TYPB, ACCW+TYPL, 0, 0}, |
| 576 | {"cmpv", 0xec, 4, ACCR+TYPL, ACCR+TYPB, ACCR+TYPB, ACCR+TYPL, 0, 0}, |
| 577 | {"cmpzv", 0xed, 4, ACCR+TYPL, ACCR+TYPB, ACCR+TYPB, ACCR+TYPL, 0, 0}, |
| 578 | {"extv", 0xee, 4, ACCR+TYPL, ACCR+TYPB, ACCR+TYPB, ACCW+TYPL, 0, 0}, |
| 579 | {"extzv", 0xef, 4, ACCR+TYPL, ACCR+TYPB, ACCR+TYPB, ACCW+TYPL, 0, 0}, |
| 580 | {"insv", 0xf0, 4, ACCR+TYPL, ACCR+TYPL, ACCR+TYPB, ACCW+TYPB, 0, 0}, |
| 581 | {"acbl", 0xf1, 4, ACCR+TYPL, ACCR+TYPL, ACCM+TYPL, ACCB+TYPW, 0, 0}, |
| 582 | {"aoblss", 0xf2, 3, ACCR+TYPL, ACCM+TYPL, ACCB+TYPB, 0, 0, 0}, |
| 583 | {"aobleq", 0xf3, 3, ACCR+TYPL, ACCM+TYPL, ACCB+TYPB, 0, 0, 0}, |
| 584 | {"sobgeq", 0xf4, 2, ACCM+TYPL, ACCB+TYPB, 0, 0, 0, 0}, |
| 585 | {"sobgtr", 0xf5, 2, ACCM+TYPL, ACCB+TYPB, 0, 0, 0, 0}, |
| 586 | {"cvtlb", 0xf6, 2, ACCR+TYPL, ACCW+TYPB, 0, 0, 0, 0}, |
| 587 | {"cvtlw", 0xf7, 2, ACCR+TYPL, ACCW+TYPW, 0, 0, 0, 0}, |
| 588 | {"ashp", 0xf8, 6, ACCR+TYPB, ACCR+TYPW, ACCA+TYPB, ACCR+TYPB, ACCR+TYPW, ACCA+TYPB}, |
| 589 | {"cvtlp", 0xf9, 3, ACCR+TYPL, ACCR+TYPW, ACCA+TYPB, 0, 0, 0}, |
| 590 | {"callg", 0xfa, 2, ACCA+TYPB, ACCA+TYPB, 0, 0, 0, 0}, |
| 591 | {"calls", 0xfb, 2, ACCR+TYPL, ACCA+TYPB, 0, 0, 0, 0}, |
| 592 | {"xfc", 0xfc, 1, ACCI+TYPB, 0, 0, 0, 0, 0}, |
| 593 | {"escd", 0xfd, 0, 0, 0, 0, 0, 0, 0}, |
| 594 | {"esce", 0xfe, 0, 0, 0, 0, 0, 0, 0}, |
| 595 | {"escf", 0xff, 0, 0, 0, 0, 0, 0, 0}, |
| 596 | }; |
| 597 | |
| 598 | /* |
| 599 | * Register names. |
| 600 | */ |
| 601 | |
| 602 | public String regname[] = { |
| 603 | "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", |
| 604 | "r8", "r9", "r10","r11","ap", "fp", "sp", "pc" |
| 605 | }; |
| 606 | |
| 607 | /* |
| 608 | * Floating point immediate operands. |
| 609 | */ |
| 610 | |
| 611 | public String fltimm[] = { |
| 612 | "0.5", "0.5625", "0.625", "0.6875", "0.75", "0.8125", "0.875", "0.9375", |
| 613 | "1.0", "1.125", "1.25", "1.375", "1.5", "1.625", "1.75", "1.875", |
| 614 | "2.0", "2.25", "2.5", "2.75", "3.0", "3.25", "3.5", "3.75", |
| 615 | "4.0", "4.5", "5.0", "5.5", "6.0", "6.5", "7.0", "7.5", |
| 616 | "8.0", "9.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", |
| 617 | "16.0", "18.0", "20.0", "22.0", "24.0", "26.0", "28.0", "30.0", |
| 618 | "32.0", "36.0", "40.0", "44.0", "48.0", "52.0", "56.0", "60.0", |
| 619 | "64.0", "72.0", "80.0", "88.0", "96.0", "104.0", "112.0", "120.0" |
| 620 | }; |