Skip to main content

neo_decompiler/error/
disassembly.rs

1use thiserror::Error;
2
3/// Errors returned during bytecode disassembly.
4#[derive(Debug, Error)]
5#[non_exhaustive]
6pub enum DisassemblyError {
7    /// Input ended unexpectedly while decoding an instruction operand.
8    #[error("unexpected end of bytecode at offset {offset}")]
9    UnexpectedEof {
10        /// Offset of the opcode being decoded.
11        offset: usize,
12    },
13
14    /// An opcode byte was not recognized by the opcode table.
15    #[error("unknown opcode 0x{opcode:02X} at offset {offset}")]
16    UnknownOpcode {
17        /// The raw opcode byte.
18        opcode: u8,
19        /// Offset where the opcode byte was encountered.
20        offset: usize,
21    },
22
23    /// A length-prefixed operand exceeded the supported maximum size.
24    #[error("operand length {len} exceeds maximum at offset {offset}")]
25    OperandTooLarge {
26        /// Offset of the opcode being decoded.
27        offset: usize,
28        /// Requested operand length.
29        len: usize,
30    },
31}