1use crate::ast::Span;
2
3#[derive(Debug, Clone, PartialEq)]
4pub enum Operand {
5 Register { span: Span, name: String },
6 Immediate { span: Span, immediate: Immediate },
7 Address { span: Span, address: Address },
8 Vector { span: Span, elements: Vec<Operand> },
9 Label { span: Span, name: String },
10 BitBucket { span: Span },
11}
12
13#[derive(Debug, Clone, PartialEq)]
14pub enum Immediate {
15 Integer { span: Span, value: i64 },
16 UnsignedInteger { span: Span, value: u64 },
17 Float { span: Span, value: f64 },
18 HexFloat32 { span: Span, value: f32 },
19 HexFloat64 { span: Span, value: f64 },
20}
21
22#[derive(Debug, Clone, PartialEq)]
23pub enum Address {
24 Symbol {
25 span: Span,
26 name: String,
27 },
28 SymbolOffset {
29 span: Span,
30 symbol: String,
31 offset: i64,
32 },
33 RegisterOffset {
34 span: Span,
35 register: String,
36 offset: i64,
37 },
38}