32x: drc: dynamicregister allocator

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@825 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2009-10-23 12:33:02 +00:00
parent 553c3eaa3a
commit c18edb34e6
4 changed files with 191 additions and 70 deletions

View file

@ -254,12 +254,6 @@ static int emith_xbranch(int cond, void *target, int is_call)
#define emith_ctx_write(r, offs) \
EOP_STR_IMM(r, CONTEXT_REG, offs)
#define emith_ctx_sub(val, offs) { \
emith_ctx_read(0, offs); \
emith_sub_r_imm(0, val); \
emith_ctx_write(0, offs); \
}
// upto 4 args
#define emith_pass_arg_r(arg, reg) \
EOP_MOV_REG_SIMPLE(arg, reg)
@ -281,11 +275,7 @@ static int emith_xbranch(int cond, void *target, int is_call)
/* SH2 drc specific */
#define emith_test_t() { \
int r = reg_map_g2h[SHR_SR]; \
if (r == -1) { \
emith_ctx_read(0, SHR_SR * 4); \
r = 0; \
} \
int r = rcache_get_reg(SHR_SR, RC_GR_READ); \
EOP_TST_IMM(r, 0, 1); \
}

View file

@ -54,12 +54,6 @@ enum { xAX = 0, xCX, xDX, xBX, xSP, xBP, xSI, xDI };
EMIT(offs, u8); /* mov [ebp+#offs], tmp */ \
}
#define emith_ctx_sub(val, offs) { \
EMIT_OP_MODRM(0x81, 1, 5, xBP); \
EMIT(offs, u8); \
EMIT(val, u32); /* sub [ebp+#offs], dword val */ \
}
#define emith_jump(ptr) { \
u32 disp = (u32)ptr - ((u32)tcache_ptr + 5); \
EMIT_OP(0xe9); \