emu: ROL/ROR operations
This commit is contained in:
@@ -87,11 +87,22 @@ impl Flags {
|
||||
OperandWidth::Word => 0x8000,
|
||||
}
|
||||
}
|
||||
|
||||
// The rotate ops update OF don't touch PF/AF/ZF/SF so we make
|
||||
// everything eager so they don't get clobbered
|
||||
pub fn update_of(&mut self, of: bool) {
|
||||
let mut flags = (*self).into();
|
||||
flags &= !(1 << OF_BIT); // Mask out old OF Flag
|
||||
if of { flags |= 1 << OF_BIT; } // Mask in new OF Flag
|
||||
|
||||
self.flag_op = FlagOp::Eager;
|
||||
self.res = flags;
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
pub enum FlagOp {
|
||||
Eager, // precomputed into result, for e.g. POPF? (Anything else?)
|
||||
Eager, // precomputed into result, for POPF or anything that changes only some flags
|
||||
DEC,
|
||||
INC,
|
||||
SHIFT,
|
||||
|
||||
Reference in New Issue
Block a user