ft(interpreter): impl far jumps with correct CS addressing
This commit is contained in:
@@ -2,7 +2,10 @@ use core::fmt;
|
||||
|
||||
use crate::operands::{ImmediateOperand, ModRmTarget, Word};
|
||||
|
||||
use super::{flags::Flags, interpreter::InterpreterError, memory::Memory, register::Register};
|
||||
use super::{
|
||||
flags::Flags, interpreter::InterpreterError, memory::Memory, register::Register,
|
||||
register::SegmentRegister,
|
||||
};
|
||||
|
||||
/// Wrapper for easier argument passing of polymorph arithmetic operations.
|
||||
#[derive(Debug, Clone)]
|
||||
@@ -18,6 +21,7 @@ type Rhs = ImmediateOperand;
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Computer {
|
||||
pub regs: Register,
|
||||
pub sregs: SegmentRegister,
|
||||
pub flags: Flags,
|
||||
pub memory: Memory,
|
||||
}
|
||||
@@ -26,6 +30,7 @@ impl Computer {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
regs: Register::new(),
|
||||
sregs: SegmentRegister::new(),
|
||||
flags: Flags::new(),
|
||||
memory: Memory::new(),
|
||||
}
|
||||
@@ -280,7 +285,7 @@ pub enum CarryUsage {
|
||||
|
||||
impl fmt::Display for Computer {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{} {}", self.regs, self.flags)
|
||||
write!(f, "{} {} {}", self.regs, self.sregs, self.flags)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user