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}