1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-06-25 18:30:07 +00:00

Decode SALC.

This commit is contained in:
Thomas Harte 2023-09-29 22:06:42 -04:00
parent 6cbb434482
commit ff9237be9f
4 changed files with 7 additions and 3 deletions

View File

@ -469,7 +469,7 @@ std::pair<int, typename Decoder<model>::InstructionT> Decoder<model>::decode(con
break;
case 0xd4: RegData(AAM, eAX, DataSize::Byte); break;
case 0xd5: RegData(AAD, eAX, DataSize::Byte); break;
// Unused: 0xd6.
case 0xd6: Complete(SALC, None, None, DataSize::Byte); break;
case 0xd7: Complete(XLAT, None, None, DataSize::Byte); break;
case 0xd8: MemRegReg(ESC, Reg_MemReg, data_size_); break;

View File

@ -136,6 +136,7 @@ std::string InstructionSet::x86::to_string(Operation operation, DataSize size) {
case Operation::XCHG: return "xchg";
case Operation::XLAT: return "xlat";
case Operation::SALC: return "salc";
case Operation::Invalid: return "invalid";

View File

@ -211,6 +211,9 @@ enum class Operation: uint8_t {
/// Load AL with DS:[AL+BX].
XLAT,
/// Set AL to FFh if carry is set; 00h otherwise.
SALC,
//
// 80186 additions.
//
@ -219,7 +222,7 @@ enum class Operation: uint8_t {
/// stored at the location indicated by the source register, which will point to two
/// 16- or 32-bit words, the first being a signed lower bound and the signed upper.
/// Raises a bounds exception if not.
BOUND,
BOUND = SALC,
/// Create stack frame. See operand() for the nesting level and offset()
@ -415,6 +418,7 @@ constexpr int max_num_operands(Operation operation) {
case Operation::IRET:
case Operation::NOP:
case Operation::XLAT:
case Operation::SALC:
case Operation::Invalid:
return 0;
}

View File

@ -154,7 +154,6 @@ std::string to_string(
// Undocumented instructions.
@"D0.6.json.gz", @"D1.6.json.gz", @"D2.6.json.gz", @"D3.6.json.gz",
@"D6.json.gz",
nil
];