1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-10-16 11:23:51 +00:00

Disallow copying, add some basic asserts.

This commit is contained in:
Thomas Harte 2022-06-15 12:59:03 -04:00
parent 12277d9305
commit f4ae58b1e5
3 changed files with 6 additions and 0 deletions

View File

@ -394,6 +394,8 @@ template <class BusHandler, bool dtack_is_implicit = true, bool permit_overrun =
class Processor: private ProcessorBase { class Processor: private ProcessorBase {
public: public:
Processor(BusHandler &bus_handler) : ProcessorBase(), bus_handler_(bus_handler) {} Processor(BusHandler &bus_handler) : ProcessorBase(), bus_handler_(bus_handler) {}
Processor(const Processor& rhs) = delete;
Processor& operator=(const Processor& rhs) = delete;
void run_for(HalfCycles duration); void run_for(HalfCycles duration);

View File

@ -1091,6 +1091,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
// (i) this operand isn't used; or // (i) this operand isn't used; or
// (ii) its address calculation will end up conflated with performance, // (ii) its address calculation will end up conflated with performance,
// so there's no generic bus-accurate approach. // so there's no generic bus-accurate approach.
assert(next_operand_ >= 0 && next_operand_ < 2);
if(!(operand_flags_ & (1 << next_operand_))) { if(!(operand_flags_ & (1 << next_operand_))) {
MoveToStateDynamic(perform_state_); MoveToStateDynamic(perform_state_);
} }
@ -1099,6 +1100,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
// As above, but for .l. // As above, but for .l.
BeginState(FetchOperand_l): BeginState(FetchOperand_l):
assert(next_operand_ >= 0 && next_operand_ < 2);
if(!(operand_flags_ & (1 << next_operand_))) { if(!(operand_flags_ & (1 << next_operand_))) {
MoveToStateDynamic(perform_state_); MoveToStateDynamic(perform_state_);
} }

View File

@ -22,6 +22,8 @@ struct ProcessorBase: public InstructionSet::M68k::NullFlowController {
ProcessorBase() { ProcessorBase() {
read_program_announce.address = read_program.address = &program_counter_.l; read_program_announce.address = read_program.address = &program_counter_.l;
} }
ProcessorBase(const ProcessorBase& rhs) = delete;
ProcessorBase& operator=(const ProcessorBase& rhs) = delete;
int state_ = std::numeric_limits<int>::min(); int state_ = std::numeric_limits<int>::min();