c64_assembler/instruction/
mod.rsuse operation::Operation;
use crate::memory::address_mode::AddressMode;
use crate::memory::Address;
use crate::validator::AssemblerResult;
use crate::Application;
pub mod operation;
#[derive(Debug, Default, Clone, PartialEq)]
pub struct Instruction {
pub operation: Operation,
pub address_mode: AddressMode,
pub comments: Vec<String>,
}
impl Instruction {
pub fn byte_size(&self, application: &Application) -> AssemblerResult<Address> {
if let Operation::Raw(bytes) = &self.operation {
Ok(bytes.len() as u16)
} else if let Operation::Label(_) = &self.operation {
Ok(0)
} else {
self.address_mode.byte_size(application)
}
}
}