Mercurial > repos > blastem
comparison 68kinst.c @ 12:db60ed283d8d
Add mising bit instructions to decoder. Add test assembly file containing most distinct instructions.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 15 Nov 2012 00:52:53 -0800 |
parents | d5e9bac9ebdf |
children | 168b1a873895 |
comparison
equal
deleted
inserted
replaced
11:d5e9bac9ebdf | 12:db60ed283d8d |
---|---|
121 decoded->op = M68K_BSET; | 121 decoded->op = M68K_BSET; |
122 break; | 122 break; |
123 } | 123 } |
124 decoded->src.addr_mode = MODE_REG; | 124 decoded->src.addr_mode = MODE_REG; |
125 decoded->src.params.regs.pri = m68K_reg_quick_field(*istream); | 125 decoded->src.params.regs.pri = m68K_reg_quick_field(*istream); |
126 decoded->extra.size = OPSIZE_LONG; | |
126 istream = m68k_decode_op(istream, OPSIZE_LONG, &(decoded->dst)); | 127 istream = m68k_decode_op(istream, OPSIZE_LONG, &(decoded->dst)); |
127 } else if ((*istream & 0xF00) == 0x800) { | 128 } else if ((*istream & 0xF00) == 0x800) { |
129 //BTST, BCHG, BCLR, BSET | |
130 switch ((*istream >> 6) & 0x3) | |
131 { | |
132 case 0: | |
133 decoded->op = M68K_BTST; | |
134 break; | |
135 case 1: | |
136 decoded->op = M68K_BCHG; | |
137 break; | |
138 case 2: | |
139 decoded->op = M68K_BCLR; | |
140 break; | |
141 case 3: | |
142 decoded->op = M68K_BSET; | |
143 break; | |
144 } | |
145 opmode = (*istream >> 3) & 0x7; | |
146 reg = *istream & 0x7; | |
147 decoded->src.addr_mode = MODE_IMMEDIATE; | |
148 decoded->src.params.u8 = *(++istream); | |
149 decoded->extra.size = OPSIZE_BYTE; | |
150 istream = m68k_decode_op_ex(istream, opmode, reg, OPSIZE_BYTE, &(decoded->dst)); | |
128 } else if ((*istream & 0xC0) == 0xC0) { | 151 } else if ((*istream & 0xC0) == 0xC0) { |
129 #ifdef M68020 | 152 #ifdef M68020 |
130 //CMP2, CHK2, CAS, CAS2, RTM, CALLM | 153 //CMP2, CHK2, CAS, CAS2, RTM, CALLM |
131 #endif | 154 #endif |
132 } else { | 155 } else { |
1088 "swap", | 1111 "swap", |
1089 "tas", | 1112 "tas", |
1090 "trap", | 1113 "trap", |
1091 "trapv", | 1114 "trapv", |
1092 "tst", | 1115 "tst", |
1093 "unlnk", | 1116 "unlk", |
1094 "invalid" | 1117 "invalid" |
1095 }; | 1118 }; |
1096 | 1119 |
1097 char * cond_mnem[] = { | 1120 char * cond_mnem[] = { |
1098 "ra", | 1121 "ra", |