8000 fix sbb? · sha0coder/libscemu@de1f04c · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Dec 27, 2024. It is now read-only.

Commit de1f04c

Browse files
committed
fix sbb?
1 parent 036ef6a commit de1f04c

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

src/emu.rs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5087,36 +5087,31 @@ impl Emu {
50875087

50885088
Mnemonic::Sbb => {
50895089
self.show_instruction(&self.colors.cyan, &ins);
5090-
5090+
50915091
assert!(ins.op_count() == 2);
5092-
5093-
let cf: u64;
5094-
if self.flags.f_cf {
5095-
cf = 1;
5096-
} else {
5097-
cf = 0;
5098-
}
5099-
5092+
5093+
let cf: u64 = if self.flags.f_cf { 1 } else { 0 };
5094+
51005095
let value0 = match self.get_operand_value(&ins, 0, true) {
51015096
Some(v) => v,
51025097
None => return false,
51035098
};
5104-
5099+
51055100
let value1 = match self.get_operand_value(&ins, 1, true) {
51065101
Some(v) => v,
51075102
None => return false,
51085103
};
5109-
5104+
51105105
let res: u64;
51115106
let sz = self.get_operand_sz(&ins, 1);
51125107
match sz {
5113-
64 => res = self.flags.sub64(value0, value1 + cf),
5114-
32 => res = self.flags.sub32(value0, value1 + cf),
5115-
16 => res = self.flags.sub16(value0, value1 + cf),
5116-
8 => res = self.flags.sub8(value0, value1 + cf),
5108+
64 => res = self.flags.sub64(value0, value1.wrapping_add(cf)),
5109+
32 => res = self.flags.sub32(value0, value1.wrapping_add(cf)),
5110+
16 => res = self.flags.sub16(value0, value1.wrapping_add(cf)),
5111+
8 => res = self.flags.sub8(value0, value1.wrapping_add(cf)),
51175112
_ => panic!("weird size"),
51185113
}
5119-
5114+
51205115
if !self.set_operand_value(&ins, 0, res) {
51215116
return false;
51225117
}

0 commit comments

Comments
 (0)
0