mirror of
https://github.com/asmjit/asmjit.git
synced 2025-12-17 04:24:37 +03:00
Fixed #106
This commit is contained in:
@@ -175,6 +175,13 @@ UNIT(base_intutil) {
|
|||||||
"IntUtil::findFirstBit(%X) should return %u.", (1 << i), i);
|
"IntUtil::findFirstBit(%X) should return %u.", (1 << i), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INFO("IntUtil::keepNOnesFromRight().");
|
||||||
|
EXPECT(IntUtil::keepNOnesFromRight(0xF, 1) == 0x1, "");
|
||||||
|
EXPECT(IntUtil::keepNOnesFromRight(0xF, 2) == 0x3, "");
|
||||||
|
EXPECT(IntUtil::keepNOnesFromRight(0xF, 3) == 0x7, "");
|
||||||
|
EXPECT(IntUtil::keepNOnesFromRight(0x5, 2) == 0x5, "");
|
||||||
|
EXPECT(IntUtil::keepNOnesFromRight(0xD, 2) == 0x5, "");
|
||||||
|
|
||||||
INFO("IntUtil::isAligned().");
|
INFO("IntUtil::isAligned().");
|
||||||
EXPECT(IntUtil::isAligned<size_t>(0xFFFF, 4) == false, "");
|
EXPECT(IntUtil::isAligned<size_t>(0xFFFF, 4) == false, "");
|
||||||
EXPECT(IntUtil::isAligned<size_t>(0xFFF4, 4) == true , "");
|
EXPECT(IntUtil::isAligned<size_t>(0xFFF4, 4) == true , "");
|
||||||
|
|||||||
@@ -382,7 +382,7 @@ struct IntUtil {
|
|||||||
uint32_t m = 0x1;
|
uint32_t m = 0x1;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
nBits -= (mask & m) == 0;
|
nBits -= (mask & m) != 0;
|
||||||
m <<= 1;
|
m <<= 1;
|
||||||
if (nBits == 0) {
|
if (nBits == 0) {
|
||||||
m -= 1;
|
m -= 1;
|
||||||
|
|||||||
@@ -1265,12 +1265,9 @@ struct X86FuncNode : public FuncNode {
|
|||||||
|
|
||||||
_stackFrameRegIndex = kInvalidReg;
|
_stackFrameRegIndex = kInvalidReg;
|
||||||
_isStackFrameRegPreserved = false;
|
_isStackFrameRegPreserved = false;
|
||||||
_stackFrameCopyGpIndex[0] = kInvalidReg;
|
|
||||||
_stackFrameCopyGpIndex[1] = kInvalidReg;
|
for (uint32_t i = 0; i < ASMJIT_ARRAY_SIZE(_stackFrameCopyGpIndex); i++)
|
||||||
_stackFrameCopyGpIndex[2] = kInvalidReg;
|
_stackFrameCopyGpIndex[i] = static_cast<uint8_t>(kInvalidReg);
|
||||||
_stackFrameCopyGpIndex[3] = kInvalidReg;
|
|
||||||
_stackFrameCopyGpIndex[4] = kInvalidReg;
|
|
||||||
_stackFrameCopyGpIndex[5] = kInvalidReg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Destroy the `X86FuncNode` instance.
|
//! Destroy the `X86FuncNode` instance.
|
||||||
|
|||||||
@@ -4962,9 +4962,10 @@ static Error X86Context_translatePrologEpilog(X86Context* self, X86FuncNode* fun
|
|||||||
X86GpReg r[8];
|
X86GpReg r[8];
|
||||||
uint32_t numRegs = 0;
|
uint32_t numRegs = 0;
|
||||||
|
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < ASMJIT_ARRAY_SIZE(func->_stackFrameCopyGpIndex); i++)
|
||||||
if (func->_stackFrameCopyGpIndex[i] != kInvalidReg)
|
if (func->_stackFrameCopyGpIndex[i] != kInvalidReg)
|
||||||
r[numRegs++] = gpReg.setIndex(func->_stackFrameCopyGpIndex[i]);
|
r[numRegs++] = gpReg.setIndex(func->_stackFrameCopyGpIndex[i]);
|
||||||
|
ASMJIT_ASSERT(numRegs > 0);
|
||||||
|
|
||||||
int32_t dSrc = func->getPushPopStackSize() + regSize;
|
int32_t dSrc = func->getPushPopStackSize() + regSize;
|
||||||
int32_t dDst = func->getAlignStackSize() +
|
int32_t dDst = func->getAlignStackSize() +
|
||||||
|
|||||||
Reference in New Issue
Block a user