1#![allow(non_snake_case)]
2
3use crate::dex::{Opcode, I4, U4};
4use crate::impls::jvms::r::U32BasedSize;
5
6macro_rules! syntax {
7 (
8 $(
9 $name:ident {
10 $($field:ident: $t:ty),*
11 };
12 )*
13 ) => {
14 $(
15 #[derive(Copy, Debug, Clone, PartialEq, Eq)]
16 pub struct $name {
17 $(pub $field: $t),*
18 }
19 )*
20 }
21}
22
23syntax! {
24 F00x {};
25 F10x { opcode: Opcode, stub: u8 };
27 F12x { opcode: Opcode, vB: U4, vA: U4 };
29 F11n { opcode: Opcode, literalB: I4, vA: U4 };
30 F11x { opcode: Opcode, vA: u8 };
32 F10t { opcode: Opcode, offsetA: i8 };
33}
34
35syntax! {
36 F20t { stub: u8, opcode: Opcode, offsetA: i16 };
39 F20bc { opcode: Opcode, vA: u8, constB: u16 };
42 F22x { opcode: Opcode, vA: u8, vB: u16 };
45 F21t { opcode: Opcode, vA: u8, offsetB: i16 };
46 F21s { opcode: Opcode, vA: u8, literalB: i16 };
47 F21h { opcode: Opcode, vA: u8, literalB: i16 };
48 F21c { opcode: Opcode, vA: u8, constB: u16 };
49 F23x { opcode: Opcode, vA: u8, vB: u8, vC: u8 };
52 F22b { opcode: Opcode, vA: u8, vB: u8, literalC: i8 };
53 F22t { opcode: Opcode, vA: U4, vB: U4, offsetC: i16 };
56 F22s { opcode: Opcode, vA: U4, vB: U4, literalC: i16 };
57 F22c { opcode: Opcode, vA: U4, vB: U4, constC: u16 };
58 F22cs { opcode: Opcode, vA: U4, vB: U4, constC: u16 };
59}
60
61syntax! {
62 F30t { stub: u8, opcode: Opcode, offsetA: i32 };
66 F32x { stub: u8, opcode: Opcode, vA: u16, vB: u16 };
70 F31i { opcode: Opcode, vA: u8, literalB: i32 };
74 F31t { opcode: Opcode, vA: u8, offsetB: i32 };
75 F31c { opcode: Opcode, vA: u8, constB: U32BasedSize };
76 F35c { opcode: Opcode, a: U4, vC: U4, vD: U4, vE: U4, vF: U4, vG: U4, constB: u16 };
80 F35ms { opcode: Opcode, a: U4, vC: U4, vD: U4, vE: U4, vF: U4, vG: U4, constB: u16 };
81 F35mi { opcode: Opcode, a: U4, vC: U4, vD: U4, vE: U4, vF: U4, vG: U4, constB: u16 };
82 F3rc { opcode: Opcode, a: u8, constB: u16, vC: u16 };
87 F3rms { opcode: Opcode, a: u8, constB: u16, vC: u16 };
88 F3rmi { opcode: Opcode, a: u8, constB: u16, vC: u16 };
89}
90
91syntax! {
92 F45cc {
97 opcode: Opcode, a: U4,
98 vC: U4, vD: U4, vE: U4, vF: U4, vG: U4,
99 constB: u16, constH: u16
100 };
101 F4rcc {
107 opcode: Opcode, a: u8,
108 constB: u16, constH: u16,
109 vC: u16
110 };
111 F51l { opcode: Opcode, vA: u8, literalB: i64 };
117}