use derive_more::Display;
use crate::{
instruction::InstructionMeta,
opcode::{Mnemonic, OpCode},
};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
#[display("{}", self.opcode())]
pub struct MLoad;
impl InstructionMeta for MLoad {
fn opcode(&self) -> OpCode {
OpCode::Known(Mnemonic::MLOAD)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
#[display("{}", self.opcode())]
pub struct MStore;
impl InstructionMeta for MStore {
fn opcode(&self) -> OpCode {
OpCode::Known(Mnemonic::MSTORE)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
#[display("{}", self.opcode())]
pub struct MStore8;
impl InstructionMeta for MStore8 {
fn opcode(&self) -> OpCode {
OpCode::Known(Mnemonic::MSTORE8)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
#[display("{}", self.opcode())]
pub struct MSize;
impl InstructionMeta for MSize {
fn opcode(&self) -> OpCode {
OpCode::Known(Mnemonic::MSIZE)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
#[display("{}", self.opcode())]
pub struct MCopy;
impl InstructionMeta for MCopy {
fn opcode(&self) -> OpCode {
OpCode::Known(Mnemonic::MCOPY)
}
}