use crate::cpu_details::{CpuDetails, StackFormat};
#[derive(Clone, Copy, Debug, Default)]
pub struct Mc68000;
impl CpuDetails for Mc68000 {
const STACK_FORMAT: StackFormat = StackFormat::MC68000;
const VECTOR_RESET: usize = 40;
fn vector_execution_time(vector: u8) -> usize {
match vector {
2 => 50, 3 => 50, 4 => 34, 5 => 38, 6 => 40, 7 => 34, 8 => 34, 9 => 34, 24..=31 => 44, 32..=47 => 34, _ => Self::VECTOR_RESET, }
}
const EA_ARI: usize = 4;
const EA_ARIWPO: usize = 4;
const EA_ARIWPR: usize = 6;
const EA_ARIWD: usize = 8;
const EA_ARIWI8: usize = 10;
const EA_ABSSHORT: usize = 8;
const EA_ABSLONG: usize = 12;
const EA_PCIWD: usize = 8;
const EA_PCIWI8: usize = 10;
const EA_IMMEDIATE: usize = 4;
const ABCD_REG: usize = 6;
const ABCD_MEM: usize = 18;
const ADD_REG_BW: usize = 4;
const ADD_REG_L: usize = 6;
const ADD_REG_L_RDIMM: usize = 8;
const ADD_MEM_BW: usize = 8;
const ADD_MEM_L: usize = 12;
const ADDA_WORD: usize = 8;
const ADDA_LONG: usize = 6;
const ADDA_LONG_RDIMM: usize = 8;
const ADDI_REG_BW: usize = 8;
const ADDI_REG_L: usize = 16;
const ADDI_MEM_BW: usize = 12;
const ADDI_MEM_L: usize = 20;
const ADDQ_REG_BW: usize = 4;
const ADDQ_REG_L: usize = 8;
const ADDQ_MEM_BW: usize = 8;
const ADDQ_MEM_L: usize = 12;
const ADDX_REG_BW: usize = 4;
const ADDX_REG_L: usize = 8;
const ADDX_MEM_BW: usize = 18;
const ADDX_MEM_L: usize = 30;
const AND_REG_BW: usize = 4;
const AND_REG_L: usize = 6;
const AND_REG_L_RDIMM: usize = 8;
const AND_MEM_BW: usize = 8;
const AND_MEM_L: usize = 12;
const ANDI_REG_BW: usize = 8;
const ANDI_REG_L: usize = 14;
const ANDI_MEM_BW: usize = 12;
const ANDI_MEM_L: usize = 20;
const ANDICCR: usize = 20;
const ANDISR: usize = 20;
const ASM: usize = 8;
const ASR_COUNT: usize = 2;
const ASR_BW: usize = 6;
const ASR_L: usize = 8;
const BCC_BRANCH: usize = 10;
const BCC_NO_BRANCH_BYTE: usize = 8;
const BCC_NO_BRANCH_WORD: usize = 12;
const BCHG_DYN_REG: usize = 8;
const BCHG_DYN_MEM: usize = 8;
const BCHG_STA_REG: usize = 12;
const BCHG_STA_MEM: usize = 12;
const BCLR_DYN_REG: usize = 10;
const BCLR_DYN_MEM: usize = 8;
const BCLR_STA_REG: usize = 14;
const BCLR_STA_MEM: usize = 12;
const BRA_BYTE: usize = 10;
const BRA_WORD: usize = 10;
const BSET_DYN_REG: usize = 8;
const BSET_DYN_MEM: usize = 8;
const BSET_STA_REG: usize = 12;
const BSET_STA_MEM: usize = 12;
const BSR_BYTE: usize = 18;
const BSR_WORD: usize = 18;
const BTST_DYN_REG: usize = 6;
const BTST_DYN_MEM: usize = 4;
const BTST_STA_REG: usize = 10;
const BTST_STA_MEM: usize = 8;
const CHK_NO_TRAP: usize = 10;
const CLR_REG_BW: usize = 4;
const CLR_REG_L: usize = 6;
const CLR_MEM_BW: usize = 8;
const CLR_MEM_L: usize = 12;
const CMP_BW: usize = 4;
const CMP_L: usize = 6;
const CMPA: usize = 6;
const CMPI_REG_BW: usize = 8;
const CMPI_REG_L: usize = 14;
const CMPI_MEM_BW: usize = 8;
const CMPI_MEM_L: usize = 12;
const CMPM_BW: usize = 12;
const CMPM_L: usize = 20;
const DBCC_TRUE: usize = 12;
const DBCC_FALSE_BRANCH: usize = 10;
const DBCC_FALSE_NO_BRANCH: usize = 14;
const DIVS: usize = 158;
const DIVU: usize = 140;
const EOR_REG_BW: usize = 4;
const EOR_REG_L: usize = 8;
const EOR_MEM_BW: usize = 8;
const EOR_MEM_L: usize = 12;
const EORI_REG_BW: usize = 8;
const EORI_REG_L: usize = 16;
const EORI_MEM_BW: usize = 12;
const EORI_MEM_L: usize = 20;
const EORICCR: usize = 20;
const EORISR: usize = 20;
const EXG: usize = 6;
const EXT: usize = 4;
const JMP_ARI: usize = 8;
const JMP_ARIWD: usize = 10;
const JMP_ARIWI8: usize = 14;
const JMP_ABSSHORT: usize = 10;
const JMP_ABSLONG: usize = 12;
const JMP_PCIWD: usize = 10;
const JMP_PCIWI8: usize = 14;
const JSR_ARI: usize = 16;
const JSR_ARIWD: usize = 18;
const JSR_ARIWI8: usize = 22;
const JSR_ABSSHORT: usize = 18;
const JSR_ABSLONG: usize = 20;
const JSR_PCIWD: usize = 18;
const JSR_PCIWI8: usize = 22;
const LEA_ARI: usize = 4;
const LEA_ARIWD: usize = 8;
const LEA_ARIWI8: usize = 12;
const LEA_ABSSHORT: usize = 8;
const LEA_ABSLONG: usize = 12;
const LEA_PCIWD: usize = 8;
const LEA_PCIWI8: usize = 12;
const LINK: usize = 16;
const LSM: usize = 8;
const LSR_COUNT: usize = 2;
const LSR_BW: usize = 6;
const LSR_L: usize = 8;
const MOVE_DST_ARIWPR: usize = 2;
const MOVE_OTHER: usize = 4;
const MOVEA: usize = 4;
const MOVECCR: usize = 12;
const MOVEFSR_REG: usize = 6;
const MOVEFSR_MEM: usize = 8;
const MOVESR: usize = 12;
const MOVEUSP: usize = 4;
const MOVEM_WORD: usize = 4;
const MOVEM_LONG: usize = 8;
const MOVEM_MTR: usize = 4;
const MOVEM_ARI: usize = 8; const MOVEM_ARIWPO: usize = 8;
const MOVEM_ARIWPR: usize = 8;
const MOVEM_ARIWD: usize = 12;
const MOVEM_ARIWI8: usize = 14;
const MOVEM_ABSSHORT: usize = 12;
const MOVEM_ABSLONG: usize = 16;
const MOVEM_PCIWD: usize = 12;
const MOVEM_PCIWI8: usize = 14;
const MOVEP_RTM_WORD: usize = 16;
const MOVEP_RTM_LONG: usize = 24;
const MOVEP_MTR_WORD: usize = 16;
const MOVEP_MTR_LONG: usize = 24;
const MOVEQ: usize = 4;
const MULS: usize = 70;
const MULU: usize = 70;
const NBCD_REG: usize = 6;
const NBCD_MEM: usize = 8;
const NEG_REG_BW: usize = 4;
const NEG_REG_L: usize = 6;
const NEG_MEM_BW: usize = 8;
const NEG_MEM_L: usize = 12;
const NEGX_REG_BW: usize = 4;
const NEGX_REG_L: usize = 6;
const NEGX_MEM_BW: usize = 8;
const NEGX_MEM_L: usize = 12;
const NOP: usize = 4;
const NOT_REG_BW: usize = 4;
const NOT_REG_L: usize = 6;
const NOT_MEM_BW: usize = 8;
const NOT_MEM_L: usize = 12;
const OR_REG_BW: usize = 4;
const OR_REG_L: usize = 6;
const OR_REG_L_RDIMM: usize = 8;
const OR_MEM_BW: usize = 8;
const OR_MEM_L: usize = 12;
const ORI_REG_BW: usize = 8;
const ORI_REG_L: usize = 16;
const ORI_MEM_BW: usize = 12;
const ORI_MEM_L: usize = 20;
const ORICCR: usize = 20;
const ORISR: usize = 20;
const PEA_ARI: usize = 12;
const PEA_ARIWD: usize = 16;
const PEA_ARIWI8: usize = 20;
const PEA_ABSSHORT: usize = 16;
const PEA_ABSLONG: usize = 20;
const PEA_PCIWD: usize = 16;
const PEA_PCIWI8: usize = 20;
const RESET: usize = 132;
const ROM: usize = 8;
const ROR_COUNT: usize = 2;
const ROR_BW: usize = 6;
const ROR_L: usize = 8;
const ROXM: usize = 8;
const ROXR_COUNT: usize = 2;
const ROXR_BW: usize = 6;
const ROXR_L: usize = 8;
const RTE: usize = 20;
const RTR: usize = 20;
const RTS: usize = 16;
const SBCD_REG: usize = 6;
const SBCD_MEM: usize = 18;
const SCC_REG_FALSE: usize = 4;
const SCC_REG_TRUE: usize = 6;
const SCC_MEM_FALSE: usize = 8;
const SCC_MEM_TRUE: usize = 8;
const STOP: usize = 4;
const SUB_REG_BW: usize = 4;
const SUB_REG_L: usize = 6;
const SUB_REG_L_RDIMM: usize = 8;
const SUB_MEM_BW: usize = 8;
const SUB_MEM_L: usize = 12;
const SUBA_WORD: usize = 8;
const SUBA_LONG: usize = 6;
const SUBA_LONG_RDIMM: usize = 8;
const SUBI_REG_BW: usize = 8;
const SUBI_REG_L: usize = 16;
const SUBI_MEM_BW: usize = 12;
const SUBI_MEM_L: usize = 20;
const SUBQ_DREG_BW: usize = 4;
const SUBQ_AREG_BW: usize = 8;
const SUBQ_REG_L: usize = 8;
const SUBQ_MEM_BW: usize = 8;
const SUBQ_MEM_L: usize = 12;
const SUBX_REG_BW: usize = 4;
const SUBX_REG_L: usize = 8;
const SUBX_MEM_BW: usize = 18;
const SUBX_MEM_L: usize = 30;
const SWAP: usize = 4;
const TAS_REG: usize = 4;
const TAS_MEM: usize = 14;
const TRAPV_NO_TRAP: usize = 4;
const TST_REG_BW: usize = 4;
const TST_REG_L: usize = 4;
const TST_MEM_BW: usize = 4;
const TST_MEM_L: usize = 4;
const UNLK: usize = 12;
}