Fix segfault due to b64 encoding (#919)

* Fix segfault due to b64 encoding

Prior to this patch, bconst.b64 encoded its instruction with a 32-bit immediate that caused improper decoding of the MOV instruction; instead, use a REX prefix and rely on zero-extension of the immediate. Fixes #911.
This commit is contained in:
Andrew Brown
2019-08-23 09:04:34 -07:00
committed by Benjamin Bouvier
parent 1eb6cd93b2
commit cc57e84cbd
3 changed files with 18 additions and 4 deletions

View File

@@ -683,10 +683,7 @@ pub fn define(
for &ty in &[B1, B8, B16, B32] {
e.enc_both(bconst.bind(ty), rec_pu_id_bool.opcodes(vec![0xb8]));
}
e.enc64(
bconst.bind(B64),
rec_pu_id_bool.opcodes(vec![0xb8]).rex().w(),
);
e.enc64(bconst.bind(B64), rec_pu_id_bool.opcodes(vec![0xb8]).rex());
// Shifts and rotates.
// Note that the dynamic shift amount is only masked by 5 or 6 bits; the 8-bit