From 01851874ea5d945c8e2f9e9d5e2ddcd62283ab7d Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 5 Oct 2023 11:23:41 -0400 Subject: [PATCH] I guess this is what a `perform` looks like. --- InstructionSets/x86/Perform.hpp | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 InstructionSets/x86/Perform.hpp diff --git a/InstructionSets/x86/Perform.hpp b/InstructionSets/x86/Perform.hpp new file mode 100644 index 000000000..fe84da795 --- /dev/null +++ b/InstructionSets/x86/Perform.hpp @@ -0,0 +1,43 @@ +// +// Perform.hpp +// Clock Signal +// +// Created by Thomas Harte on 05/10/2023. +// Copyright © 2023 Thomas Harte. All rights reserved. +// + +#ifndef Perform_h +#define Perform_h + +#include "Instruction.hpp" + +namespace InstructionSet::x86 { + +/// Performs @c instruction using @c resolver to obtain to query @c registers and/or @c memory as required, using @c io for port input/output, +/// and providing any flow control effects to @c flow_controller. +/// +/// Any change in processor status will be applied to @c status. +/// +/// If the template parameter @c operation is not @c Operation::Undefined then that operation will be performed, ignoring +/// whatever is specifed in @c instruction. +template < + Model model, + typename FlowControllerT, + typename DataPointerResolverT, + typename RegistersT, + typename MemoryT, + typename IOT, + Operation operation = Operation::Undefined +> void perform( + const Instruction &instruction, + Status &status, + FlowControllerT &flow_controller, + DataPointerResolverT &resolver, + RegistersT ®isters, + MemoryT &memory, + IOT &io +); + +} + +#endif /* Perform_h */