Mercurial > repos > blastem
comparison 68kinst.c @ 140:18796a3b0fe2
Fix label names in disassembler
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 31 Dec 2012 11:56:01 -0800 |
parents | e64554246d11 |
children | 4791c0204410 |
comparison
equal
deleted
inserted
replaced
139:cce22fb4c450 | 140:18796a3b0fe2 |
---|---|
1178 case MODE_IMMEDIATE: | 1178 case MODE_IMMEDIATE: |
1179 case MODE_IMMEDIATE_WORD: | 1179 case MODE_IMMEDIATE_WORD: |
1180 return sprintf(dst, (decoded->params.immed <= 128 ? "%s #%d" : "%s #$%X"), c, decoded->params.immed); | 1180 return sprintf(dst, (decoded->params.immed <= 128 ? "%s #%d" : "%s #$%X"), c, decoded->params.immed); |
1181 case MODE_ABSOLUTE_SHORT: | 1181 case MODE_ABSOLUTE_SHORT: |
1182 if (labels) { | 1182 if (labels) { |
1183 return sprintf(dst, "%s ADDR_%X.w", c, decoded->params.immed); | 1183 return sprintf(dst, "%s ADR_%X.w", c, decoded->params.immed); |
1184 } else { | 1184 } else { |
1185 return sprintf(dst, "%s $%X.w", c, decoded->params.immed); | 1185 return sprintf(dst, "%s $%X.w", c, decoded->params.immed); |
1186 } | 1186 } |
1187 case MODE_ABSOLUTE: | 1187 case MODE_ABSOLUTE: |
1188 if (labels) { | 1188 if (labels) { |
1189 return sprintf(dst, "%s ADDR_%X.l", c, decoded->params.immed); | 1189 return sprintf(dst, "%s ADR_%X.l", c, decoded->params.immed); |
1190 } else { | 1190 } else { |
1191 return sprintf(dst, "%s $%X", c, decoded->params.immed); | 1191 return sprintf(dst, "%s $%X", c, decoded->params.immed); |
1192 } | 1192 } |
1193 case MODE_PC_DISPLACE: | 1193 case MODE_PC_DISPLACE: |
1194 if (labels) { | 1194 if (labels) { |
1195 return sprintf(dst, "%s ADDR_%X(pc)", c, address + 2 + decoded->params.regs.displacement); | 1195 return sprintf(dst, "%s ADR_%X(pc)", c, address + 2 + decoded->params.regs.displacement); |
1196 } else { | 1196 } else { |
1197 return sprintf(dst, "%s (%d, pc)", c, decoded->params.regs.displacement); | 1197 return sprintf(dst, "%s (%d, pc)", c, decoded->params.regs.displacement); |
1198 } | 1198 } |
1199 case MODE_PC_INDEX_DISP8: | 1199 case MODE_PC_INDEX_DISP8: |
1200 return sprintf(dst, "%s (%d, pc, %c%d.%c)", c, decoded->params.regs.displacement, (decoded->params.regs.sec & 0x10) ? 'a': 'd', (decoded->params.regs.sec >> 1) & 0x7, (decoded->params.regs.sec & 1) ? 'l': 'w'); | 1200 return sprintf(dst, "%s (%d, pc, %c%d.%c)", c, decoded->params.regs.displacement, (decoded->params.regs.sec & 0x10) ? 'a': 'd', (decoded->params.regs.sec >> 1) & 0x7, (decoded->params.regs.sec & 1) ? 'l': 'w'); |
1277 strcpy(dst+ret, cond_mnem[decoded->extra.cond]); | 1277 strcpy(dst+ret, cond_mnem[decoded->extra.cond]); |
1278 ret = strlen(dst); | 1278 ret = strlen(dst); |
1279 if (decoded->op != M68K_SCC) { | 1279 if (decoded->op != M68K_SCC) { |
1280 if (labels) { | 1280 if (labels) { |
1281 if (decoded->op == M68K_DBCC) { | 1281 if (decoded->op == M68K_DBCC) { |
1282 ret += sprintf(dst+ret, " d%d, ADDR_%X", decoded->dst.params.regs.pri, decoded->address + 2 + decoded->src.params.immed); | 1282 ret += sprintf(dst+ret, " d%d, ADR_%X", decoded->dst.params.regs.pri, decoded->address + 2 + decoded->src.params.immed); |
1283 } else { | 1283 } else { |
1284 ret += sprintf(dst+ret, " ADDR_%X", decoded->address + 2 + decoded->src.params.immed); | 1284 ret += sprintf(dst+ret, " ADR_%X", decoded->address + 2 + decoded->src.params.immed); |
1285 } | 1285 } |
1286 } else { | 1286 } else { |
1287 if (decoded->op == M68K_DBCC) { | 1287 if (decoded->op == M68K_DBCC) { |
1288 ret += sprintf(dst+ret, " d%d, #%d <%X>", decoded->dst.params.regs.pri, decoded->src.params.immed, decoded->address + 2 + decoded->src.params.immed); | 1288 ret += sprintf(dst+ret, " d%d, #%d <%X>", decoded->dst.params.regs.pri, decoded->src.params.immed, decoded->address + 2 + decoded->src.params.immed); |
1289 } else { | 1289 } else { |
1293 return ret; | 1293 return ret; |
1294 } | 1294 } |
1295 break; | 1295 break; |
1296 case M68K_BSR: | 1296 case M68K_BSR: |
1297 if (labels) { | 1297 if (labels) { |
1298 ret = sprintf(dst, "bsr%s ADDR_%X", decoded->variant == VAR_BYTE ? ".s" : "", | 1298 ret = sprintf(dst, "bsr%s ADR_%X", decoded->variant == VAR_BYTE ? ".s" : "", |
1299 decoded->address + 2 + decoded->src.params.immed); | 1299 decoded->address + 2 + decoded->src.params.immed); |
1300 } else { | 1300 } else { |
1301 ret = sprintf(dst, "bsr%s #%d <%X>", decoded->variant == VAR_BYTE ? ".s" : "", decoded->src.params.immed, decoded->address + 2 + decoded->src.params.immed); | 1301 ret = sprintf(dst, "bsr%s #%d <%X>", decoded->variant == VAR_BYTE ? ".s" : "", decoded->src.params.immed, decoded->address + 2 + decoded->src.params.immed); |
1302 } | 1302 } |
1303 return ret; | 1303 return ret; |