📄 itable.h
字号:
/*
* File: src/cpu/coldfire/mcf5xxx/itable.h
* Purpose: Instruction table for asm/disasm routines
*
* Notes:
*
*/
/********************************************************************/
/*
* Control Registers
*/
const RC rc[] = {
{"CACR", 0x002},
{"ASID", 0x003},
{"ACR0", 0x004},
{"ACR1", 0x005},
{"ACR2", 0x006},
{"ACR3", 0x007},
{"MMUBAR", 0x008},
{"OTHER_A7",0x800},
{"VBR", 0x801},
{"MACSR", 0x804},
{"MASK", 0x805},
{"ACC0", 0x806},
{"ACC", 0x806},
{"ACCEXT01",0x807},
{"ACCEXT23",0x808},
{"ACC1", 0x809},
{"ACC2", 0x80A},
{"ACC3", 0x80B},
{"SR", 0x80E},
{"PC", 0x80F},
{"ROMBAR0", 0xC00},
{"ROMBAR", 0xC00},
{"ROMBAR1", 0xC01},
{"RAMBAR0", 0xC04},
{"RAMBAR", 0xC04},
{"RAMBAR1", 0xC05},
{"MPCR", 0xC0C},
{"EDRAMBAR",0xC0D},
{"MBAR2", 0xC0E},
{"SECMBAR", 0xC0E},
{"MBAR", 0xC0F},
{"MBAR1", 0xC0F}
};
const int
RCSIZE = sizeof(rc)/sizeof(RC);
/********************************************************************/
const INSTRENTRY isa[] = {
/* LINE 0000 */
{0xFFF8,0x0080,"ORI", DRD,func6,AFUN3}, /* ORI.L #<data>,Dn */
{0xFFF8,0x0280,"ANDI", DRD,func6,AFUN3}, /* ANDI.L #<data>,Dn */
{0xFFF8,0x0480,"SUBI", DRD,func6,AFUN3}, /* SUBI.L #<data>,Dn */
{0xFFF8,0x0680,"ADDI", DRD,func6,AFUN3}, /* ADDI.L #<data>,Dn */
{0xFFF8,0x0A80,"EORI", DRD,func6,AFUN3}, /* EORI.L #<data>,Dn */
{0xFFF8,0x0C80,"CMPI", DRD,func6,AFUN35}, /* CMPI.L #<data>,Dn */
{0xFFC0,0x0800,"BTST", EA_DATA1,func1,AFUN9}, /* BTST #<data>,<ea> */
{0xFFC0,0x0840,"BCHG", EA_DATA1,func1,AFUN9}, /* BCHG #<data>,<ea> */
{0xFFC0,0x08C0,"BSET", EA_DATA1,func1,AFUN9}, /* BSET #<data>,<ea> */
{0xFFC0,0x0880,"BCLR", EA_DATA1,func1,AFUN9}, /* BCLR #<data>,<ea> */
{0xF1C0,0x0100,"BTST", EA_DATA,func7,AFUN9}, /* BTST Dn,<ea> */
{0xF1C0,0x0140,"BCHG", EA_DATALT1,func7,AFUN9},/* BCHG Dn,<ea> */
{0xF1C0,0x01C0,"BSET", EA_DATALT1,func7,AFUN9},/* BSET Dn,<ea> */
{0xF1C0,0x0180,"BCLR", EA_DATALT1,func7,AFUN9},/* BCLR Dn,<ea> */
/* LINE 0001 */
{0xF000,0x1000,"MOVE", EA_ALL /* dest <ea> */,func8,AFUN26}, /* MOVE.B */
/* LINE 0010 */
{0xF1C0,0x2040,"MOVEA", EA_ALL,func26,AFUN26}, /* MOVEA.L */
{0xF000,0x2000,"MOVE", EA_ALL /* dest <ea> */,func8,AFUN26}, /* MOVE.L */
/* LINE 0011 */
{0xF1C0,0x3040,"MOVEA", EA_ALL,func26,AFUN26}, /* MOVEA.W */
{0xF000,0x3000,"MOVE", EA_ALL /* dest <ea> */,func8,AFUN26}, /* MOVE.W */
/* LINE 0100 */
{0xFFFF,0x4AFC,"ILLEGAL",EA_NONE,func17,AFUN1},
{0xFFFF,0x4E71,"NOP", EA_NONE,func17,AFUN1},
{0xFFFF,0x4AC8,"HALT", EA_NONE,func17,AFUN1},
{0xFFFF,0x4BCC,"PULSE", EA_NONE,func17,AFUN1},
{0xFFFF,0x4E73,"RTE", EA_NONE,func17,AFUN1},
{0xFFFF,0x4E75,"RTS", EA_NONE,func17,AFUN1},
{0xFFFF,0x4E72,"STOP", EA_NONE,func23,AFUN2},
{0xFFFF,0x4E7A,"MOVEC", EA_NONE,func36,AFUN25},
{0xFFFF,0x4E7B,"MOVEC", EA_NONE,func36,AFUN25},
{0xFFF8,0x4880,"EXT.W", EA_NONE,func13,NULL}, /* EXT.W Dn */
{0xFFF8,0x48C0,"EXT.L", EA_NONE,func13,NULL}, /* EXT.L Dn */
{0xFFF8,0x49C0,"EXTB.L",EA_NONE,func13,NULL}, /* EXTB.L Dn */
{0x0, 0x4800,"EXT", EA_NONE,func13,AFUN11},
{0x0, 0x49C0,"EXTB", EA_NONE,func13,AFUN4}, /* for assembly routine */
{0xFFF8,0x4840,"SWAP", EA_NONE,func13,AFUN4}, /* SWAP.W Dn */
{0xFFF8,0x4E58,"UNLK", EA_NONE,func21,AFUN7}, /* UNLK An */
{0xFFF8,0x4E50,"LINK", EA_NONE,func16,AFUN6}, /* LINK.W An,#<disp>*/
{0xFFF8,0x40C0,"MOVE", DRD,func9,AFUN26}, /* MOVE.W SR,<ea> */
{0xFFF8,0x42C0,"MOVE", DRD,func11,AFUN26}, /* MOVE.B CCR,<ea> */
{0xFFF8,0x4080,"NEGX", DRD,func15,AFUN4}, /* NEGX.L Dn */
{0xFFF8,0x4480,"NEG", DRD,func15,AFUN4}, /* NEG.L Dn */
{0xFFF8,0x4680,"NOT", DRD,func15,AFUN4}, /* NOT.L Dn */
{0xFFF0,0x4E40,"TRAP", EA_NONE,func22,AFUN13}, /* TRAP #<vector> */
{0xFFC0,0x46C0,"MOVE", (DRD | IM),func10,AFUN26}, /* MOVE to SR */
{0xFFC0,0x4200,"CLR", EA_DATALT1,func15,AFUN10}, /* CLR.B <ea> */
{0xFFC0,0x4240,"CLR", EA_DATALT1,func15,AFUN10}, /* CLR.W <ea> */
{0xFFC0,0x4280,"CLR", EA_DATALT1,func15,AFUN10}, /* CLR.L <ea> */
{0xFFC0,0x44C0,"MOVE", (DRD | IM),func12,AFUN26}, /* MOVE.B <ea>,CCR */
{0xFFC0,0x4840,"PEA", EA_CONTROL,func18,AFUN8}, /* PEA <ea> */
{0xFFC0,0x4A00,"TST" ,EA_ALL,func15,AFUN10}, /* TST.B <ea> */
{0xFFC0,0x4A40,"TST" ,EA_ALL,func15,AFUN10}, /* TST.W <ea> */
{0xFFC0,0x4A80,"TST" ,EA_ALL,func15,AFUN10}, /* TST.L <ea> */
{0xFFC0,0x4C00,"MULS" ,(DRD|ARI|ARIPO|ARIPR|ARID|ARII8),func39,AFUN12}, /* MULS.L */
{0x0, 0x4C00,"MULU" ,EA_DATA,func39,AFUN12}, /* MULU.L */
{0xFFC0,0x4EC0,"JMP", EA_CONTROL,func18,AFUN8}, /* JMP <ea>*/
{0xFFC0,0x4E80,"JSR", EA_CONTROL,func18,AFUN8}, /* JSR <ea>*/
{0xFFC0,0x48C0,"MOVEM", (ARI | ARID),func27,AFUN24},/* MOVEM.L <list>,<ea> */
{0xFFC0,0x4CC0,"MOVEM", (ARI | ARID),func27,AFUN24},/* MOVEM.L <ea>,<list> */
{0xF1C0,0x41C0,"LEA", EA_CONTROL,func32,AFUN14}, /* LEA <ea>*/
/* LINE 0101 */
{0xFFC0,0x50C0,"ST", DRD,func18,AFUN8},
{0xFFC0,0x51C0,"SF", DRD,func18,AFUN8},
{0xFFC0,0x52C0,"SHI", DRD,func18,AFUN8},
{0xFFC0,0x53C0,"SLS", DRD,func18,AFUN8},
{0xFFC0,0x54C0,"SCC", DRD,func18,AFUN8},
{0xFFC0,0x55C0,"SCS", DRD,func18,AFUN8},
{0xFFC0,0x56C0,"SNE", DRD,func18,AFUN8},
{0xFFC0,0x57C0,"SEQ", DRD,func18,AFUN8},
{0xFFC0,0x58C0,"SVC", DRD,func18,AFUN8},
{0xFFC0,0x59C0,"SVS", DRD,func18,AFUN8},
{0xFFC0,0x5AC0,"SPL", DRD,func18,AFUN8},
{0xFFC0,0x5BC0,"SMI", DRD,func18,AFUN8},
{0xFFC0,0x5CC0,"SGE", DRD,func18,AFUN8},
{0xFFC0,0x5DC0,"SLT", DRD,func18,AFUN8},
{0xFFC0,0x5EC0,"SGT", DRD,func18,AFUN8},
{0xFFC0,0x5FC0,"SLE", DRD,func18,AFUN8},
{0xF1C0,0x5080,"ADDQ", EA_ALTER1,func29,AFUN16}, /* ADDQ.L #<data>,<ea> */
{0xF1C0,0x5180,"SUBQ", EA_ALTER1,func29,AFUN16}, /* SUBQ.L #<data>,<ea> */
/* LINE 0110 */
{0xFF00,0x6000,"BRA", EA_NONE,func25,AFUN18},
{0xFF00,0x6100,"BSR", EA_NONE,func25,AFUN18},
{0xFF00,0x6200,"BHI", EA_NONE,func25,AFUN18},
{0xFF00,0x6300,"BLS", EA_NONE,func25,AFUN18},
{0xFF00,0x6400,"BCC", EA_NONE,func25,AFUN18},
{0xFF00,0x6500,"BCS", EA_NONE,func25,AFUN18},
{0xFF00,0x6600,"BNE", EA_NONE,func25,AFUN18},
{0xFF00,0x6700,"BEQ", EA_NONE,func25,AFUN18},
{0xFF00,0x6800,"BVC", EA_NONE,func25,AFUN18},
{0xFF00,0x6900,"BVS", EA_NONE,func25,AFUN18},
{0xFF00,0x6A00,"BPL", EA_NONE,func25,AFUN18},
{0xFF00,0x6B00,"BMI", EA_NONE,func25,AFUN18},
{0xFF00,0x6C00,"BGE", EA_NONE,func25,AFUN18},
{0xFF00,0x6D00,"BLT", EA_NONE,func25,AFUN18},
{0xFF00,0x6E00,"BGT", EA_NONE,func25,AFUN18},
{0xFF00,0x6F00,"BLE", EA_NONE,func25,AFUN18},
/* LINE 0111 */
{0xF100,0x7000,"MOVEQ", EA_NONE,func24,AFUN19}, /* MOVEQ.L #<data>,Dn */
/* LINE 1000 */
{0xF1C0,0x8080,"OR", EA_DATA,func33,AFUN20}, /* OR.L <ea>,Dn */
{0xF1C0,0x8180,"OR", EA_MEMALT1,func31,AFUN20}, /* OR.L Dn,<ea> */
/* LINE 1001 */
{0xF1F8,0x9180,"SUBX", EA_NONE,func14,AFUN23}, /* SUBX.L */
{0xF1C0,0x9080,"SUB", EA_ALL,func33,AFUN20}, /* SUB.L <ea>,Dn */
{0xF1C0,0x9180,"SUB", EA_MEMALT1,func31,AFUN20}, /* SUB.L Dn,<ea> */
{0xF1C0,0x91C0,"SUBA", EA_ALL,func28,AFUN14}, /* SUBA.L <ea>,An */
/* Line 1010 */
#ifdef CPU_MCF_MAC
{0xF1B0,0xA000,"MAC" ,EA_NONE,mac1,AFUN28}, /* MAC */ /*mod*/
{0xF1B0,0xA000,"MSAC" ,EA_NONE,mac1,AFUN28}, /* MSAC */ /*mod*/
{0xF180,0xA080,"MACL" ,EA_MAC1,mac2,AFUN29}, /* MACL */ /*mod*/
{0xF180,0xA080,"MSACL" ,EA_MAC1,mac2,AFUN29}, /* MSACL */ /*mod*/
{0xFFC0,0xA100,"MOVE" ,EA_MAC2,mac3,AFUN26}, /* MOVE.L <ea>,ACC */ /*mod*/
{0xFFC0,0xA900,"MOVE" ,EA_MAC2,mac4,AFUN26}, /* MOVE.L <ea>,MACSR */ /*mod*/
{0xFFC0,0xAD00,"MOVE" ,EA_MAC2,mac8,AFUN26}, /* MOVE.L <ea>,MASK*/ /*mod*/
{0xFFFF,0xA9C0,"MOVE" ,EA_NONE,mac7,AFUN26}, /* MOVE.L MACSR,CCR */ /*mod*/
{0xFFF0,0xA180,"MOVE" ,EA_NONE,mac5,AFUN26}, /* MOVE.L ACC,Rx */ /*mod*/
{0xFFF0,0xA980,"MOVE" ,EA_NONE,mac6,AFUN26}, /* MOVE.L MACSR,Rx */ /*mod*/
{0xFFF0,0xAD80,"MOVE" ,EA_NONE,mac9,AFUN26}, /* MOVE.L MASK.Rx*/ /*mod*/
#endif
/* LINE 1011 */
{0xF1C0,0xB080,"CMP" ,EA_ALL,func33,AFUN15}, /* CMP.L <ea>,Dn */
{0xF1C0,0xB1C0,"CMPA" ,EA_ALL,func28,AFUN34}, /* CMPA.L <ea>,Dn */
{0xF1C0,0xB180,"EOR" ,EA_DATALT1,func31,AFUN17}, /* EOR.L Dn,<ea> */
/* LINE 1100 */
{0xF1C0,0xC0C0,"MULU.W",EA_DATA,func38,NULL}, /* MULU.W <ea>,Dn */
{0xF1C0,0xC1C0,"MULS.W",EA_DATA,func38,NULL}, /* MULS.W <ea>,Dn */
{0xF1C0,0xC080,"AND", EA_DATA,func33,AFUN20}, /* AND.L <ea>,Dn */
{0xF1C0,0xC180,"AND", EA_MEMALT1,func31,AFUN20}, /* AND.L Dn,<ea> */
/* LINE 1101 */
{0xF1F0,0xD180,"ADDX", EA_NONE,func14,AFUN23}, /* ADDX.L */
{0xF1C0,0xD1C0,"ADDA", EA_ALL,func28,AFUN14}, /* ADDA.L <ea>,An */
{0xF1C0,0xD080,"ADD", EA_ALL,func33,AFUN20}, /* ADD.L <ea>,Dn */
{0xF1C0,0xD180,"ADD", EA_MEMALT1,func47,AFUN20}, /* ADD.L Dn,<ea> */
{0x0, 0xFFFF, "DC", EA_NONE,func15 ,AFUN27},
/* LINE 1110 */
{0xF1F8,0xE080,"ASR", EA_NONE,func34,AFUN22}, /* ASR.L #<data>,Dy */
{0xF1F8,0xE0A0,"ASR", EA_NONE,func35,AFUN22}, /* ASR.L Dx,Dy */
{0xF1F8,0xE180,"ASL", EA_NONE,func34,AFUN22}, /* ASL.L #<data>,Dy */
{0xF1F8,0xE1A0,"ASL", EA_NONE,func35,AFUN22}, /* ASL.L Dx,Dy */
{0xF1F8,0xE088,"LSR", EA_NONE,func34,AFUN22}, /* LSR.L #<data>,Dy */
{0xF1F8,0xE0A8,"LSR", EA_NONE,func35,AFUN22}, /* LSR.L Dx,Dy */
{0xF1F8,0xE188,"LSL", EA_NONE,func34,AFUN22}, /* LSL.L #<data>,Dy */
{0xF1F8,0xE1A8,"LSL", EA_NONE,func35,AFUN22}, /* LSL.L Dx,Dy */
/* LINE 1111 */
{0xFFC0,0xFB00,"WDDATA",EA_MEMALT1,func15,AFUN10}, /* WDDATA.b <ea> */
{0xFFC0,0xFB40,"WDDATA",EA_MEMALT1,func15,AFUN10}, /* WDDATA.w <ea> */
{0xFFC0,0xFB80,"WDDATA",EA_MEMALT1,func15,AFUN10}, /* WDDATA.l <ea> */
{0xFFC0,0xFBC0,"WDEBUG",(ARI | ARID),func37,AFUN21}, /* WDEBUG <ea> */
#ifdef CPU_MCF_DIV
{0xFFC0,0x4C40,"DIVS",EA_DATA1,func55,AFUN36}, /* DIVS.L <ea>,Dn */
{0xFFC0,0x4C40,"DIVU",EA_DATA1,func55,AFUN36}, /* DIVU.L <ea>,Dn */
{0xF1C0,0x81C0,"DIVS",EA_DATA,func54,AFUN36}, /* DIVS.W <ea>,Dn */
{0xF1C0,0x80C0,"DIVU",EA_DATA,func54,AFUN36}, /* DIVU.W <ea>,Dn */
{0xFFC0,0x4C40,"REMS",EA_DATA1,func55,AFUN37}, /* REMS.L <ea>,Dn */
{0xFFC0,0x4C40,"REMU",EA_DATA1,func55,AFUN37}, /* REMU.L <ea>,Dn */
#endif
/* New defines for The ColdFire Instruction Set REV B(mcf5407) instructions */
#ifdef CPU_MCF5407
{0xFFF8,0xF428,"INTOUCH" ,EA_NONE ,func64 ,AFUN30}, /* INTOUCH */
{0xF1C0,0xA140,"MOV3Q" ,EA_ALTER1 ,func65 ,AFUN31}, /* MOV3Q.L */
{0xF180,0x7100,"MVS" ,EA_ALL ,func66 ,AFUN32}, /* MVS.B */
{0xF180,0x7180,"MVZ" ,EA_ALL ,func66 ,AFUN32}, /* MVZ */
{0xFFF8,0x4C80,"SATS" ,DRD ,func15 ,AFUN4}, /* SATS.L */
{0xFFC0,0x4AC0,"TAS" ,EA_MEMALT1 ,func67 ,AFUN33}, /* TAS.B */
{0xF1C0,0xB000,"CMP" ,EA_ALL ,func33 ,AFUN15}, /* CMP.B <ea>,Dn */
{0xF1C0,0xB040,"CMP" ,EA_ALL ,func33 ,AFUN15}, /* CMP.W <ea>,Dn */
{0xF1C0,0xB0C0,"CMPA" ,EA_ALL ,func28 ,AFUN34}, /* CMPA.W <ea>,Dn */
{0xFFF8,0x0C00,"CMPI" ,DRD ,func6 ,AFUN35}, /* CMPI.B #<data>,Dn */
{0xFFF8,0x0C40,"CMPI" ,DRD ,func6 ,AFUN35}, /* CMPI.W #<data>,Dn */
#endif
};
const int
ISASIZE = sizeof(isa)/sizeof(INSTRENTRY);
/********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -