mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-07 05:30:30 +00:00
Decode SALC.
This commit is contained in:
parent
6cbb434482
commit
ff9237be9f
@ -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;
|
||||||
|
@ -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";
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
];
|
];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user