use crate::structs::LookupSwitchPair;
#[derive(Debug)]
pub enum Instruction {
AALoad,
AAStore,
ALoad(u8),
ALoadW(u16),
ANewArray(u16),
ANull,
AReturn,
ArrayLength,
AStore(u8),
AStoreW(u16),
AThrow,
BALoad,
BAStore,
Bipush(u8),
CALoad,
CAStore,
CheckCast(u16),
D2F,
D2I,
D2L,
DAdd,
DALoad,
DAStore,
DCmpg,
DCmpl,
DConst(f64),
DDiv,
DLoad(u8),
DLoadW(u16),
DMul,
DNeg,
DRem,
DReturn,
DStore(u8),
DStoreW(u16),
DSub,
Dup,
Dup2,
Dup2X1,
Dup2X2,
DupX1,
DupX2,
F2D,
F2I,
F2L,
FAdd,
FALoad,
FAStore,
FCmpg,
FCmpl,
FConst(f32),
FDiv,
FLoad(u8),
FLoadW(u16),
FMul,
FNeg,
FRem,
FReturn,
FStore(u8),
FStoreW(u16),
FSub,
GetField(u16),
GetStatic(u16),
Goto(i16),
GotoW(u32),
I2B,
I2C,
I2D,
I2F,
I2L,
I2S,
IAdd,
IALoad,
IAnd,
IAStore,
IConst(i32),
IDiv,
IfAcmpeq(i16),
IfAcmpne(i16),
Ifeq(i16),
Ifge(i16),
Ifgt(i16),
IfIcmpeq(i16),
IfIcmpge(i16),
IfIcmpgt(i16),
IfIcmple(i16),
IfIcmplt(i16),
IfIcmpne(i16),
Ifle(i16),
Iflt(i16),
Ifne(i16),
IfNonNull(u16),
IfNull(u16),
IInc(u8, i8),
IIncW(u16, u16),
ILoad(u8),
ILoadW(u16),
IMul,
INeg,
InstanceOf(u16),
InvokeDynamic(u16),
InvokeInterface {
index: u16,
count: u8,
},
InvokeSpecial(u16),
InvokeStatic(u16),
InvokeVirtual(u16),
IOr,
IRem,
IReturn,
IShl,
IShr,
IStore(u8),
IStoreW(u16),
ISub,
IUShr,
IXor,
Jsr(i16),
JsrW(u32),
L2D,
L2F,
L2I,
LAdd,
LALoad,
LAnd,
LAStore,
LCmp,
LConst(i64),
Ldc(u8),
Ldc2W(u16),
LdcW(u16),
LDiv,
LLoad(u8),
LLoadW(u16),
LMul,
LNeg,
LookupSwitch {
default: u32,
pairs: Vec<LookupSwitchPair>,
},
LOr,
LRem,
LReturn,
LShl,
LShr,
LStore(u8),
LStoreW(u16),
LSub,
LUShr,
LXor,
MonitorEnter,
MonitorExit,
MultiANewArray(u16, u8),
New(u16),
NewArray(u8),
Nop,
Pop,
Pop2,
PutField(u16),
PutStatic(u16),
Ret(u8),
RetW(u16),
Return,
SALoad,
SAStore,
Sipush(i16),
Swap,
TableSwitch {
minimum: u32,
maximum: u32,
jump_targets: Vec<u32>,
default: u32,
},
}