chore: prettify printing

This commit is contained in:
2025-05-14 13:54:13 +09:00
parent 5c13267145
commit c0bb448d79

View File

@@ -22,6 +22,15 @@ impl fmt::Display for Operand {
} }
} }
impl fmt::LowerHex for Operand {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Byte(b) => fmt::LowerHex::fmt(b, f),
Self::Word(v) => fmt::LowerHex::fmt(v, f),
}
}
}
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
#[allow(dead_code)] #[allow(dead_code)]
/// A single 'line' of executable ASM is called an Instruction, which /// A single 'line' of executable ASM is called an Instruction, which
@@ -49,7 +58,7 @@ impl fmt::Display for Instruction {
for b in self.raw.iter() { for b in self.raw.iter() {
write!(f, "{:02x}", b).unwrap(); write!(f, "{:02x}", b).unwrap();
} }
write!(f, "\t{}", self.opcode) write!(f, "\t\t{}", self.opcode)
} }
} }
@@ -272,6 +281,7 @@ impl fmt::Display for Mnemonic {
Self::ADD_FromReg(mem, reg) => write!(f, "add {}, {}", mem, reg), Self::ADD_FromReg(mem, reg) => write!(f, "add {}, {}", mem, reg),
Self::ADD_ToReg(mem, reg) => write!(f, "add {}, {}", reg, mem), Self::ADD_ToReg(mem, reg) => write!(f, "add {}, {}", reg, mem),
Self::CMP_Iv(mem, imm) => write!(f, "cmp {}, {:04x}", mem, imm), Self::CMP_Iv(mem, imm) => write!(f, "cmp {}, {:04x}", mem, imm),
Self::CMP_Ib(target, imm) => write!(f, "cmp {}, {:04x}", target, imm),
Self::LEA(mem, reg) => write!(f, "lea {}, {}", reg, mem), Self::LEA(mem, reg) => write!(f, "lea {}, {}", reg, mem),
Self::MOV_BXIv(word) => write!(f, "mov bx, {:04x}", word), Self::MOV_BXIv(word) => write!(f, "mov bx, {:04x}", word),
Self::MOV_FromReg(target, reg) => write!(f, "mov {}, {}", target, reg), Self::MOV_FromReg(target, reg) => write!(f, "mov {}, {}", target, reg),
@@ -311,18 +321,20 @@ impl fmt::Display for MemoryIndex {
match &self.base { match &self.base {
Some(base) => match &self.index { Some(base) => match &self.index {
Some(index) => match &self.displacement { Some(index) => match &self.displacement {
Some(displacement) => write!(f, "[{} + {} + {}]", base, index, displacement), Some(displacement) => {
None => write!(f, "[{} + {}]", base, index), write!(f, "[{}+{}+{:04x}]", base, index, displacement)
}
None => write!(f, "[{}+{}]", base, index),
}, },
None => match &self.displacement { None => match &self.displacement {
Some(displacement) => write!(f, "[{} + {}]", base, displacement), Some(displacement) => write!(f, "[{}+{:04x}]", base, displacement),
None => write!(f, "[{} + 0]", base), None => write!(f, "[{}]", base),
}, },
}, },
None => match &self.index { None => match &self.index {
Some(index) => match &self.displacement { Some(index) => match &self.displacement {
Some(displacement) => write!(f, "{} + {}", index, displacement), Some(displacement) => write!(f, "[{}+{:04x}]", index, displacement),
None => write!(f, "[{} + 0]", index), None => write!(f, "[{}]", index),
}, },
None => panic!("Invalid MemoryIndex encountered"), None => panic!("Invalid MemoryIndex encountered"),
}, },