@@ -5087,36 +5087,31 @@ impl Emu {
5087
5087
5088
5088
Mnemonic::Sbb => {
5089
5089
self.show_instruction(&self.colors.cyan, &ins);
5090
-
5090
+
5091
5091
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
+
5100
5095
let value0 = match self.get_operand_value(&ins, 0, true) {
5101
5096
Some(v) => v,
5102
5097
None => return false,
5103
5098
};
5104
-
5099
+
5105
5100
let value1 = match self.get_operand_value(&ins, 1, true) {
5106
5101
Some(v) => v,
5107
5102
None => return false,
5108
5103
};
5109
-
5104
+
5110
5105
let res: u64;
5111
5106
let sz = self.get_operand_sz(&ins, 1);
5112
5107
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) ),
5117
5112
_ => panic!("weird size"),
5118
5113
}
5119
-
5114
+
5120
5115
if !self.set_operand_value(&ins, 0, res) {
5121
5116
return false;
5122
5117
}
0 commit comments