diff --git a/InstructionSets/x86/Implementation/PerformImplementation.hpp b/InstructionSets/x86/Implementation/PerformImplementation.hpp index c4d2e00a2..fdab87e8c 100644 --- a/InstructionSets/x86/Implementation/PerformImplementation.hpp +++ b/InstructionSets/x86/Implementation/PerformImplementation.hpp @@ -1452,6 +1452,10 @@ template < case Operation::JMPrel: jcc(true); return; case Operation::JMPabs: Primitive::jump_absolute(destination(), flow_controller); return; case Operation::JMPfar: Primitive::jump_far(instruction, flow_controller, registers, memory); return; + case Operation::JCXZ: + // TODO: use ECX rather than CX if address size is 32-bit. + jcc(!registers.cx()); + return; case Operation::IRET: Primitive::iret(registers, flow_controller, memory, status); return; case Operation::RETnear: Primitive::ret_near(instruction, registers, flow_controller, memory); return; diff --git a/OSBindings/Mac/Clock SignalTests/8088Tests.mm b/OSBindings/Mac/Clock SignalTests/8088Tests.mm index f4228ca3b..85f8da4c9 100644 --- a/OSBindings/Mac/Clock SignalTests/8088Tests.mm +++ b/OSBindings/Mac/Clock SignalTests/8088Tests.mm @@ -375,18 +375,14 @@ struct FailedExecution { @"C3.json.gz", @"C2.json.gz", // near RET @"CB.json.gz", @"CA.json.gz", // far RET -*/ - // relative JMP - @"EB.json.gz", @"E9.json.gz", - // far JMP - @"EA.josn.gz", @"FF.5.json.gz", + @"EB.json.gz", @"E9.json.gz", // relative JMP + @"EA.josn.gz", @"FF.5.json.gz", // far JMP @"FF.4.json.gz", // absolute JMP - +*/ + @"E3.json.gz", // JCXZ /* - // TODO: JCXZ - // INTO @"CE.json.gz",