mirror of
https://github.com/thunderbrewhq/squall.git
synced 2025-12-12 10:32:29 +00:00
feat(big): add SBigShl
This commit is contained in:
parent
60edadfe06
commit
25c2ad06f1
5 changed files with 212 additions and 0 deletions
|
|
@ -170,6 +170,29 @@ void SetZero(BigBuffer& buffer) {
|
|||
buffer.Clear();
|
||||
}
|
||||
|
||||
void Shl(BigBuffer& a, const BigBuffer& b, uint32_t shift) {
|
||||
auto v4 = shift >> 5;
|
||||
auto v14 = shift & 0x1F;
|
||||
auto v5 = b.Count() + v4 + 1;
|
||||
|
||||
for (uint32_t i = v5 - 1, j = v5 - v4 - 1; i + 1 > 0; i--, j--) {
|
||||
uint32_t v9 = 0;
|
||||
|
||||
if (i >= v4) {
|
||||
v9 = b[j] << v14;
|
||||
|
||||
if (i > v4 && v14) {
|
||||
v9 += b[j - 1] >> (32 - v14);
|
||||
}
|
||||
}
|
||||
|
||||
a[i] = v9;
|
||||
}
|
||||
|
||||
a.SetCount(v5);
|
||||
a.Trim();
|
||||
}
|
||||
|
||||
void Shr(BigBuffer& a, const BigBuffer& b, uint32_t shift) {
|
||||
auto v4 = shift >> 5;
|
||||
auto v9 = shift & 0x1F;
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@ void SetOne(BigBuffer& buffer);
|
|||
|
||||
void SetZero(BigBuffer& buffer);
|
||||
|
||||
void Shl(BigBuffer& a, const BigBuffer& b, uint32_t shift);
|
||||
|
||||
void Shr(BigBuffer& a, const BigBuffer& b, uint32_t shift);
|
||||
|
||||
void Square(BigBuffer& a, const BigBuffer& b, BigStack& stack);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue