⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newcpu.h

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 H
字号:
 /*  * UAE - The Un*x Amiga Emulator  *  * MC68000 emulation  *  * Copyright 1995 Bernd Schmidt  *  * Optimized MC68020 version  * by Anitiriad, for Raine  * with Taito F3-System.  */extern int areg_byteinc[];extern int imm8_table[];extern int movem_index1[256];extern int movem_index2[256];extern int movem_next[256];#if defined(RAINE_DOS) || defined(RAINE_UNIX)typedef void cpuop_func(uae_u32) __attribute__ ((regparm (1)));#elsetypedef void cpuop_func(uae_u32);#endifstruct cputbl{   cpuop_func *handler;   int specific;   uae_u16 opcode;};extern void op_illg(uae_u32);typedef char flagtype;struct regstruct{    uae_u32 regs[16];    uaecptr  usp,isp,msp;    uae_u16 sr;    flagtype t1;    flagtype t0;    flagtype s;    flagtype m;    flagtype x;    flagtype stopped;    int intmask;    uae_u32 pc;    uae_u32 vbr,sfc,dfc;} regs;#define m68k_dreg(r,num) ((r).regs[(num)])#define m68k_areg(r,num) ((r).regs[(num)+8])/*UINT8 RR_ROM;#define get_ibyte(o) ReadByte68k(((&RR_ROM)+regs.pc+(o)+1))#define get_iword(o) ReadWord68k(((&RR_ROM)+regs.pc+(o)))#define get_ilong(o) ReadLong68k(((&RR_ROM)+regs.pc+(o)))*/#define get_ibyte(o) ReadByte68k(&ROM[regs.pc+(o)+1])#define get_iword(o) ReadWord68k(&ROM[regs.pc+(o)])#define get_ilong(o) ReadLong68k(&ROM[regs.pc+(o)])#define get_ibyte_1(o) get_ibyte(o)#define get_iword_1(o) get_iword(o)#define get_ilong_1(o) get_ilong(o)#define m68k_incpc(o) (regs.pc += (o))static DEF_INLINE uae_u32 nextibyte(void){    uae_u32 r = get_ibyte(0);    m68k_incpc(2);    return r;}static DEF_INLINE uae_u32 nextiword(void){    uae_u32 r = get_iword(0);    m68k_incpc(2);    return r;}static DEF_INLINE uae_u32 nextilong(void){    uae_u32 r = get_ilong(0);    m68k_incpc(4);    return r;}static DEF_INLINE void m68k_setpc(uaecptr newpc){    regs.pc = newpc;}static DEF_INLINE uaecptr m68k_getpc(void){    return regs.pc;}#define m68k_setpc_fast m68k_setpc#define m68k_setpc_bcc  m68k_setpc#define m68k_setpc_rte  m68k_setpc#define run_compiled_code() do { } while (0)#define compiler_init() do { } while (0)#define possible_loadseg() do { } while (0)static DEF_INLINE void m68k_setstopped(int stop){    regs.stopped = stop;}static DEF_INLINE uae_u32 get_disp_ea(uae_u32 base, uae_u32 dp){    int reg = (dp >> 12) & 15;    uae_s32 regd = regs.regs[reg];    if ((dp & 0x800) == 0)	regd = (uae_s32)(uae_s16)regd;    regd <<= (dp >> 9) & 3;    if (dp & 0x100) {	uae_s32 outer = 0;	if (dp & 0x80) base = 0;	if (dp & 0x40) regd = 0;	if ((dp & 0x30) == 0x20) base += (uae_s32)(uae_s16)nextiword();	if ((dp & 0x30) == 0x30) base += nextilong();	if ((dp & 0x3) == 0x2) outer = (uae_s32)(uae_s16)nextiword();	if ((dp & 0x3) == 0x3) outer = nextilong();	if ((dp & 0x4) == 0) base += regd;	if (dp & 0x3) base = get_long (base);	if (dp & 0x4) base += regd;	return base + outer;    } else {	return base + (uae_s32)((uae_s8)dp) + regd;    }}extern UINT32 cycles;extern void MakeSR(void);extern void MakeFromSR(void);extern void Exception(int, uaecptr);extern void dump_counts(void);extern void m68k_move2c(int, uae_u32 *);extern void m68k_movec2(int, uae_u32 *);extern void m68k_divl(uae_u32, uae_u32, uae_u16, uaecptr);extern void m68k_mull(uae_u32, uae_u32, uae_u16);extern void init_m68k(void);extern void m68k_go(int);extern void m68k_dumpstate(uaecptr *);extern void m68k_disasm(uaecptr,uaecptr *,int);extern void m68k_reset(void);#define CPU_OP_NAME(a) op ## aextern struct cputbl op_smalltbl[];extern struct cputbl op_direct_smalltbl[];#if defined(RAINE_DOS) || defined(RAINE_UNIX)#define ASM_SYM_FOR_FUNC(a) __asm__(a)extern cpuop_func *cpufunctbl[0x10000];#elseextern cpuop_func *cpufunctbl[0x10000];#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -