Fix single stepping for certain instructions

Several issues:
1. Several terminal instructions did not stop at the end of a single-step block
2. x64 backend for the A32 frontend sometimes polluted upper_location_descriptor with the single-stepping flag

We also introduce the enable_optimizations parameter to the A32 frontend.
This commit is contained in:
MerryMage 2020-04-24 10:00:58 +01:00
parent 591e7667f2
commit 94d0d33e02
12 changed files with 333 additions and 103 deletions

View file

@ -86,6 +86,14 @@ struct UserCallbacks {
struct UserConfig {
UserCallbacks* callbacks;
/// When set to false, this disables all optimizations than can't otherwise be disabled
/// by setting other configuration options. This includes:
/// - IR optimizations
/// - Block linking optimizations
/// - RSB optimizations
/// This is intended to be used for debugging.
bool enable_optimizations = true;
// Page Table
// The page table is used for faster memory access. If an entry in the table is nullptr,
// the JIT will fallback to calling the MemoryRead*/MemoryWrite* callbacks.