mame/src/emu/cpu/mips/mips3fe.h
Aaron Giles b735b4be6c New universal dynamic recompiler system. The central module
is drcuml.c, which defines a universal machine language
syntax that can be generated by a frontend recompiler and
then retargeted via a generic backend interface to any of
a number of different architectures. A disassembler for the
UML is also included to allow examination of the generated
UML code.

Currently supported backend architectures include 32-bit x86,
64-bit x86, and a platform-neutral interpreted C backend that
can be used as a fallback for platforms without native 
support. The C backend also performs additional validation
to ensure assumptions are met.

Along with the new architecture is a new MIPS III/IV 
recompiler frontend. This frontend has been rewritten from 
the old x64-specific recompiler to generate UML opcodes
instead. This means that the single recompiler can be used
to target multiple backend architectures and should in
theory produce identical results across all of them.

The old 32-bit and 64-bit MIPS recompilers are now officially
retired. The new system provides similar performance (within
5% generally) to the old system and has similar compatibility.
The only currently known issues are some problems with the
two Gauntlet 3D games.
2008-05-11 22:15:13 +00:00

51 lines
1.5 KiB
C

/***************************************************************************
mips3fe.h
Front-end for MIPS3 recompiler
Copyright Aaron Giles
Released for general non-commercial use under the MAME license
Visit http://mamedev.org for licensing and usage restrictions.
***************************************************************************/
#ifndef __MIPS3FE_H__
#define __MIPS3FE_H__
#include "cpu/drcfe.h"
/***************************************************************************
CONSTANTS
***************************************************************************/
/* register flags */
#define REGFLAG_R(n) (((n) == 0) ? 0 : ((UINT64)1 << (n)))
#define REGFLAG_LO (REGFLAG_R(REG_LO))
#define REGFLAG_HI (REGFLAG_R(REG_HI))
#define REGFLAG_CPR1(n) ((UINT64)1 << (n))
#define REGFLAG_FCC (REGFLAG_CPR1(32))
/***************************************************************************
CONSTANTS
***************************************************************************/
/* this defines a branch targetpc that is dynamic at runtime */
#define BRANCH_TARGET_DYNAMIC (~0)
/* opcode branch flags */
#define OPFLAG_IS_UNCONDITIONAL_BRANCH 0x00000001 /* instruction is unconditional branch */
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
int mips3fe_describe(void *param, opcode_desc *desc);
#endif