JIT the signed load/store variants too

This commit is contained in:
Sacha committed 2013-02-27 18:05:45 +10:00
1 parent fe8b80c12e
commit 2c59de95e9
3 files changed
+25 -2

No files matched your search

+13 -2
View File
@@ -94,6 +94,8 @@ namespace MIPSComp
}
switch (o)
{
case 32: //R(rt) = (u32)(s32)(s8) ReadMem8 (addr); break; //lb
case 33: //R(rt) = (u32)(s32)(s16)ReadMem16(addr); break; //lh
case 35: //R(rt) = ReadMem32(addr); break; //lw
case 36: //R(rt) = ReadMem8 (addr); break; //lbu
case 37: //R(rt) = ReadMem16(addr); break; //lhu
@@ -108,12 +110,21 @@ namespace MIPSComp
SetR0ToEffectiveAddress(rs, offset);
}
if (o == 35) {
// 32-bit
LDR(gpr.R(rt), R11, R0, true, true);
} else if (o == 36) {
LDRB(gpr.R(rt), R11, R0, true, true);
} else if (o == 37) {
// 16-bit
ADD(R0, R0, R11); // TODO: Merge with next instruction
LDRH(gpr.R(rt), R0);
} else if (o == 33) {
ADD(R0, R0, R11); // TODO: Merge with next instruction
LDRSH(gpr.R(rt), R0);
} else if (o == 36) {
// 8-bit
LDRB(gpr.R(rt), R11, R0, true, true);
} else if (o == 32) {
ADD(R0, R0, R11); // TODO: Merge with next instruction
LDRSB(gpr.R(rt), R0);
}
} else {
Comp_Generic(op);