При программировании в Win32 можно выполнять данные следующим образом:
#include <iostream>
using namespace std;
typedef double(*func)(void);
int main()
{
// The sample program to display the PI number
uint8_t code[] = { 0xD9,0xEB,0xC3 }; // fldpi; ret
uint8_t* p = code;
func f = reinterpret_cast<func>(p);
cout << f() << endl;
return 0;
}
Этот трюк позволяет ускорить некоторые числовые вычисления, когда вычисляемое выражение изначально неизвестно. Единственное, что вам нужно сделать для этого в Win32, — это отключить защиту от выполнения данных с помощью параметра /NXCOMPAT:NO
Visual Studio. Но как это сделать в Win64? Это вообще возможно?
new
или статически. - person AVK   schedule 13.10.2019__builtin___clear_cache
(который на самом деле не очищает кеш на x86, он просто сообщает оптимизатору, что сохранение в памяти должно действительно произойти). Я добавил вызов __asm__ gcc к адресу памяти в список дубликатов, потому что это объясняет это; будущие читатели могут использовать GCC в Windows. - person Peter Cordes   schedule 13.10.2019