1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-02-07 05:30:30 +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; break;
case 0xd4: RegData(AAM, eAX, DataSize::Byte); break; case 0xd4: RegData(AAM, eAX, DataSize::Byte); break;
case 0xd5: RegData(AAD, 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 0xd7: Complete(XLAT, None, None, DataSize::Byte); break;
case 0xd8: MemRegReg(ESC, Reg_MemReg, data_size_); 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::XCHG: return "xchg";
case Operation::XLAT: return "xlat"; case Operation::XLAT: return "xlat";
case Operation::SALC: return "salc";
case Operation::Invalid: return "invalid"; case Operation::Invalid: return "invalid";

View File

@ -211,6 +211,9 @@ enum class Operation: uint8_t {
/// Load AL with DS:[AL+BX]. /// Load AL with DS:[AL+BX].
XLAT, XLAT,
/// Set AL to FFh if carry is set; 00h otherwise.
SALC,
// //
// 80186 additions. // 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 /// 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. /// 16- or 32-bit words, the first being a signed lower bound and the signed upper.
/// Raises a bounds exception if not. /// Raises a bounds exception if not.
BOUND, BOUND = SALC,
/// Create stack frame. See operand() for the nesting level and offset() /// 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::IRET:
case Operation::NOP: case Operation::NOP:
case Operation::XLAT: case Operation::XLAT:
case Operation::SALC:
case Operation::Invalid: case Operation::Invalid:
return 0; return 0;
} }

View File

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