diff --git a/source/quickerNES/core/cpu.cpp b/source/quickerNES/core/cpu.cpp index 3a3f20e..171f9da 100644 --- a/source/quickerNES/core/cpu.cpp +++ b/source/quickerNES/core/cpu.cpp @@ -475,6 +475,7 @@ uint8_t clock_table[256] = { 7 // F }; + // This optimization is only possible with the GNU compiler -- MSVC does not allow function alignment #ifdef __GNUC__ __attribute__((optimize("align-functions=1024"))) @@ -1479,7 +1480,7 @@ end: CALC_STATUS(temp); r.status = temp; } - + this->clock_count = clock_count; r.pc = pc; r.sp = GET_SP(); diff --git a/source/quickerNES/core/cpu.hpp b/source/quickerNES/core/cpu.hpp index 7466395..826eb8c 100644 --- a/source/quickerNES/core/cpu.hpp +++ b/source/quickerNES/core/cpu.hpp @@ -83,7 +83,12 @@ class Cpu result_badop // unimplemented/illegal instruction }; + // This optimization is only possible with the GNU compiler -- MSVC does not allow function alignment +#if defined(__GNUC__) || defined(__clang__) + result_t run(nes_time_t end_time) __attribute__((aligned(1024))); +#else result_t run(nes_time_t end_time); +#endif nes_time_t time() const { return clock_count; }