mirror of
https://github.com/TomHarte/CLK.git
synced 2024-09-27 18:55:48 +00:00
Change LDR writeback to destination.
This commit is contained in:
parent
21278d028c
commit
e9e1db7a05
@ -337,10 +337,13 @@ struct Executor {
|
|||||||
|
|
||||||
// If either postindexing or else with writeback, update base.
|
// If either postindexing or else with writeback, update base.
|
||||||
if constexpr (!flags.pre_index() || flags.write_back_address()) {
|
if constexpr (!flags.pre_index() || flags.write_back_address()) {
|
||||||
if(transfer.base() == 15) {
|
// Empirically: I think writeback occurs before the access, so shouldn't overwrite on a load.
|
||||||
registers_.set_pc(offsetted_address);
|
if(flags.operation() == SingleDataTransferFlags::Operation::STR || transfer.base() != transfer.destination()) {
|
||||||
} else {
|
if(transfer.base() == 15) {
|
||||||
registers_[transfer.base()] = offsetted_address;
|
registers_.set_pc(offsetted_address);
|
||||||
|
} else {
|
||||||
|
registers_[transfer.base()] = offsetted_address;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user