chore: Rename Operand -> ImmediateOperand

This commit is contained in:
2025-06-05 10:07:57 +09:00
parent ef4663a245
commit 232b73aad8
8 changed files with 141 additions and 130 deletions

View File

@@ -1,8 +1,6 @@
use crate::operands::{Byte, Operand, Word};
use crate::operands::{Byte, ImmediateOperand, Word};
use core::fmt;
use super::flags::Flags;
#[derive(Debug, Clone, Copy)]
pub struct Register {
pub ax: AX,
@@ -30,31 +28,31 @@ impl Register {
}
/// Read value from a [`crate::register::Register`].
pub fn read(&self, reg: crate::register::Register) -> Operand {
pub fn read(&self, reg: crate::register::Register) -> ImmediateOperand {
match reg {
crate::register::Register::AX => Operand::Word(self.ax.read()),
crate::register::Register::BX => Operand::Word(self.bx.read()),
crate::register::Register::CX => Operand::Word(self.cx.read()),
crate::register::Register::DX => Operand::Word(self.dx.read()),
crate::register::Register::AH => Operand::Byte(self.ax.upper),
crate::register::Register::AL => Operand::Byte(self.ax.lower),
crate::register::Register::BH => Operand::Byte(self.bx.upper),
crate::register::Register::BL => Operand::Byte(self.bx.lower),
crate::register::Register::CH => Operand::Byte(self.cx.upper),
crate::register::Register::CL => Operand::Byte(self.cx.lower),
crate::register::Register::DH => Operand::Byte(self.dx.upper),
crate::register::Register::DL => Operand::Byte(self.dx.lower),
crate::register::Register::DI => Operand::Word(self.di),
crate::register::Register::SI => Operand::Word(self.si),
crate::register::Register::BP => Operand::Word(self.bp),
crate::register::Register::SP => Operand::Word(self.sp),
crate::register::Register::AX => ImmediateOperand::Word(self.ax.read()),
crate::register::Register::BX => ImmediateOperand::Word(self.bx.read()),
crate::register::Register::CX => ImmediateOperand::Word(self.cx.read()),
crate::register::Register::DX => ImmediateOperand::Word(self.dx.read()),
crate::register::Register::AH => ImmediateOperand::Byte(self.ax.upper),
crate::register::Register::AL => ImmediateOperand::Byte(self.ax.lower),
crate::register::Register::BH => ImmediateOperand::Byte(self.bx.upper),
crate::register::Register::BL => ImmediateOperand::Byte(self.bx.lower),
crate::register::Register::CH => ImmediateOperand::Byte(self.cx.upper),
crate::register::Register::CL => ImmediateOperand::Byte(self.cx.lower),
crate::register::Register::DH => ImmediateOperand::Byte(self.dx.upper),
crate::register::Register::DL => ImmediateOperand::Byte(self.dx.lower),
crate::register::Register::DI => ImmediateOperand::Word(self.di),
crate::register::Register::SI => ImmediateOperand::Word(self.si),
crate::register::Register::BP => ImmediateOperand::Word(self.bp),
crate::register::Register::SP => ImmediateOperand::Word(self.sp),
}
}
/// Write an [`Operand`] to a [`crate::register::Register`].
pub fn write(&mut self, reg: crate::register::Register, op: Operand) {
/// Write an [`ImmediateOperand`] to a [`crate::register::Register`].
pub fn write(&mut self, reg: crate::register::Register, op: ImmediateOperand) {
match op {
Operand::Byte(byte) => match reg {
ImmediateOperand::Byte(byte) => match reg {
crate::register::Register::AX => self.ax.lower = byte,
crate::register::Register::BX => self.bx.lower = byte,
crate::register::Register::CX => self.cx.lower = byte,
@@ -72,7 +70,7 @@ impl Register {
crate::register::Register::BP => self.bp = Word::from_le_bytes([0x0, byte]),
crate::register::Register::SP => self.sp = Word::from_le_bytes([0x0, byte]),
},
Operand::Word(word) => {
ImmediateOperand::Word(word) => {
match reg {
crate::register::Register::AX => self.ax.write(word),
crate::register::Register::BX => self.bx.write(word),