[Android] Add another case to ThumbCompressConst
This commit is contained in:
parent
f46f1740c8
commit
cb29d3b98e
|
@ -989,12 +989,23 @@ uint16_t CArmOps::ThumbCompressConst (uint32_t value)
|
|||
{
|
||||
return (uint16_t)((value & 0xFF));
|
||||
}
|
||||
|
||||
//'nnnnnnnn 00000000 nnnnnnnn 00000000'
|
||||
if (((value >> 24) & 0xFF) == ((value >> 8) & 0xFF) &&
|
||||
((value >> 16) & 0xFF) == 0 &&
|
||||
(value & 0xFF) == 0)
|
||||
{
|
||||
return (uint16_t)(0x200 | (value & 0xFF));
|
||||
}
|
||||
|
||||
//'nnnnnnnn nnnnnnnn nnnnnnnn nnnnnnnn'
|
||||
if (((value >> 24) & 0xFF) == (value & 0xFF) &&
|
||||
((value >> 16) & 0xFF) == (value & 0xFF) &&
|
||||
((value >> 8) & 0xFF) == (value & 0xFF))
|
||||
{
|
||||
return (uint16_t)(0x300 | (value & 0xFF));
|
||||
}
|
||||
|
||||
CPU_Message("%s: value >> 24 = %X value >> 16 = %X value >> 8 = %X value = %X", __FUNCTION__, (value >> 24), (value >> 16), (value >> 8), value);
|
||||
CPU_Message("%s: value = %X", __FUNCTION__, value);
|
||||
g_Notify->BreakPoint(__FILE__,__LINE__);
|
||||
|
|
|
@ -177,21 +177,24 @@ protected:
|
|||
static void XorArmRegToArmReg(ArmReg DestReg, ArmReg SourceReg);
|
||||
static void XorArmRegToArmReg(ArmReg DestReg, ArmReg SourceReg1, ArmReg SourceReg2);
|
||||
|
||||
static bool CanThumbCompressConst (uint32_t value);
|
||||
static uint16_t ThumbCompressConst (uint32_t value);
|
||||
|
||||
static void * GetAddressOf(int32_t value, ...);
|
||||
static void SetJump8(uint8_t * Loc, uint8_t * JumpLoc);
|
||||
static void SetJump20(uint32_t * Loc, uint32_t * JumpLoc);
|
||||
|
||||
static CArmRegInfo m_RegWorkingSet;
|
||||
|
||||
protected:
|
||||
static const char * ArmBranchSuffix(ArmBranchCompare CompareType);
|
||||
static const char * ArmRegName(ArmReg Reg);
|
||||
static const char * ArmFpuSingleName(ArmFpuSingle Reg);
|
||||
|
||||
static bool CanThumbCompressConst (uint32_t value);
|
||||
static uint16_t ThumbCompressConst (uint32_t value);
|
||||
|
||||
static void AddCode8(uint8_t value);
|
||||
static void AddCode16(uint16_t value);
|
||||
static void AddCode32(uint32_t value);
|
||||
|
||||
static CArmRegInfo m_RegWorkingSet;
|
||||
};
|
||||
|
||||
#define AddressOf(Addr) CArmOps::GetAddressOf(5,(Addr))
|
||||
|
|
Loading…
Reference in New Issue