From f0fba32d87b455e85840b064a5af435b96c7d268 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sat, 1 Feb 2020 14:24:02 +0200 Subject: [PATCH] MNEMOFLAG_LOOPMODE --- include/readcpu.h | 2 ++ readcpu.cpp | 62 +++++++++++++++++++++++------------------------ 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/include/readcpu.h b/include/readcpu.h index ed96393e..a814ed52 100644 --- a/include/readcpu.h +++ b/include/readcpu.h @@ -39,6 +39,8 @@ ENUMDECL { MAX_OPCODE_FAMILY } ENUMNAME (instrmnem); +#define MNEMOFLAG_LOOPMODE 2 + struct mnemolookup { instrmnem mnemo; const TCHAR *name; diff --git a/readcpu.cpp b/readcpu.cpp index 9891f5c2..bb668c85 100644 --- a/readcpu.cpp +++ b/readcpu.cpp @@ -16,39 +16,39 @@ int nr_cpuop_funcs; struct mnemolookup lookuptab[] = { { i_ILLG, _T("ILLEGAL"), NULL, 0 }, - { i_OR, _T("OR"), NULL, 1 | 2 }, + { i_OR, _T("OR"), NULL, 1 | MNEMOFLAG_LOOPMODE }, { i_CHK, _T("CHK"), NULL, 0 }, { i_CHK2, _T("CHK2"), NULL, 0 }, - { i_AND, _T("AND"), NULL, 1 | 2 }, - { i_EOR, _T("EOR"), NULL, 1 | 2 }, + { i_AND, _T("AND"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_EOR, _T("EOR"), NULL, 1 | MNEMOFLAG_LOOPMODE }, { i_ORSR, _T("ORSR"), _T("OR"), 0 }, { i_ANDSR, _T("ANDSR"), _T("AND"), 0 }, { i_EORSR, _T("EORSR"), _T("EOR"), 0 }, - { i_SUB, _T("SUB"), NULL, 1 | 2 }, - { i_SUBA, _T("SUBA"), NULL, 1 | 2 }, - { i_SUBX, _T("SUBX"), NULL, 0 | 2 }, - { i_SBCD, _T("SBCD"), NULL, 0 | 2 }, - { i_ADD, _T("ADD"), NULL, 1 | 2 }, - { i_ADDA, _T("ADDA"), NULL, 1 | 2 }, - { i_ADDX, _T("ADDX"), NULL, 0 | 2 }, - { i_ABCD, _T("ABCD"), NULL, 0 | 2 }, - { i_NEG, _T("NEG"), NULL, 1 | 2 }, - { i_NEGX, _T("NEGX"), NULL, 1 | 2 }, - { i_NBCD, _T("NBCD"), NULL, 0 | 2 }, - { i_CLR, _T("CLR"), NULL, 1 | 2 }, - { i_NOT, _T("NOT"), NULL, 1 | 2 }, - { i_TST, _T("TST"), NULL, 1 | 2 }, + { i_SUB, _T("SUB"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_SUBA, _T("SUBA"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_SUBX, _T("SUBX"), NULL, 0 | MNEMOFLAG_LOOPMODE }, + { i_SBCD, _T("SBCD"), NULL, 0 | MNEMOFLAG_LOOPMODE }, + { i_ADD, _T("ADD"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_ADDA, _T("ADDA"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_ADDX, _T("ADDX"), NULL, 0 | MNEMOFLAG_LOOPMODE }, + { i_ABCD, _T("ABCD"), NULL, 0 | MNEMOFLAG_LOOPMODE }, + { i_NEG, _T("NEG"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_NEGX, _T("NEGX"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_NBCD, _T("NBCD"), NULL, 0 | MNEMOFLAG_LOOPMODE }, + { i_CLR, _T("CLR"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_NOT, _T("NOT"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_TST, _T("TST"), NULL, 1 | MNEMOFLAG_LOOPMODE }, { i_BTST, _T("BTST"), NULL, 1 }, { i_BCHG, _T("BCHG"), NULL, 1 }, { i_BCLR, _T("BCLR"), NULL, 1 }, { i_BSET, _T("BSET"), NULL, 1 }, - { i_CMP, _T("CMP"), NULL, 1 | 2 }, - { i_CMPM, _T("CMPM"), NULL, 1 | 2 }, - { i_CMPA, _T("CMPA"), NULL, 1 | 2 }, + { i_CMP, _T("CMP"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_CMPM, _T("CMPM"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_CMPA, _T("CMPA"), NULL, 1 | MNEMOFLAG_LOOPMODE }, { i_MVPRM, _T("MVPRM"), _T("MOVEP"), 0 }, { i_MVPMR, _T("MVPMR"), _T("MOVEP"), 0 }, - { i_MOVE, _T("MOVE"), NULL, 1 | 2 }, - { i_MOVEA, _T("MOVEA"), NULL, 1 | 2 }, + { i_MOVE, _T("MOVE"), NULL, 1 | MNEMOFLAG_LOOPMODE }, + { i_MOVEA, _T("MOVEA"), NULL, 1 | MNEMOFLAG_LOOPMODE }, { i_MVSR2, _T("MVSR2"), _T("MOVE"), 0 }, { i_MV2SR, _T("MV2SR"), _T("MOVE"), 0 }, { i_SWAP, _T("SWAP"), NULL, 0 }, @@ -89,14 +89,14 @@ struct mnemolookup lookuptab[] = { { i_ROR, _T("ROR"), NULL, 0 }, { i_ROXL, _T("ROXL"), NULL, 1 }, { i_ROXR, _T("ROXR"), NULL, 1 }, - { i_ASRW, _T("ASRW"), _T("ASR"), 1 | 2 }, - { i_ASLW, _T("ASLW"), _T("ASL"), 1 | 2 }, - { i_LSRW, _T("LSRW"), _T("LSR"), 1 | 2 }, - { i_LSLW, _T("LSLW"), _T("LSL"), 1 | 2 }, - { i_ROLW, _T("ROLW"), _T("ROL"), 1 | 2 }, - { i_RORW, _T("RORW"), _T("ROR"), 1 | 2 }, - { i_ROXLW, _T("ROXLW"), _T("ROXL"), 1 | 2 }, - { i_ROXRW, _T("ROXRW"), _T("ROXR"), 1 | 2 }, + { i_ASRW, _T("ASRW"), _T("ASR"), 1 | MNEMOFLAG_LOOPMODE }, + { i_ASLW, _T("ASLW"), _T("ASL"), 1 | MNEMOFLAG_LOOPMODE }, + { i_LSRW, _T("LSRW"), _T("LSR"), 1 | MNEMOFLAG_LOOPMODE }, + { i_LSLW, _T("LSLW"), _T("LSL"), 1 | MNEMOFLAG_LOOPMODE }, + { i_ROLW, _T("ROLW"), _T("ROL"), 1 | MNEMOFLAG_LOOPMODE }, + { i_RORW, _T("RORW"), _T("ROR"), 1 | MNEMOFLAG_LOOPMODE }, + { i_ROXLW, _T("ROXLW"), _T("ROXL"), 1 | MNEMOFLAG_LOOPMODE }, + { i_ROXRW, _T("ROXRW"), _T("ROXR"), 1 | MNEMOFLAG_LOOPMODE }, { i_MOVE2C, _T("MOVE2C"), _T("MOVEC"), 0 }, { i_MOVEC2, _T("MOVEC2"), _T("MOVEC"), 0 }, @@ -899,7 +899,7 @@ bool opcode_loop_mode(uae_u16 opcode) if (c->mnemo == lookuptab[i].mnemo) break; } - if (lookuptab[i].flags & 2) { + if (lookuptab[i].flags & MNEMOFLAG_LOOPMODE) { // Source is Dn,An,(An),(An)+,-(An) // Destination is Dn,An,(An),(An)+,-(An) // Both source and destination must not be Dn or An. -- 2.47.3