mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-18 01:30:56 +00:00
Adds a check for 8/16-bit redundancy.
This commit is contained in:
parent
22c792dc46
commit
636e929607
@ -67,6 +67,23 @@ struct CPU::WDC65816::ProcessorStorageConstructor {
|
|||||||
});
|
});
|
||||||
storage_.micro_ops_.push_back(OperationMoveToNextProgram);
|
storage_.micro_ops_.push_back(OperationMoveToNextProgram);
|
||||||
|
|
||||||
|
// Minor optimisation: elide the steps if 8- and 16-bit steps are equal.
|
||||||
|
bool are_equal = true;
|
||||||
|
size_t c = 0;
|
||||||
|
while(true) {
|
||||||
|
if(storage_.micro_ops_[micro_op_location_8 + c] != storage_.micro_ops_[micro_op_location_16 + c]) {
|
||||||
|
are_equal = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(storage_.micro_ops_[micro_op_location_8 + c] == OperationMoveToNextProgram) break;
|
||||||
|
++c;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(are_equal) {
|
||||||
|
storage_.micro_ops_.resize(micro_op_location_16);
|
||||||
|
micro_op_location_16 = micro_op_location_8;
|
||||||
|
}
|
||||||
|
|
||||||
// Insert into the map.
|
// Insert into the map.
|
||||||
installed_patterns[key] = std::make_pair(micro_op_location_8, micro_op_location_16);
|
installed_patterns[key] = std::make_pair(micro_op_location_8, micro_op_location_16);
|
||||||
} else {
|
} else {
|
||||||
@ -185,6 +202,7 @@ struct CPU::WDC65816::ProcessorStorageConstructor {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ProcessorStorage TEMPORARY_test_instance;
|
||||||
|
|
||||||
ProcessorStorage::ProcessorStorage() {
|
ProcessorStorage::ProcessorStorage() {
|
||||||
ProcessorStorageConstructor constructor(*this);
|
ProcessorStorageConstructor constructor(*this);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user