c64_assembler/instruction/
mod.rs1use operation::Operation;
2
3use crate::memory::address_mode::AddressMode;
4use crate::memory::Address;
5use crate::validator::AssemblerResult;
6use crate::Application;
7pub mod operation;
8
9#[derive(Debug, Default, Clone, PartialEq)]
14pub struct Instruction {
15 pub operation: Operation,
17 pub address_mode: AddressMode,
19 pub comments: Vec<String>,
21}
22
23impl Instruction {
24 pub fn byte_size(&self, application: &Application) -> AssemblerResult<Address> {
28 if let Operation::Raw(bytes) = &self.operation {
29 Ok(bytes.len() as u16)
30 } else if let Operation::Label(_) = &self.operation {
31 Ok(0)
32 } else {
33 self.address_mode.byte_size(application)
34 }
35 }
36}