mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-19 08:31:11 +00:00
Resolve new decoding errors.
This commit is contained in:
parent
f608153c1a
commit
b927cf4159
@ -163,19 +163,19 @@ std::pair<int, typename Decoder<model>::InstructionT> Decoder<model>::decode(con
|
|||||||
|
|
||||||
PartialBlock(0x20, AND); break;
|
PartialBlock(0x20, AND); break;
|
||||||
case 0x26: segment_override_ = Source::ES; break;
|
case 0x26: segment_override_ = Source::ES; break;
|
||||||
case 0x27: Complete(DAA, eAX, eAX, DataSize::Byte); break;
|
case 0x27: Complete(DAA, None, None, DataSize::Byte); break;
|
||||||
|
|
||||||
PartialBlock(0x28, SUB); break;
|
PartialBlock(0x28, SUB); break;
|
||||||
case 0x2e: segment_override_ = Source::CS; break;
|
case 0x2e: segment_override_ = Source::CS; break;
|
||||||
case 0x2f: Complete(DAS, eAX, eAX, DataSize::Byte); break;
|
case 0x2f: Complete(DAS, None, None, DataSize::Byte); break;
|
||||||
|
|
||||||
PartialBlock(0x30, XOR); break;
|
PartialBlock(0x30, XOR); break;
|
||||||
case 0x36: segment_override_ = Source::SS; break;
|
case 0x36: segment_override_ = Source::SS; break;
|
||||||
case 0x37: Complete(AAA, eAX, eAX, DataSize::Word); break;
|
case 0x37: Complete(AAA, None, None, DataSize::Word); break;
|
||||||
|
|
||||||
PartialBlock(0x38, CMP); break;
|
PartialBlock(0x38, CMP); break;
|
||||||
case 0x3e: segment_override_ = Source::DS; break;
|
case 0x3e: segment_override_ = Source::DS; break;
|
||||||
case 0x3f: Complete(AAS, eAX, eAX, DataSize::Word); break;
|
case 0x3f: Complete(AAS, None, None, DataSize::Word); break;
|
||||||
|
|
||||||
#undef PartialBlock
|
#undef PartialBlock
|
||||||
|
|
||||||
@ -361,8 +361,8 @@ std::pair<int, typename Decoder<model>::InstructionT> Decoder<model>::decode(con
|
|||||||
case 0x96: Complete(XCHG, eAX, eSI, data_size_); break;
|
case 0x96: Complete(XCHG, eAX, eSI, data_size_); break;
|
||||||
case 0x97: Complete(XCHG, eAX, eDI, data_size_); break;
|
case 0x97: Complete(XCHG, eAX, eDI, data_size_); break;
|
||||||
|
|
||||||
case 0x98: Complete(CBW, eAX, AH, data_size_); break;
|
case 0x98: Complete(CBW, None, None, data_size_); break;
|
||||||
case 0x99: Complete(CWD, eAX, eDX, data_size_); break;
|
case 0x99: Complete(CWD, None, None, data_size_); break;
|
||||||
case 0x9a: Far(CALLfar); break;
|
case 0x9a: Far(CALLfar); break;
|
||||||
case 0x9b: Complete(WAIT, None, None, DataSize::Byte); break;
|
case 0x9b: Complete(WAIT, None, None, DataSize::Byte); break;
|
||||||
case 0x9c: Complete(PUSHF, None, None, data_size_); break;
|
case 0x9c: Complete(PUSHF, None, None, data_size_); break;
|
||||||
|
@ -506,7 +506,12 @@ std::string InstructionSet::x86::to_string(
|
|||||||
default: {
|
default: {
|
||||||
const int operands = max_displayed_operands(instruction.second.operation());
|
const int operands = max_displayed_operands(instruction.second.operation());
|
||||||
const bool displacement = has_displacement(instruction.second.operation());
|
const bool displacement = has_displacement(instruction.second.operation());
|
||||||
const bool print_first = operands > 1 && instruction.second.destination().source() != Source::None;
|
const bool print_first =
|
||||||
|
instruction.second.destination().source() != Source::None &&
|
||||||
|
(
|
||||||
|
operands > 1 ||
|
||||||
|
(operands > 0 && instruction.second.source().source() == Source::None)
|
||||||
|
);
|
||||||
if(print_first) {
|
if(print_first) {
|
||||||
operation += to_string(instruction.second.destination(), instruction.second, offset_length, immediate_length);
|
operation += to_string(instruction.second.destination(), instruction.second, offset_length, immediate_length);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user