diff options
Diffstat (limited to 'rust/src')
| -rw-r--r-- | rust/src/low_level_il/operation.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/rust/src/low_level_il/operation.rs b/rust/src/low_level_il/operation.rs index 419a0dcd..fa320060 100644 --- a/rust/src/low_level_il/operation.rs +++ b/rust/src/low_level_il/operation.rs @@ -1754,12 +1754,14 @@ where } } - let mut mask = -1i64 as u64; - - if self.op.size < mem::size_of::<u64>() { - mask <<= self.op.size * 8; - mask = !mask; - } + let mask: u64 = if self.op.size == 0 { + 1 + } else if self.op.size < mem::size_of::<u64>() { + let m = -1i64 << (self.op.size * 8); + !m as u64 + } else { + (-1i64) as u64 + }; self.op.operands[0] & mask } |
