1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-08-15 14:27:29 +00:00

Eliminate INSD.

This commit is contained in:
Thomas Harte
2022-03-12 11:37:21 -05:00
parent e6bd265729
commit f1c4864016
2 changed files with 10 additions and 12 deletions

View File

@@ -244,7 +244,7 @@ std::pair<int, typename Decoder<model>::InstructionT> Decoder<model>::decode(con
RequiresMin(i80186); RequiresMin(i80186);
Complete(INS, None, None, DataSize::Byte); Complete(INS, None, None, DataSize::Byte);
break; break;
case 0x6d: // INSW case 0x6d: // INSW/INSD
RequiresMin(i80186); RequiresMin(i80186);
Complete(INS, None, None, data_size_); Complete(INS, None, None, data_size_);
break; break;
@@ -252,7 +252,7 @@ std::pair<int, typename Decoder<model>::InstructionT> Decoder<model>::decode(con
RequiresMin(i80186); RequiresMin(i80186);
Complete(OUTS, None, None, DataSize::Byte); Complete(OUTS, None, None, DataSize::Byte);
break; break;
case 0x6f: // OUTSW case 0x6f: // OUTSW/OUSD
RequiresMin(i80186); RequiresMin(i80186);
Complete(OUTS, None, None, data_size_); Complete(OUTS, None, None, data_size_);
break; break;

View File

@@ -88,7 +88,7 @@ enum class Operation: uint8_t {
/// Far call; see the segment() and offset() fields. /// Far call; see the segment() and offset() fields.
CALLfar, CALLfar,
/// Displacement call; followed by a 16-bit operand providing a call offset. /// Relative call; see displacement().
CALLrel, CALLrel,
/// Near call. /// Near call.
CALLabs, CALLabs,
@@ -216,11 +216,12 @@ enum class Operation: uint8_t {
/// Procedure exit; copies BP to SP, then pops a new BP from the stack. /// Procedure exit; copies BP to SP, then pops a new BP from the stack.
LEAVE, LEAVE,
// TODO: expand detail on all operations below. /// Inputs a byte, word or double word from the port specified by DX, writing it to
/// ES:[e]DI and incrementing or decrementing [e]DI as per the
/// Inputs from a port, incrementing or decrementing the destination. /// current EFLAGS DF flag.
INS, INS,
/// Outputs to a port, incrementing or decrementing the destination. /// Outputs a byte, word or double word from ES:[e]DI to the port specified by DX,
/// incrementing or decrementing [e]DI as per the current EFLAGS DF flag.]
OUTS, OUTS,
/// Pushes all general purpose registers to the stack, in the order: /// Pushes all general purpose registers to the stack, in the order:
@@ -234,6 +235,8 @@ enum class Operation: uint8_t {
// 80286 additions. // 80286 additions.
// //
// TODO: expand detail on all operations below.
/// Adjusts requested privilege level. /// Adjusts requested privilege level.
ARPL, ARPL,
/// Clears the task-switched flag. /// Clears the task-switched flag.
@@ -312,11 +315,6 @@ enum class Operation: uint8_t {
/// [Early 80386s only] Insert bit string. /// [Early 80386s only] Insert bit string.
IBTS, IBTS,
/// Inputs a double word the port specified by DX, writing it to
/// ES:[e]DI and incrementing or decrementing [e]DI as per the
/// current EFLAGS DF flag.
INSD,
/// Convert dword to qword; fills EDX with the sign bit of EAX. /// Convert dword to qword; fills EDX with the sign bit of EAX.
CDQ, CDQ,
/// Convert word to dword; AX will be expanded to fill EAX. /// Convert word to dword; AX will be expanded to fill EAX.