- Throw `NullPointerException` if input is null, not
`IllegalArgumentException`.
- `setMemoryDisplacement32()` now zero extends the input
- `getImmediate()` zero-extends the unsigned immediates (`imm{8,16,32}`)
- `ipRelativeMemoryAddress()` clears upper bits if reg is `EIP`
- `initializeSignedImmediate()` allows some more values since Java
doesn't have unsigned numbers. Eg. allow `0xFF80` if it's a
int8->int16 value.
- Encoder had some methods with params with the same name as some of its
fields. Add `this.` to write to the field and not the param.
Most are due to Java having no unsigned numbers.
- `was_ulong = was_uint & 0xFFFF_FFFF` => `was_ulong = (long)was_uint & 0xFFFF_FFFFL`
- `was_ulong & 0xFFFF_FFFF` => `was_ulong & 0xFFFF_FFFFL`
- `was_ulong > 0xFFFF_FFFF` => `was_ulong > 0xFFFF_FFFFL`
- `was_ulong = was_uint` => `was_ulong = was_uint & 0xFFFF_FFFFL`
- `was_uint < value` => `Integer.compareUnsigned(was_uint, value) < 0`
- `was_ubyte` => `was_ubyte & 0xFF`
- Internal `Instruction` methods were removed since we can't make them
`internal` so the public API was used but some of them required
slightly different input (raw values).
- `setOpMask()`
- `setMemoryDisplSize()`
- `setMemoryIndexScale()` => use new `setRawMemoryIndexScale()`
- `InternalSetHasRepePrefix()` => repe=true, repne=false
- `InternalSetHasRepnePrefix()` => repe=false, repne=true
Added/renamed:
- Added `setRawMemoryIndexScale()`
- Renamed `ByteArrayCodeReader.getCount()` => `size()`