diff --git a/formats/bits_signed_shift_b32_le.ksy b/formats/bits_signed_shift_b32_le.ksy new file mode 100644 index 000000000..b1f84b336 --- /dev/null +++ b/formats/bits_signed_shift_b32_le.ksy @@ -0,0 +1,11 @@ +# Make sure that languages with 32-bit operators (JavaScript) use *unsigned* +# (aka zero-fill) right shift, not signed (sign-propagating) right shift. This +# test will fail if a signed shift is used. +meta: + id: bits_signed_shift_b32_le + bit-endian: le +seq: + - id: a + type: b31 + - id: b + type: b9 diff --git a/formats/bits_signed_shift_b64_le.ksy b/formats/bits_signed_shift_b64_le.ksy new file mode 100644 index 000000000..1554026ed --- /dev/null +++ b/formats/bits_signed_shift_b64_le.ksy @@ -0,0 +1,11 @@ +# Make sure that languages with 64-bit operators (Java, PHP) use *unsigned* (aka +# zero-fill) right shift, not signed (sign-propagating) right shift. This test +# will fail if a signed shift is used. +meta: + id: bits_signed_shift_b64_le + bit-endian: le +seq: + - id: a + type: b63 + - id: b + type: b9 diff --git a/spec/ks/bits_signed_shift_b32_le.kst b/spec/ks/bits_signed_shift_b32_le.kst new file mode 100644 index 000000000..b12c6e890 --- /dev/null +++ b/spec/ks/bits_signed_shift_b32_le.kst @@ -0,0 +1,7 @@ +id: bits_signed_shift_b32_le +data: bits_signed_shift_b32_le.bin +asserts: + - actual: a + expected: 0 + - actual: b + expected: 0xff diff --git a/spec/ks/bits_signed_shift_b64_le.kst b/spec/ks/bits_signed_shift_b64_le.kst new file mode 100644 index 000000000..f2a94d2e0 --- /dev/null +++ b/spec/ks/bits_signed_shift_b64_le.kst @@ -0,0 +1,7 @@ +id: bits_signed_shift_b64_le +data: bits_signed_shift_b64_le.bin +asserts: + - actual: a + expected: 0 + - actual: b + expected: 0xff diff --git a/src/bits_signed_shift_b32_le.bin b/src/bits_signed_shift_b32_le.bin new file mode 100644 index 000000000..27ab86823 Binary files /dev/null and b/src/bits_signed_shift_b32_le.bin differ diff --git a/src/bits_signed_shift_b64_le.bin b/src/bits_signed_shift_b64_le.bin new file mode 100644 index 000000000..3876d2087 Binary files /dev/null and b/src/bits_signed_shift_b64_le.bin differ