use super::types::{Value, OpCode, Modifier, AddressingMode};
pub trait Instruction: Default + Clone
{
fn op(&self) -> OpCode;
fn set_op(&mut self, v: OpCode);
fn modifier(&self) -> Modifier;
fn set_modifier(&mut self, v: Modifier);
fn a(&self) -> Value;
fn set_a(&mut self, v: Value);
fn a_mode(&self) -> AddressingMode;
fn set_a_mode(&mut self, v: AddressingMode);
fn b(&self) -> Value;
fn set_b(&mut self, v: Value);
fn b_mode(&self) -> AddressingMode;
fn set_b_mode(&mut self, v: AddressingMode);
}