diff options
-rw-r--r-- | src/armv8/a64.rs | 4 | ||||
-rw-r--r-- | test/armv8/a64.rs | 14 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/armv8/a64.rs b/src/armv8/a64.rs index 9d94c1a..8b96f60 100644 --- a/src/armv8/a64.rs +++ b/src/armv8/a64.rs @@ -6844,14 +6844,14 @@ impl Decoder<ARMv8> for InstDecoder { inst.operands = [ Operand::Register(SizeCode::W, Rs), Operand::Register(SizeCode::W, Rt), - Operand::RegisterOrSP(SizeCode::X, Rn), + Operand::RegOffset(Rn, 0), Operand::Nothing, ]; } else if Lo1 == 0b10 { // load ops inst.operands = [ Operand::Register(SizeCode::W, Rt), - Operand::RegisterOrSP(SizeCode::X, Rn), + Operand::RegOffset(Rn, 0), Operand::Nothing, Operand::Nothing, ]; diff --git a/test/armv8/a64.rs b/test/armv8/a64.rs index be1f486..c7bddf7 100644 --- a/test/armv8/a64.rs +++ b/test/armv8/a64.rs @@ -4355,6 +4355,20 @@ fn test_weird_str() { } #[test] +fn test_mismatches() { + const TESTS: &[([u8; 4], &'static str)] = &[ + ([0x00, 0x00, 0x00, 0x08], "stxrb w0, w0, [x0]"), + ]; + let errs = run_tests(TESTS); + + for err in errs.iter() { + println!("{}", err); + } + + assert!(errs.is_empty()); +} + +#[test] fn test_cas() { const TESTS: &[([u8; 4], &'static str)] = &[ ([0x20, 0x7c, 0x20, 0x08], "casp w0, w1, w0, w1, [x1]"), |