From ce34e879e348cecd4e21329be5974cc4162fa6c4 Mon Sep 17 00:00:00 2001 From: neonloop Date: Wed, 9 Feb 2022 07:15:14 +0000 Subject: Adds experimental ARM dynarec Supports ARMv5 and higher, enable with USE_DYNAREC Makefile variable --- source/arm_dynarec/opgen.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 source/arm_dynarec/opgen.h (limited to 'source/arm_dynarec/opgen.h') diff --git a/source/arm_dynarec/opgen.h b/source/arm_dynarec/opgen.h new file mode 100644 index 0000000..aaa5556 --- /dev/null +++ b/source/arm_dynarec/opgen.h @@ -0,0 +1,26 @@ +/* Macros turn opcode tables into code */ + +#define F8(F) F##8 +#define F16(F) F##16 +#define EF(F) 0, F16(F), F16(F) +#define NF(F) 0, F, F +#define NF8(F) 0, F8(F), F8(F) +#define NF16(F) 0, F16(F), F16(F) +#define MF(F) (CheckEmulation() || CheckMemory()), F8(F), F16(F) +#define XF(F) (CheckEmulation() || CheckIndex()), F8(F), F16(F) + +#define C (Carry) +#define Z (Zero) +#define V (Overflow) +#define NZ (Negative | Zero) +#define NZC (Negative | Zero | Carry) +#define NZV (Negative | Zero | Overflow) +#define NZCV (Negative | Zero | Carry | Overflow) + +switch(opcode = *pc++) { + +#include "opdef.h" + +default: \ + printf("Invalid opcode : 0x%X\n", opcode); \ +} -- cgit v1.2.3