@@ -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