emu: SHL/SHR/SAR opcodes (BARELY TESTED!), const Op Directive

Carry Flag as yet untested and likely to contain bugs
This commit is contained in:
2021-03-28 02:08:23 -07:00
parent 874fc6adbc
commit a183a5ad38
4 changed files with 152 additions and 8 deletions

View File

@@ -70,6 +70,7 @@ impl Flags {
FlagOp::Eager => { self.res & 1 << OF_BIT != 0 },
FlagOp::DEC => { self.res == self.sign_bit_mask - 1 },
FlagOp::INC => { self.res == self.sign_bit_mask },
FlagOp::SHIFT => { 0 != self.sign_bit_mask & (self.dst ^ self.res) },
FlagOp::SUB => { 0 != self.sign_bit_mask & // In the (maybe) sign bit...
(self.src ^ self.dst) & // ...operands have different signs...
(self.dst ^ self.res) /* ...and result sign-bit changed */ },
@@ -93,6 +94,7 @@ pub enum FlagOp {
Eager, // precomputed into result, for e.g. POPF? (Anything else?)
DEC,
INC,
SHIFT,
SUB,
}