68kcounter
Version:
68000 ASM source code cycle counter
377 lines (376 loc) • 8.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.aliases = exports.isDirective = exports.Directives = exports.addressingModeGroups = exports.mnemonicGroups = exports.AddressingModes = exports.isQualifier = exports.Qualifiers = exports.isMnemonic = exports.Mnemonics = void 0;
exports.Mnemonics = {
ABCD: "ABCD",
ADD: "ADD",
ADDA: "ADDA",
ADDI: "ADDI",
ADDQ: "ADDQ",
ADDX: "ADDX",
AND: "AND",
ANDI: "ANDI",
ASL: "ASL",
ASR: "ASR",
BCC: "BCC",
BCHG: "BCHG",
BCLR: "BCLR",
BCS: "BCS",
BEQ: "BEQ",
BGE: "BGE",
BGT: "BGT",
BHI: "BHI",
BLE: "BLE",
BLT: "BLT",
BMI: "BMI",
BNE: "BNE",
BPL: "BPL",
BRA: "BRA",
BSET: "BSET",
BSR: "BSR",
BTST: "BTST",
BVC: "BVC",
BVS: "BVS",
BLS: "BLS",
CHK: "CHK",
CLR: "CLR",
CMP: "CMP",
CMPA: "CMPA",
CMPI: "CMPI",
CMPM: "CMPM",
DBCC: "DBCC",
DBCS: "DBCS",
DBEQ: "DBEQ",
DBF: "DBF",
DBGE: "DBGE",
DBGT: "DBGT",
DBHI: "DBHI",
DBLE: "DBLE",
DBLT: "DBLT",
DBMI: "DBMI",
DBNE: "DBNE",
DBPL: "DBPL",
DBT: "DBT",
DBVC: "DBVC",
DBVS: "DBVS",
DBLS: "DBLS",
DIVS: "DIVS",
DIVU: "DIVU",
EOR: "EOR",
EORI: "EORI",
EXG: "EXG",
EXT: "EXT",
JMP: "JMP",
JSR: "JSR",
LEA: "LEA",
LINK: "LINK",
LSL: "LSL",
LSR: "LSR",
MOVE: "MOVE",
MOVEA: "MOVEA",
MOVEM: "MOVEM",
MOVEP: "MOVEP",
MOVEQ: "MOVEQ",
MULS: "MULS",
MULU: "MULU",
NBCD: "NBCD",
NEG: "NEG",
NEGX: "NEGX",
NOP: "NOP",
NOT: "NOT",
OR: "OR",
ORI: "ORI",
PEA: "PEA",
RESET: "RESET",
ROL: "ROL",
ROR: "ROR",
ROXL: "ROXL",
ROXR: "ROXR",
RTE: "RTE",
RTR: "RTR",
RTS: "RTS",
SBCD: "SBCD",
SCC: "SCC",
SCS: "SCS",
SEQ: "SEQ",
SGE: "SGE",
SGT: "SGT",
SHI: "SHI",
SLE: "SLE",
SLT: "SLT",
SMI: "SMI",
SNE: "SNE",
SPL: "SPL",
SF: "SF",
ST: "ST",
SLS: "SLS",
STOP: "STOP",
SUB: "SUB",
SUBA: "SUBA",
SUBI: "SUBI",
SUBQ: "SUBQ",
SUBX: "SUBX",
SVC: "SVC",
SVS: "SVS",
SWAP: "SWAP",
TAS: "TAS",
TRAP: "TRAP",
TRAPV: "TRAPV",
TST: "TST",
UNLK: "UNLK",
ILLEGAL: "ILLEGAL",
};
function isMnemonic(v) {
return exports.Mnemonics[v] !== undefined;
}
exports.isMnemonic = isMnemonic;
exports.Qualifiers = {
B: "B",
W: "W",
L: "L",
Q: "Q",
S: "S",
D: "D",
X: "X",
};
function isQualifier(v) {
return exports.Qualifiers[v] !== undefined;
}
exports.isQualifier = isQualifier;
exports.AddressingModes = {
Dn: "Dn",
An: "An",
AnIndir: "(An)",
AnPostInc: "(An)+",
AnPreDec: "-(An)",
AnDisp: "d(An)",
AnDispIx: "d(An,ix)",
PcDisp: "d(PC)",
PcDispIx: "d(PC,ix)",
AbsW: "xxx.W",
AbsL: "xxx.L",
RegList: "RegList",
Imm: "#xxx",
CCR: "ccr",
SR: "sr",
USP: "usp",
};
exports.mnemonicGroups = {
SCC: [
exports.Mnemonics.SCC,
exports.Mnemonics.SCS,
exports.Mnemonics.SEQ,
exports.Mnemonics.SGE,
exports.Mnemonics.SGT,
exports.Mnemonics.SHI,
exports.Mnemonics.SLE,
exports.Mnemonics.SLT,
exports.Mnemonics.SMI,
exports.Mnemonics.SNE,
exports.Mnemonics.SPL,
exports.Mnemonics.SVC,
exports.Mnemonics.SVS,
exports.Mnemonics.ST,
exports.Mnemonics.SF,
exports.Mnemonics.SLS,
],
BCC: [
exports.Mnemonics.BCC,
exports.Mnemonics.BCS,
exports.Mnemonics.BEQ,
exports.Mnemonics.BGE,
exports.Mnemonics.BGT,
exports.Mnemonics.BHI,
exports.Mnemonics.BLE,
exports.Mnemonics.BLT,
exports.Mnemonics.BMI,
exports.Mnemonics.BNE,
exports.Mnemonics.BPL,
exports.Mnemonics.BVC,
exports.Mnemonics.BVS,
exports.Mnemonics.BLS,
],
DBCC: [
exports.Mnemonics.DBCC,
exports.Mnemonics.DBCS,
exports.Mnemonics.DBEQ,
exports.Mnemonics.DBF,
exports.Mnemonics.DBGE,
exports.Mnemonics.DBGT,
exports.Mnemonics.DBHI,
exports.Mnemonics.DBLE,
exports.Mnemonics.DBLT,
exports.Mnemonics.DBMI,
exports.Mnemonics.DBNE,
exports.Mnemonics.DBPL,
exports.Mnemonics.DBT,
exports.Mnemonics.DBVC,
exports.Mnemonics.DBVS,
exports.Mnemonics.DBLS,
],
SHIFT: [
exports.Mnemonics.LSL,
exports.Mnemonics.LSR,
exports.Mnemonics.ASL,
exports.Mnemonics.ASR,
exports.Mnemonics.ROL,
exports.Mnemonics.ROR,
exports.Mnemonics.ROXL,
exports.Mnemonics.ROXR,
],
};
exports.addressingModeGroups = {
EA: [
exports.AddressingModes.Dn,
exports.AddressingModes.An,
exports.AddressingModes.AnIndir,
exports.AddressingModes.AnPostInc,
exports.AddressingModes.AnPreDec,
exports.AddressingModes.AnDisp,
exports.AddressingModes.AnDispIx,
exports.AddressingModes.PcDisp,
exports.AddressingModes.PcDispIx,
exports.AddressingModes.AbsW,
exports.AddressingModes.AbsL,
exports.AddressingModes.Imm,
],
DI: [exports.AddressingModes.Dn, exports.AddressingModes.An, exports.AddressingModes.Imm],
M: [
exports.AddressingModes.AnIndir,
exports.AddressingModes.AnPostInc,
exports.AddressingModes.AnPreDec,
exports.AddressingModes.AnDisp,
exports.AddressingModes.AnDispIx,
exports.AddressingModes.PcDisp,
exports.AddressingModes.PcDispIx,
exports.AddressingModes.AbsW,
exports.AddressingModes.AbsL,
],
};
exports.Directives = {
// Memory:
DC: "DC",
DCB: "DCB",
DS: "DS",
DB: "DB",
DW: "DW",
DL: "DL",
// Sections:
SECTION: "SECTION",
BSS: "BSS",
BSS_C: "BSS_C",
BSS_F: "BSS_F",
CSEG: "CSEG",
CODE: "CODE",
CODE_C: "CODE_C",
CODE_F: "CODE_F",
DATA: "DATA",
DATA_C: "DATA_C",
DATA_F: "DATA_F",
DSEG: "DSEG",
// Assignements:
EQU: "EQU",
FEQU: "FEQU",
"=": "=",
SET: "SET",
// Imports:
INCLUDE: "INCLUDE",
INCDIR: "INCDIR",
INCBIN: "INCBIN",
// Conditions:
IFEQ: "IFEQ",
IFNE: "IFNE",
IFGT: "IFGT",
IFGE: "IFGE",
IFLT: "IFLT",
IFLE: "IFLE",
IFB: "IFB",
IFNB: "IFNB",
IFC: "IFC",
IFNC: "IFNC",
IFD: "IFD",
IFND: "IFND",
IFMACROD: "IFMACROD",
IFMACROND: "IFMACROND",
ELSE: "ELSE",
ENDC: "ENDC",
ENDIF: "ENDIF",
// Macro:
MACRO: "MACRO",
ENDM: "ENDM",
// Repeat:
REPT: "REPT",
ENDR: "ENDR",
// Alignment:
ALIGN: "ALIGN",
EVEN: "EVEN",
ODD: "ODD",
CNOP: "CNOP",
// Other:
OPT: "OPT",
CARGS: "CARGS",
CLRFO: "CLRFO",
CLRSO: "CLRSO",
COMM: "COMM",
COMMENT: "COMMENT",
ECHO: "ECHO",
EINLINE: "EINLINE",
END: "END",
ENDF: "ENDF",
ENDP: "ENDP",
EREM: "EREM",
FAIL: "FAIL",
FPU: "FPU",
IDNT: "IDNT",
INLINE: "INLINE",
JUMPPTR: "JUMPPTR",
LIST: "LIST",
LLEN: "LLEN",
LOAD: "LOAD",
MACHINE: "MACHINE",
MEXIT: "MEXIT",
MMU: "MMU",
NOLIST: "NOLIST",
NOPAGE: "NOPAGE",
NREF: "NREF",
OFFSET: "OFFSET",
OPWORD: "OPWORD",
ORG: "ORG",
OUTPUT: "OUTPUT",
PAGE: "PAGE",
PLEN: "PLEN",
PRINTT: "PRINTT",
PRINTV: "PRINTV",
PUBLIC: "PUBLIC",
RECORD: "RECORD",
REM: "REM",
RORG: "RORG",
RSRESET: "RSRESET",
RSSET: "RSSET",
SETFO: "SETFO",
SETSO: "SETSO",
SPC: "SPC",
TEXT: "TEXT",
TTL: "TTL",
WEAK: "WEAK",
XDEF: "XDEF",
XREF: "XREF",
};
function isDirective(v) {
return exports.Directives[v] !== undefined;
}
exports.isDirective = isDirective;
/**
* Map alternate to canonical mnemonics used in our mappings.
*/
exports.aliases = {
// Non-standard mnemonics
BLO: exports.Mnemonics.BCS,
DBLO: exports.Mnemonics.DBCS,
SLO: exports.Mnemonics.SCS,
DBRA: exports.Mnemonics.DBF,
BHS: exports.Mnemonics.BCC,
DBHS: exports.Mnemonics.DBCC,
SHS: exports.Mnemonics.SCC,
BLK: exports.Directives.DCB,
};